/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { UserSpec, UserSettings, UserPasswordEncryption, Permission, User } from '../../../../../yandex/cloud/mdb/postgresql/v1/user';
import { FieldMask } from '../../../../../google/protobuf/field_mask';
import { Operation } from '../../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.mdb.postgresql.v1";
export interface GetUserRequest {
    /**
     * ID of the PostgreSQL cluster the user belongs to.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /**
     * Name of the PostgreSQL User resource to return.
     * To get the name of the user, use a [UserService.List] request.
     */
    userName: string;
}
export interface ListUsersRequest {
    /**
     * ID of the cluster to list PostgreSQL users in.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /**
     * The maximum number of results per page to return. If the number of available
     * results is larger than `page_size`, the service returns a [ListUsersResponse.next_page_token]
     * that can be used to get the next page of results in subsequent list requests.
     */
    pageSize: number;
    /**
     * Page token. To get the next page of results, set `page_token` to the [ListUsersResponse.next_page_token]
     * returned by the previous list request.
     */
    pageToken: string;
}
export interface ListUsersResponse {
    /** List of PostgreSQL User resources. */
    users: User[];
    /**
     * This token allows you to get the next page of results for list requests. If the number of results
     * is larger than [ListUsersRequest.page_size], use the `next_page_token` as the value
     * for the [ListUsersRequest.page_token] parameter in the next list request. Each subsequent
     * list request will have its own `next_page_token` to continue paging through the results.
     */
    nextPageToken: string;
}
export interface CreateUserRequest {
    /**
     * ID of the PostgreSQL cluster to create a user in.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /** Properties of the user to be created. */
    userSpec?: UserSpec;
}
export interface CreateUserMetadata {
    /** ID of the PostgreSQL cluster the user is being created in. */
    clusterId: string;
    /** Name of the user that is being created. */
    userName: string;
}
export interface UpdateUserRequest {
    /**
     * ID of the PostgreSQL cluster the user belongs to.
     * To get the cluster ID use a [ClusterService.List] request.
     */
    clusterId: string;
    /**
     * Name of the user to be updated.
     * To get the name of the user use a [UserService.List] request.
     */
    userName: string;
    /** Field mask that specifies which fields of the PostgreSQL User resource should be updated. */
    updateMask?: FieldMask;
    /** New password for the user. */
    password: string;
    /** Set of permissions granted to the user to access specific databases. */
    permissions: Permission[];
    /**
     * Maximum number of database connections available to the user.
     *
     * When used in session pooling, this setting limits the number of connections to every single host in PostgreSQL cluster. In this case, the setting's value must be greater than the total number of connections that backend services can open to access the PostgreSQL cluster. The setting's value should not exceed the value of the [Cluster.config.postgresql_config.max_connections] setting.
     *
     * When used in transaction pooling, this setting limits the number of user's active transactions; therefore, in this mode user can open thousands of connections, but only `N` concurrent connections will be opened, where `N` is the value of the setting.
     *
     * Minimum value: `10` (default: `50`), when used in session pooling.
     */
    connLimit: number;
    settings?: UserSettings;
    /**
     * This flag defines whether the user can login to a PostgreSQL database.
     *
     * Default value: `true` (login is allowed).
     */
    login?: boolean;
    /**
     * A set of roles and privileges that are granted to the user.
     *
     * For more information, see [the documentation](/docs/managed-postgresql/operations/grant).
     */
    grants: string[];
    /**
     * Deletion Protection inhibits deletion of the user
     *
     * Default value: `unspecified` (inherits cluster's deletion_protection)
     */
    deletionProtection?: boolean;
    /**
     * New password-based authentication method for user.
     * Possible values are `` USER_PASSWORD_ENCRYPTION_MD5 `` or `` USER_PASSWORD_ENCRYPTION_SCRAM_SHA_256 ``.
     */
    userPasswordEncryption: UserPasswordEncryption;
    /** Generate password using Connection Manager. */
    generatePassword?: boolean;
}
export interface UpdateUserMetadata {
    /** ID of the PostgreSQL cluster the user belongs to. */
    clusterId: string;
    /** Name of the user that is being updated. */
    userName: string;
}
export interface DeleteUserRequest {
    /**
     * ID of the PostgreSQL cluster the user belongs to.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /**
     * Name of the user to delete.
     * To get the name of the user, use a [UserService.List] request.
     */
    userName: string;
}
export interface DeleteUserMetadata {
    /** ID of the PostgreSQL cluster the user belongs to. */
    clusterId: string;
    /** Name of the user that is being deleted. */
    userName: string;
}
export interface GrantUserPermissionRequest {
    /**
     * ID of the PostgreSQL cluster the user belongs to.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /**
     * Name of the user to grant the permission to.
     * To get the name of the user, use a [UserService.List] request.
     */
    userName: string;
    /** Permission that should be granted to the specified user. */
    permission?: Permission;
}
export interface GrantUserPermissionMetadata {
    /**
     * ID of the PostgreSQL cluster the user belongs to.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /** Name of the user that is being granted a permission. */
    userName: string;
}
export interface RevokeUserPermissionRequest {
    /**
     * ID of the PostgreSQL cluster the user belongs to.
     * To get the cluster ID, use a [ClusterService.List] request.
     */
    clusterId: string;
    /**
     * Name of the user to revoke a permission from.
     * To get the name of the user, use a [UserService.List] request.
     */
    userName: string;
    /** Name of the database that the user should lose access to. */
    databaseName: string;
}
export interface RevokeUserPermissionMetadata {
    /** ID of the PostgreSQL cluster the user belongs to. */
    clusterId: string;
    /** Name of the user whose permission is being revoked. */
    userName: string;
}
export declare const GetUserRequest: {
    encode(message: GetUserRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetUserRequest;
    fromJSON(object: any): GetUserRequest;
    toJSON(message: GetUserRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof GetUserRequest>, never>>(object: I): GetUserRequest;
};
export declare const ListUsersRequest: {
    encode(message: ListUsersRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListUsersRequest;
    fromJSON(object: any): ListUsersRequest;
    toJSON(message: ListUsersRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & {
        clusterId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListUsersRequest>, never>>(object: I): ListUsersRequest;
};
export declare const ListUsersResponse: {
    encode(message: ListUsersResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListUsersResponse;
    fromJSON(object: any): ListUsersResponse;
    toJSON(message: ListUsersResponse): unknown;
    fromPartial<I extends {
        users?: {
            name?: string | undefined;
            clusterId?: string | undefined;
            permissions?: {
                databaseName?: string | undefined;
            }[] | undefined;
            connLimit?: number | undefined;
            settings?: {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } | undefined;
            login?: boolean | undefined;
            grants?: string[] | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            connectionManager?: {
                connectionId?: string | undefined;
            } | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        users?: ({
            name?: string | undefined;
            clusterId?: string | undefined;
            permissions?: {
                databaseName?: string | undefined;
            }[] | undefined;
            connLimit?: number | undefined;
            settings?: {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } | undefined;
            login?: boolean | undefined;
            grants?: string[] | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            connectionManager?: {
                connectionId?: string | undefined;
            } | undefined;
        }[] & ({
            name?: string | undefined;
            clusterId?: string | undefined;
            permissions?: {
                databaseName?: string | undefined;
            }[] | undefined;
            connLimit?: number | undefined;
            settings?: {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } | undefined;
            login?: boolean | undefined;
            grants?: string[] | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            connectionManager?: {
                connectionId?: string | undefined;
            } | undefined;
        } & {
            name?: string | undefined;
            clusterId?: string | undefined;
            permissions?: ({
                databaseName?: string | undefined;
            }[] & ({
                databaseName?: string | undefined;
            } & {
                databaseName?: string | undefined;
            } & Record<Exclude<keyof I["users"][number]["permissions"][number], "databaseName">, never>)[] & Record<Exclude<keyof I["users"][number]["permissions"], keyof {
                databaseName?: string | undefined;
            }[]>, never>) | undefined;
            connLimit?: number | undefined;
            settings?: ({
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } & {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: ({
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } & {
                    log?: (import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] & import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] & Record<Exclude<keyof I["users"][number]["settings"]["pgaudit"]["log"], keyof import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[]>, never>) | undefined;
                } & Record<Exclude<keyof I["users"][number]["settings"]["pgaudit"], "log">, never>) | undefined;
            } & Record<Exclude<keyof I["users"][number]["settings"], keyof UserSettings>, never>) | undefined;
            login?: boolean | undefined;
            grants?: (string[] & string[] & Record<Exclude<keyof I["users"][number]["grants"], keyof string[]>, never>) | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            connectionManager?: ({
                connectionId?: string | undefined;
            } & {
                connectionId?: string | undefined;
            } & Record<Exclude<keyof I["users"][number]["connectionManager"], "connectionId">, never>) | undefined;
        } & Record<Exclude<keyof I["users"][number], keyof User>, never>)[] & Record<Exclude<keyof I["users"], keyof {
            name?: string | undefined;
            clusterId?: string | undefined;
            permissions?: {
                databaseName?: string | undefined;
            }[] | undefined;
            connLimit?: number | undefined;
            settings?: {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } | undefined;
            login?: boolean | undefined;
            grants?: string[] | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            connectionManager?: {
                connectionId?: string | undefined;
            } | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListUsersResponse>, never>>(object: I): ListUsersResponse;
};
export declare const CreateUserRequest: {
    encode(message: CreateUserRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateUserRequest;
    fromJSON(object: any): CreateUserRequest;
    toJSON(message: CreateUserRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userSpec?: {
            name?: string | undefined;
            password?: string | undefined;
            permissions?: {
                databaseName?: string | undefined;
            }[] | undefined;
            connLimit?: number | undefined;
            settings?: {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } | undefined;
            login?: boolean | undefined;
            grants?: string[] | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            generatePassword?: boolean | undefined;
        } | undefined;
    } & {
        clusterId?: string | undefined;
        userSpec?: ({
            name?: string | undefined;
            password?: string | undefined;
            permissions?: {
                databaseName?: string | undefined;
            }[] | undefined;
            connLimit?: number | undefined;
            settings?: {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } | undefined;
            login?: boolean | undefined;
            grants?: string[] | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            generatePassword?: boolean | undefined;
        } & {
            name?: string | undefined;
            password?: string | undefined;
            permissions?: ({
                databaseName?: string | undefined;
            }[] & ({
                databaseName?: string | undefined;
            } & {
                databaseName?: string | undefined;
            } & Record<Exclude<keyof I["userSpec"]["permissions"][number], "databaseName">, never>)[] & Record<Exclude<keyof I["userSpec"]["permissions"], keyof {
                databaseName?: string | undefined;
            }[]>, never>) | undefined;
            connLimit?: number | undefined;
            settings?: ({
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: {
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } | undefined;
            } & {
                defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
                lockTimeout?: number | undefined;
                logMinDurationStatement?: number | undefined;
                synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
                tempFileLimit?: number | undefined;
                logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
                poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
                preparedStatementsPooling?: boolean | undefined;
                catchupTimeout?: number | undefined;
                walSenderTimeout?: number | undefined;
                idleInTransactionSessionTimeout?: number | undefined;
                statementTimeout?: number | undefined;
                pgaudit?: ({
                    log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
                } & {
                    log?: (import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] & import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] & Record<Exclude<keyof I["userSpec"]["settings"]["pgaudit"]["log"], keyof import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[]>, never>) | undefined;
                } & Record<Exclude<keyof I["userSpec"]["settings"]["pgaudit"], "log">, never>) | undefined;
            } & Record<Exclude<keyof I["userSpec"]["settings"], keyof UserSettings>, never>) | undefined;
            login?: boolean | undefined;
            grants?: (string[] & string[] & Record<Exclude<keyof I["userSpec"]["grants"], keyof string[]>, never>) | undefined;
            deletionProtection?: boolean | undefined;
            userPasswordEncryption?: UserPasswordEncryption | undefined;
            generatePassword?: boolean | undefined;
        } & Record<Exclude<keyof I["userSpec"], keyof UserSpec>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CreateUserRequest>, never>>(object: I): CreateUserRequest;
};
export declare const CreateUserMetadata: {
    encode(message: CreateUserMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateUserMetadata;
    fromJSON(object: any): CreateUserMetadata;
    toJSON(message: CreateUserMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateUserMetadata>, never>>(object: I): CreateUserMetadata;
};
export declare const UpdateUserRequest: {
    encode(message: UpdateUserRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateUserRequest;
    fromJSON(object: any): UpdateUserRequest;
    toJSON(message: UpdateUserRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        password?: string | undefined;
        permissions?: {
            databaseName?: string | undefined;
        }[] | undefined;
        connLimit?: number | undefined;
        settings?: {
            defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
            lockTimeout?: number | undefined;
            logMinDurationStatement?: number | undefined;
            synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
            tempFileLimit?: number | undefined;
            logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
            poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
            preparedStatementsPooling?: boolean | undefined;
            catchupTimeout?: number | undefined;
            walSenderTimeout?: number | undefined;
            idleInTransactionSessionTimeout?: number | undefined;
            statementTimeout?: number | undefined;
            pgaudit?: {
                log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
            } | undefined;
        } | undefined;
        login?: boolean | undefined;
        grants?: string[] | undefined;
        deletionProtection?: boolean | undefined;
        userPasswordEncryption?: UserPasswordEncryption | undefined;
        generatePassword?: boolean | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
        updateMask?: ({
            paths?: string[] | undefined;
        } & {
            paths?: (string[] & string[] & Record<Exclude<keyof I["updateMask"]["paths"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["updateMask"], "paths">, never>) | undefined;
        password?: string | undefined;
        permissions?: ({
            databaseName?: string | undefined;
        }[] & ({
            databaseName?: string | undefined;
        } & {
            databaseName?: string | undefined;
        } & Record<Exclude<keyof I["permissions"][number], "databaseName">, never>)[] & Record<Exclude<keyof I["permissions"], keyof {
            databaseName?: string | undefined;
        }[]>, never>) | undefined;
        connLimit?: number | undefined;
        settings?: ({
            defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
            lockTimeout?: number | undefined;
            logMinDurationStatement?: number | undefined;
            synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
            tempFileLimit?: number | undefined;
            logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
            poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
            preparedStatementsPooling?: boolean | undefined;
            catchupTimeout?: number | undefined;
            walSenderTimeout?: number | undefined;
            idleInTransactionSessionTimeout?: number | undefined;
            statementTimeout?: number | undefined;
            pgaudit?: {
                log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
            } | undefined;
        } & {
            defaultTransactionIsolation?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_TransactionIsolation | undefined;
            lockTimeout?: number | undefined;
            logMinDurationStatement?: number | undefined;
            synchronousCommit?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_SynchronousCommit | undefined;
            tempFileLimit?: number | undefined;
            logStatement?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_LogStatement | undefined;
            poolMode?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").UserSettings_PoolingMode | undefined;
            preparedStatementsPooling?: boolean | undefined;
            catchupTimeout?: number | undefined;
            walSenderTimeout?: number | undefined;
            idleInTransactionSessionTimeout?: number | undefined;
            statementTimeout?: number | undefined;
            pgaudit?: ({
                log?: import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] | undefined;
            } & {
                log?: (import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] & import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[] & Record<Exclude<keyof I["settings"]["pgaudit"]["log"], keyof import("../../../../../yandex/cloud/mdb/postgresql/v1/user").PGAuditSettings_PGAuditSettingsLog[]>, never>) | undefined;
            } & Record<Exclude<keyof I["settings"]["pgaudit"], "log">, never>) | undefined;
        } & Record<Exclude<keyof I["settings"], keyof UserSettings>, never>) | undefined;
        login?: boolean | undefined;
        grants?: (string[] & string[] & Record<Exclude<keyof I["grants"], keyof string[]>, never>) | undefined;
        deletionProtection?: boolean | undefined;
        userPasswordEncryption?: UserPasswordEncryption | undefined;
        generatePassword?: boolean | undefined;
    } & Record<Exclude<keyof I, keyof UpdateUserRequest>, never>>(object: I): UpdateUserRequest;
};
export declare const UpdateUserMetadata: {
    encode(message: UpdateUserMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateUserMetadata;
    fromJSON(object: any): UpdateUserMetadata;
    toJSON(message: UpdateUserMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateUserMetadata>, never>>(object: I): UpdateUserMetadata;
};
export declare const DeleteUserRequest: {
    encode(message: DeleteUserRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteUserRequest;
    fromJSON(object: any): DeleteUserRequest;
    toJSON(message: DeleteUserRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof DeleteUserRequest>, never>>(object: I): DeleteUserRequest;
};
export declare const DeleteUserMetadata: {
    encode(message: DeleteUserMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteUserMetadata;
    fromJSON(object: any): DeleteUserMetadata;
    toJSON(message: DeleteUserMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof DeleteUserMetadata>, never>>(object: I): DeleteUserMetadata;
};
export declare const GrantUserPermissionRequest: {
    encode(message: GrantUserPermissionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GrantUserPermissionRequest;
    fromJSON(object: any): GrantUserPermissionRequest;
    toJSON(message: GrantUserPermissionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
        permission?: {
            databaseName?: string | undefined;
        } | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
        permission?: ({
            databaseName?: string | undefined;
        } & {
            databaseName?: string | undefined;
        } & Record<Exclude<keyof I["permission"], "databaseName">, never>) | undefined;
    } & Record<Exclude<keyof I, keyof GrantUserPermissionRequest>, never>>(object: I): GrantUserPermissionRequest;
};
export declare const GrantUserPermissionMetadata: {
    encode(message: GrantUserPermissionMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GrantUserPermissionMetadata;
    fromJSON(object: any): GrantUserPermissionMetadata;
    toJSON(message: GrantUserPermissionMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof GrantUserPermissionMetadata>, never>>(object: I): GrantUserPermissionMetadata;
};
export declare const RevokeUserPermissionRequest: {
    encode(message: RevokeUserPermissionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RevokeUserPermissionRequest;
    fromJSON(object: any): RevokeUserPermissionRequest;
    toJSON(message: RevokeUserPermissionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
        databaseName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
        databaseName?: string | undefined;
    } & Record<Exclude<keyof I, keyof RevokeUserPermissionRequest>, never>>(object: I): RevokeUserPermissionRequest;
};
export declare const RevokeUserPermissionMetadata: {
    encode(message: RevokeUserPermissionMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RevokeUserPermissionMetadata;
    fromJSON(object: any): RevokeUserPermissionMetadata;
    toJSON(message: RevokeUserPermissionMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        userName?: string | undefined;
    } & Record<Exclude<keyof I, keyof RevokeUserPermissionMetadata>, never>>(object: I): RevokeUserPermissionMetadata;
};
/** A set of methods for managing PostgreSQL User resources. */
export declare const UserServiceService: {
    /**
     * Returns the specified PostgreSQL User resource.
     *
     * To get the list of available PostgreSQL User resources, make a [List] request.
     */
    readonly get: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetUserRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetUserRequest;
        readonly responseSerialize: (value: User) => Buffer;
        readonly responseDeserialize: (value: Buffer) => User;
    };
    /** Retrieves the list of PostgreSQL User resources in the specified cluster. */
    readonly list: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListUsersRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListUsersRequest;
        readonly responseSerialize: (value: ListUsersResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListUsersResponse;
    };
    /** Creates a PostgreSQL user in the specified cluster. */
    readonly create: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateUserRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateUserRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates the specified PostgreSQL user. */
    readonly update: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateUserRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateUserRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Deletes the specified PostgreSQL user. */
    readonly delete: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteUserRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteUserRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Grants permission to the specified PostgreSQL user. */
    readonly grantPermission: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/GrantPermission";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GrantUserPermissionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GrantUserPermissionRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Revokes permission from the specified PostgreSQL user. */
    readonly revokePermission: {
        readonly path: "/yandex.cloud.mdb.postgresql.v1.UserService/RevokePermission";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: RevokeUserPermissionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => RevokeUserPermissionRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface UserServiceServer extends UntypedServiceImplementation {
    /**
     * Returns the specified PostgreSQL User resource.
     *
     * To get the list of available PostgreSQL User resources, make a [List] request.
     */
    get: handleUnaryCall<GetUserRequest, User>;
    /** Retrieves the list of PostgreSQL User resources in the specified cluster. */
    list: handleUnaryCall<ListUsersRequest, ListUsersResponse>;
    /** Creates a PostgreSQL user in the specified cluster. */
    create: handleUnaryCall<CreateUserRequest, Operation>;
    /** Updates the specified PostgreSQL user. */
    update: handleUnaryCall<UpdateUserRequest, Operation>;
    /** Deletes the specified PostgreSQL user. */
    delete: handleUnaryCall<DeleteUserRequest, Operation>;
    /** Grants permission to the specified PostgreSQL user. */
    grantPermission: handleUnaryCall<GrantUserPermissionRequest, Operation>;
    /** Revokes permission from the specified PostgreSQL user. */
    revokePermission: handleUnaryCall<RevokeUserPermissionRequest, Operation>;
}
export interface UserServiceClient extends Client {
    /**
     * Returns the specified PostgreSQL User resource.
     *
     * To get the list of available PostgreSQL User resources, make a [List] request.
     */
    get(request: GetUserRequest, callback: (error: ServiceError | null, response: User) => void): ClientUnaryCall;
    get(request: GetUserRequest, metadata: Metadata, callback: (error: ServiceError | null, response: User) => void): ClientUnaryCall;
    get(request: GetUserRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: User) => void): ClientUnaryCall;
    /** Retrieves the list of PostgreSQL User resources in the specified cluster. */
    list(request: ListUsersRequest, callback: (error: ServiceError | null, response: ListUsersResponse) => void): ClientUnaryCall;
    list(request: ListUsersRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListUsersResponse) => void): ClientUnaryCall;
    list(request: ListUsersRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListUsersResponse) => void): ClientUnaryCall;
    /** Creates a PostgreSQL user in the specified cluster. */
    create(request: CreateUserRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateUserRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateUserRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates the specified PostgreSQL user. */
    update(request: UpdateUserRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateUserRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateUserRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Deletes the specified PostgreSQL user. */
    delete(request: DeleteUserRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteUserRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteUserRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Grants permission to the specified PostgreSQL user. */
    grantPermission(request: GrantUserPermissionRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    grantPermission(request: GrantUserPermissionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    grantPermission(request: GrantUserPermissionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Revokes permission from the specified PostgreSQL user. */
    revokePermission(request: RevokeUserPermissionRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    revokePermission(request: RevokeUserPermissionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    revokePermission(request: RevokeUserPermissionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const UserServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): UserServiceClient;
    service: typeof UserServiceService;
};
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 {};
