/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { ResourceGroup } from '../../../../../yandex/cloud/mdb/greenplum/v1/resource_groups';
import { FieldMask } from '../../../../../google/protobuf/field_mask';
import { Operation } from '../../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.mdb.greenplum.v1";
export interface CreateResourceGroupMetadata {
    clusterId: string;
    resourceGroupName: string;
}
export interface UpdateResourceGroupMetadata {
    clusterId: string;
    resourceGroupName: string;
}
export interface DeleteResourceGroupMetadata {
    clusterId: string;
    resourceGroupName: string;
}
export interface ListResourceGroupsRequest {
    clusterId: string;
}
export interface ListResourceGroupsResponse {
    resourceGroups: ResourceGroup[];
}
export interface GetResourceGroupAtRevisionRequest {
    /** ID of the Greenplum cluster. */
    clusterId: string;
    /** Cluster revision */
    revision: number;
    resourceGroupName: string;
}
export interface CreateResourceGroupRequest {
    clusterId: string;
    resourceGroup?: ResourceGroup;
}
export interface UpdateResourceGroupRequest {
    clusterId: string;
    updateMask?: FieldMask;
    resourceGroup?: ResourceGroup;
}
export interface DeleteResourceGroupRequest {
    clusterId: string;
    resourceGroupName: string;
}
export declare const CreateResourceGroupMetadata: {
    encode(message: CreateResourceGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateResourceGroupMetadata;
    fromJSON(object: any): CreateResourceGroupMetadata;
    toJSON(message: CreateResourceGroupMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateResourceGroupMetadata>, never>>(object: I): CreateResourceGroupMetadata;
};
export declare const UpdateResourceGroupMetadata: {
    encode(message: UpdateResourceGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateResourceGroupMetadata;
    fromJSON(object: any): UpdateResourceGroupMetadata;
    toJSON(message: UpdateResourceGroupMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateResourceGroupMetadata>, never>>(object: I): UpdateResourceGroupMetadata;
};
export declare const DeleteResourceGroupMetadata: {
    encode(message: DeleteResourceGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteResourceGroupMetadata;
    fromJSON(object: any): DeleteResourceGroupMetadata;
    toJSON(message: DeleteResourceGroupMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & Record<Exclude<keyof I, keyof DeleteResourceGroupMetadata>, never>>(object: I): DeleteResourceGroupMetadata;
};
export declare const ListResourceGroupsRequest: {
    encode(message: ListResourceGroupsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListResourceGroupsRequest;
    fromJSON(object: any): ListResourceGroupsRequest;
    toJSON(message: ListResourceGroupsRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
    } & {
        clusterId?: string | undefined;
    } & Record<Exclude<keyof I, "clusterId">, never>>(object: I): ListResourceGroupsRequest;
};
export declare const ListResourceGroupsResponse: {
    encode(message: ListResourceGroupsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListResourceGroupsResponse;
    fromJSON(object: any): ListResourceGroupsResponse;
    toJSON(message: ListResourceGroupsResponse): unknown;
    fromPartial<I extends {
        resourceGroups?: {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        }[] | undefined;
    } & {
        resourceGroups?: ({
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        }[] & ({
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } & {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } & Record<Exclude<keyof I["resourceGroups"][number], keyof ResourceGroup>, never>)[] & Record<Exclude<keyof I["resourceGroups"], keyof {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, "resourceGroups">, never>>(object: I): ListResourceGroupsResponse;
};
export declare const GetResourceGroupAtRevisionRequest: {
    encode(message: GetResourceGroupAtRevisionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetResourceGroupAtRevisionRequest;
    fromJSON(object: any): GetResourceGroupAtRevisionRequest;
    toJSON(message: GetResourceGroupAtRevisionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        revision?: number | undefined;
        resourceGroupName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        revision?: number | undefined;
        resourceGroupName?: string | undefined;
    } & Record<Exclude<keyof I, keyof GetResourceGroupAtRevisionRequest>, never>>(object: I): GetResourceGroupAtRevisionRequest;
};
export declare const CreateResourceGroupRequest: {
    encode(message: CreateResourceGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateResourceGroupRequest;
    fromJSON(object: any): CreateResourceGroupRequest;
    toJSON(message: CreateResourceGroupRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        resourceGroup?: {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } | undefined;
    } & {
        clusterId?: string | undefined;
        resourceGroup?: ({
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } & {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } & Record<Exclude<keyof I["resourceGroup"], keyof ResourceGroup>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CreateResourceGroupRequest>, never>>(object: I): CreateResourceGroupRequest;
};
export declare const UpdateResourceGroupRequest: {
    encode(message: UpdateResourceGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateResourceGroupRequest;
    fromJSON(object: any): UpdateResourceGroupRequest;
    toJSON(message: UpdateResourceGroupRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        resourceGroup?: {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } | undefined;
    } & {
        clusterId?: 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;
        resourceGroup?: ({
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } & {
            name?: string | undefined;
            isUserDefined?: boolean | undefined;
            concurrency?: number | undefined;
            cpuRateLimit?: number | undefined;
            memoryLimit?: number | undefined;
            memorySharedQuota?: number | undefined;
            memorySpillRatio?: number | undefined;
        } & Record<Exclude<keyof I["resourceGroup"], keyof ResourceGroup>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateResourceGroupRequest>, never>>(object: I): UpdateResourceGroupRequest;
};
export declare const DeleteResourceGroupRequest: {
    encode(message: DeleteResourceGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteResourceGroupRequest;
    fromJSON(object: any): DeleteResourceGroupRequest;
    toJSON(message: DeleteResourceGroupRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & {
        clusterId?: string | undefined;
        resourceGroupName?: string | undefined;
    } & Record<Exclude<keyof I, keyof DeleteResourceGroupRequest>, never>>(object: I): DeleteResourceGroupRequest;
};
export declare const ResourceGroupServiceService: {
    /** List all resource group */
    readonly list: {
        readonly path: "/yandex.cloud.mdb.greenplum.v1.ResourceGroupService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListResourceGroupsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListResourceGroupsRequest;
        readonly responseSerialize: (value: ListResourceGroupsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListResourceGroupsResponse;
    };
    /** Returns the specified resource group at revision. */
    readonly getAtRevision: {
        readonly path: "/yandex.cloud.mdb.greenplum.v1.ResourceGroupService/GetAtRevision";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetResourceGroupAtRevisionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetResourceGroupAtRevisionRequest;
        readonly responseSerialize: (value: ResourceGroup) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ResourceGroup;
    };
    /** Creates resource group */
    readonly create: {
        readonly path: "/yandex.cloud.mdb.greenplum.v1.ResourceGroupService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateResourceGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateResourceGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Update resource group */
    readonly update: {
        readonly path: "/yandex.cloud.mdb.greenplum.v1.ResourceGroupService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateResourceGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateResourceGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Delete resource group */
    readonly delete: {
        readonly path: "/yandex.cloud.mdb.greenplum.v1.ResourceGroupService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteResourceGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteResourceGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface ResourceGroupServiceServer extends UntypedServiceImplementation {
    /** List all resource group */
    list: handleUnaryCall<ListResourceGroupsRequest, ListResourceGroupsResponse>;
    /** Returns the specified resource group at revision. */
    getAtRevision: handleUnaryCall<GetResourceGroupAtRevisionRequest, ResourceGroup>;
    /** Creates resource group */
    create: handleUnaryCall<CreateResourceGroupRequest, Operation>;
    /** Update resource group */
    update: handleUnaryCall<UpdateResourceGroupRequest, Operation>;
    /** Delete resource group */
    delete: handleUnaryCall<DeleteResourceGroupRequest, Operation>;
}
export interface ResourceGroupServiceClient extends Client {
    /** List all resource group */
    list(request: ListResourceGroupsRequest, callback: (error: ServiceError | null, response: ListResourceGroupsResponse) => void): ClientUnaryCall;
    list(request: ListResourceGroupsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListResourceGroupsResponse) => void): ClientUnaryCall;
    list(request: ListResourceGroupsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListResourceGroupsResponse) => void): ClientUnaryCall;
    /** Returns the specified resource group at revision. */
    getAtRevision(request: GetResourceGroupAtRevisionRequest, callback: (error: ServiceError | null, response: ResourceGroup) => void): ClientUnaryCall;
    getAtRevision(request: GetResourceGroupAtRevisionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ResourceGroup) => void): ClientUnaryCall;
    getAtRevision(request: GetResourceGroupAtRevisionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ResourceGroup) => void): ClientUnaryCall;
    /** Creates resource group */
    create(request: CreateResourceGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateResourceGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateResourceGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Update resource group */
    update(request: UpdateResourceGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateResourceGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateResourceGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Delete resource group */
    delete(request: DeleteResourceGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteResourceGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteResourceGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const ResourceGroupServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): ResourceGroupServiceClient;
    service: typeof ResourceGroupServiceService;
};
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 {};
