/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { SecurityGroupRule_Direction, PortRange, SecurityGroup, CidrBlocks } from '../../../../yandex/cloud/vpc/v1/security_group';
import { FieldMask } from '../../../../google/protobuf/field_mask';
import { Operation } from '../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.vpc.v1";
export interface GetSecurityGroupRequest {
    /**
     * ID of the Security Group resource to return.
     * To get the security group ID, use a [SecurityGroup.List] request.
     */
    securityGroupId: string;
}
export interface ListSecurityGroupsRequest {
    /**
     * ID of the folder to list security groups 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 [ListSecurityGroupsResponse.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
     * [ListSecurityGroupsResponse.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 the [SecurityGroup.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 ListSecurityGroupsResponse {
    /** List of SecurityGroup resources. */
    securityGroups: SecurityGroup[];
    /**
     * This token allows you to get the next page of results for list requests. If the number of results
     * is larger than [ListNetworksRequest.page_size], use
     * the [next_page_token] as the value
     * for the [ListNetworksRequest.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 CreateSecurityGroupRequest {
    /**
     * ID of the folder for this request to create a security group in.
     * To get the folder ID, use a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
     */
    folderId: string;
    /**
     * Name of the security group.
     * The name must be unique within the folder.
     */
    name: string;
    /** Description of the security group. */
    description: string;
    /** Resource labels as `` key:value `` pairs. */
    labels: {
        [key: string]: string;
    };
    /** ID of the Network to create security group for. */
    networkId: string;
    /** Security rules specifications. */
    ruleSpecs: SecurityGroupRuleSpec[];
}
export interface CreateSecurityGroupRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface SecurityGroupRuleSpec {
    /** Description of the security rule. */
    description: string;
    /** Rule labels as `` key:value `` pairs. */
    labels: {
        [key: string]: string;
    };
    /** The direction of network traffic allowed by this rule. */
    direction: SecurityGroupRule_Direction;
    /** The range of ports that allow traffic to pass through. Null value means any port. */
    ports?: PortRange;
    /** Protocol name. */
    protocolName: string | undefined;
    /** Protocol number from [IANA protocol numbers](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). */
    protocolNumber: number | undefined;
    /** CIDR blocks to allow to recieve or send traffic. */
    cidrBlocks?: CidrBlocks | undefined;
    /** ID of the security group to add rule to. */
    securityGroupId: string | undefined;
    /** Predefined target. See [security groups rules](/docs/vpc/concepts/security-groups#security-groups-rules) for more information. */
    predefinedTarget: string | undefined;
}
export interface SecurityGroupRuleSpec_LabelsEntry {
    key: string;
    value: string;
}
export interface CreateSecurityGroupMetadata {
    /** ID of the security group that is being created. */
    securityGroupId: string;
}
export interface UpdateSecurityGroupRequest {
    /**
     * ID of the security group to update.
     *
     * To get the security group ID make a [SecurityGroupService.List] request.
     */
    securityGroupId: string;
    /** Field mask that specifies which attributes of the Address should be updated. */
    updateMask?: FieldMask;
    /**
     * New name for the security group.
     * The name must be unique within the folder.
     */
    name: string;
    /** New description of the security group. */
    description: string;
    /**
     * Security group labels as `key:value` pairs.
     *
     * Existing set of labels is completely replaced by the provided set, so if you just want
     * to add or remove a label:
     * 1. Get the current set of labels with a [SecurityGroupService.Get] request.
     * 2. Add or remove a label in this set.
     * 3. Send the new set in this field.
     */
    labels: {
        [key: string]: string;
    };
    /** Updated rule list. All existing rules will be replaced with given list. */
    ruleSpecs: SecurityGroupRuleSpec[];
}
export interface UpdateSecurityGroupRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface UpdateSecurityGroupMetadata {
    /** ID of the SecurityGroup that is being updated. */
    securityGroupId: string;
    /** List of added security rules IDs. */
    addedRuleIds: string[];
}
export interface UpdateSecurityGroupRulesRequest {
    /** ID of the SecurityGroup that is being updated with new rules. */
    securityGroupId: string;
    /** List of rules IDs to delete. */
    deletionRuleIds: string[];
    /** Security rules specifications. */
    additionRuleSpecs: SecurityGroupRuleSpec[];
}
export interface UpdateSecurityGroupRuleRequest {
    /** ID of the SecurityGroup to update rule in. */
    securityGroupId: string;
    /** ID of the rule to update. */
    ruleId: string;
    /** Field mask that specifies which attributes of the Address should be updated. */
    updateMask?: FieldMask;
    /** New description of the rule. */
    description: string;
    /**
     * Rule labels as `key:value` pairs.
     *
     * Existing set of labels is completely replaced by the provided set, so if you just want
     * to add or remove a label:
     * 1. Get the current set of labels with a [AddressService.Get] request.
     * 2. Add or remove a label in this set.
     * 3. Send the new set in this field.
     */
    labels: {
        [key: string]: string;
    };
}
export interface UpdateSecurityGroupRuleRequest_LabelsEntry {
    key: string;
    value: string;
}
export interface UpdateSecurityGroupRuleMetadata {
    /** ID of the SecurityGroup that is being updated with new rules. */
    securityGroupId: string;
    /** ID of the rule that is being updated. */
    ruleId: string;
}
export interface DeleteSecurityGroupRequest {
    /**
     * ID of the security group to delete.
     *
     * To get a address ID make a [SecurityGroup.List] request.
     */
    securityGroupId: string;
}
export interface DeleteSecurityGroupMetadata {
    /** ID of the SecurityGroup that is being deleted. */
    securityGroupId: string;
}
export interface ListSecurityGroupOperationsRequest {
    /**
     * ID of the address to list operations for.
     *
     * To get a address ID make a [SecurityGroup.List] request.
     */
    securityGroupId: 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 [ListSecurityGroupOperationsResponse.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
     * [ListSecurityGroupOperationsResponse.next_page_token] returned by a previous list request.
     */
    pageToken: string;
}
export interface ListSecurityGroupOperationsResponse {
    /** List of operations for the specified security group. */
    operations: Operation[];
    /**
     * Token for getting the next page of the list. If the number of results is greater than
     * the specified [ListSecurityGroupOperationsRequest.page_size], use `next_page_token` as the value
     * for the [ListSecurityGroupOperationsRequest.page_token] parameter in the next list request.
     *
     * Each subsequent page will have its own `next_page_token` to continue paging through the results.
     */
    nextPageToken: string;
}
export interface MoveSecurityGroupRequest {
    /** ID of the security group to move. */
    securityGroupId: string;
    /** ID of the folder to move security group to. */
    destinationFolderId: string;
}
export interface MoveSecurityGroupMetadata {
    /** ID of the security group that is being moved. */
    securityGroupId: string;
}
export declare const GetSecurityGroupRequest: {
    encode(message: GetSecurityGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetSecurityGroupRequest;
    fromJSON(object: any): GetSecurityGroupRequest;
    toJSON(message: GetSecurityGroupRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
    } & Record<Exclude<keyof I, "securityGroupId">, never>>(object: I): GetSecurityGroupRequest;
};
export declare const ListSecurityGroupsRequest: {
    encode(message: ListSecurityGroupsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSecurityGroupsRequest;
    fromJSON(object: any): ListSecurityGroupsRequest;
    toJSON(message: ListSecurityGroupsRequest): 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 ListSecurityGroupsRequest>, never>>(object: I): ListSecurityGroupsRequest;
};
export declare const ListSecurityGroupsResponse: {
    encode(message: ListSecurityGroupsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSecurityGroupsResponse;
    fromJSON(object: any): ListSecurityGroupsResponse;
    toJSON(message: ListSecurityGroupsResponse): unknown;
    fromPartial<I extends {
        securityGroups?: {
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            networkId?: string | undefined;
            status?: import("../../../../yandex/cloud/vpc/v1/security_group").SecurityGroup_Status | undefined;
            rules?: {
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            }[] | undefined;
            defaultForNetwork?: boolean | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        securityGroups?: ({
            id?: string | undefined;
            folderId?: string | undefined;
            createdAt?: Date | undefined;
            name?: string | undefined;
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            networkId?: string | undefined;
            status?: import("../../../../yandex/cloud/vpc/v1/security_group").SecurityGroup_Status | undefined;
            rules?: {
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            }[] | undefined;
            defaultForNetwork?: boolean | 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;
            status?: import("../../../../yandex/cloud/vpc/v1/security_group").SecurityGroup_Status | undefined;
            rules?: {
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            }[] | undefined;
            defaultForNetwork?: boolean | 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["securityGroups"][number]["labels"], string | number>, never>) | undefined;
            networkId?: string | undefined;
            status?: import("../../../../yandex/cloud/vpc/v1/security_group").SecurityGroup_Status | undefined;
            rules?: ({
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            }[] & ({
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            } & {
                id?: string | undefined;
                description?: string | undefined;
                labels?: ({
                    [x: string]: string | undefined;
                } & {
                    [x: string]: string | undefined;
                } & Record<Exclude<keyof I["securityGroups"][number]["rules"][number]["labels"], string | number>, never>) | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: ({
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } & {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } & Record<Exclude<keyof I["securityGroups"][number]["rules"][number]["ports"], keyof PortRange>, never>) | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: ({
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } & {
                    v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"][number]["rules"][number]["cidrBlocks"]["v4CidrBlocks"], keyof string[]>, never>) | undefined;
                    v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"][number]["rules"][number]["cidrBlocks"]["v6CidrBlocks"], keyof string[]>, never>) | undefined;
                } & Record<Exclude<keyof I["securityGroups"][number]["rules"][number]["cidrBlocks"], keyof CidrBlocks>, never>) | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            } & Record<Exclude<keyof I["securityGroups"][number]["rules"][number], keyof import("../../../../yandex/cloud/vpc/v1/security_group").SecurityGroupRule>, never>)[] & Record<Exclude<keyof I["securityGroups"][number]["rules"], keyof {
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            }[]>, never>) | undefined;
            defaultForNetwork?: boolean | undefined;
        } & Record<Exclude<keyof I["securityGroups"][number], keyof SecurityGroup>, never>)[] & Record<Exclude<keyof I["securityGroups"], 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;
            status?: import("../../../../yandex/cloud/vpc/v1/security_group").SecurityGroup_Status | undefined;
            rules?: {
                id?: string | undefined;
                description?: string | undefined;
                labels?: {
                    [x: string]: string | undefined;
                } | undefined;
                direction?: SecurityGroupRule_Direction | undefined;
                ports?: {
                    fromPort?: number | undefined;
                    toPort?: number | undefined;
                } | undefined;
                protocolName?: string | undefined;
                protocolNumber?: number | undefined;
                cidrBlocks?: {
                    v4CidrBlocks?: string[] | undefined;
                    v6CidrBlocks?: string[] | undefined;
                } | undefined;
                securityGroupId?: string | undefined;
                predefinedTarget?: string | undefined;
            }[] | undefined;
            defaultForNetwork?: boolean | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSecurityGroupsResponse>, never>>(object: I): ListSecurityGroupsResponse;
};
export declare const CreateSecurityGroupRequest: {
    encode(message: CreateSecurityGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSecurityGroupRequest;
    fromJSON(object: any): CreateSecurityGroupRequest;
    toJSON(message: CreateSecurityGroupRequest): unknown;
    fromPartial<I extends {
        folderId?: string | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        networkId?: string | undefined;
        ruleSpecs?: {
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: 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;
        ruleSpecs?: ({
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[] & ({
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & {
            description?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["ruleSpecs"][number]["labels"], string | number>, never>) | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: ({
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & Record<Exclude<keyof I["ruleSpecs"][number]["ports"], keyof PortRange>, never>) | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: ({
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } & {
                v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["ruleSpecs"][number]["cidrBlocks"]["v4CidrBlocks"], keyof string[]>, never>) | undefined;
                v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["ruleSpecs"][number]["cidrBlocks"]["v6CidrBlocks"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["ruleSpecs"][number]["cidrBlocks"], keyof CidrBlocks>, never>) | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & Record<Exclude<keyof I["ruleSpecs"][number], keyof SecurityGroupRuleSpec>, never>)[] & Record<Exclude<keyof I["ruleSpecs"], keyof {
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CreateSecurityGroupRequest>, never>>(object: I): CreateSecurityGroupRequest;
};
export declare const CreateSecurityGroupRequest_LabelsEntry: {
    encode(message: CreateSecurityGroupRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSecurityGroupRequest_LabelsEntry;
    fromJSON(object: any): CreateSecurityGroupRequest_LabelsEntry;
    toJSON(message: CreateSecurityGroupRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof CreateSecurityGroupRequest_LabelsEntry>, never>>(object: I): CreateSecurityGroupRequest_LabelsEntry;
};
export declare const SecurityGroupRuleSpec: {
    encode(message: SecurityGroupRuleSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SecurityGroupRuleSpec;
    fromJSON(object: any): SecurityGroupRuleSpec;
    toJSON(message: SecurityGroupRuleSpec): unknown;
    fromPartial<I extends {
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        direction?: SecurityGroupRule_Direction | undefined;
        ports?: {
            fromPort?: number | undefined;
            toPort?: number | undefined;
        } | undefined;
        protocolName?: string | undefined;
        protocolNumber?: number | undefined;
        cidrBlocks?: {
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
        } | undefined;
        securityGroupId?: string | undefined;
        predefinedTarget?: string | undefined;
    } & {
        description?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
        direction?: SecurityGroupRule_Direction | undefined;
        ports?: ({
            fromPort?: number | undefined;
            toPort?: number | undefined;
        } & {
            fromPort?: number | undefined;
            toPort?: number | undefined;
        } & Record<Exclude<keyof I["ports"], keyof PortRange>, never>) | undefined;
        protocolName?: string | undefined;
        protocolNumber?: number | undefined;
        cidrBlocks?: ({
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
        } & {
            v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["cidrBlocks"]["v4CidrBlocks"], keyof string[]>, never>) | undefined;
            v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["cidrBlocks"]["v6CidrBlocks"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["cidrBlocks"], keyof CidrBlocks>, never>) | undefined;
        securityGroupId?: string | undefined;
        predefinedTarget?: string | undefined;
    } & Record<Exclude<keyof I, keyof SecurityGroupRuleSpec>, never>>(object: I): SecurityGroupRuleSpec;
};
export declare const SecurityGroupRuleSpec_LabelsEntry: {
    encode(message: SecurityGroupRuleSpec_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SecurityGroupRuleSpec_LabelsEntry;
    fromJSON(object: any): SecurityGroupRuleSpec_LabelsEntry;
    toJSON(message: SecurityGroupRuleSpec_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof SecurityGroupRuleSpec_LabelsEntry>, never>>(object: I): SecurityGroupRuleSpec_LabelsEntry;
};
export declare const CreateSecurityGroupMetadata: {
    encode(message: CreateSecurityGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSecurityGroupMetadata;
    fromJSON(object: any): CreateSecurityGroupMetadata;
    toJSON(message: CreateSecurityGroupMetadata): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
    } & Record<Exclude<keyof I, "securityGroupId">, never>>(object: I): CreateSecurityGroupMetadata;
};
export declare const UpdateSecurityGroupRequest: {
    encode(message: UpdateSecurityGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupRequest;
    fromJSON(object: any): UpdateSecurityGroupRequest;
    toJSON(message: UpdateSecurityGroupRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        ruleSpecs?: {
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[] | undefined;
    } & {
        securityGroupId?: 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;
        ruleSpecs?: ({
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[] & ({
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & {
            description?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["ruleSpecs"][number]["labels"], string | number>, never>) | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: ({
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & Record<Exclude<keyof I["ruleSpecs"][number]["ports"], keyof PortRange>, never>) | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: ({
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } & {
                v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["ruleSpecs"][number]["cidrBlocks"]["v4CidrBlocks"], keyof string[]>, never>) | undefined;
                v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["ruleSpecs"][number]["cidrBlocks"]["v6CidrBlocks"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["ruleSpecs"][number]["cidrBlocks"], keyof CidrBlocks>, never>) | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & Record<Exclude<keyof I["ruleSpecs"][number], keyof SecurityGroupRuleSpec>, never>)[] & Record<Exclude<keyof I["ruleSpecs"], keyof {
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSecurityGroupRequest>, never>>(object: I): UpdateSecurityGroupRequest;
};
export declare const UpdateSecurityGroupRequest_LabelsEntry: {
    encode(message: UpdateSecurityGroupRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupRequest_LabelsEntry;
    fromJSON(object: any): UpdateSecurityGroupRequest_LabelsEntry;
    toJSON(message: UpdateSecurityGroupRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSecurityGroupRequest_LabelsEntry>, never>>(object: I): UpdateSecurityGroupRequest_LabelsEntry;
};
export declare const UpdateSecurityGroupMetadata: {
    encode(message: UpdateSecurityGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupMetadata;
    fromJSON(object: any): UpdateSecurityGroupMetadata;
    toJSON(message: UpdateSecurityGroupMetadata): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        addedRuleIds?: string[] | undefined;
    } & {
        securityGroupId?: string | undefined;
        addedRuleIds?: (string[] & string[] & Record<Exclude<keyof I["addedRuleIds"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSecurityGroupMetadata>, never>>(object: I): UpdateSecurityGroupMetadata;
};
export declare const UpdateSecurityGroupRulesRequest: {
    encode(message: UpdateSecurityGroupRulesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupRulesRequest;
    fromJSON(object: any): UpdateSecurityGroupRulesRequest;
    toJSON(message: UpdateSecurityGroupRulesRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        deletionRuleIds?: string[] | undefined;
        additionRuleSpecs?: {
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[] | undefined;
    } & {
        securityGroupId?: string | undefined;
        deletionRuleIds?: (string[] & string[] & Record<Exclude<keyof I["deletionRuleIds"], keyof string[]>, never>) | undefined;
        additionRuleSpecs?: ({
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[] & ({
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & {
            description?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["additionRuleSpecs"][number]["labels"], string | number>, never>) | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: ({
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & Record<Exclude<keyof I["additionRuleSpecs"][number]["ports"], keyof PortRange>, never>) | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: ({
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } & {
                v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["additionRuleSpecs"][number]["cidrBlocks"]["v4CidrBlocks"], keyof string[]>, never>) | undefined;
                v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["additionRuleSpecs"][number]["cidrBlocks"]["v6CidrBlocks"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["additionRuleSpecs"][number]["cidrBlocks"], keyof CidrBlocks>, never>) | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & Record<Exclude<keyof I["additionRuleSpecs"][number], keyof SecurityGroupRuleSpec>, never>)[] & Record<Exclude<keyof I["additionRuleSpecs"], keyof {
            description?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSecurityGroupRulesRequest>, never>>(object: I): UpdateSecurityGroupRulesRequest;
};
export declare const UpdateSecurityGroupRuleRequest: {
    encode(message: UpdateSecurityGroupRuleRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupRuleRequest;
    fromJSON(object: any): UpdateSecurityGroupRuleRequest;
    toJSON(message: UpdateSecurityGroupRuleRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        ruleId?: string | undefined;
        updateMask?: {
            paths?: string[] | undefined;
        } | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
    } & {
        securityGroupId?: string | undefined;
        ruleId?: 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;
        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 UpdateSecurityGroupRuleRequest>, never>>(object: I): UpdateSecurityGroupRuleRequest;
};
export declare const UpdateSecurityGroupRuleRequest_LabelsEntry: {
    encode(message: UpdateSecurityGroupRuleRequest_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupRuleRequest_LabelsEntry;
    fromJSON(object: any): UpdateSecurityGroupRuleRequest_LabelsEntry;
    toJSON(message: UpdateSecurityGroupRuleRequest_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSecurityGroupRuleRequest_LabelsEntry>, never>>(object: I): UpdateSecurityGroupRuleRequest_LabelsEntry;
};
export declare const UpdateSecurityGroupRuleMetadata: {
    encode(message: UpdateSecurityGroupRuleMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSecurityGroupRuleMetadata;
    fromJSON(object: any): UpdateSecurityGroupRuleMetadata;
    toJSON(message: UpdateSecurityGroupRuleMetadata): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        ruleId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
        ruleId?: string | undefined;
    } & Record<Exclude<keyof I, keyof UpdateSecurityGroupRuleMetadata>, never>>(object: I): UpdateSecurityGroupRuleMetadata;
};
export declare const DeleteSecurityGroupRequest: {
    encode(message: DeleteSecurityGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteSecurityGroupRequest;
    fromJSON(object: any): DeleteSecurityGroupRequest;
    toJSON(message: DeleteSecurityGroupRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
    } & Record<Exclude<keyof I, "securityGroupId">, never>>(object: I): DeleteSecurityGroupRequest;
};
export declare const DeleteSecurityGroupMetadata: {
    encode(message: DeleteSecurityGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteSecurityGroupMetadata;
    fromJSON(object: any): DeleteSecurityGroupMetadata;
    toJSON(message: DeleteSecurityGroupMetadata): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
    } & Record<Exclude<keyof I, "securityGroupId">, never>>(object: I): DeleteSecurityGroupMetadata;
};
export declare const ListSecurityGroupOperationsRequest: {
    encode(message: ListSecurityGroupOperationsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSecurityGroupOperationsRequest;
    fromJSON(object: any): ListSecurityGroupOperationsRequest;
    toJSON(message: ListSecurityGroupOperationsRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSecurityGroupOperationsRequest>, never>>(object: I): ListSecurityGroupOperationsRequest;
};
export declare const ListSecurityGroupOperationsResponse: {
    encode(message: ListSecurityGroupOperationsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSecurityGroupOperationsResponse;
    fromJSON(object: any): ListSecurityGroupOperationsResponse;
    toJSON(message: ListSecurityGroupOperationsResponse): 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 ListSecurityGroupOperationsResponse>, never>>(object: I): ListSecurityGroupOperationsResponse;
};
export declare const MoveSecurityGroupRequest: {
    encode(message: MoveSecurityGroupRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MoveSecurityGroupRequest;
    fromJSON(object: any): MoveSecurityGroupRequest;
    toJSON(message: MoveSecurityGroupRequest): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
        destinationFolderId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
        destinationFolderId?: string | undefined;
    } & Record<Exclude<keyof I, keyof MoveSecurityGroupRequest>, never>>(object: I): MoveSecurityGroupRequest;
};
export declare const MoveSecurityGroupMetadata: {
    encode(message: MoveSecurityGroupMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MoveSecurityGroupMetadata;
    fromJSON(object: any): MoveSecurityGroupMetadata;
    toJSON(message: MoveSecurityGroupMetadata): unknown;
    fromPartial<I extends {
        securityGroupId?: string | undefined;
    } & {
        securityGroupId?: string | undefined;
    } & Record<Exclude<keyof I, "securityGroupId">, never>>(object: I): MoveSecurityGroupMetadata;
};
/** A set of methods for managing SecurityGroup resources. */
export declare const SecurityGroupServiceService: {
    /**
     * Returns the specified SecurityGroup resource.
     *
     * To get the list of all available SecurityGroup resources, make a [List] request.
     */
    readonly get: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetSecurityGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetSecurityGroupRequest;
        readonly responseSerialize: (value: SecurityGroup) => Buffer;
        readonly responseDeserialize: (value: Buffer) => SecurityGroup;
    };
    /** Retrieves the list of SecurityGroup resources in the specified folder. */
    readonly list: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListSecurityGroupsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListSecurityGroupsRequest;
        readonly responseSerialize: (value: ListSecurityGroupsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListSecurityGroupsResponse;
    };
    /** Creates a security group in the specified folder and network. */
    readonly create: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateSecurityGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateSecurityGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /**
     * Updates the specified security group.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    readonly update: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/Update";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateSecurityGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateSecurityGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates the rules of the specified security group. */
    readonly updateRules: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/UpdateRules";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateSecurityGroupRulesRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateSecurityGroupRulesRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Updates the specified rule. */
    readonly updateRule: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/UpdateRule";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: UpdateSecurityGroupRuleRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UpdateSecurityGroupRuleRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Deletes the specified security group. */
    readonly delete: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteSecurityGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteSecurityGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Moves security groups to another folder. */
    readonly move: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/Move";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: MoveSecurityGroupRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => MoveSecurityGroupRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Lists operations for the specified security groups. */
    readonly listOperations: {
        readonly path: "/yandex.cloud.vpc.v1.SecurityGroupService/ListOperations";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListSecurityGroupOperationsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListSecurityGroupOperationsRequest;
        readonly responseSerialize: (value: ListSecurityGroupOperationsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListSecurityGroupOperationsResponse;
    };
};
export interface SecurityGroupServiceServer extends UntypedServiceImplementation {
    /**
     * Returns the specified SecurityGroup resource.
     *
     * To get the list of all available SecurityGroup resources, make a [List] request.
     */
    get: handleUnaryCall<GetSecurityGroupRequest, SecurityGroup>;
    /** Retrieves the list of SecurityGroup resources in the specified folder. */
    list: handleUnaryCall<ListSecurityGroupsRequest, ListSecurityGroupsResponse>;
    /** Creates a security group in the specified folder and network. */
    create: handleUnaryCall<CreateSecurityGroupRequest, Operation>;
    /**
     * Updates the specified security group.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    update: handleUnaryCall<UpdateSecurityGroupRequest, Operation>;
    /** Updates the rules of the specified security group. */
    updateRules: handleUnaryCall<UpdateSecurityGroupRulesRequest, Operation>;
    /** Updates the specified rule. */
    updateRule: handleUnaryCall<UpdateSecurityGroupRuleRequest, Operation>;
    /** Deletes the specified security group. */
    delete: handleUnaryCall<DeleteSecurityGroupRequest, Operation>;
    /** Moves security groups to another folder. */
    move: handleUnaryCall<MoveSecurityGroupRequest, Operation>;
    /** Lists operations for the specified security groups. */
    listOperations: handleUnaryCall<ListSecurityGroupOperationsRequest, ListSecurityGroupOperationsResponse>;
}
export interface SecurityGroupServiceClient extends Client {
    /**
     * Returns the specified SecurityGroup resource.
     *
     * To get the list of all available SecurityGroup resources, make a [List] request.
     */
    get(request: GetSecurityGroupRequest, callback: (error: ServiceError | null, response: SecurityGroup) => void): ClientUnaryCall;
    get(request: GetSecurityGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: SecurityGroup) => void): ClientUnaryCall;
    get(request: GetSecurityGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: SecurityGroup) => void): ClientUnaryCall;
    /** Retrieves the list of SecurityGroup resources in the specified folder. */
    list(request: ListSecurityGroupsRequest, callback: (error: ServiceError | null, response: ListSecurityGroupsResponse) => void): ClientUnaryCall;
    list(request: ListSecurityGroupsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListSecurityGroupsResponse) => void): ClientUnaryCall;
    list(request: ListSecurityGroupsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListSecurityGroupsResponse) => void): ClientUnaryCall;
    /** Creates a security group in the specified folder and network. */
    create(request: CreateSecurityGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateSecurityGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateSecurityGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /**
     * Updates the specified security group.
     * Method starts an asynchronous operation that can be cancelled while it is in progress.
     */
    update(request: UpdateSecurityGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateSecurityGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    update(request: UpdateSecurityGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates the rules of the specified security group. */
    updateRules(request: UpdateSecurityGroupRulesRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    updateRules(request: UpdateSecurityGroupRulesRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    updateRules(request: UpdateSecurityGroupRulesRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Updates the specified rule. */
    updateRule(request: UpdateSecurityGroupRuleRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    updateRule(request: UpdateSecurityGroupRuleRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    updateRule(request: UpdateSecurityGroupRuleRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Deletes the specified security group. */
    delete(request: DeleteSecurityGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteSecurityGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteSecurityGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Moves security groups to another folder. */
    move(request: MoveSecurityGroupRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    move(request: MoveSecurityGroupRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    move(request: MoveSecurityGroupRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Lists operations for the specified security groups. */
    listOperations(request: ListSecurityGroupOperationsRequest, callback: (error: ServiceError | null, response: ListSecurityGroupOperationsResponse) => void): ClientUnaryCall;
    listOperations(request: ListSecurityGroupOperationsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListSecurityGroupOperationsResponse) => void): ClientUnaryCall;
    listOperations(request: ListSecurityGroupOperationsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListSecurityGroupOperationsResponse) => void): ClientUnaryCall;
}
export declare const SecurityGroupServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): SecurityGroupServiceClient;
    service: typeof SecurityGroupServiceService;
};
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 {};
