/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { HelmRelease } from '../../../../../yandex/cloud/k8s/marketplace/v1/helm_release';
import { Operation } from '../../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.k8s.marketplace.v1";
export interface ListHelmReleasesRequest {
    /** The ID of the Kubernetes cluster to list Helm releases from. */
    clusterId: string;
    /** The maximum number of results per page that should be returned. */
    pageSize: number;
    /** Token for pagination to retrieve the next page of results. */
    pageToken: string;
}
export interface ListHelmReleasesResponse {
    /** List of Helm releases in the Kubernetes cluster. */
    helmReleases: HelmRelease[];
    /** Token for retrieving the next page of Helm releases. */
    nextPageToken: string;
}
export interface GetHelmReleaseRequest {
    /** The ID of the Helm release to retrieve. */
    id: string;
}
export interface InstallHelmReleaseRequest {
    /** The ID of the Kubernetes cluster where the Helm release is to be installed. */
    clusterId: string;
    /** The product version ID to install. */
    productVersionId: string;
    /** User-defined values for the Helm chart during installation. */
    userValues: ValueWithKey[];
}
export interface InstallHelmReleaseMetadata {
    /** The ID of the Kubernetes cluster where the Helm release is being installed. */
    clusterId: string;
    /** The ID of the Helm release being installed. */
    helmReleaseId: string;
    /** The ID of the product version being deployed. */
    productVersionId: string;
}
export interface UpdateHelmReleaseRequest {
    /** The ID of the Helm release to update. */
    id: string;
    /** The ID of the new product version for the release. */
    productVersionId: string;
    /** Custom user values to apply during the update. */
    userValues: ValueWithKey[];
}
export interface UpdateHelmReleaseMetadata {
    /** The ID of the Kubernetes cluster where the Helm release is being updated. */
    clusterId: string;
    /** The ID of the Helm release being updated. */
    helmReleaseId: string;
    /** The ID of the new product version to update the Helm release to. */
    productVersionId: string;
}
export interface UninstallHelmReleaseRequest {
    /** The ID of the Helm release to retrieve. */
    id: string;
}
export interface UninstallHelmReleaseMetadata {
    /** The ID of the Kubernetes cluster where the release is being uninstalled. */
    clusterId: string;
    /** The ID of the Helm release being uninstalled. */
    helmReleaseId: string;
}
export interface ValueWithKey {
    /** The key associated with the value. */
    key: string;
    /** The value associated with the key. */
    value?: Value;
}
export interface Value {
    /** The typed string value. */
    typedValue: string | undefined;
}
export declare const ListHelmReleasesRequest: {
    encode(message: ListHelmReleasesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListHelmReleasesRequest;
    fromJSON(object: any): ListHelmReleasesRequest;
    toJSON(message: ListHelmReleasesRequest): 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 ListHelmReleasesRequest>, never>>(object: I): ListHelmReleasesRequest;
};
export declare const ListHelmReleasesResponse: {
    encode(message: ListHelmReleasesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListHelmReleasesResponse;
    fromJSON(object: any): ListHelmReleasesResponse;
    toJSON(message: ListHelmReleasesResponse): unknown;
    fromPartial<I extends {
        helmReleases?: {
            id?: string | undefined;
            clusterId?: string | undefined;
            appName?: string | undefined;
            appNamespace?: string | undefined;
            productId?: string | undefined;
            productName?: string | undefined;
            productVersion?: string | undefined;
            status?: import("../../../../../yandex/cloud/k8s/marketplace/v1/helm_release").HelmRelease_Status | undefined;
            createdAt?: Date | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        helmReleases?: ({
            id?: string | undefined;
            clusterId?: string | undefined;
            appName?: string | undefined;
            appNamespace?: string | undefined;
            productId?: string | undefined;
            productName?: string | undefined;
            productVersion?: string | undefined;
            status?: import("../../../../../yandex/cloud/k8s/marketplace/v1/helm_release").HelmRelease_Status | undefined;
            createdAt?: Date | undefined;
        }[] & ({
            id?: string | undefined;
            clusterId?: string | undefined;
            appName?: string | undefined;
            appNamespace?: string | undefined;
            productId?: string | undefined;
            productName?: string | undefined;
            productVersion?: string | undefined;
            status?: import("../../../../../yandex/cloud/k8s/marketplace/v1/helm_release").HelmRelease_Status | undefined;
            createdAt?: Date | undefined;
        } & {
            id?: string | undefined;
            clusterId?: string | undefined;
            appName?: string | undefined;
            appNamespace?: string | undefined;
            productId?: string | undefined;
            productName?: string | undefined;
            productVersion?: string | undefined;
            status?: import("../../../../../yandex/cloud/k8s/marketplace/v1/helm_release").HelmRelease_Status | undefined;
            createdAt?: Date | undefined;
        } & Record<Exclude<keyof I["helmReleases"][number], keyof HelmRelease>, never>)[] & Record<Exclude<keyof I["helmReleases"], keyof {
            id?: string | undefined;
            clusterId?: string | undefined;
            appName?: string | undefined;
            appNamespace?: string | undefined;
            productId?: string | undefined;
            productName?: string | undefined;
            productVersion?: string | undefined;
            status?: import("../../../../../yandex/cloud/k8s/marketplace/v1/helm_release").HelmRelease_Status | undefined;
            createdAt?: Date | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListHelmReleasesResponse>, never>>(object: I): ListHelmReleasesResponse;
};
export declare const GetHelmReleaseRequest: {
    encode(message: GetHelmReleaseRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetHelmReleaseRequest;
    fromJSON(object: any): GetHelmReleaseRequest;
    toJSON(message: GetHelmReleaseRequest): unknown;
    fromPartial<I extends {
        id?: string | undefined;
    } & {
        id?: string | undefined;
    } & Record<Exclude<keyof I, "id">, never>>(object: I): GetHelmReleaseRequest;
};
export declare const InstallHelmReleaseRequest: {
    encode(message: InstallHelmReleaseRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): InstallHelmReleaseRequest;
    fromJSON(object: any): InstallHelmReleaseRequest;
    toJSON(message: InstallHelmReleaseRequest): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        productVersionId?: string | undefined;
        userValues?: {
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        }[] | undefined;
    } & {
        clusterId?: string | undefined;
        productVersionId?: string | undefined;
        userValues?: ({
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        }[] & ({
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        } & {
            key?: string | undefined;
            value?: ({
                typedValue?: string | undefined;
            } & {
                typedValue?: string | undefined;
            } & Record<Exclude<keyof I["userValues"][number]["value"], "typedValue">, never>) | undefined;
        } & Record<Exclude<keyof I["userValues"][number], keyof ValueWithKey>, never>)[] & Record<Exclude<keyof I["userValues"], keyof {
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof InstallHelmReleaseRequest>, never>>(object: I): InstallHelmReleaseRequest;
};
export declare const InstallHelmReleaseMetadata: {
    encode(message: InstallHelmReleaseMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): InstallHelmReleaseMetadata;
    fromJSON(object: any): InstallHelmReleaseMetadata;
    toJSON(message: InstallHelmReleaseMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        helmReleaseId?: string | undefined;
        productVersionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        helmReleaseId?: string | undefined;
        productVersionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof InstallHelmReleaseMetadata>, never>>(object: I): InstallHelmReleaseMetadata;
};
export declare const UpdateHelmReleaseRequest: {
    encode(message: UpdateHelmReleaseRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateHelmReleaseRequest;
    fromJSON(object: any): UpdateHelmReleaseRequest;
    toJSON(message: UpdateHelmReleaseRequest): unknown;
    fromPartial<I extends {
        id?: string | undefined;
        productVersionId?: string | undefined;
        userValues?: {
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        }[] | undefined;
    } & {
        id?: string | undefined;
        productVersionId?: string | undefined;
        userValues?: ({
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        }[] & ({
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        } & {
            key?: string | undefined;
            value?: ({
                typedValue?: string | undefined;
            } & {
                typedValue?: string | undefined;
            } & Record<Exclude<keyof I["userValues"][number]["value"], "typedValue">, never>) | undefined;
        } & Record<Exclude<keyof I["userValues"][number], keyof ValueWithKey>, never>)[] & Record<Exclude<keyof I["userValues"], keyof {
            key?: string | undefined;
            value?: {
                typedValue?: string | undefined;
            } | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateHelmReleaseRequest>, never>>(object: I): UpdateHelmReleaseRequest;
};
export declare const UpdateHelmReleaseMetadata: {
    encode(message: UpdateHelmReleaseMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateHelmReleaseMetadata;
    fromJSON(object: any): UpdateHelmReleaseMetadata;
    toJSON(message: UpdateHelmReleaseMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        helmReleaseId?: string | undefined;
        productVersionId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        helmReleaseId?: string | undefined;
        productVersionId?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateHelmReleaseMetadata>, never>>(object: I): UpdateHelmReleaseMetadata;
};
export declare const UninstallHelmReleaseRequest: {
    encode(message: UninstallHelmReleaseRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UninstallHelmReleaseRequest;
    fromJSON(object: any): UninstallHelmReleaseRequest;
    toJSON(message: UninstallHelmReleaseRequest): unknown;
    fromPartial<I extends {
        id?: string | undefined;
    } & {
        id?: string | undefined;
    } & Record<Exclude<keyof I, "id">, never>>(object: I): UninstallHelmReleaseRequest;
};
export declare const UninstallHelmReleaseMetadata: {
    encode(message: UninstallHelmReleaseMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UninstallHelmReleaseMetadata;
    fromJSON(object: any): UninstallHelmReleaseMetadata;
    toJSON(message: UninstallHelmReleaseMetadata): unknown;
    fromPartial<I extends {
        clusterId?: string | undefined;
        helmReleaseId?: string | undefined;
    } & {
        clusterId?: string | undefined;
        helmReleaseId?: string | undefined;
    } & Record<Exclude<keyof I, keyof UninstallHelmReleaseMetadata>, never>>(object: I): UninstallHelmReleaseMetadata;
};
export declare const ValueWithKey: {
    encode(message: ValueWithKey, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ValueWithKey;
    fromJSON(object: any): ValueWithKey;
    toJSON(message: ValueWithKey): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: {
            typedValue?: string | undefined;
        } | undefined;
    } & {
        key?: string | undefined;
        value?: ({
            typedValue?: string | undefined;
        } & {
            typedValue?: string | undefined;
        } & Record<Exclude<keyof I["value"], "typedValue">, never>) | undefined;
    } & Record<Exclude<keyof I, keyof ValueWithKey>, never>>(object: I): ValueWithKey;
};
export declare const Value: {
    encode(message: Value, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Value;
    fromJSON(object: any): Value;
    toJSON(message: Value): unknown;
    fromPartial<I extends {
        typedValue?: string | undefined;
    } & {
        typedValue?: string | undefined;
    } & Record<Exclude<keyof I, "typedValue">, never>>(object: I): Value;
};
/** A set of methods for managing Helm release. */
export declare const HelmReleaseServiceService: {
    /** Retrieves the list of Helm releases in the specified Kubernetes Cluster. */
    readonly list: {
        readonly path: "/yandex.cloud.k8s.marketplace.v1.HelmReleaseService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListHelmReleasesRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListHelmReleasesRequest;
        readonly responseSerialize: (value: ListHelmReleasesResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListHelmReleasesResponse;
    };
    /** Returns the specified Helm release. */
    readonly get: {
        readonly path: "/yandex.cloud.k8s.marketplace.v1.HelmReleaseService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetHelmReleaseRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetHelmReleaseRequest;
        readonly responseSerialize: (value: HelmRelease) => Buffer;
        readonly responseDeserialize: (value: Buffer) => HelmRelease;
    };
    /** Installs helm release into specified Kubernetes Cluster. */
    readonly install: {
        readonly path: "/yandex.cloud.k8s.marketplace.v1.HelmReleaseService/Install";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: InstallHelmReleaseRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => InstallHelmReleaseRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates helm release. */
    readonly update: {
        readonly path: "/yandex.cloud.k8s.marketplace.v1.HelmReleaseService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateHelmReleaseRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateHelmReleaseRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Uninstalls helm release. */
    readonly uninstall: {
        readonly path: "/yandex.cloud.k8s.marketplace.v1.HelmReleaseService/Uninstall";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UninstallHelmReleaseRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UninstallHelmReleaseRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface HelmReleaseServiceServer extends UntypedServiceImplementation {
    /** Retrieves the list of Helm releases in the specified Kubernetes Cluster. */
    list: handleUnaryCall<ListHelmReleasesRequest, ListHelmReleasesResponse>;
    /** Returns the specified Helm release. */
    get: handleUnaryCall<GetHelmReleaseRequest, HelmRelease>;
    /** Installs helm release into specified Kubernetes Cluster. */
    install: handleUnaryCall<InstallHelmReleaseRequest, Operation>;
    /** Updates helm release. */
    update: handleUnaryCall<UpdateHelmReleaseRequest, Operation>;
    /** Uninstalls helm release. */
    uninstall: handleUnaryCall<UninstallHelmReleaseRequest, Operation>;
}
export interface HelmReleaseServiceClient extends Client {
    /** Retrieves the list of Helm releases in the specified Kubernetes Cluster. */
    list(request: ListHelmReleasesRequest, callback: (error: ServiceError | null, response: ListHelmReleasesResponse) => void): ClientUnaryCall;
    list(request: ListHelmReleasesRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListHelmReleasesResponse) => void): ClientUnaryCall;
    list(request: ListHelmReleasesRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListHelmReleasesResponse) => void): ClientUnaryCall;
    /** Returns the specified Helm release. */
    get(request: GetHelmReleaseRequest, callback: (error: ServiceError | null, response: HelmRelease) => void): ClientUnaryCall;
    get(request: GetHelmReleaseRequest, metadata: Metadata, callback: (error: ServiceError | null, response: HelmRelease) => void): ClientUnaryCall;
    get(request: GetHelmReleaseRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: HelmRelease) => void): ClientUnaryCall;
    /** Installs helm release into specified Kubernetes Cluster. */
    install(request: InstallHelmReleaseRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    install(request: InstallHelmReleaseRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    install(request: InstallHelmReleaseRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates helm release. */
    update(request: UpdateHelmReleaseRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateHelmReleaseRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateHelmReleaseRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Uninstalls helm release. */
    uninstall(request: UninstallHelmReleaseRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    uninstall(request: UninstallHelmReleaseRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    uninstall(request: UninstallHelmReleaseRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const HelmReleaseServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): HelmReleaseServiceClient;
    service: typeof HelmReleaseServiceService;
};
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 {};
