import { KeyStoreParams } from '../../../../types/hotmesh';
import { PostgresClientType } from '../../../../types/postgres';
import { ProviderTransaction } from '../../../../types/provider';
import { stringModule } from './kvtypes/string';
import { hashModule } from './kvtypes/hash';
import { listModule } from './kvtypes/list';
import { zsetModule } from './kvtypes/zset';
/**
 * KVSQL is a class that provides a set of methods to interact with a Postgres database.
 * It is used to interact with the database in a key-value manner.
 */
export declare class KVSQL {
    pgClient: PostgresClientType;
    namespace: string;
    appId: string;
    string: ReturnType<typeof stringModule>;
    hash: ReturnType<typeof hashModule>;
    list: ReturnType<typeof listModule>;
    zset: ReturnType<typeof zsetModule>;
    constructor(pgClient: PostgresClientType, namespace: string, appId: string);
    isStatusOnly(fields: string[]): boolean;
    appendExpiryClause(baseQuery: string, tableAlias: string): string;
    appendJobExpiryClause(baseQuery: string, tableAlias: string): string;
    getMulti(): ProviderTransaction;
    transact(): ProviderTransaction;
    exec(...args: any[]): Promise<Array<any>>;
    mintKey(type: KeyType, params: KeyStoreParams): string;
    /**
     * Resolves the table name when provided a key
     */
    tableForKey(key: string, stats_type?: 'hash' | 'sorted_set' | 'list'): string;
    safeName(input: string, prefix?: string): string;
    set: (key: string, value: string, options?: import("../../../../types/provider").SetOptions, multi?: ProviderTransaction) => Promise<boolean>;
    _set: (key: string, value: string, options?: import("../../../../types/provider").SetOptions) => {
        sql: string;
        params: any[];
    };
    get: (key: string, multi?: ProviderTransaction) => Promise<string>;
    _get: (key: string) => {
        sql: string;
        params: any[];
    };
    del: (key: string, multi?: ProviderTransaction) => Promise<number>;
    _del: (key: string) => {
        sql: string;
        params: any[];
    };
    setnx: (key: string, value: string, multi?: ProviderTransaction) => Promise<boolean>;
    setnxex: (key: string, value: string, delay: number, multi?: ProviderTransaction) => Promise<boolean>;
    hset: (key: string, fields: Record<string, string>, options?: import("../../../../types/provider").HSetOptions, multi?: ProviderTransaction) => Promise<number>;
    _hset: (key: string, fields: Record<string, string>, options?: import("../../../../types/provider").HSetOptions) => {
        sql: string;
        params: any[];
    };
    hsetnx: (key: string, field: string, value: string, multi?: ProviderTransaction) => Promise<number>;
    hget: (key: string, field: string, multi?: ProviderTransaction) => Promise<string>;
    _hget: (key: string, field: string) => {
        sql: string;
        params: any[];
    };
    hdel: (key: string, fields: string[], multi?: unknown) => Promise<number>;
    _hdel: (key: string, fields: string[]) => {
        sql: string;
        params: any[];
    };
    hmget: (key: string, fields: string[], multi?: ProviderTransaction) => Promise<string[]>;
    _hmget: (key: string, fields: string[]) => {
        sql: string;
        params: any[];
    };
    hgetall: (key: string, multi?: ProviderTransaction) => Promise<Record<string, string>>;
    hincrbyfloat: (key: string, field: string, increment: number, multi?: ProviderTransaction) => Promise<number>;
    _hincrbyfloat: (key: string, field: string, increment: number) => {
        sql: string;
        params: any[];
    };
    hscan: (key: string, cursor: string, count?: number, pattern?: string, multi?: ProviderTransaction) => Promise<import("../../../../types/provider").HScanResult>;
    _hscan: (key: string, cursor: string, count: number, pattern?: string) => {
        sql: string;
        params: any[];
    };
    expire: (key: string, seconds: number, multi?: ProviderTransaction) => Promise<boolean>;
    _expire: (key: string, seconds: number) => {
        sql: string;
        params: any[];
    };
    scan: (cursor: number, count?: number, pattern?: string, multi?: ProviderTransaction) => Promise<{
        cursor: number;
        keys: string[];
    }>;
    _scan: (cursor: number, count: number, pattern?: string) => {
        sql: string;
        params: any[];
    };
    lrange: (key: string, start: number, end: number, multi?: ProviderTransaction) => Promise<string[]>;
    _lrange: (key: string, start: number, end: number) => {
        sql: string;
        params: any[];
    };
    rpush: (key: string, value: string | string[], multi?: ProviderTransaction) => Promise<number>;
    _rpush: (key: string, value: string | string[]) => {
        sql: string;
        params: any[];
    };
    lpush: (key: string, value: string | string[], multi?: ProviderTransaction) => Promise<number>;
    _lpush: (key: string, value: string | string[]) => {
        sql: string;
        params: any[];
    };
    lpop: (key: string, multi?: ProviderTransaction) => Promise<string>;
    _lpop: (key: string) => {
        sql: string;
        params: any[];
    };
    lmove: (source: string, destination: string, srcPosition: "LEFT" | "RIGHT", destPosition: "LEFT" | "RIGHT", multi?: ProviderTransaction) => Promise<string>;
    _lmove: (source: string, destination: string, srcPosition: "LEFT" | "RIGHT", destPosition: "LEFT" | "RIGHT") => {
        sql: string;
        params: any[];
    };
    rename: (oldKey: string, newKey: string, multi?: ProviderTransaction) => Promise<void>;
    _rename: (oldKey: string, newKey: string) => {
        sql: string;
        params: any[];
    };
    zadd: (key: string, score: number, member: string, options?: import("../../../../types/provider").ZAddOptions, multi?: ProviderTransaction) => Promise<number>;
    _zadd: (key: string, score: number, member: string, options?: import("../../../../types/provider").ZAddOptions) => {
        sql: string;
        params: any[];
    };
    zrange: (key: string, start: number, stop: number, facet?: "WITHSCORES", multi?: ProviderTransaction) => Promise<string[]>;
    _zrange: (key: string, start: number, stop: number, facet?: "WITHSCORES") => {
        sql: string;
        params: any[];
    };
    zrangebyscore: (key: string, min: number, max: number, multi?: ProviderTransaction) => Promise<string[]>;
    _zrangebyscore: (key: string, min: number, max: number) => {
        sql: string;
        params: any[];
    };
    zrangebyscore_withscores: (key: string, min: number, max: number, multi?: ProviderTransaction) => Promise<{
        member: string;
        score: number;
    }[]>;
    _zrangebyscore_withscores: (key: string, min: number, max: number) => {
        sql: string;
        params: any[];
    };
    zrem: (key: string, member: string, multi?: ProviderTransaction) => Promise<number>;
    _zrem: (key: string, member: string) => {
        sql: string;
        params: any[];
    };
    zrank: (key: string, member: string, multi?: ProviderTransaction) => Promise<number>;
    _zrank: (key: string, member: string) => {
        sql: string;
        params: any[];
    };
    zscore: (key: string, member: string, multi?: ProviderTransaction) => Promise<number>;
    _zscore: (key: string, member: string) => {
        sql: string;
        params: any[];
    };
    exists(key: string): Promise<string | 0>;
    _exists(key: string): {
        sql: string;
        params: any[];
    };
}
