import * as Knex from 'knex'; import { PartialBy } from './data_types'; declare type IdType = number; export declare type Data = { id?: IdType; created?: Date; updated?: Date; }; export declare type RequiredId = Omit & { id: IdType; }; export declare type SelectOptionsType = { offset?: number; limit: number; }; export declare function createOrUpdate(data: T | undefined, model: Model): Promise; export declare function maybeGetData(id: number | undefined, model: Model): Promise | undefined>; export interface Model { create(data: T | RequiredId): Promise; get(id: number): Promise | undefined>; all(options?: SelectOptionsType): Promise[]>; find(data: Partial): Promise[]>; update(data: RequiredId): Promise; delete(id: number): Promise; } export declare class AbstractCrudModel implements Model { protected readonly db: Knex; protected readonly table: string; protected readonly idColumn: string; constructor(db: Knex, table: string, idColumn: string); protected toPartialRaw(data: Partial): Promise> | Partial; protected toRaw(data: T | RequiredId): Promise> | PartialBy; protected toData(data: R): Promise> | RequiredId; create(data: T): Promise; get(id: number): Promise | undefined>; all(options?: SelectOptionsType): Promise[]>; find(data: Partial): Promise[]>; update(data: RequiredId): Promise; delete(id: number): Promise; } export {};