/// <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 { UserSshKey } from '../../../../yandex/cloud/organizationmanager/v1/user_ssh_key';
import { Operation } from '../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.organizationmanager.v1";
export interface GetUserSshKeyRequest {
    userSshKeyId: string;
}
export interface ListUserSshKeysRequest {
    organizationId: string;
    /** if empty, list all organization keys */
    subjectId: string;
    pageSize: number;
    pageToken: string;
}
export interface ListUserSshKeysResponse {
    sshKeys: UserSshKey[];
    nextPageToken: string;
}
export interface CreateUserSshKeyRequest {
    organizationId: string;
    subjectId: string;
    name: string;
    data: string;
    expiresAt?: Date;
}
export interface CreateUserSshKeyMetadata {
    userSshKeyId: string;
    organizationId: string;
}
export interface UpdateUserSshKeyRequest {
    userSshKeyId: string;
    name: string;
    updateMask?: FieldMask;
    expiresAt?: Date;
}
export interface UpdateUserSshKeyMetadata {
    userSshKeyId: string;
}
export interface DeleteUserSshKeyRequest {
    userSshKeyId: string;
}
export interface DeleteUserSshKeyMetadata {
    userSshKeyId: string;
}
export declare const GetUserSshKeyRequest: {
    encode(message: GetUserSshKeyRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetUserSshKeyRequest;
    fromJSON(object: any): GetUserSshKeyRequest;
    toJSON(message: GetUserSshKeyRequest): unknown;
    fromPartial<I extends {
        userSshKeyId?: string | undefined;
    } & {
        userSshKeyId?: string | undefined;
    } & Record<Exclude<keyof I, "userSshKeyId">, never>>(object: I): GetUserSshKeyRequest;
};
export declare const ListUserSshKeysRequest: {
    encode(message: ListUserSshKeysRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListUserSshKeysRequest;
    fromJSON(object: any): ListUserSshKeysRequest;
    toJSON(message: ListUserSshKeysRequest): unknown;
    fromPartial<I extends {
        organizationId?: string | undefined;
        subjectId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & {
        organizationId?: string | undefined;
        subjectId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListUserSshKeysRequest>, never>>(object: I): ListUserSshKeysRequest;
};
export declare const ListUserSshKeysResponse: {
    encode(message: ListUserSshKeysResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListUserSshKeysResponse;
    fromJSON(object: any): ListUserSshKeysResponse;
    toJSON(message: ListUserSshKeysResponse): unknown;
    fromPartial<I extends {
        sshKeys?: {
            id?: string | undefined;
            subjectId?: string | undefined;
            data?: string | undefined;
            name?: string | undefined;
            fingerprint?: string | undefined;
            organizationId?: string | undefined;
            createdAt?: Date | undefined;
            expiresAt?: Date | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        sshKeys?: ({
            id?: string | undefined;
            subjectId?: string | undefined;
            data?: string | undefined;
            name?: string | undefined;
            fingerprint?: string | undefined;
            organizationId?: string | undefined;
            createdAt?: Date | undefined;
            expiresAt?: Date | undefined;
        }[] & ({
            id?: string | undefined;
            subjectId?: string | undefined;
            data?: string | undefined;
            name?: string | undefined;
            fingerprint?: string | undefined;
            organizationId?: string | undefined;
            createdAt?: Date | undefined;
            expiresAt?: Date | undefined;
        } & {
            id?: string | undefined;
            subjectId?: string | undefined;
            data?: string | undefined;
            name?: string | undefined;
            fingerprint?: string | undefined;
            organizationId?: string | undefined;
            createdAt?: Date | undefined;
            expiresAt?: Date | undefined;
        } & Record<Exclude<keyof I["sshKeys"][number], keyof UserSshKey>, never>)[] & Record<Exclude<keyof I["sshKeys"], keyof {
            id?: string | undefined;
            subjectId?: string | undefined;
            data?: string | undefined;
            name?: string | undefined;
            fingerprint?: string | undefined;
            organizationId?: string | undefined;
            createdAt?: Date | undefined;
            expiresAt?: Date | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListUserSshKeysResponse>, never>>(object: I): ListUserSshKeysResponse;
};
export declare const CreateUserSshKeyRequest: {
    encode(message: CreateUserSshKeyRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateUserSshKeyRequest;
    fromJSON(object: any): CreateUserSshKeyRequest;
    toJSON(message: CreateUserSshKeyRequest): unknown;
    fromPartial<I extends {
        organizationId?: string | undefined;
        subjectId?: string | undefined;
        name?: string | undefined;
        data?: string | undefined;
        expiresAt?: Date | undefined;
    } & {
        organizationId?: string | undefined;
        subjectId?: string | undefined;
        name?: string | undefined;
        data?: string | undefined;
        expiresAt?: Date | undefined;
    } & Record<Exclude<keyof I, keyof CreateUserSshKeyRequest>, never>>(object: I): CreateUserSshKeyRequest;
};
export declare const CreateUserSshKeyMetadata: {
    encode(message: CreateUserSshKeyMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateUserSshKeyMetadata;
    fromJSON(object: any): CreateUserSshKeyMetadata;
    toJSON(message: CreateUserSshKeyMetadata): unknown;
    fromPartial<I extends {
        userSshKeyId?: string | undefined;
        organizationId?: string | undefined;
    } & {
        userSshKeyId?: string | undefined;
        organizationId?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateUserSshKeyMetadata>, never>>(object: I): CreateUserSshKeyMetadata;
};
export declare const UpdateUserSshKeyRequest: {
    encode(message: UpdateUserSshKeyRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateUserSshKeyRequest;
    fromJSON(object: any): UpdateUserSshKeyRequest;
    toJSON(message: UpdateUserSshKeyRequest): unknown;
    fromPartial<I extends {
        userSshKeyId?: string | undefined;
        name?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        expiresAt?: Date | undefined;
    } & {
        userSshKeyId?: string | undefined;
        name?: 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;
        expiresAt?: Date | undefined;
    } & Record<Exclude<keyof I, keyof UpdateUserSshKeyRequest>, never>>(object: I): UpdateUserSshKeyRequest;
};
export declare const UpdateUserSshKeyMetadata: {
    encode(message: UpdateUserSshKeyMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateUserSshKeyMetadata;
    fromJSON(object: any): UpdateUserSshKeyMetadata;
    toJSON(message: UpdateUserSshKeyMetadata): unknown;
    fromPartial<I extends {
        userSshKeyId?: string | undefined;
    } & {
        userSshKeyId?: string | undefined;
    } & Record<Exclude<keyof I, "userSshKeyId">, never>>(object: I): UpdateUserSshKeyMetadata;
};
export declare const DeleteUserSshKeyRequest: {
    encode(message: DeleteUserSshKeyRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteUserSshKeyRequest;
    fromJSON(object: any): DeleteUserSshKeyRequest;
    toJSON(message: DeleteUserSshKeyRequest): unknown;
    fromPartial<I extends {
        userSshKeyId?: string | undefined;
    } & {
        userSshKeyId?: string | undefined;
    } & Record<Exclude<keyof I, "userSshKeyId">, never>>(object: I): DeleteUserSshKeyRequest;
};
export declare const DeleteUserSshKeyMetadata: {
    encode(message: DeleteUserSshKeyMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteUserSshKeyMetadata;
    fromJSON(object: any): DeleteUserSshKeyMetadata;
    toJSON(message: DeleteUserSshKeyMetadata): unknown;
    fromPartial<I extends {
        userSshKeyId?: string | undefined;
    } & {
        userSshKeyId?: string | undefined;
    } & Record<Exclude<keyof I, "userSshKeyId">, never>>(object: I): DeleteUserSshKeyMetadata;
};
export declare const UserSshKeyServiceService: {
    readonly get: {
        readonly path: "/yandex.cloud.organizationmanager.v1.UserSshKeyService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetUserSshKeyRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetUserSshKeyRequest;
        readonly responseSerialize: (value: UserSshKey) => Buffer;
        readonly responseDeserialize: (value: Buffer) => UserSshKey;
    };
    readonly list: {
        readonly path: "/yandex.cloud.organizationmanager.v1.UserSshKeyService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListUserSshKeysRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListUserSshKeysRequest;
        readonly responseSerialize: (value: ListUserSshKeysResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListUserSshKeysResponse;
    };
    readonly create: {
        readonly path: "/yandex.cloud.organizationmanager.v1.UserSshKeyService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateUserSshKeyRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateUserSshKeyRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    readonly update: {
        readonly path: "/yandex.cloud.organizationmanager.v1.UserSshKeyService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateUserSshKeyRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateUserSshKeyRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    readonly delete: {
        readonly path: "/yandex.cloud.organizationmanager.v1.UserSshKeyService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteUserSshKeyRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteUserSshKeyRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface UserSshKeyServiceServer extends UntypedServiceImplementation {
    get: handleUnaryCall<GetUserSshKeyRequest, UserSshKey>;
    list: handleUnaryCall<ListUserSshKeysRequest, ListUserSshKeysResponse>;
    create: handleUnaryCall<CreateUserSshKeyRequest, Operation>;
    update: handleUnaryCall<UpdateUserSshKeyRequest, Operation>;
    delete: handleUnaryCall<DeleteUserSshKeyRequest, Operation>;
}
export interface UserSshKeyServiceClient extends Client {
    get(request: GetUserSshKeyRequest, callback: (error: ServiceError | null, response: UserSshKey) => void): ClientUnaryCall;
    get(request: GetUserSshKeyRequest, metadata: Metadata, callback: (error: ServiceError | null, response: UserSshKey) => void): ClientUnaryCall;
    get(request: GetUserSshKeyRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: UserSshKey) => void): ClientUnaryCall;
    list(request: ListUserSshKeysRequest, callback: (error: ServiceError | null, response: ListUserSshKeysResponse) => void): ClientUnaryCall;
    list(request: ListUserSshKeysRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListUserSshKeysResponse) => void): ClientUnaryCall;
    list(request: ListUserSshKeysRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListUserSshKeysResponse) => void): ClientUnaryCall;
    create(request: CreateUserSshKeyRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateUserSshKeyRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateUserSshKeyRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateUserSshKeyRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateUserSshKeyRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateUserSshKeyRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteUserSshKeyRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteUserSshKeyRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteUserSshKeyRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const UserSshKeyServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): UserSshKeyServiceClient;
    service: typeof UserSshKeyServiceService;
};
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 {};
