import * as empty from 'google-protobuf/google/protobuf/empty_pb';
import * as schemaTypes from './proto/schema_pb';
import * as services from './proto/schema_grpc_pb';
import State from './state';
import * as interfaces from './interfaces';
import Parameters, { SQLColumnDescription, SQLTableDescription, SQLRowDescription } from '../types/parameters';
declare class ImmudbClient {
    state: State;
    client: services.ImmuServiceClient;
    private static instance;
    private _auth;
    private _token;
    private _metadata;
    private _activeDatabase;
    private _serverUUID;
    constructor({ host, port, certs, rootPath, }: interfaces.Config);
    static getInstance(config: interfaces.Config): Promise<ImmudbClient>;
    initClient(user?: string, password?: string, databasename?: string, autoLogin?: boolean, autoDatabase?: boolean): Promise<void>;
    shutdown(): Promise<void>;
    login(params: Parameters.Login): Promise<schemaTypes.LoginResponse.AsObject | undefined>;
    createDatabase({ databasename }: Parameters.CreateDatabase): Promise<empty.Empty | undefined>;
    useDatabase({ databasename }: Parameters.UseDatabase): Promise<schemaTypes.UseDatabaseReply.AsObject | undefined>;
    set({ key, value }: Parameters.Set): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    get({ key }: Parameters.Get): Promise<schemaTypes.Entry.AsObject | undefined>;
    listDatabases(): Promise<schemaTypes.DatabaseListResponse.AsObject | undefined>;
    changePermission(params: Parameters.ChangePermission): Promise<empty.Empty | undefined>;
    listUsers(): Promise<schemaTypes.UserList.AsObject | undefined>;
    createUser(params: Parameters.CreateUser): Promise<empty.Empty | undefined>;
    changePassword(params: Parameters.ChangePassword): Promise<empty.Empty | undefined>;
    logout(): Promise<empty.Empty | undefined>;
    setActiveUser(params: Parameters.SetActiveUser): Promise<empty.Empty | undefined>;
    health(): Promise<schemaTypes.HealthResponse.AsObject | undefined>;
    count({ prefix }: Parameters.Count): Promise<schemaTypes.EntryCount.AsObject | undefined>;
    countAll(): Promise<schemaTypes.EntryCount.AsObject | undefined>;
    scan({ seekkey, prefix, desc, limit, sincetx, nowait }?: Parameters.Scan): Promise<schemaTypes.Entries.AsObject | undefined>;
    history({ key, offset, limit, desc, sincetx }: Parameters.History): Promise<schemaTypes.Entries.AsObject | undefined>;
    zScan({ set, seekkey, seekscore, seekattx, inclusiveseek, limit, desc, sincetx, nowait, minscore, maxscore }: Parameters.ZScan): Promise<schemaTypes.ZEntries.AsObject | undefined>;
    currentState(): Promise<schemaTypes.ImmutableState.AsObject | undefined>;
    zAdd(params: Parameters.ZAdd): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    zAddAt({ set, score, key, attx }: Parameters.ZAddAt): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    verifiedZAdd(params: Parameters.VerifiedZAdd): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    verifiedZAddAt({ set, score, key, attx }: Parameters.VerifiedZAddAt): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    setReference(params: Parameters.SetReference): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    setReferenceAt({ key, referencedKey, attx }: Parameters.SetReferenceAt): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    verifiedSetReference(params: Parameters.VerifiedSetReference): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    verifiedSetReferenceAt({ key, referencedKey, attx }: Parameters.VerifiedSetReferenceAt): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    setAll({ kvsList }: Parameters.SetAll): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    execAll({ operationsList }: Parameters.ExecAll): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    getAll({ keysList, sincetx }: Parameters.GetAll): Promise<schemaTypes.Entries.AsObject | undefined>;
    verifiedSet({ key, value }: Parameters.VerifiedSet): Promise<schemaTypes.TxMetadata.AsObject | undefined>;
    verifiedGet({ key, attx, sincetx }: Parameters.VerifiedGet): Promise<schemaTypes.Entry.AsObject | undefined>;
    verifiedGetAt({ key, attx }: Parameters.VerifiedGetAt): Promise<schemaTypes.Entry.AsObject | undefined>;
    verifiedGetSince({ key, sincetx }: Parameters.VerifiedGetSince): Promise<schemaTypes.Entry.AsObject | undefined>;
    updateAuthConfig(params: Parameters.UpdateAuthConfig): Promise<empty.Empty | undefined>;
    updateMTLSConfig(params: Parameters.UpdateMTLSConfig): Promise<empty.Empty | undefined>;
    txById({ tx }: Parameters.TxById): Promise<schemaTypes.Tx.AsObject | undefined>;
    verifiedTxById({ tx }: Parameters.VerifiedTxById): Promise<schemaTypes.Tx.AsObject | undefined>;
    txScan(params: Parameters.TxScan): Promise<schemaTypes.TxList.AsObject | undefined>;
    compactIndex(): Promise<empty.Empty | undefined>;
    SQLExec({ sql, params, nowait }: Parameters.SQLExec): Promise<schemaTypes.SQLExecResult.AsObject | undefined>;
    SQLQuery({ sql, params, reusesnapshot }: Parameters.SQLQuery): Promise<Array<SQLRowDescription> | undefined>;
    SQLListTables(): Promise<Array<SQLTableDescription> | undefined>;
    SQLDescribe(tableName: string): Promise<Array<SQLColumnDescription> | undefined>;
}
export default ImmudbClient;
