import { DatabaseReplicas as DatabaseProto, DatabaseReplicasReplica as ReplicaProto } from "typedb-protocol/proto/database"; import { Database } from "../api/connection/database/Database"; import { ServerDriver, TypeDBDriverImpl } from "./TypeDBDriverImpl"; export declare class TypeDBDatabaseImpl implements Database { private readonly _name; private readonly _driver; private _replicas; private constructor(); static get(name: string, driver: TypeDBDriverImpl): Promise; private static fetchReplicas; static of(protoDB: DatabaseProto, driver: TypeDBDriverImpl): Database; get primaryReplica(): Replica; get preferredReplica(): Replica; get name(): string; delete(): Promise; schema(): Promise; typeSchema(): Promise; ruleSchema(): Promise; get replicas(): Replica[]; toString(): string; runFailsafe(task: (serverDriver: ServerDriver, serverDatabase: ServerDatabase) => Promise): Promise; runOnAnyReplica(task: (serverDriver: ServerDriver, serverDatabase: ServerDatabase) => Promise): Promise; runOnPrimaryReplica(task: (serverDriver: ServerDriver, serverDatabase: ServerDatabase) => Promise): Promise; private seekPrimaryReplica; private waitForPrimaryReplicaSelection; } export declare class Replica implements Database.Replica { private readonly _server; private readonly _database; private readonly _term; private readonly _isPrimary; private readonly _isPreferred; private constructor(); static of(replica: ReplicaProto, database: ServerDatabase): Replica; get database(): ServerDatabase; get server(): string; get databaseName(): string; get term(): number; get primary(): boolean; get preferred(): boolean; toString(): string; } declare class ServerDatabase { private readonly _name; private readonly _driver; constructor(name: string, driver: ServerDriver); get name(): string; get driver(): ServerDriver; delete(): Promise; schema(): Promise; typeSchema(): Promise; ruleSchema(): Promise; } export {};