/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { Extension } from '../../../../../yandex/cloud/mdb/elasticsearch/v1/extension';
import { Operation } from '../../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.mdb.elasticsearch.v1";
export interface GetExtensionRequest {
    /** ID of the cluster. */
    clusterId: string;
    /** ID of the extension to return. */
    extensionId: string;
}
export interface ListExtensionsRequest {
    /** ID of the cluster to list extensions in. */
    clusterId: string;
    /**
     * The maximum number of results per page to return.
     *
     * If the number of available results is larger than [page_size], the API returns a [ListExtensionsResponse.next_page_token] that can be used to get the next page of results in subsequent [ExtensionService.List] requests.
     */
    pageSize: number;
    /**
     * Page token that can be used to iterate through multiple pages of results.
     *
     * To get the next page of results, set [page_token] to the [ListExtensionsResponse.next_page_token] returned by the previous [ExtensionService.List] request.
     */
    pageToken: string;
}
export interface ListExtensionsResponse {
    /** Requested list of extensions. */
    extensions: Extension[];
    /**
     * The token that can be used to get the next page of results.
     *
     * If the number of results is larger than [ListExtensionsRequest.page_size], use the [next_page_token] as the value for the [ListExtensionsRequest.page_token] in the subsequent [ExtensionService.List] request to iterate through multiple pages of results.
     *
     * Each of the subsequent [ExtensionService.List] requests should use the [next_page_token] value returned in the previous request to continue paging through the results.
     */
    nextPageToken: string;
}
export interface DeleteExtensionRequest {
    /** ID of the cluster. */
    clusterId: string;
    /** ID of the extension to delete. */
    extensionId: string;
}
export interface DeleteExtensionMetadata {
    /** ID of the cluster. */
    clusterId: string;
    /** ID of the extension to delete. */
    extensionId: string;
}
export interface UpdateExtensionRequest {
    /** ID of the cluster. */
    clusterId: string;
    /** ID of the extension to update. */
    extensionId: string;
    /** The flag shows whether to make the extension active. */
    active: boolean;
}
export interface UpdateExtensionMetadata {
    /** ID of the cluster. */
    clusterId: string;
    /** ID of the extension. */
    extensionId: string;
}
export interface CreateExtensionRequest {
    /** ID of the cluster. */
    clusterId: string;
    /** Name of the extension. */
    name: string;
    /** URI of the zip archive to create the new extension from. Currently only supports links that are stored in Object Storage. */
    uri: string;
    /** The flag that disables the extension. */
    disabled: boolean;
}
export interface CreateExtensionMetadata {
    /** ID of the cluster. */
    clusterId: string;
    /** ID of the extension. */
    extensionId: string;
}
export declare const GetExtensionRequest: {
    encode(message: GetExtensionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetExtensionRequest;
    fromJSON(object: any): GetExtensionRequest;
    toJSON(message: GetExtensionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof GetExtensionRequest>, never>>(object: I): GetExtensionRequest;
};
export declare const ListExtensionsRequest: {
    encode(message: ListExtensionsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListExtensionsRequest;
    fromJSON(object: any): ListExtensionsRequest;
    toJSON(message: ListExtensionsRequest): 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 ListExtensionsRequest>, never>>(object: I): ListExtensionsRequest;
};
export declare const ListExtensionsResponse: {
    encode(message: ListExtensionsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListExtensionsResponse;
    fromJSON(object: any): ListExtensionsResponse;
    toJSON(message: ListExtensionsResponse): unknown;
    fromPartial<I extends {
        extensions?: {
            name?: string | undefined;
            id?: string | undefined;
            clusterId?: string | undefined;
            version?: number | undefined;
            active?: boolean | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        extensions?: ({
            name?: string | undefined;
            id?: string | undefined;
            clusterId?: string | undefined;
            version?: number | undefined;
            active?: boolean | undefined;
        }[] & ({
            name?: string | undefined;
            id?: string | undefined;
            clusterId?: string | undefined;
            version?: number | undefined;
            active?: boolean | undefined;
        } & {
            name?: string | undefined;
            id?: string | undefined;
            clusterId?: string | undefined;
            version?: number | undefined;
            active?: boolean | undefined;
        } & Record<Exclude<keyof I["extensions"][number], keyof Extension>, never>)[] & Record<Exclude<keyof I["extensions"], keyof {
            name?: string | undefined;
            id?: string | undefined;
            clusterId?: string | undefined;
            version?: number | undefined;
            active?: boolean | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListExtensionsResponse>, never>>(object: I): ListExtensionsResponse;
};
export declare const DeleteExtensionRequest: {
    encode(message: DeleteExtensionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteExtensionRequest;
    fromJSON(object: any): DeleteExtensionRequest;
    toJSON(message: DeleteExtensionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof DeleteExtensionRequest>, never>>(object: I): DeleteExtensionRequest;
};
export declare const DeleteExtensionMetadata: {
    encode(message: DeleteExtensionMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteExtensionMetadata;
    fromJSON(object: any): DeleteExtensionMetadata;
    toJSON(message: DeleteExtensionMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof DeleteExtensionMetadata>, never>>(object: I): DeleteExtensionMetadata;
};
export declare const UpdateExtensionRequest: {
    encode(message: UpdateExtensionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateExtensionRequest;
    fromJSON(object: any): UpdateExtensionRequest;
    toJSON(message: UpdateExtensionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
        active?: boolean | undefined;
    } & {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
        active?: boolean | undefined;
    } & Record<Exclude<keyof I, keyof UpdateExtensionRequest>, never>>(object: I): UpdateExtensionRequest;
};
export declare const UpdateExtensionMetadata: {
    encode(message: UpdateExtensionMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateExtensionMetadata;
    fromJSON(object: any): UpdateExtensionMetadata;
    toJSON(message: UpdateExtensionMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateExtensionMetadata>, never>>(object: I): UpdateExtensionMetadata;
};
export declare const CreateExtensionRequest: {
    encode(message: CreateExtensionRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateExtensionRequest;
    fromJSON(object: any): CreateExtensionRequest;
    toJSON(message: CreateExtensionRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        name?: string | undefined;
        uri?: string | undefined;
        disabled?: boolean | undefined;
    } & {
        clusterId?: string | undefined;
        name?: string | undefined;
        uri?: string | undefined;
        disabled?: boolean | undefined;
    } & Record<Exclude<keyof I, keyof CreateExtensionRequest>, never>>(object: I): CreateExtensionRequest;
};
export declare const CreateExtensionMetadata: {
    encode(message: CreateExtensionMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateExtensionMetadata;
    fromJSON(object: any): CreateExtensionMetadata;
    toJSON(message: CreateExtensionMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        extensionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateExtensionMetadata>, never>>(object: I): CreateExtensionMetadata;
};
export declare const ExtensionServiceService: {
    /** Returns the specified extension of Elasticsearch cluster. */
    readonly get: {
        readonly path: "/yandex.cloud.mdb.elasticsearch.v1.ExtensionService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetExtensionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetExtensionRequest;
        readonly responseSerialize: (value: Extension) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Extension;
    };
    /** Returns the list of available extensions for the specified Elasticsearch cluster. */
    readonly list: {
        readonly path: "/yandex.cloud.mdb.elasticsearch.v1.ExtensionService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListExtensionsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListExtensionsRequest;
        readonly responseSerialize: (value: ListExtensionsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListExtensionsResponse;
    };
    /** Creates new extension version. */
    readonly create: {
        readonly path: "/yandex.cloud.mdb.elasticsearch.v1.ExtensionService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateExtensionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateExtensionRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates the specified extension. */
    readonly update: {
        readonly path: "/yandex.cloud.mdb.elasticsearch.v1.ExtensionService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateExtensionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateExtensionRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Deletes the specified extension. */
    readonly delete: {
        readonly path: "/yandex.cloud.mdb.elasticsearch.v1.ExtensionService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteExtensionRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteExtensionRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface ExtensionServiceServer extends UntypedServiceImplementation {
    /** Returns the specified extension of Elasticsearch cluster. */
    get: handleUnaryCall<GetExtensionRequest, Extension>;
    /** Returns the list of available extensions for the specified Elasticsearch cluster. */
    list: handleUnaryCall<ListExtensionsRequest, ListExtensionsResponse>;
    /** Creates new extension version. */
    create: handleUnaryCall<CreateExtensionRequest, Operation>;
    /** Updates the specified extension. */
    update: handleUnaryCall<UpdateExtensionRequest, Operation>;
    /** Deletes the specified extension. */
    delete: handleUnaryCall<DeleteExtensionRequest, Operation>;
}
export interface ExtensionServiceClient extends Client {
    /** Returns the specified extension of Elasticsearch cluster. */
    get(request: GetExtensionRequest, callback: (error: ServiceError | null, response: Extension) => void): ClientUnaryCall;
    get(request: GetExtensionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Extension) => void): ClientUnaryCall;
    get(request: GetExtensionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Extension) => void): ClientUnaryCall;
    /** Returns the list of available extensions for the specified Elasticsearch cluster. */
    list(request: ListExtensionsRequest, callback: (error: ServiceError | null, response: ListExtensionsResponse) => void): ClientUnaryCall;
    list(request: ListExtensionsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListExtensionsResponse) => void): ClientUnaryCall;
    list(request: ListExtensionsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListExtensionsResponse) => void): ClientUnaryCall;
    /** Creates new extension version. */
    create(request: CreateExtensionRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateExtensionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateExtensionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates the specified extension. */
    update(request: UpdateExtensionRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateExtensionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateExtensionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Deletes the specified extension. */
    delete(request: DeleteExtensionRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteExtensionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteExtensionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const ExtensionServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): ExtensionServiceClient;
    service: typeof ExtensionServiceService;
};
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 {};
