/// <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 { ResourceType } from '../../../../yandex/cloud/datasphere/v2/resource_types';
import { Community } from '../../../../yandex/cloud/datasphere/v2/community';
import { Restriction, GetRestrictionsMetaResponse, RestrictionsResponse } from '../../../../yandex/cloud/datasphere/v2/restrictions';
import { Operation } from '../../../../yandex/cloud/operation/operation';
import { ListAccessBindingsRequest, ListAccessBindingsResponse, SetAccessBindingsRequest, UpdateAccessBindingsRequest } from '../../../../yandex/cloud/access/access';
import { Empty } from '../../../../google/protobuf/empty';
export declare const protobufPackage = "yandex.cloud.datasphere.v2";
export interface CreateCommunityRequest {
    /** Name of the community. */
    name: string;
    /** Description of the community. */
    description: string;
    /** ID of the organization where community should be created. */
    organizationId: string;
    /** ID of the billing account for the created community. Optional, billing account could be bound to community later. */
    billingAccountId: string;
    /** Labels of the community. */
    labels: {
        [key: string]: string;
    };
    /** ID of the zone where community will be created (all projects and other resources will be in this zone) */
    zoneId: string;
}
export interface CreateCommunityRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface CreateCommunityMetadata {
    /** ID of the community that is being created. */
    communityId: string;
}
export interface GetCommunityRequest {
    /** ID of the community. */
    communityId: string;
}
export interface UpdateCommunityRequest {
    /** ID of the community. */
    communityId: string;
    /** Field mask that specifies which fields of the Community resource are going to be updated. */
    updateMask?: FieldMask;
    /** Name of the community. */
    name: string;
    /** Description of the community. */
    description: string;
    /** Labels of the community. */
    labels: {
        [key: string]: string;
    };
}
export interface UpdateCommunityRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface UpdateCommunityMetadata {
    /** ID of the community that is being updated. */
    communityId: string;
}
export interface DeleteCommunityRequest {
    /** ID of the community. */
    communityId: string;
}
export interface DeleteCommunityMetadata {
    /** ID of the community that is being deleted. */
    communityId: string;
}
export interface ListCommunitiesRequest {
    /**
     * The maximum number of results per page to return. If the number of available
     * results is larger than [page_size],
     * the service returns a [ListCommunitiesResponse.next_page_token]
     * that can be used to get the next page of results in subsequent list requests.
     */
    pageSize: number;
    /**
     * Page token. To get the next page of results, set [page_token] to the
     * [ListCommunitiesResponse.next_page_token] returned by a previous list request.
     */
    pageToken: string;
    /**
     * Community name or description pattern.
     * Only communities with names or descriptions matching specified pattern will be returned.
     */
    nameOrDescriptionPattern: string;
    /** ID of the user. Only communities owned by specified user will be returned. */
    ownedById: string;
    /** If set to true, only public communities will be returned. */
    listPublic: boolean;
    /** ID of the organization to list communities in. */
    organizationId: string;
}
export interface ListCommunitiesResponse {
    /** List of communities matching filters in list communities request. */
    communities: Community[];
    /**
     * This token allows you to get the next page of results for list requests. If the number of results
     * is larger than [ListCommunitiesRequest.page_size], use
     * the [next_page_token] as the value
     * for the [ListCommunitiesRequest.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 SetCommunityAccessBindingsMetadata {
    /** ID of the community which access bindings are set. */
    communityId: string;
}
export interface UpdateCommunityAccessBindingsMetadata {
    /** ID of the community which access bindings are updated. */
    communityId: string;
}
export interface AddCommunityResourceRequest {
    communityId: string;
    resourceType: ResourceType;
    resourceId: string;
}
export interface RemoveCommunityResourceRequest {
    communityId: string;
    resourceType: ResourceType;
    resourceId: string;
}
export interface GetCommunityRestrictionsRequest {
    /** ID of the community. */
    communityId: string;
}
export interface SetCommunityRestrictionsRequest {
    /** ID of the community. */
    communityId: string;
    /** List of restrictions to set. */
    restrictions: Restriction[];
}
export declare const CreateCommunityRequest: {
    encode(message: CreateCommunityRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateCommunityRequest;
    fromJSON(object: any): CreateCommunityRequest;
    toJSON(message: CreateCommunityRequest): unknown;
    fromPartial<I extends {
        name?: string | undefined;
        description?: string | undefined;
        organizationId?: string | undefined;
        billingAccountId?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        zoneId?: string | undefined;
    } & {
        name?: string | undefined;
        description?: string | undefined;
        organizationId?: string | undefined;
        billingAccountId?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
        zoneId?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateCommunityRequest>, never>>(object: I): CreateCommunityRequest;
};
export declare const CreateCommunityRequest_LabelsEntry: {
    encode(message: CreateCommunityRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateCommunityRequest_LabelsEntry;
    fromJSON(object: any): CreateCommunityRequest_LabelsEntry;
    toJSON(message: CreateCommunityRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateCommunityRequest_LabelsEntry>, never>>(object: I): CreateCommunityRequest_LabelsEntry;
};
export declare const CreateCommunityMetadata: {
    encode(message: CreateCommunityMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateCommunityMetadata;
    fromJSON(object: any): CreateCommunityMetadata;
    toJSON(message: CreateCommunityMetadata): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): CreateCommunityMetadata;
};
export declare const GetCommunityRequest: {
    encode(message: GetCommunityRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetCommunityRequest;
    fromJSON(object: any): GetCommunityRequest;
    toJSON(message: GetCommunityRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): GetCommunityRequest;
};
export declare const UpdateCommunityRequest: {
    encode(message: UpdateCommunityRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateCommunityRequest;
    fromJSON(object: any): UpdateCommunityRequest;
    toJSON(message: UpdateCommunityRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
    } & {
        communityId?: 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;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateCommunityRequest>, never>>(object: I): UpdateCommunityRequest;
};
export declare const UpdateCommunityRequest_LabelsEntry: {
    encode(message: UpdateCommunityRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateCommunityRequest_LabelsEntry;
    fromJSON(object: any): UpdateCommunityRequest_LabelsEntry;
    toJSON(message: UpdateCommunityRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateCommunityRequest_LabelsEntry>, never>>(object: I): UpdateCommunityRequest_LabelsEntry;
};
export declare const UpdateCommunityMetadata: {
    encode(message: UpdateCommunityMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateCommunityMetadata;
    fromJSON(object: any): UpdateCommunityMetadata;
    toJSON(message: UpdateCommunityMetadata): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): UpdateCommunityMetadata;
};
export declare const DeleteCommunityRequest: {
    encode(message: DeleteCommunityRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteCommunityRequest;
    fromJSON(object: any): DeleteCommunityRequest;
    toJSON(message: DeleteCommunityRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): DeleteCommunityRequest;
};
export declare const DeleteCommunityMetadata: {
    encode(message: DeleteCommunityMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteCommunityMetadata;
    fromJSON(object: any): DeleteCommunityMetadata;
    toJSON(message: DeleteCommunityMetadata): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): DeleteCommunityMetadata;
};
export declare const ListCommunitiesRequest: {
    encode(message: ListCommunitiesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListCommunitiesRequest;
    fromJSON(object: any): ListCommunitiesRequest;
    toJSON(message: ListCommunitiesRequest): unknown;
    fromPartial<I extends {
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        nameOrDescriptionPattern?: string | undefined;
        ownedById?: string | undefined;
        listPublic?: boolean | undefined;
        organizationId?: string | undefined;
    } & {
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        nameOrDescriptionPattern?: string | undefined;
        ownedById?: string | undefined;
        listPublic?: boolean | undefined;
        organizationId?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListCommunitiesRequest>, never>>(object: I): ListCommunitiesRequest;
};
export declare const ListCommunitiesResponse: {
    encode(message: ListCommunitiesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListCommunitiesResponse;
    fromJSON(object: any): ListCommunitiesResponse;
    toJSON(message: ListCommunitiesResponse): unknown;
    fromPartial<I extends {
        communities?: {
            id?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdById?: string | undefined;
            organizationId?: string | undefined;
            zoneId?: string | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        communities?: ({
            id?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdById?: string | undefined;
            organizationId?: string | undefined;
            zoneId?: string | undefined;
        }[] & ({
            id?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdById?: string | undefined;
            organizationId?: string | undefined;
            zoneId?: string | undefined;
        } & {
            id?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["communities"][number]["labels"], string | number>, never>) | undefined;
            createdById?: string | undefined;
            organizationId?: string | undefined;
            zoneId?: string | undefined;
        } & Record<Exclude<keyof I["communities"][number], keyof Community>, never>)[] & Record<Exclude<keyof I["communities"], keyof {
            id?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            createdById?: string | undefined;
            organizationId?: string | undefined;
            zoneId?: string | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListCommunitiesResponse>, never>>(object: I): ListCommunitiesResponse;
};
export declare const SetCommunityAccessBindingsMetadata: {
    encode(message: SetCommunityAccessBindingsMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SetCommunityAccessBindingsMetadata;
    fromJSON(object: any): SetCommunityAccessBindingsMetadata;
    toJSON(message: SetCommunityAccessBindingsMetadata): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): SetCommunityAccessBindingsMetadata;
};
export declare const UpdateCommunityAccessBindingsMetadata: {
    encode(message: UpdateCommunityAccessBindingsMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateCommunityAccessBindingsMetadata;
    fromJSON(object: any): UpdateCommunityAccessBindingsMetadata;
    toJSON(message: UpdateCommunityAccessBindingsMetadata): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): UpdateCommunityAccessBindingsMetadata;
};
export declare const AddCommunityResourceRequest: {
    encode(message: AddCommunityResourceRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AddCommunityResourceRequest;
    fromJSON(object: any): AddCommunityResourceRequest;
    toJSON(message: AddCommunityResourceRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
        resourceType?: ResourceType | undefined;
        resourceId?: string | undefined;
    } & {
        communityId?: string | undefined;
        resourceType?: ResourceType | undefined;
        resourceId?: string | undefined;
    } & Record<Exclude<keyof I, keyof AddCommunityResourceRequest>, never>>(object: I): AddCommunityResourceRequest;
};
export declare const RemoveCommunityResourceRequest: {
    encode(message: RemoveCommunityResourceRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RemoveCommunityResourceRequest;
    fromJSON(object: any): RemoveCommunityResourceRequest;
    toJSON(message: RemoveCommunityResourceRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
        resourceType?: ResourceType | undefined;
        resourceId?: string | undefined;
    } & {
        communityId?: string | undefined;
        resourceType?: ResourceType | undefined;
        resourceId?: string | undefined;
    } & Record<Exclude<keyof I, keyof RemoveCommunityResourceRequest>, never>>(object: I): RemoveCommunityResourceRequest;
};
export declare const GetCommunityRestrictionsRequest: {
    encode(message: GetCommunityRestrictionsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetCommunityRestrictionsRequest;
    fromJSON(object: any): GetCommunityRestrictionsRequest;
    toJSON(message: GetCommunityRestrictionsRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
    } & {
        communityId?: string | undefined;
    } & Record<Exclude<keyof I, "communityId">, never>>(object: I): GetCommunityRestrictionsRequest;
};
export declare const SetCommunityRestrictionsRequest: {
    encode(message: SetCommunityRestrictionsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SetCommunityRestrictionsRequest;
    fromJSON(object: any): SetCommunityRestrictionsRequest;
    toJSON(message: SetCommunityRestrictionsRequest): unknown;
    fromPartial<I extends {
        communityId?: string | undefined;
        restrictions?: {
            name?: string | undefined;
            boolValue?: boolean[] | undefined;
            longValue?: number[] | undefined;
            stringValue?: string[] | undefined;
        }[] | undefined;
    } & {
        communityId?: string | undefined;
        restrictions?: ({
            name?: string | undefined;
            boolValue?: boolean[] | undefined;
            longValue?: number[] | undefined;
            stringValue?: string[] | undefined;
        }[] & ({
            name?: string | undefined;
            boolValue?: boolean[] | undefined;
            longValue?: number[] | undefined;
            stringValue?: string[] | undefined;
        } & {
            name?: string | undefined;
            boolValue?: (boolean[] & boolean[] & Record<Exclude<keyof I["restrictions"][number]["boolValue"], keyof boolean[]>, never>) | undefined;
            longValue?: (number[] & number[] & Record<Exclude<keyof I["restrictions"][number]["longValue"], keyof number[]>, never>) | undefined;
            stringValue?: (string[] & string[] & Record<Exclude<keyof I["restrictions"][number]["stringValue"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["restrictions"][number], keyof Restriction>, never>)[] & Record<Exclude<keyof I["restrictions"], keyof {
            name?: string | undefined;
            boolValue?: boolean[] | undefined;
            longValue?: number[] | undefined;
            stringValue?: string[] | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof SetCommunityRestrictionsRequest>, never>>(object: I): SetCommunityRestrictionsRequest;
};
/** A set of methods for managing Community resources. */
export declare const CommunityServiceService: {
    /** Creates community in specified organization. */
    readonly create: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateCommunityRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateCommunityRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Returns community. */
    readonly get: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetCommunityRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetCommunityRequest;
        readonly responseSerialize: (value: Community) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Community;
    };
    /** Updates specified community. */
    readonly update: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateCommunityRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateCommunityRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Deletes specified community. */
    readonly delete: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteCommunityRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteCommunityRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** List communities in specified organization. */
    readonly list: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListCommunitiesRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListCommunitiesRequest;
        readonly responseSerialize: (value: ListCommunitiesResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListCommunitiesResponse;
    };
    /** Lists access bindings for specified community. */
    readonly listAccessBindings: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/ListAccessBindings";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListAccessBindingsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListAccessBindingsRequest;
        readonly responseSerialize: (value: ListAccessBindingsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListAccessBindingsResponse;
    };
    /** Sets access bindings for specified community. */
    readonly setAccessBindings: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/SetAccessBindings";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: SetAccessBindingsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => SetAccessBindingsRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates access bindings for specified community. */
    readonly updateAccessBindings: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/UpdateAccessBindings";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateAccessBindingsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateAccessBindingsRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Adds shared resource to community */
    readonly addResource: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/AddResource";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: AddCommunityResourceRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => AddCommunityResourceRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Removes shared resource from community */
    readonly removeResource: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/RemoveResource";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: RemoveCommunityResourceRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => RemoveCommunityResourceRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Get meta information about available restrictions. */
    readonly getRestrictionsMeta: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/GetRestrictionsMeta";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: Empty) => Buffer;
        readonly requestDeserialize: (value: Buffer) => Empty;
        readonly responseSerialize: (value: GetRestrictionsMetaResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => GetRestrictionsMetaResponse;
    };
    /** Get current community restrictions. */
    readonly getRestrictions: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/GetRestrictions";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetCommunityRestrictionsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetCommunityRestrictionsRequest;
        readonly responseSerialize: (value: RestrictionsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => RestrictionsResponse;
    };
    /** Set community restrictions. */
    readonly setRestrictions: {
        readonly path: "/yandex.cloud.datasphere.v2.CommunityService/SetRestrictions";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: SetCommunityRestrictionsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => SetCommunityRestrictionsRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface CommunityServiceServer extends UntypedServiceImplementation {
    /** Creates community in specified organization. */
    create: handleUnaryCall<CreateCommunityRequest, Operation>;
    /** Returns community. */
    get: handleUnaryCall<GetCommunityRequest, Community>;
    /** Updates specified community. */
    update: handleUnaryCall<UpdateCommunityRequest, Operation>;
    /** Deletes specified community. */
    delete: handleUnaryCall<DeleteCommunityRequest, Operation>;
    /** List communities in specified organization. */
    list: handleUnaryCall<ListCommunitiesRequest, ListCommunitiesResponse>;
    /** Lists access bindings for specified community. */
    listAccessBindings: handleUnaryCall<ListAccessBindingsRequest, ListAccessBindingsResponse>;
    /** Sets access bindings for specified community. */
    setAccessBindings: handleUnaryCall<SetAccessBindingsRequest, Operation>;
    /** Updates access bindings for specified community. */
    updateAccessBindings: handleUnaryCall<UpdateAccessBindingsRequest, Operation>;
    /** Adds shared resource to community */
    addResource: handleUnaryCall<AddCommunityResourceRequest, Operation>;
    /** Removes shared resource from community */
    removeResource: handleUnaryCall<RemoveCommunityResourceRequest, Operation>;
    /** Get meta information about available restrictions. */
    getRestrictionsMeta: handleUnaryCall<Empty, GetRestrictionsMetaResponse>;
    /** Get current community restrictions. */
    getRestrictions: handleUnaryCall<GetCommunityRestrictionsRequest, RestrictionsResponse>;
    /** Set community restrictions. */
    setRestrictions: handleUnaryCall<SetCommunityRestrictionsRequest, Operation>;
}
export interface CommunityServiceClient extends Client {
    /** Creates community in specified organization. */
    create(request: CreateCommunityRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateCommunityRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateCommunityRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Returns community. */
    get(request: GetCommunityRequest, callback: (error: ServiceError | null, response: Community) => void): ClientUnaryCall;
    get(request: GetCommunityRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Community) => void): ClientUnaryCall;
    get(request: GetCommunityRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Community) => void): ClientUnaryCall;
    /** Updates specified community. */
    update(request: UpdateCommunityRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateCommunityRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateCommunityRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Deletes specified community. */
    delete(request: DeleteCommunityRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteCommunityRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteCommunityRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** List communities in specified organization. */
    list(request: ListCommunitiesRequest, callback: (error: ServiceError | null, response: ListCommunitiesResponse) => void): ClientUnaryCall;
    list(request: ListCommunitiesRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListCommunitiesResponse) => void): ClientUnaryCall;
    list(request: ListCommunitiesRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListCommunitiesResponse) => void): ClientUnaryCall;
    /** Lists access bindings for specified community. */
    listAccessBindings(request: ListAccessBindingsRequest, callback: (error: ServiceError | null, response: ListAccessBindingsResponse) => void): ClientUnaryCall;
    listAccessBindings(request: ListAccessBindingsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListAccessBindingsResponse) => void): ClientUnaryCall;
    listAccessBindings(request: ListAccessBindingsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListAccessBindingsResponse) => void): ClientUnaryCall;
    /** Sets access bindings for specified community. */
    setAccessBindings(request: SetAccessBindingsRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    setAccessBindings(request: SetAccessBindingsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    setAccessBindings(request: SetAccessBindingsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates access bindings for specified community. */
    updateAccessBindings(request: UpdateAccessBindingsRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    updateAccessBindings(request: UpdateAccessBindingsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    updateAccessBindings(request: UpdateAccessBindingsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Adds shared resource to community */
    addResource(request: AddCommunityResourceRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    addResource(request: AddCommunityResourceRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    addResource(request: AddCommunityResourceRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Removes shared resource from community */
    removeResource(request: RemoveCommunityResourceRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    removeResource(request: RemoveCommunityResourceRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    removeResource(request: RemoveCommunityResourceRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Get meta information about available restrictions. */
    getRestrictionsMeta(request: Empty, callback: (error: ServiceError | null, response: GetRestrictionsMetaResponse) => void): ClientUnaryCall;
    getRestrictionsMeta(request: Empty, metadata: Metadata, callback: (error: ServiceError | null, response: GetRestrictionsMetaResponse) => void): ClientUnaryCall;
    getRestrictionsMeta(request: Empty, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: GetRestrictionsMetaResponse) => void): ClientUnaryCall;
    /** Get current community restrictions. */
    getRestrictions(request: GetCommunityRestrictionsRequest, callback: (error: ServiceError | null, response: RestrictionsResponse) => void): ClientUnaryCall;
    getRestrictions(request: GetCommunityRestrictionsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: RestrictionsResponse) => void): ClientUnaryCall;
    getRestrictions(request: GetCommunityRestrictionsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: RestrictionsResponse) => void): ClientUnaryCall;
    /** Set community restrictions. */
    setRestrictions(request: SetCommunityRestrictionsRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    setRestrictions(request: SetCommunityRestrictionsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    setRestrictions(request: SetCommunityRestrictionsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const CommunityServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): CommunityServiceClient;
    service: typeof CommunityServiceService;
};
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 {};
