/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { DhcpOptions, IpVersion, Subnet } from '../../../../yandex/cloud/vpc/v1/subnet';
import { FieldMask } from '../../../../google/protobuf/field_mask';
import { Operation } from '../../../../yandex/cloud/operation/operation';
import { Reference } from '../../../../yandex/cloud/reference/reference';
export declare const protobufPackage = "yandex.cloud.vpc.v1";
export interface GetSubnetRequest {
    /**
     * ID of the Subnet resource to return.
     * To get the subnet ID use a [SubnetService.List] request.
     */
    subnetId: string;
}
export interface ListSubnetsRequest {
    /**
     * ID of the folder to list subnets in.
     * To get the folder ID use 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 [ListSubnetsResponse.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
     * [ListSubnetsResponse.next_page_token] returned by a previous list request.
     */
    pageToken: string;
    /**
     * A filter expression that filters resources listed in the response.
     * The expression must specify:
     * 1. The field name. Currently you can use filtering only on [Subnet.name] field.
     * 2. An `=` operator.
     * 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`.
     */
    filter: string;
}
export interface ListSubnetsResponse {
    /** List of Subnet resources. */
    subnets: Subnet[];
    /**
     * This token allows you to get the next page of results for list requests. If the number of results
     * is larger than [ListSubnetsRequest.page_size], use
     * the [next_page_token] as the value
     * for the [ListSubnetsRequest.page_token] query parameter
     * in the next list request. Subsequent list requests will have their own
     * [next_page_token] to continue paging through the results.
     */
    nextPageToken: string;
}
export interface CreateSubnetRequest {
    /**
     * ID of the folder to create a subnet in.
     * To get folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
     */
    folderId: string;
    /**
     * Name of the subnet.
     * The name must be unique within the folder.
     */
    name: string;
    /** Description of the subnet. */
    description: string;
    /** Resource labels, `` key:value `` pairs. */
    labels: {
        [key: string]: string;
    };
    /** ID of the network to create subnet in. */
    networkId: string;
    /**
     * ID of the availability zone where the subnet resides.
     * To get a list of available zones, use the [yandex.cloud.compute.v1.ZoneService.List] request.
     */
    zoneId: string;
    /**
     * CIDR block.
     * The range of internal addresses that are defined for this subnet.
     * For example, 10.0.0.0/22 or 192.168.0.0/24.
     * Minimum subnet size is /28, maximum subnet size is /16.
     */
    v4CidrBlocks: string[];
    /** ID of route table the subnet is linked to. */
    routeTableId: string;
    dhcpOptions?: DhcpOptions;
}
export interface CreateSubnetRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface CreateSubnetMetadata {
    /** ID of the subnet that is being created. */
    subnetId: string;
}
export interface UpdateSubnetRequest {
    /** ID of the Subnet resource to update. */
    subnetId: string;
    /** Field mask that specifies which fields of the Subnet resource are going to be updated. */
    updateMask?: FieldMask;
    /**
     * Name of the subnet.
     * The name must be unique within the folder.
     */
    name: string;
    /** Description of the subnet. */
    description: string;
    /** Resource labels as `` key:value `` pairs. */
    labels: {
        [key: string]: string;
    };
    /** ID of route table the subnet is linked to. */
    routeTableId: string;
    dhcpOptions?: DhcpOptions;
    /** New CIDR blocks which will overwrite the existing ones. */
    v4CidrBlocks: string[];
}
export interface UpdateSubnetRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface UpdateSubnetMetadata {
    /** ID of the Subnet resource that is being updated. */
    subnetId: string;
}
export interface AddSubnetCidrBlocksRequest {
    /** ID of the Subnet resource that is being updated. */
    subnetId: string;
    /**
     * CIDR block.
     * The range of internal addresses that should be added to this subnet.
     * For example, 10.0.0.0/22 or 192.168.0.0/24.
     * Minimum subnet size is /28, maximum subnet size is /16.
     */
    v4CidrBlocks: string[];
}
export interface AddSubnetCidrBlocksMetadata {
    /** ID of the Subnet resource that is being updated. */
    subnetId: string;
}
export interface RemoveSubnetCidrBlocksRequest {
    /** ID of the Subnet resource that is being updated. */
    subnetId: string;
    /**
     * CIDR block.
     * The range of internal addresses that are removed from this subnet.
     */
    v4CidrBlocks: string[];
}
export interface RemoveSubnetCidrBlocksMetadata {
    /** ID of the Subnet resource that is being updated. */
    subnetId: string;
}
export interface DeleteSubnetRequest {
    /**
     * ID of the subnet to delete.
     * To get the subnet ID use a [SubnetService.List] request.
     */
    subnetId: string;
}
export interface DeleteSubnetMetadata {
    /** ID of the Subnet resource that is being deleted. */
    subnetId: string;
}
export interface ListSubnetOperationsRequest {
    /** ID of the Subnet resource to list operations for. */
    subnetId: string;
    /**
     * The maximum number of results per page that should be returned. If the number of available
     * results is larger than [page_size], the service returns a [ListSubnetOperationsResponse.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
     * [ListSubnetOperationsResponse.next_page_token] returned by a previous list request.
     */
    pageToken: string;
}
export interface ListSubnetOperationsResponse {
    /** List of operations for the specified Subnet resource. */
    operations: Operation[];
    /**
     * This token allows you to get the next page of results for list requests. If the number of results
     * is larger than [ListSubnetOperationsRequest.page_size], use the [next_page_token] as the value
     * for the [ListSubnetOperationsRequest.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 MoveSubnetRequest {
    /** ID of the Subnet resource to move. */
    subnetId: string;
    /** ID of the destination folder. */
    destinationFolderId: string;
}
export interface MoveSubnetMetadata {
    /** ID of the Subnet resource that is being moved. */
    subnetId: string;
}
export interface ListUsedAddressesRequest {
    subnetId: string;
    pageSize: number;
    pageToken: string;
    filter: string;
}
export interface ListUsedAddressesResponse {
    addresses: UsedAddress[];
    nextPageToken: string;
}
export interface UsedAddress {
    address: string;
    ipVersion: IpVersion;
    references: Reference[];
}
export interface RelocateSubnetRequest {
    subnetId: string;
    destinationZoneId: string;
}
export interface RelocateSubnetMetadata {
    subnetId: string;
}
export declare const GetSubnetRequest: {
    encode(message: GetSubnetRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetSubnetRequest;
    fromJSON(object: any): GetSubnetRequest;
    toJSON(message: GetSubnetRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): GetSubnetRequest;
};
export declare const ListSubnetsRequest: {
    encode(message: ListSubnetsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSubnetsRequest;
    fromJSON(object: any): ListSubnetsRequest;
    toJSON(message: ListSubnetsRequest): unknown;
    fromPartial<I extends {
        folderId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        filter?: string | undefined;
    } & {
        folderId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        filter?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSubnetsRequest>, never>>(object: I): ListSubnetsRequest;
};
export declare const ListSubnetsResponse: {
    encode(message: ListSubnetsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSubnetsResponse;
    fromJSON(object: any): ListSubnetsResponse;
    toJSON(message: ListSubnetsResponse): unknown;
    fromPartial<I extends {
        subnets?: {
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            networkId?: string | undefined;
            zoneId?: string | undefined;
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
            routeTableId?: string | undefined;
            dhcpOptions?: {
                domainNameServers?: string[] | undefined;
                domainName?: string | undefined;
                ntpServers?: string[] | undefined;
            } | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        subnets?: ({
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            networkId?: string | undefined;
            zoneId?: string | undefined;
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
            routeTableId?: string | undefined;
            dhcpOptions?: {
                domainNameServers?: string[] | undefined;
                domainName?: string | undefined;
                ntpServers?: string[] | undefined;
            } | undefined;
        }[] & ({
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            networkId?: string | undefined;
            zoneId?: string | undefined;
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
            routeTableId?: string | undefined;
            dhcpOptions?: {
                domainNameServers?: string[] | undefined;
                domainName?: string | undefined;
                ntpServers?: string[] | undefined;
            } | undefined;
        } & {
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["subnets"][number]["labels"], string | number>, never>) | undefined;
            networkId?: string | undefined;
            zoneId?: string | undefined;
            v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["subnets"][number]["v4CidrBlocks"], keyof string[]>, never>) | undefined;
            v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["subnets"][number]["v6CidrBlocks"], keyof string[]>, never>) | undefined;
            routeTableId?: string | undefined;
            dhcpOptions?: ({
                domainNameServers?: string[] | undefined;
                domainName?: string | undefined;
                ntpServers?: string[] | undefined;
            } & {
                domainNameServers?: (string[] & string[] & Record<Exclude<keyof I["subnets"][number]["dhcpOptions"]["domainNameServers"], keyof string[]>, never>) | undefined;
                domainName?: string | undefined;
                ntpServers?: (string[] & string[] & Record<Exclude<keyof I["subnets"][number]["dhcpOptions"]["ntpServers"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["subnets"][number]["dhcpOptions"], keyof DhcpOptions>, never>) | undefined;
        } & Record<Exclude<keyof I["subnets"][number], keyof Subnet>, never>)[] & Record<Exclude<keyof I["subnets"], keyof {
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            networkId?: string | undefined;
            zoneId?: string | undefined;
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
            routeTableId?: string | undefined;
            dhcpOptions?: {
                domainNameServers?: string[] | undefined;
                domainName?: string | undefined;
                ntpServers?: string[] | undefined;
            } | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSubnetsResponse>, never>>(object: I): ListSubnetsResponse;
};
export declare const CreateSubnetRequest: {
    encode(message: CreateSubnetRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSubnetRequest;
    fromJSON(object: any): CreateSubnetRequest;
    toJSON(message: CreateSubnetRequest): unknown;
    fromPartial<I extends {
        folderId?: string | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        networkId?: string | undefined;
        zoneId?: string | undefined;
        v4CidrBlocks?: string[] | undefined;
        routeTableId?: string | undefined;
        dhcpOptions?: {
            domainNameServers?: string[] | undefined;
            domainName?: string | undefined;
            ntpServers?: string[] | undefined;
        } | undefined;
    } & {
        folderId?: string | 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;
        networkId?: string | undefined;
        zoneId?: string | undefined;
        v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["v4CidrBlocks"], keyof string[]>, never>) | undefined;
        routeTableId?: string | undefined;
        dhcpOptions?: ({
            domainNameServers?: string[] | undefined;
            domainName?: string | undefined;
            ntpServers?: string[] | undefined;
        } & {
            domainNameServers?: (string[] & string[] & Record<Exclude<keyof I["dhcpOptions"]["domainNameServers"], keyof string[]>, never>) | undefined;
            domainName?: string | undefined;
            ntpServers?: (string[] & string[] & Record<Exclude<keyof I["dhcpOptions"]["ntpServers"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["dhcpOptions"], keyof DhcpOptions>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CreateSubnetRequest>, never>>(object: I): CreateSubnetRequest;
};
export declare const CreateSubnetRequest_LabelsEntry: {
    encode(message: CreateSubnetRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSubnetRequest_LabelsEntry;
    fromJSON(object: any): CreateSubnetRequest_LabelsEntry;
    toJSON(message: CreateSubnetRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateSubnetRequest_LabelsEntry>, never>>(object: I): CreateSubnetRequest_LabelsEntry;
};
export declare const CreateSubnetMetadata: {
    encode(message: CreateSubnetMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSubnetMetadata;
    fromJSON(object: any): CreateSubnetMetadata;
    toJSON(message: CreateSubnetMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): CreateSubnetMetadata;
};
export declare const UpdateSubnetRequest: {
    encode(message: UpdateSubnetRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSubnetRequest;
    fromJSON(object: any): UpdateSubnetRequest;
    toJSON(message: UpdateSubnetRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        routeTableId?: string | undefined;
        dhcpOptions?: {
            domainNameServers?: string[] | undefined;
            domainName?: string | undefined;
            ntpServers?: string[] | undefined;
        } | undefined;
        v4CidrBlocks?: string[] | undefined;
    } & {
        subnetId?: 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;
        routeTableId?: string | undefined;
        dhcpOptions?: ({
            domainNameServers?: string[] | undefined;
            domainName?: string | undefined;
            ntpServers?: string[] | undefined;
        } & {
            domainNameServers?: (string[] & string[] & Record<Exclude<keyof I["dhcpOptions"]["domainNameServers"], keyof string[]>, never>) | undefined;
            domainName?: string | undefined;
            ntpServers?: (string[] & string[] & Record<Exclude<keyof I["dhcpOptions"]["ntpServers"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["dhcpOptions"], keyof DhcpOptions>, never>) | undefined;
        v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["v4CidrBlocks"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSubnetRequest>, never>>(object: I): UpdateSubnetRequest;
};
export declare const UpdateSubnetRequest_LabelsEntry: {
    encode(message: UpdateSubnetRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSubnetRequest_LabelsEntry;
    fromJSON(object: any): UpdateSubnetRequest_LabelsEntry;
    toJSON(message: UpdateSubnetRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSubnetRequest_LabelsEntry>, never>>(object: I): UpdateSubnetRequest_LabelsEntry;
};
export declare const UpdateSubnetMetadata: {
    encode(message: UpdateSubnetMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSubnetMetadata;
    fromJSON(object: any): UpdateSubnetMetadata;
    toJSON(message: UpdateSubnetMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): UpdateSubnetMetadata;
};
export declare const AddSubnetCidrBlocksRequest: {
    encode(message: AddSubnetCidrBlocksRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AddSubnetCidrBlocksRequest;
    fromJSON(object: any): AddSubnetCidrBlocksRequest;
    toJSON(message: AddSubnetCidrBlocksRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        v4CidrBlocks?: string[] | undefined;
    } & {
        subnetId?: string | undefined;
        v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["v4CidrBlocks"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof AddSubnetCidrBlocksRequest>, never>>(object: I): AddSubnetCidrBlocksRequest;
};
export declare const AddSubnetCidrBlocksMetadata: {
    encode(message: AddSubnetCidrBlocksMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AddSubnetCidrBlocksMetadata;
    fromJSON(object: any): AddSubnetCidrBlocksMetadata;
    toJSON(message: AddSubnetCidrBlocksMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): AddSubnetCidrBlocksMetadata;
};
export declare const RemoveSubnetCidrBlocksRequest: {
    encode(message: RemoveSubnetCidrBlocksRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RemoveSubnetCidrBlocksRequest;
    fromJSON(object: any): RemoveSubnetCidrBlocksRequest;
    toJSON(message: RemoveSubnetCidrBlocksRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        v4CidrBlocks?: string[] | undefined;
    } & {
        subnetId?: string | undefined;
        v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["v4CidrBlocks"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof RemoveSubnetCidrBlocksRequest>, never>>(object: I): RemoveSubnetCidrBlocksRequest;
};
export declare const RemoveSubnetCidrBlocksMetadata: {
    encode(message: RemoveSubnetCidrBlocksMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RemoveSubnetCidrBlocksMetadata;
    fromJSON(object: any): RemoveSubnetCidrBlocksMetadata;
    toJSON(message: RemoveSubnetCidrBlocksMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): RemoveSubnetCidrBlocksMetadata;
};
export declare const DeleteSubnetRequest: {
    encode(message: DeleteSubnetRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteSubnetRequest;
    fromJSON(object: any): DeleteSubnetRequest;
    toJSON(message: DeleteSubnetRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): DeleteSubnetRequest;
};
export declare const DeleteSubnetMetadata: {
    encode(message: DeleteSubnetMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteSubnetMetadata;
    fromJSON(object: any): DeleteSubnetMetadata;
    toJSON(message: DeleteSubnetMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): DeleteSubnetMetadata;
};
export declare const ListSubnetOperationsRequest: {
    encode(message: ListSubnetOperationsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSubnetOperationsRequest;
    fromJSON(object: any): ListSubnetOperationsRequest;
    toJSON(message: ListSubnetOperationsRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & {
        subnetId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSubnetOperationsRequest>, never>>(object: I): ListSubnetOperationsRequest;
};
export declare const ListSubnetOperationsResponse: {
    encode(message: ListSubnetOperationsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSubnetOperationsResponse;
    fromJSON(object: any): ListSubnetOperationsResponse;
    toJSON(message: ListSubnetOperationsResponse): unknown;
    fromPartial<I extends {
        operations?: {
            id?: string | undefined;
            description?: string | undefined;
            createdAt?: Date | undefined;
            createdBy?: string | undefined;
            modifiedAt?: Date | undefined;
            done?: boolean | undefined;
            metadata?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
            error?: {
                code?: number | undefined;
                message?: string | undefined;
                details?: {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[] | undefined;
            } | undefined;
            response?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        operations?: ({
            id?: string | undefined;
            description?: string | undefined;
            createdAt?: Date | undefined;
            createdBy?: string | undefined;
            modifiedAt?: Date | undefined;
            done?: boolean | undefined;
            metadata?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
            error?: {
                code?: number | undefined;
                message?: string | undefined;
                details?: {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[] | undefined;
            } | undefined;
            response?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
        }[] & ({
            id?: string | undefined;
            description?: string | undefined;
            createdAt?: Date | undefined;
            createdBy?: string | undefined;
            modifiedAt?: Date | undefined;
            done?: boolean | undefined;
            metadata?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
            error?: {
                code?: number | undefined;
                message?: string | undefined;
                details?: {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[] | undefined;
            } | undefined;
            response?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
        } & {
            id?: string | undefined;
            description?: string | undefined;
            createdAt?: Date | undefined;
            createdBy?: string | undefined;
            modifiedAt?: Date | undefined;
            done?: boolean | undefined;
            metadata?: ({
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } & {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } & Record<Exclude<keyof I["operations"][number]["metadata"], keyof import("../../../../google/protobuf/any").Any>, never>) | undefined;
            error?: ({
                code?: number | undefined;
                message?: string | undefined;
                details?: {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[] | undefined;
            } & {
                code?: number | undefined;
                message?: string | undefined;
                details?: ({
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[] & ({
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                } & {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                } & Record<Exclude<keyof I["operations"][number]["error"]["details"][number], keyof import("../../../../google/protobuf/any").Any>, never>)[] & Record<Exclude<keyof I["operations"][number]["error"]["details"], keyof {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["operations"][number]["error"], keyof import("../../../../google/rpc/status").Status>, never>) | undefined;
            response?: ({
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } & {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } & Record<Exclude<keyof I["operations"][number]["response"], keyof import("../../../../google/protobuf/any").Any>, never>) | undefined;
        } & Record<Exclude<keyof I["operations"][number], keyof Operation>, never>)[] & Record<Exclude<keyof I["operations"], keyof {
            id?: string | undefined;
            description?: string | undefined;
            createdAt?: Date | undefined;
            createdBy?: string | undefined;
            modifiedAt?: Date | undefined;
            done?: boolean | undefined;
            metadata?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
            error?: {
                code?: number | undefined;
                message?: string | undefined;
                details?: {
                    typeUrl?: string | undefined;
                    value?: Buffer | undefined;
                }[] | undefined;
            } | undefined;
            response?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSubnetOperationsResponse>, never>>(object: I): ListSubnetOperationsResponse;
};
export declare const MoveSubnetRequest: {
    encode(message: MoveSubnetRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MoveSubnetRequest;
    fromJSON(object: any): MoveSubnetRequest;
    toJSON(message: MoveSubnetRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        destinationFolderId?: string | undefined;
    } & {
        subnetId?: string | undefined;
        destinationFolderId?: string | undefined;
    } & Record<Exclude<keyof I, keyof MoveSubnetRequest>, never>>(object: I): MoveSubnetRequest;
};
export declare const MoveSubnetMetadata: {
    encode(message: MoveSubnetMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MoveSubnetMetadata;
    fromJSON(object: any): MoveSubnetMetadata;
    toJSON(message: MoveSubnetMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): MoveSubnetMetadata;
};
export declare const ListUsedAddressesRequest: {
    encode(message: ListUsedAddressesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListUsedAddressesRequest;
    fromJSON(object: any): ListUsedAddressesRequest;
    toJSON(message: ListUsedAddressesRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        filter?: string | undefined;
    } & {
        subnetId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        filter?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListUsedAddressesRequest>, never>>(object: I): ListUsedAddressesRequest;
};
export declare const ListUsedAddressesResponse: {
    encode(message: ListUsedAddressesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListUsedAddressesResponse;
    fromJSON(object: any): ListUsedAddressesResponse;
    toJSON(message: ListUsedAddressesResponse): unknown;
    fromPartial<I extends {
        addresses?: {
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            references?: {
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            }[] | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        addresses?: ({
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            references?: {
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            }[] | undefined;
        }[] & ({
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            references?: {
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            }[] | undefined;
        } & {
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            references?: ({
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            }[] & ({
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            } & {
                referrer?: ({
                    type?: string | undefined;
                    id?: string | undefined;
                } & {
                    type?: string | undefined;
                    id?: string | undefined;
                } & Record<Exclude<keyof I["addresses"][number]["references"][number]["referrer"], keyof import("../../../../yandex/cloud/reference/reference").Referrer>, never>) | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            } & Record<Exclude<keyof I["addresses"][number]["references"][number], keyof Reference>, never>)[] & Record<Exclude<keyof I["addresses"][number]["references"], keyof {
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["addresses"][number], keyof UsedAddress>, never>)[] & Record<Exclude<keyof I["addresses"], keyof {
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            references?: {
                referrer?: {
                    type?: string | undefined;
                    id?: string | undefined;
                } | undefined;
                type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
            }[] | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListUsedAddressesResponse>, never>>(object: I): ListUsedAddressesResponse;
};
export declare const UsedAddress: {
    encode(message: UsedAddress, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UsedAddress;
    fromJSON(object: any): UsedAddress;
    toJSON(message: UsedAddress): unknown;
    fromPartial<I extends {
        address?: string | undefined;
        ipVersion?: IpVersion | undefined;
        references?: {
            referrer?: {
                type?: string | undefined;
                id?: string | undefined;
            } | undefined;
            type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
        }[] | undefined;
    } & {
        address?: string | undefined;
        ipVersion?: IpVersion | undefined;
        references?: ({
            referrer?: {
                type?: string | undefined;
                id?: string | undefined;
            } | undefined;
            type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
        }[] & ({
            referrer?: {
                type?: string | undefined;
                id?: string | undefined;
            } | undefined;
            type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
        } & {
            referrer?: ({
                type?: string | undefined;
                id?: string | undefined;
            } & {
                type?: string | undefined;
                id?: string | undefined;
            } & Record<Exclude<keyof I["references"][number]["referrer"], keyof import("../../../../yandex/cloud/reference/reference").Referrer>, never>) | undefined;
            type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
        } & Record<Exclude<keyof I["references"][number], keyof Reference>, never>)[] & Record<Exclude<keyof I["references"], keyof {
            referrer?: {
                type?: string | undefined;
                id?: string | undefined;
            } | undefined;
            type?: import("../../../../yandex/cloud/reference/reference").Reference_Type | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UsedAddress>, never>>(object: I): UsedAddress;
};
export declare const RelocateSubnetRequest: {
    encode(message: RelocateSubnetRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RelocateSubnetRequest;
    fromJSON(object: any): RelocateSubnetRequest;
    toJSON(message: RelocateSubnetRequest): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
        destinationZoneId?: string | undefined;
    } & {
        subnetId?: string | undefined;
        destinationZoneId?: string | undefined;
    } & Record<Exclude<keyof I, keyof RelocateSubnetRequest>, never>>(object: I): RelocateSubnetRequest;
};
export declare const RelocateSubnetMetadata: {
    encode(message: RelocateSubnetMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RelocateSubnetMetadata;
    fromJSON(object: any): RelocateSubnetMetadata;
    toJSON(message: RelocateSubnetMetadata): unknown;
    fromPartial<I extends {
        subnetId?: string | undefined;
    } & {
        subnetId?: string | undefined;
    } & Record<Exclude<keyof I, "subnetId">, never>>(object: I): RelocateSubnetMetadata;
};
/** A set of methods for managing Subnet resources. */
export declare const SubnetServiceService: {
    /**
     * Returns the specified Subnet resource.
     *
     * To get the list of available Subnet resources, make a [List] request.
     */
    readonly get: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetSubnetRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetSubnetRequest;
        readonly responseSerialize: (value: Subnet) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Subnet;
    };
    /** Retrieves the list of Subnet resources in the specified folder. */
    readonly list: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListSubnetsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListSubnetsRequest;
        readonly responseSerialize: (value: ListSubnetsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListSubnetsResponse;
    };
    /**
     * Creates a subnet in the specified folder and network.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    readonly create: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateSubnetRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateSubnetRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /**
     * Updates the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    readonly update: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateSubnetRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateSubnetRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /**
     * Adds CIDR blocks to the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    readonly addCidrBlocks: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/AddCidrBlocks";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: AddSubnetCidrBlocksRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => AddSubnetCidrBlocksRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /**
     * Removes CIDR blocks from the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    readonly removeCidrBlocks: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/RemoveCidrBlocks";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: RemoveSubnetCidrBlocksRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => RemoveSubnetCidrBlocksRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Deletes the specified subnet. */
    readonly delete: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteSubnetRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteSubnetRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** List operations for the specified subnet. */
    readonly listOperations: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/ListOperations";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListSubnetOperationsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListSubnetOperationsRequest;
        readonly responseSerialize: (value: ListSubnetOperationsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListSubnetOperationsResponse;
    };
    /** Move subnet to another folder. */
    readonly move: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/Move";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: MoveSubnetRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => MoveSubnetRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    readonly relocate: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/Relocate";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: RelocateSubnetRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => RelocateSubnetRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** List used addresses in specified subnet. */
    readonly listUsedAddresses: {
        readonly path: "/yandex.cloud.vpc.v1.SubnetService/ListUsedAddresses";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListUsedAddressesRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListUsedAddressesRequest;
        readonly responseSerialize: (value: ListUsedAddressesResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListUsedAddressesResponse;
    };
};
export interface SubnetServiceServer extends UntypedServiceImplementation {
    /**
     * Returns the specified Subnet resource.
     *
     * To get the list of available Subnet resources, make a [List] request.
     */
    get: handleUnaryCall<GetSubnetRequest, Subnet>;
    /** Retrieves the list of Subnet resources in the specified folder. */
    list: handleUnaryCall<ListSubnetsRequest, ListSubnetsResponse>;
    /**
     * Creates a subnet in the specified folder and network.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    create: handleUnaryCall<CreateSubnetRequest, Operation>;
    /**
     * Updates the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    update: handleUnaryCall<UpdateSubnetRequest, Operation>;
    /**
     * Adds CIDR blocks to the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    addCidrBlocks: handleUnaryCall<AddSubnetCidrBlocksRequest, Operation>;
    /**
     * Removes CIDR blocks from the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    removeCidrBlocks: handleUnaryCall<RemoveSubnetCidrBlocksRequest, Operation>;
    /** Deletes the specified subnet. */
    delete: handleUnaryCall<DeleteSubnetRequest, Operation>;
    /** List operations for the specified subnet. */
    listOperations: handleUnaryCall<ListSubnetOperationsRequest, ListSubnetOperationsResponse>;
    /** Move subnet to another folder. */
    move: handleUnaryCall<MoveSubnetRequest, Operation>;
    relocate: handleUnaryCall<RelocateSubnetRequest, Operation>;
    /** List used addresses in specified subnet. */
    listUsedAddresses: handleUnaryCall<ListUsedAddressesRequest, ListUsedAddressesResponse>;
}
export interface SubnetServiceClient extends Client {
    /**
     * Returns the specified Subnet resource.
     *
     * To get the list of available Subnet resources, make a [List] request.
     */
    get(request: GetSubnetRequest, callback: (error: ServiceError | null, response: Subnet) => void): ClientUnaryCall;
    get(request: GetSubnetRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Subnet) => void): ClientUnaryCall;
    get(request: GetSubnetRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Subnet) => void): ClientUnaryCall;
    /** Retrieves the list of Subnet resources in the specified folder. */
    list(request: ListSubnetsRequest, callback: (error: ServiceError | null, response: ListSubnetsResponse) => void): ClientUnaryCall;
    list(request: ListSubnetsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListSubnetsResponse) => void): ClientUnaryCall;
    list(request: ListSubnetsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListSubnetsResponse) => void): ClientUnaryCall;
    /**
     * Creates a subnet in the specified folder and network.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    create(request: CreateSubnetRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateSubnetRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateSubnetRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /**
     * Updates the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    update(request: UpdateSubnetRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateSubnetRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateSubnetRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /**
     * Adds CIDR blocks to the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    addCidrBlocks(request: AddSubnetCidrBlocksRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    addCidrBlocks(request: AddSubnetCidrBlocksRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    addCidrBlocks(request: AddSubnetCidrBlocksRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /**
     * Removes CIDR blocks from the specified subnet.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    removeCidrBlocks(request: RemoveSubnetCidrBlocksRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    removeCidrBlocks(request: RemoveSubnetCidrBlocksRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    removeCidrBlocks(request: RemoveSubnetCidrBlocksRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Deletes the specified subnet. */
    delete(request: DeleteSubnetRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteSubnetRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteSubnetRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** List operations for the specified subnet. */
    listOperations(request: ListSubnetOperationsRequest, callback: (error: ServiceError | null, response: ListSubnetOperationsResponse) => void): ClientUnaryCall;
    listOperations(request: ListSubnetOperationsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListSubnetOperationsResponse) => void): ClientUnaryCall;
    listOperations(request: ListSubnetOperationsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListSubnetOperationsResponse) => void): ClientUnaryCall;
    /** Move subnet to another folder. */
    move(request: MoveSubnetRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    move(request: MoveSubnetRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    move(request: MoveSubnetRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    relocate(request: RelocateSubnetRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    relocate(request: RelocateSubnetRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    relocate(request: RelocateSubnetRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** List used addresses in specified subnet. */
    listUsedAddresses(request: ListUsedAddressesRequest, callback: (error: ServiceError | null, response: ListUsedAddressesResponse) => void): ClientUnaryCall;
    listUsedAddresses(request: ListUsedAddressesRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListUsedAddressesResponse) => void): ClientUnaryCall;
    listUsedAddresses(request: ListUsedAddressesRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListUsedAddressesResponse) => void): ClientUnaryCall;
}
export declare const SubnetServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): SubnetServiceClient;
    service: typeof SubnetServiceService;
};
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 {};
