import _m0 from 'protobufjs/minimal';
export declare const protobufPackage = "yandex.cloud.mdb.spqr.v1";
export declare enum LogLevel {
    LOG_LEVEL_UNSPECIFIED = 0,
    DEBUG = 1,
    INFO = 2,
    WARNING = 3,
    ERROR = 4,
    FATAL = 5,
    PANIC = 6,
    UNRECOGNIZED = -1
}
export declare function logLevelFromJSON(object: any): LogLevel;
export declare function logLevelToJSON(object: LogLevel): string;
/**
 * TODO move to hosts.proto when it's created
 * Configuration for MDB PostgreSQL host
 */
export interface MDBPostgreSQL {
    clusterId: string;
}
export interface SPQRConfig {
    /** SPQR router settings. */
    router?: RouterConfig;
    /** SPQR coordinator settings. */
    coordinator?: CoordinatorConfig;
    /** PostgreSQL settings. */
    postgresql?: PostgreSQLConfig;
    /** SPQR Infra (router+coordinator) settings. */
    infra?: InfraConfig;
    /** SPQR default log level */
    logLevel: LogLevel;
    /** SPQR Balancer settings. */
    balancer?: BalancerSettings;
}
export interface RouterConfig {
    config?: RouterSettings;
    resources?: Resources;
}
export interface CoordinatorConfig {
    config?: CoordinatorSettings;
    resources?: Resources;
}
export interface PostgreSQLConfig {
    config?: PostgreSQLSettings;
    resources?: Resources;
}
export interface InfraConfig {
    resources?: Resources;
    router?: RouterSettings;
    coordinator?: CoordinatorSettings;
}
export interface BalancerSettings {
    cpuThreshold?: number;
    spaceThreshold?: number;
    statIntervalSec?: number;
    maxMoveCount?: number;
    keysPerMove?: number;
    timeout?: number;
}
/** Configuration of a SPQR router. */
export interface RouterSettings {
    showNoticeMessages?: boolean;
    timeQuantiles: number[];
    defaultRouteBehavior: RouterSettings_DefaultRouteBehavior;
    preferSameAvailabilityZone?: boolean;
}
export declare enum RouterSettings_DefaultRouteBehavior {
    DEFAULT_ROUTE_BEHAVIOR_UNSPECIFIED = 0,
    BLOCK = 1,
    ALLOW = 2,
    UNRECOGNIZED = -1
}
export declare function routerSettings_DefaultRouteBehaviorFromJSON(object: any): RouterSettings_DefaultRouteBehavior;
export declare function routerSettings_DefaultRouteBehaviorToJSON(object: RouterSettings_DefaultRouteBehavior): string;
/** Configuration of a SPQR coordinator. */
export interface CoordinatorSettings {
}
/** Configuration of a PostgreSQL. */
export interface PostgreSQLSettings {
}
export interface Resources {
    /**
     * ID of the preset for computational resources available to a host (CPU, memory etc.).
     * All available presets are listed in the [documentation](/docs/managed-spqr/concepts/instance-types).
     */
    resourcePresetId: string;
    /** Volume of the storage available to a host, in bytes. */
    diskSize: number;
    /**
     * Type of the storage environment for the host.
     * Possible values:
     * * network-hdd - network HDD drive,
     * * network-ssd - network SSD drive,
     * * local-ssd - local SSD storage.
     */
    diskTypeId: string;
}
export declare const MDBPostgreSQL: {
    encode(message: MDBPostgreSQL, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MDBPostgreSQL;
    fromJSON(object: any): MDBPostgreSQL;
    toJSON(message: MDBPostgreSQL): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
    } & {
        clusterId?: string | undefined;
    } & Record<Exclude<keyof I, "clusterId">, never>>(object: I): MDBPostgreSQL;
};
export declare const SPQRConfig: {
    encode(message: SPQRConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SPQRConfig;
    fromJSON(object: any): SPQRConfig;
    toJSON(message: SPQRConfig): unknown;
    fromPartial<I extends {
        router?: {
            config?: {
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: number[] | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } | undefined;
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
        } | undefined;
        coordinator?: {
            config?: {} | undefined;
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
        } | undefined;
        postgresql?: {
            config?: {} | undefined;
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
        } | undefined;
        infra?: {
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
            router?: {
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: number[] | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } | undefined;
            coordinator?: {} | undefined;
        } | undefined;
        logLevel?: LogLevel | undefined;
        balancer?: {
            cpuThreshold?: number | undefined;
            spaceThreshold?: number | undefined;
            statIntervalSec?: number | undefined;
            maxMoveCount?: number | undefined;
            keysPerMove?: number | undefined;
            timeout?: number | undefined;
        } | undefined;
    } & {
        router?: ({
            config?: {
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: number[] | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } | undefined;
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
        } & {
            config?: ({
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: number[] | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } & {
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: (number[] & number[] & Record<Exclude<keyof I["router"]["config"]["timeQuantiles"], keyof number[]>, never>) | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } & Record<Exclude<keyof I["router"]["config"], keyof RouterSettings>, never>) | undefined;
            resources?: ({
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & Record<Exclude<keyof I["router"]["resources"], keyof Resources>, never>) | undefined;
        } & Record<Exclude<keyof I["router"], keyof RouterConfig>, never>) | undefined;
        coordinator?: ({
            config?: {} | undefined;
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
        } & {
            config?: ({} & {} & Record<Exclude<keyof I["coordinator"]["config"], never>, never>) | undefined;
            resources?: ({
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & Record<Exclude<keyof I["coordinator"]["resources"], keyof Resources>, never>) | undefined;
        } & Record<Exclude<keyof I["coordinator"], keyof CoordinatorConfig>, never>) | undefined;
        postgresql?: ({
            config?: {} | undefined;
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
        } & {
            config?: ({} & {} & Record<Exclude<keyof I["postgresql"]["config"], never>, never>) | undefined;
            resources?: ({
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & Record<Exclude<keyof I["postgresql"]["resources"], keyof Resources>, never>) | undefined;
        } & Record<Exclude<keyof I["postgresql"], keyof PostgreSQLConfig>, never>) | undefined;
        infra?: ({
            resources?: {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } | undefined;
            router?: {
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: number[] | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } | undefined;
            coordinator?: {} | undefined;
        } & {
            resources?: ({
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & {
                resourcePresetId?: string | undefined;
                diskSize?: number | undefined;
                diskTypeId?: string | undefined;
            } & Record<Exclude<keyof I["infra"]["resources"], keyof Resources>, never>) | undefined;
            router?: ({
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: number[] | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } & {
                showNoticeMessages?: boolean | undefined;
                timeQuantiles?: (number[] & number[] & Record<Exclude<keyof I["infra"]["router"]["timeQuantiles"], keyof number[]>, never>) | undefined;
                defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
                preferSameAvailabilityZone?: boolean | undefined;
            } & Record<Exclude<keyof I["infra"]["router"], keyof RouterSettings>, never>) | undefined;
            coordinator?: ({} & {} & Record<Exclude<keyof I["infra"]["coordinator"], never>, never>) | undefined;
        } & Record<Exclude<keyof I["infra"], keyof InfraConfig>, never>) | undefined;
        logLevel?: LogLevel | undefined;
        balancer?: ({
            cpuThreshold?: number | undefined;
            spaceThreshold?: number | undefined;
            statIntervalSec?: number | undefined;
            maxMoveCount?: number | undefined;
            keysPerMove?: number | undefined;
            timeout?: number | undefined;
        } & {
            cpuThreshold?: number | undefined;
            spaceThreshold?: number | undefined;
            statIntervalSec?: number | undefined;
            maxMoveCount?: number | undefined;
            keysPerMove?: number | undefined;
            timeout?: number | undefined;
        } & Record<Exclude<keyof I["balancer"], keyof BalancerSettings>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof SPQRConfig>, never>>(object: I): SPQRConfig;
};
export declare const RouterConfig: {
    encode(message: RouterConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RouterConfig;
    fromJSON(object: any): RouterConfig;
    toJSON(message: RouterConfig): unknown;
    fromPartial<I extends {
        config?: {
            showNoticeMessages?: boolean | undefined;
            timeQuantiles?: number[] | undefined;
            defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
            preferSameAvailabilityZone?: boolean | undefined;
        } | undefined;
        resources?: {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } | undefined;
    } & {
        config?: ({
            showNoticeMessages?: boolean | undefined;
            timeQuantiles?: number[] | undefined;
            defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
            preferSameAvailabilityZone?: boolean | undefined;
        } & {
            showNoticeMessages?: boolean | undefined;
            timeQuantiles?: (number[] & number[] & Record<Exclude<keyof I["config"]["timeQuantiles"], keyof number[]>, never>) | undefined;
            defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
            preferSameAvailabilityZone?: boolean | undefined;
        } & Record<Exclude<keyof I["config"], keyof RouterSettings>, never>) | undefined;
        resources?: ({
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & Record<Exclude<keyof I["resources"], keyof Resources>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof RouterConfig>, never>>(object: I): RouterConfig;
};
export declare const CoordinatorConfig: {
    encode(message: CoordinatorConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CoordinatorConfig;
    fromJSON(object: any): CoordinatorConfig;
    toJSON(message: CoordinatorConfig): unknown;
    fromPartial<I extends {
        config?: {} | undefined;
        resources?: {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } | undefined;
    } & {
        config?: ({} & {} & Record<Exclude<keyof I["config"], never>, never>) | undefined;
        resources?: ({
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & Record<Exclude<keyof I["resources"], keyof Resources>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CoordinatorConfig>, never>>(object: I): CoordinatorConfig;
};
export declare const PostgreSQLConfig: {
    encode(message: PostgreSQLConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostgreSQLConfig;
    fromJSON(object: any): PostgreSQLConfig;
    toJSON(message: PostgreSQLConfig): unknown;
    fromPartial<I extends {
        config?: {} | undefined;
        resources?: {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } | undefined;
    } & {
        config?: ({} & {} & Record<Exclude<keyof I["config"], never>, never>) | undefined;
        resources?: ({
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & Record<Exclude<keyof I["resources"], keyof Resources>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof PostgreSQLConfig>, never>>(object: I): PostgreSQLConfig;
};
export declare const InfraConfig: {
    encode(message: InfraConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): InfraConfig;
    fromJSON(object: any): InfraConfig;
    toJSON(message: InfraConfig): unknown;
    fromPartial<I extends {
        resources?: {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } | undefined;
        router?: {
            showNoticeMessages?: boolean | undefined;
            timeQuantiles?: number[] | undefined;
            defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
            preferSameAvailabilityZone?: boolean | undefined;
        } | undefined;
        coordinator?: {} | undefined;
    } & {
        resources?: ({
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & {
            resourcePresetId?: string | undefined;
            diskSize?: number | undefined;
            diskTypeId?: string | undefined;
        } & Record<Exclude<keyof I["resources"], keyof Resources>, never>) | undefined;
        router?: ({
            showNoticeMessages?: boolean | undefined;
            timeQuantiles?: number[] | undefined;
            defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
            preferSameAvailabilityZone?: boolean | undefined;
        } & {
            showNoticeMessages?: boolean | undefined;
            timeQuantiles?: (number[] & number[] & Record<Exclude<keyof I["router"]["timeQuantiles"], keyof number[]>, never>) | undefined;
            defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
            preferSameAvailabilityZone?: boolean | undefined;
        } & Record<Exclude<keyof I["router"], keyof RouterSettings>, never>) | undefined;
        coordinator?: ({} & {} & Record<Exclude<keyof I["coordinator"], never>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof InfraConfig>, never>>(object: I): InfraConfig;
};
export declare const BalancerSettings: {
    encode(message: BalancerSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BalancerSettings;
    fromJSON(object: any): BalancerSettings;
    toJSON(message: BalancerSettings): unknown;
    fromPartial<I extends {
        cpuThreshold?: number | undefined;
        spaceThreshold?: number | undefined;
        statIntervalSec?: number | undefined;
        maxMoveCount?: number | undefined;
        keysPerMove?: number | undefined;
        timeout?: number | undefined;
    } & {
        cpuThreshold?: number | undefined;
        spaceThreshold?: number | undefined;
        statIntervalSec?: number | undefined;
        maxMoveCount?: number | undefined;
        keysPerMove?: number | undefined;
        timeout?: number | undefined;
    } & Record<Exclude<keyof I, keyof BalancerSettings>, never>>(object: I): BalancerSettings;
};
export declare const RouterSettings: {
    encode(message: RouterSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RouterSettings;
    fromJSON(object: any): RouterSettings;
    toJSON(message: RouterSettings): unknown;
    fromPartial<I extends {
        showNoticeMessages?: boolean | undefined;
        timeQuantiles?: number[] | undefined;
        defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
        preferSameAvailabilityZone?: boolean | undefined;
    } & {
        showNoticeMessages?: boolean | undefined;
        timeQuantiles?: (number[] & number[] & Record<Exclude<keyof I["timeQuantiles"], keyof number[]>, never>) | undefined;
        defaultRouteBehavior?: RouterSettings_DefaultRouteBehavior | undefined;
        preferSameAvailabilityZone?: boolean | undefined;
    } & Record<Exclude<keyof I, keyof RouterSettings>, never>>(object: I): RouterSettings;
};
export declare const CoordinatorSettings: {
    encode(_: CoordinatorSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CoordinatorSettings;
    fromJSON(_: any): CoordinatorSettings;
    toJSON(_: CoordinatorSettings): unknown;
    fromPartial<I extends {} & {} & Record<Exclude<keyof I, never>, never>>(_: I): CoordinatorSettings;
};
export declare const PostgreSQLSettings: {
    encode(_: PostgreSQLSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostgreSQLSettings;
    fromJSON(_: any): PostgreSQLSettings;
    toJSON(_: PostgreSQLSettings): unknown;
    fromPartial<I extends {} & {} & Record<Exclude<keyof I, never>, never>>(_: I): PostgreSQLSettings;
};
export declare const Resources: {
    encode(message: Resources, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Resources;
    fromJSON(object: any): Resources;
    toJSON(message: Resources): unknown;
    fromPartial<I extends {
        resourcePresetId?: string | undefined;
        diskSize?: number | undefined;
        diskTypeId?: string | undefined;
    } & {
        resourcePresetId?: string | undefined;
        diskSize?: number | undefined;
        diskTypeId?: string | undefined;
    } & Record<Exclude<keyof I, keyof Resources>, never>>(object: I): Resources;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & Record<Exclude<keyof I, KeysOfUnion<P>>, never>;
export {};
