import { Metadata } from 'grpc';
import * as schemaTypes from './proto/schema_pb';
import * as services from './proto/schema_grpc_pb';
declare type Server = {
    [key: string]: schemaTypes.ImmutableState.AsObject;
};
declare type Servers = {
    [key: string]: Server;
};
declare type StateGetMetadata = {
    serverName: string;
    databaseName: string;
    metadata: Metadata;
};
declare type StateSetMetadata = {
    serverName: string;
    databaseName: string;
};
declare type StateConfig = {
    client: services.ImmuServiceClient;
    rootPath?: string;
};
declare class State {
    servers: Servers;
    client: services.ImmuServiceClient;
    rootPath: string;
    constructor({ client, rootPath }: StateConfig);
    get(config: StateGetMetadata): Promise<schemaTypes.ImmutableState>;
    getCurrentState(config: StateGetMetadata): Promise<schemaTypes.ImmutableState>;
    set({ serverName, databaseName }: StateSetMetadata, state: schemaTypes.ImmutableState.AsObject): void;
    getInitialState(): Servers;
    commit(): void;
    exitHandler(): void;
    stringifyServers(): string;
    parseServers(stringifiedServers: string): Servers;
}
export default State;
