import * as schemaTypes from '../src/proto/schema_pb';
import { USER_PERMISSION } from './user';
import * as interfaces from '../src/interfaces';
export declare type SQLColumnDescription = {
    name: string;
    type: string;
    nullable: boolean;
    index: string;
    autoincrement: boolean;
    unique: boolean;
};
export declare type SQLTableDescription = {
    name: string;
};
interface IValue {
    prop: string;
}
export interface SQLRowDescription {
    [name: string]: IValue;
}
export declare type SQLValue = null | string | number | Uint8Array | boolean;
declare type SQLParams = {
    [key: string]: SQLValue;
};
export declare namespace Parameters {
    type SetReference = {
        key: string;
        referencedKey: string;
    };
    type SetReferenceAt = {
        key: string;
        referencedKey: string;
        attx: number;
    };
    type ZAdd = {
        set: string;
        score: number;
        key: string;
    };
    type ZAddAt = {
        set: string;
        score: number;
        key: string;
        attx: number;
    };
    type Get = {
        key: string;
    };
    type Set = {
        key: string;
        value: string;
    };
    type Login = {
        user: string;
        password: string;
    };
    type CreateUser = {
        user: string;
        password: string;
        database: string;
        permission: number;
    };
    type ChangePassword = {
        user: string;
        oldpassword: string;
        newpassword: string;
    };
    type Count = {
        prefix: string;
    };
    type History = {
        key: string;
        offset?: number;
        limit?: number;
        desc?: boolean;
        sincetx?: number;
    };
    type ZScan = {
        set: string;
        seekkey?: string;
        seekscore?: number;
        seekattx?: number;
        inclusiveseek?: boolean;
        desc?: boolean;
        sincetx?: number;
        nowait?: boolean;
        minscore?: schemaTypes.Score.AsObject;
        maxscore?: schemaTypes.Score.AsObject;
        limit?: number;
    };
    type ChangePermission = Omit<schemaTypes.ChangePermissionRequest.AsObject, 'permission'> & {
        permission: USER_PERMISSION;
    };
    type CreateDatabase = schemaTypes.Database.AsObject;
    type UseDatabase = schemaTypes.Database.AsObject;
    type SetActiveUser = schemaTypes.SetActiveUserRequest.AsObject;
    type Scan = Partial<schemaTypes.ScanRequest.AsObject>;
    type SetAll = schemaTypes.SetRequest.AsObject;
    type ExecAll = schemaTypes.ExecAllRequest.AsObject;
    type GetAll = schemaTypes.KeyListRequest.AsObject;
    type VerifiedSet = schemaTypes.KeyValue.AsObject;
    type VerifiedGet = interfaces.PartialBy<schemaTypes.KeyRequest.AsObject, 'sincetx' | 'attx'>;
    type VerifiedGetAt = Omit<schemaTypes.KeyRequest.AsObject, 'sincetx'>;
    type VerifiedGetSince = Omit<schemaTypes.KeyRequest.AsObject, 'attx'>;
    type UpdateAuthConfig = schemaTypes.AuthConfig.AsObject;
    type UpdateMTLSConfig = schemaTypes.MTLSConfig.AsObject;
    type TxById = schemaTypes.TxRequest.AsObject;
    type VerifiedTxById = schemaTypes.TxRequest.AsObject;
    type TxScan = schemaTypes.TxScanRequest.AsObject;
    type VerifiedZAdd = ZAdd;
    type VerifiedZAddAt = ZAddAt;
    type VerifiedSetReference = SetReference;
    type VerifiedSetReferenceAt = SetReferenceAt;
    type SQLExec = interfaces.PartialBy<Omit<schemaTypes.SQLExecRequest.AsObject, 'paramsList'>, 'nowait'> & {
        params?: SQLParams;
    };
    type SQLQuery = interfaces.PartialBy<Omit<schemaTypes.SQLQueryRequest.AsObject, 'paramsList'>, 'reusesnapshot'> & {
        params?: SQLParams;
    };
}
export default Parameters;
