import { ActiveQuery, Condition } from './activeQuery'; import { Drizzle, Operations } from './drizzle'; import { ActiveRecordOf, ColumnsOf, PrimaryKeyValueOf, RowOf, Table } from './types'; type TableOf = T extends ActiveRecordConstructor ? P : never; type BuildQuery = (query: ActiveQuery>, table: TableOf, op: Operations) => void; type ActiveCondition = BuildQuery | Condition>; export interface ActiveRecordConstructor { new (...args: any): BaseActiveRecord & RowOf; db(): Drizzle; table(): T; columns(): ColumnsOf; find(this: C, build?: BuildQuery): ActiveQuery>; findOne(this: C, condition?: ActiveCondition): Promise | null>; findOne(this: C, condition: ActiveCondition | undefined | null, required: true): Promise>; findAll(this: C, condition?: ActiveCondition): Promise[]>; } export interface BaseActiveRecord extends ActiveRecordOf { constructor: ActiveRecordConstructor; } export declare class BaseActiveRecord { static db(): Drizzle; static table(this: ActiveRecordConstructor): TableOf; static columns(this: ActiveRecordConstructor): K["_"]["columns"]; static find(this: ActiveRecordConstructor, build?: BuildQuery): ActiveQuery & RowOf>; static findOne(this: ActiveRecordConstructor, condition?: ActiveCondition, required?: boolean): Promise<(BaseActiveRecord & RowOf) | null>; static findAll(this: ActiveRecordConstructor, condition?: ActiveCondition): Promise<(BaseActiveRecord & RowOf)[]>; pk(validate?: boolean): PrimaryKeyValueOf; protected createCondition(): import("drizzle-orm").SQL; isNew(): boolean; protected afterFind(row: RowOf): Promise; configureRow(row: RowOf): this; configureRow(row: Partial>, merge: true): this; configure(data: Partial>): this; attributes(): Partial>; dirtyAttributes(): Partial>; save(): Promise; save(refresh: true): Promise; protected beforeSave(insert: boolean): Promise; protected afterSave(insert: boolean, values: Partial>): Promise; protected insert(): Promise; protected beforeInsert(): Promise; protected afterInsert(values: Partial>): Promise; protected update(): Promise; protected beforeUpdate(): Promise; protected afterUpdate(values: Partial>): Promise; refresh(): Promise; delete(): Promise; protected beforeDelete(): Promise; protected afterDelete(): Promise; protected normalizeResult(result: unknown): unknown; } export declare function ActiveRecordClass(table: T, dataSource?: Drizzle | string): ActiveRecordConstructor; export {}; //# sourceMappingURL=activeRecord.d.ts.map