/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { FieldMask } from '../../../../../../google/protobuf/field_mask';
import { Federation } from '../../../../../../yandex/cloud/iam/v1/workload/oidc/federation';
import { Operation } from '../../../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.iam.v1.workload.oidc";
export interface GetFederationRequest {
    /**
     * ID of the OIDC workload identity federation to return.
     * To get the OIDC workload identity federation ID, make a [FederationService.List] request.
     */
    federationId: string;
}
export interface ListFederationsRequest {
    /**
     * ID of the folder to list OIDC workload identity federations in.
     * To get the folder ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
     */
    folderId: 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 [ListFederationsResponse.next_page_token]
     * that can be used to get the next page of results in subsequent list requests.
     * Default value: 100
     */
    pageSize: number;
    /**
     * Page token. To get the next page of results, set [page_token]
     * to the [ListFederationsResponse.next_page_token]
     * returned by a previous list request.
     */
    pageToken: string;
}
export interface ListFederationsResponse {
    /** List of OIDC workload identity federations. */
    federations: Federation[];
    /**
     * This token allows you to get the next page of results for list requests. If the number of results
     * is larger than [ListFederationsRequest.page_size], use
     * the [next_page_token] as the value
     * for the [ListFederationsRequest.page_token] query 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 CreateFederationRequest {
    /**
     * ID of the folder to create an OIDC workload identity federation in.
     * To get the folder ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
     */
    folderId: string;
    /**
     * Name of the OIDC workload identity federation.
     * The name must be unique within the folder.
     */
    name: string;
    /** Description of the OIDC workload identity federation. */
    description: string;
    /**
     * True - the OIDC workload identity federation is disabled and cannot be used for authentication.
     * False - the OIDC workload identity federation is enabled and can be used for authentication.
     */
    disabled: boolean;
    /** List of trusted values for aud claim. */
    audiences: string[];
    /** URL of the external IdP server to be used for authentication. */
    issuer: string;
    /** URL reference to trusted keys in format of JSON Web Key Set. */
    jwksUrl: string;
    /** Resource labels as `` key:value `` pairs */
    labels: {
        [key: string]: string;
    };
}
export interface CreateFederationRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface CreateFederationMetadata {
    /** ID of the OIDC workload identity federation that is being created. */
    federationId: string;
}
export interface UpdateFederationRequest {
    /**
     * ID of the OIDC workload identity federation to update.
     * To get the OIDC workload identity federation ID, make a [FederationService.List] request.
     */
    federationId: string;
    /** Field mask that specifies which fields of the OIDC workload identity federation are going to be updated. */
    updateMask?: FieldMask;
    /**
     * Name of the OIDC workload identity federation.
     * The name must be unique within the folder.
     */
    name: string;
    /** Description of the OIDC workload identity federation. */
    description: string;
    /**
     * True - the OIDC workload identity federation is disabled and cannot be used for authentication.
     * False - the OIDC workload identity federation is enabled and can be used for authentication.
     */
    disabled: boolean;
    /** List of trusted values for aud claim. */
    audiences: string[];
    /** URL reference to trusted keys in format of JSON Web Key Set. */
    jwksUrl: string;
    /** Resource labels as `` key:value `` pairs */
    labels: {
        [key: string]: string;
    };
}
export interface UpdateFederationRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface UpdateFederationMetadata {
    /** ID of the OIDC workload identity federation that is being updated. */
    federationId: string;
}
export interface DeleteFederationRequest {
    /**
     * ID of the OIDC workload identity federation to delete.
     * To get the OIDC workload identity federation ID, make a [FederationService.List] request.
     */
    federationId: string;
}
export interface DeleteFederationMetadata {
    /** ID of the OIDC workload identity federation that is being deleted. */
    federationId: string;
}
export declare const GetFederationRequest: {
    encode(message: GetFederationRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetFederationRequest;
    fromJSON(object: any): GetFederationRequest;
    toJSON(message: GetFederationRequest): unknown;
    fromPartial<I extends {
        federationId?: string | undefined;
    } & {
        federationId?: string | undefined;
    } & Record<Exclude<keyof I, "federationId">, never>>(object: I): GetFederationRequest;
};
export declare const ListFederationsRequest: {
    encode(message: ListFederationsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListFederationsRequest;
    fromJSON(object: any): ListFederationsRequest;
    toJSON(message: ListFederationsRequest): unknown;
    fromPartial<I extends {
        folderId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & {
        folderId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListFederationsRequest>, never>>(object: I): ListFederationsRequest;
};
export declare const ListFederationsResponse: {
    encode(message: ListFederationsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListFederationsResponse;
    fromJSON(object: any): ListFederationsResponse;
    toJSON(message: ListFederationsResponse): unknown;
    fromPartial<I extends {
        federations?: {
            id?: string | undefined;
            name?: string | undefined;
            folderId?: string | undefined;
            description?: string | undefined;
            enabled?: boolean | undefined;
            audiences?: string[] | undefined;
            issuer?: string | undefined;
            jwksUrl?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdAt?: Date | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        federations?: ({
            id?: string | undefined;
            name?: string | undefined;
            folderId?: string | undefined;
            description?: string | undefined;
            enabled?: boolean | undefined;
            audiences?: string[] | undefined;
            issuer?: string | undefined;
            jwksUrl?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdAt?: Date | undefined;
        }[] & ({
            id?: string | undefined;
            name?: string | undefined;
            folderId?: string | undefined;
            description?: string | undefined;
            enabled?: boolean | undefined;
            audiences?: string[] | undefined;
            issuer?: string | undefined;
            jwksUrl?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdAt?: Date | undefined;
        } & {
            id?: string | undefined;
            name?: string | undefined;
            folderId?: string | undefined;
            description?: string | undefined;
            enabled?: boolean | undefined;
            audiences?: (string[] & string[] & Record<Exclude<keyof I["federations"][number]["audiences"], keyof string[]>, never>) | undefined;
            issuer?: string | undefined;
            jwksUrl?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["federations"][number]["labels"], string | number>, never>) | undefined;
            createdAt?: Date | undefined;
        } & Record<Exclude<keyof I["federations"][number], keyof Federation>, never>)[] & Record<Exclude<keyof I["federations"], keyof {
            id?: string | undefined;
            name?: string | undefined;
            folderId?: string | undefined;
            description?: string | undefined;
            enabled?: boolean | undefined;
            audiences?: string[] | undefined;
            issuer?: string | undefined;
            jwksUrl?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdAt?: Date | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListFederationsResponse>, never>>(object: I): ListFederationsResponse;
};
export declare const CreateFederationRequest: {
    encode(message: CreateFederationRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateFederationRequest;
    fromJSON(object: any): CreateFederationRequest;
    toJSON(message: CreateFederationRequest): unknown;
    fromPartial<I extends {
        folderId?: string | undefined;
        name?: string | undefined;
        description?: string | undefined;
        disabled?: boolean | undefined;
        audiences?: string[] | undefined;
        issuer?: string | undefined;
        jwksUrl?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
    } & {
        folderId?: string | undefined;
        name?: string | undefined;
        description?: string | undefined;
        disabled?: boolean | undefined;
        audiences?: (string[] & string[] & Record<Exclude<keyof I["audiences"], keyof string[]>, never>) | undefined;
        issuer?: string | undefined;
        jwksUrl?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CreateFederationRequest>, never>>(object: I): CreateFederationRequest;
};
export declare const CreateFederationRequest_LabelsEntry: {
    encode(message: CreateFederationRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateFederationRequest_LabelsEntry;
    fromJSON(object: any): CreateFederationRequest_LabelsEntry;
    toJSON(message: CreateFederationRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateFederationRequest_LabelsEntry>, never>>(object: I): CreateFederationRequest_LabelsEntry;
};
export declare const CreateFederationMetadata: {
    encode(message: CreateFederationMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateFederationMetadata;
    fromJSON(object: any): CreateFederationMetadata;
    toJSON(message: CreateFederationMetadata): unknown;
    fromPartial<I extends {
        federationId?: string | undefined;
    } & {
        federationId?: string | undefined;
    } & Record<Exclude<keyof I, "federationId">, never>>(object: I): CreateFederationMetadata;
};
export declare const UpdateFederationRequest: {
    encode(message: UpdateFederationRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateFederationRequest;
    fromJSON(object: any): UpdateFederationRequest;
    toJSON(message: UpdateFederationRequest): unknown;
    fromPartial<I extends {
        federationId?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        name?: string | undefined;
        description?: string | undefined;
        disabled?: boolean | undefined;
        audiences?: string[] | undefined;
        jwksUrl?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
    } & {
        federationId?: 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;
        name?: string | undefined;
        description?: string | undefined;
        disabled?: boolean | undefined;
        audiences?: (string[] & string[] & Record<Exclude<keyof I["audiences"], keyof string[]>, never>) | undefined;
        jwksUrl?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateFederationRequest>, never>>(object: I): UpdateFederationRequest;
};
export declare const UpdateFederationRequest_LabelsEntry: {
    encode(message: UpdateFederationRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateFederationRequest_LabelsEntry;
    fromJSON(object: any): UpdateFederationRequest_LabelsEntry;
    toJSON(message: UpdateFederationRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateFederationRequest_LabelsEntry>, never>>(object: I): UpdateFederationRequest_LabelsEntry;
};
export declare const UpdateFederationMetadata: {
    encode(message: UpdateFederationMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateFederationMetadata;
    fromJSON(object: any): UpdateFederationMetadata;
    toJSON(message: UpdateFederationMetadata): unknown;
    fromPartial<I extends {
        federationId?: string | undefined;
    } & {
        federationId?: string | undefined;
    } & Record<Exclude<keyof I, "federationId">, never>>(object: I): UpdateFederationMetadata;
};
export declare const DeleteFederationRequest: {
    encode(message: DeleteFederationRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteFederationRequest;
    fromJSON(object: any): DeleteFederationRequest;
    toJSON(message: DeleteFederationRequest): unknown;
    fromPartial<I extends {
        federationId?: string | undefined;
    } & {
        federationId?: string | undefined;
    } & Record<Exclude<keyof I, "federationId">, never>>(object: I): DeleteFederationRequest;
};
export declare const DeleteFederationMetadata: {
    encode(message: DeleteFederationMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteFederationMetadata;
    fromJSON(object: any): DeleteFederationMetadata;
    toJSON(message: DeleteFederationMetadata): unknown;
    fromPartial<I extends {
        federationId?: string | undefined;
    } & {
        federationId?: string | undefined;
    } & Record<Exclude<keyof I, "federationId">, never>>(object: I): DeleteFederationMetadata;
};
/** A set of methods for managing OIDC workload identity federations. */
export declare const FederationServiceService: {
    /**
     * Returns the specified OIDC workload identity federation.
     *
     * To get the list of available OIDC workload identity federation, make a [List] request.
     */
    readonly get: {
        readonly path: "/yandex.cloud.iam.v1.workload.oidc.FederationService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetFederationRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetFederationRequest;
        readonly responseSerialize: (value: Federation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Federation;
    };
    /** Retrieves the list of OIDC workload identity federations in the specified folder. */
    readonly list: {
        readonly path: "/yandex.cloud.iam.v1.workload.oidc.FederationService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListFederationsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListFederationsRequest;
        readonly responseSerialize: (value: ListFederationsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListFederationsResponse;
    };
    /** Creates an OIDC workload identity federation in the specified folder. */
    readonly create: {
        readonly path: "/yandex.cloud.iam.v1.workload.oidc.FederationService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateFederationRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateFederationRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates the specified OIDC workload identity federation. */
    readonly update: {
        readonly path: "/yandex.cloud.iam.v1.workload.oidc.FederationService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateFederationRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateFederationRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Deletes the specified OIDC workload identity federation. */
    readonly delete: {
        readonly path: "/yandex.cloud.iam.v1.workload.oidc.FederationService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteFederationRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteFederationRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface FederationServiceServer extends UntypedServiceImplementation {
    /**
     * Returns the specified OIDC workload identity federation.
     *
     * To get the list of available OIDC workload identity federation, make a [List] request.
     */
    get: handleUnaryCall<GetFederationRequest, Federation>;
    /** Retrieves the list of OIDC workload identity federations in the specified folder. */
    list: handleUnaryCall<ListFederationsRequest, ListFederationsResponse>;
    /** Creates an OIDC workload identity federation in the specified folder. */
    create: handleUnaryCall<CreateFederationRequest, Operation>;
    /** Updates the specified OIDC workload identity federation. */
    update: handleUnaryCall<UpdateFederationRequest, Operation>;
    /** Deletes the specified OIDC workload identity federation. */
    delete: handleUnaryCall<DeleteFederationRequest, Operation>;
}
export interface FederationServiceClient extends Client {
    /**
     * Returns the specified OIDC workload identity federation.
     *
     * To get the list of available OIDC workload identity federation, make a [List] request.
     */
    get(request: GetFederationRequest, callback: (error: ServiceError | null, response: Federation) => void): ClientUnaryCall;
    get(request: GetFederationRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Federation) => void): ClientUnaryCall;
    get(request: GetFederationRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Federation) => void): ClientUnaryCall;
    /** Retrieves the list of OIDC workload identity federations in the specified folder. */
    list(request: ListFederationsRequest, callback: (error: ServiceError | null, response: ListFederationsResponse) => void): ClientUnaryCall;
    list(request: ListFederationsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListFederationsResponse) => void): ClientUnaryCall;
    list(request: ListFederationsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListFederationsResponse) => void): ClientUnaryCall;
    /** Creates an OIDC workload identity federation in the specified folder. */
    create(request: CreateFederationRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateFederationRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateFederationRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates the specified OIDC workload identity federation. */
    update(request: UpdateFederationRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateFederationRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateFederationRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Deletes the specified OIDC workload identity federation. */
    delete(request: DeleteFederationRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteFederationRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteFederationRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const FederationServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): FederationServiceClient;
    service: typeof FederationServiceService;
};
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 {};
