import type { BuildColumns } from "../column-builder.js"; import { entityKind } from "../entity.js"; import type { TypedQueryBuilder } from "../query-builders/query-builder.js"; import type { AddAliasToSelection } from "../query-builders/select.types.js"; import type { ColumnsSelection, SQL } from "../sql/sql.js"; import type { MySqlColumnBuilderBase } from "./columns/index.js"; import { QueryBuilder } from "./query-builders/query-builder.js"; import { MySqlViewBase } from "./view-base.js"; import { MySqlViewConfig } from "./view-common.js"; export interface ViewBuilderConfig { algorithm?: 'undefined' | 'merge' | 'temptable'; sqlSecurity?: 'definer' | 'invoker'; withCheckOption?: 'cascaded' | 'local'; } export declare class ViewBuilderCore { protected name: TConfig['name']; protected schema: string | undefined; static readonly [entityKind]: string; readonly _: { readonly name: TConfig['name']; readonly columns: TConfig['columns']; }; constructor(name: TConfig['name'], schema: string | undefined); protected config: ViewBuilderConfig; algorithm(algorithm: Exclude): this; sqlSecurity(sqlSecurity: Exclude): this; withCheckOption(withCheckOption?: Exclude): this; } export declare class ViewBuilder extends ViewBuilderCore<{ name: TName; }> { static readonly [entityKind]: string; as(qb: TypedQueryBuilder | ((qb: QueryBuilder) => TypedQueryBuilder)): MySqlViewWithSelection>; } export declare class ManualViewBuilder = Record> extends ViewBuilderCore<{ name: TName; columns: TColumns; }> { static readonly [entityKind]: string; private columns; constructor(name: TName, columns: TColumns, schema: string | undefined); existing(): MySqlViewWithSelection>; as(query: SQL): MySqlViewWithSelection>; } export declare class MySqlView extends MySqlViewBase { static readonly [entityKind]: string; protected $MySqlViewBrand: 'MySqlView'; [MySqlViewConfig]: ViewBuilderConfig | undefined; constructor({ mysqlConfig, config }: { mysqlConfig: ViewBuilderConfig | undefined; config: { name: TName; schema: string | undefined; selectedFields: ColumnsSelection; query: SQL | undefined; }; }); } export type MySqlViewWithSelection = MySqlView & TSelectedFields; export declare function mysqlView(name: TName): ViewBuilder; export declare function mysqlView>(name: TName, columns: TColumns): ManualViewBuilder;