import { Token } from './tokens'; import { GetReturning, PickByValue, QueryExecutorFn, ResultType } from './types'; import { SelectFn } from './select'; import { Column } from './column'; import { DeleteQuery } from './delete'; import { Expression } from './expression'; import { Query } from './query'; import { ResultSet } from './result-set'; import { Table } from './TableType'; import { TableDefinition } from './table'; import { UpdateQuery } from './update'; export declare class InsertQuery, Returning = number, TableColumns = T extends Table ? Columns : never> extends Query { private readonly queryExecutor; private readonly returningKeys; private readonly table; private readonly resultType; private readonly tokens; private _insertQueryBrand; constructor(queryExecutor: QueryExecutorFn, returningKeys: string[], table: T, resultType: ResultType, tokens: Token[]); then(onFulfilled?: ((value: Returning extends number ? Returning : ResultSet, false>[]) => Result1 | PromiseLike) | undefined | null, onRejected?: ((reason: any) => Result2 | PromiseLike) | undefined | null): Promise; returning(column1: C1): InsertQuery>; returning(column1: C1, column2: C2): InsertQuery & GetReturning>; returning(column1: C1, column2: C2, column3: C3): InsertQuery & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4): InsertQuery & GetReturning & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4, column5: C5): InsertQuery & GetReturning & GetReturning & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4, column5: C5, column6: C6): InsertQuery & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4, column5: C5, column6: C6, column7: C7): InsertQuery & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4, column5: C5, column6: C6, column7: C7, column8: C8): InsertQuery & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4, column5: C5, column6: C6, column7: C7, column8: C8, column9: C9): InsertQuery & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning>; returning(column1: C1, column2: C2, column3: C3, column4: C4, column5: C5, column6: C6, column7: C7, column8: C8, column9: C9, column10: C10): InsertQuery & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning & GetReturning>; where(expression: Expression): InsertQuery ? Columns : never>; onConflictOnConstraint(constraintName: string): { doNothing(): InsertQuery ? Columns : never>; doUpdateSet(values: T extends Table ? { [K in keyof Columns_1]?: (Columns_1[K] extends Column ? IsNotNull extends true ? Query | DataType | Expression : Query | DataType | Expression | undefined : never) | undefined; } : never): InsertQuery ? Columns : never>; }; private getConflictTargetToken; onConflict ? (keyof Columns)[] : never>(...columnNames: ColumnNames): { doNothing(): InsertQuery ? Columns : never>; doUpdateSet(values: T extends Table ? { [K in keyof Columns_1]?: (Columns_1[K] extends Column ? IsNotNull extends true ? Query | DataType | Expression : Query | DataType | Expression | undefined : never) | undefined; } : never): InsertQuery ? Columns : never>; }; } export interface InsertIntoResult, Row = T extends Table ? { [K in keyof PickByValue<{ [K in keyof Columns]: Columns[K] extends Column ? HasDefault extends true ? false : IsNotNull : never; }, true>]: Columns[K] extends Column ? DataType : never; } & { [K in keyof PickByValue<{ [K in keyof Columns]: Columns[K] extends Column ? HasDefault extends true ? false : false : never; }, false>]?: Columns[K] extends Column ? DataType | undefined : never; } : never> { select: SelectFn; deleteFrom>(deleteTable: DeleteTable): DeleteQuery; update>(updateTable: UpdateTable): { set(values: UpdateTable extends Table ? { [K in keyof Columns]?: Columns[K] extends Column ? IsNotNull extends true ? DataType | Expression : DataType | undefined | Expression : never; } : never): UpdateQuery; }; defaultValues(): InsertQuery; values(values: Row | Row[]): InsertQuery; } export declare const makeInsertInto: (queryExecutor: QueryExecutorFn) => (table: T, columnNames?: (T extends Table ? (keyof Columns)[] : never) | undefined) => T extends TableDefinition ? never : InsertIntoResult ? { [K_1 in keyof PickByValue<{ [K in keyof Columns_1]: Columns_1[K] extends Column ? HasDefault extends true ? false : IsNotNull : never; }, true>]: Columns_1[K_1] extends Column ? DataType : never; } & { [K_3 in keyof PickByValue<{ [K_2 in keyof Columns_1]: Columns_1[K_2] extends Column ? HasDefault_1 extends true ? false : false : never; }, false>]?: (Columns_1[K_3] extends Column ? DataType_1 | undefined : never) | undefined; } : never>;