export interface CrateConfig {
    sqlEndpoint?: string;
    auth?: string;
}
export interface QueryResult {
    cols: string[];
    col_types?: number[];
    rows: any[][];
    rowcount: number;
    duration: number;
}
export interface BulkQueryResult {
    cols: string[];
    results: {
        rowcount: number;
    }[];
    duration: number;
}
export interface ErrorResult {
    error: {
        message: string;
        code: number;
    };
}
export type Response = QueryResult | ErrorResult;
export type BulkResponse = BulkQueryResult | ErrorResult;
export interface QueryOptions {
    args?: any[];
    coltypes?: boolean;
}
export declare const crate: (config?: CrateConfig) => {
    query: (sql: string, options?: QueryOptions) => Promise<Response>;
    insert: (qualifiedName: string, record: object) => Promise<Response>;
    upsert: (qualifiedName: string, record: object, update: object) => Promise<Response>;
    bulkInsert: (qualifiedName: string, records: object[]) => Promise<BulkResponse>;
    deleteById: (qualifiedName: string, id: string) => Promise<Response>;
};
export type Crate = ReturnType<typeof crate>;
