import { DataSourceSelectArguments, DataSourceSelectResult } from "./data"; import { Callback } from "../common/callback"; export { Callback }; export interface DataSourceError extends Error { handled?: boolean; method?: DataMethod; } export type DataMethod = 'select' | 'update' | 'delete' | 'insert'; export interface IDataSource { insert(item: T): Promise; delete(items: T[], args?: any): Promise; update(item: T, args?: any): Promise; select(args?: DataSourceSelectArguments): Promise>; save?: (items: T[]) => Promise; } export declare class DataSource implements IDataSource { private args; primaryKeys: string[]; error: Callback<{ sender: IDataSource; error: DataSourceError; }>; save?: ((items: T[]) => Promise) | undefined; constructor(args: DataSourceArguments); get canDelete(): boolean; get canInsert(): boolean; get canUpdate(): boolean; insert(item: T): Promise; delete(items: T[], args?: any): Promise; update(item: T, args?: any): Promise; isSameItem(theItem: T, otherItem: T): boolean; private checkPrimaryKeys; select(args?: DataSourceSelectArguments): Promise>; private processError; } export type DataSourceArguments = { primaryKeys?: string[]; select: (args: DataSourceSelectArguments) => Promise>; insert?: (item: T, args?: any) => Promise; update?: (item: T, args?: any) => Promise; delete?: (item: T[], args?: any) => Promise; save?: (items: T[]) => Promise; };