import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "yandex.cloud.vpc.v1";
export interface SecurityGroup {
    $type: "yandex.cloud.vpc.v1.SecurityGroup";
    id: string;
    folderId: string;
    createdAt?: Date;
    name: string;
    description: string;
    labels: {
        [key: string]: string;
    };
    networkId: string;
    status: SecurityGroup_Status;
    rules: SecurityGroupRule[];
    defaultForNetwork: boolean;
}
export declare enum SecurityGroup_Status {
    STATUS_UNSPECIFIED = 0,
    CREATING = 1,
    ACTIVE = 2,
    /** UPDATING - updating is a long operation because we must update all instances in SG */
    UPDATING = 3,
    DELETING = 4,
    UNRECOGNIZED = -1
}
export declare function securityGroup_StatusFromJSON(object: any): SecurityGroup_Status;
export declare function securityGroup_StatusToJSON(object: SecurityGroup_Status): string;
export interface SecurityGroup_LabelsEntry {
    $type: "yandex.cloud.vpc.v1.SecurityGroup.LabelsEntry";
    key: string;
    value: string;
}
export interface SecurityGroupRule {
    $type: "yandex.cloud.vpc.v1.SecurityGroupRule";
    /** generated by api server after rule creation */
    id: string;
    description: string;
    labels: {
        [key: string]: string;
    };
    direction: SecurityGroupRule_Direction;
    /** null value means any */
    ports?: PortRange;
    /**
     * null value means any protocol
     * values from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
     */
    protocolName: string;
    protocolNumber: number;
    cidrBlocks?: CidrBlocks | undefined;
    securityGroupId: string | undefined;
    predefinedTarget: string | undefined;
}
export declare enum SecurityGroupRule_Direction {
    DIRECTION_UNSPECIFIED = 0,
    INGRESS = 1,
    EGRESS = 2,
    UNRECOGNIZED = -1
}
export declare function securityGroupRule_DirectionFromJSON(object: any): SecurityGroupRule_Direction;
export declare function securityGroupRule_DirectionToJSON(object: SecurityGroupRule_Direction): string;
export interface SecurityGroupRule_LabelsEntry {
    $type: "yandex.cloud.vpc.v1.SecurityGroupRule.LabelsEntry";
    key: string;
    value: string;
}
export interface PortRange {
    $type: "yandex.cloud.vpc.v1.PortRange";
    fromPort: number;
    toPort: number;
}
export interface CidrBlocks {
    $type: "yandex.cloud.vpc.v1.CidrBlocks";
    v4CidrBlocks: string[];
    v6CidrBlocks: string[];
}
export declare const SecurityGroup: {
    $type: "yandex.cloud.vpc.v1.SecurityGroup";
    encode(message: SecurityGroup, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number | undefined): SecurityGroup;
    fromJSON(object: any): SecurityGroup;
    toJSON(message: SecurityGroup): unknown;
    fromPartial<I extends {
        description?: string | undefined;
        id?: string | undefined;
        name?: string | undefined;
        createdAt?: Date | undefined;
        status?: SecurityGroup_Status | undefined;
        folderId?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
            [x: number]: string | undefined;
        } | undefined;
        networkId?: string | undefined;
        rules?: {
            description?: string | undefined;
            id?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
                [x: number]: string | undefined;
            } | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | 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;
    } & {
        description?: string | undefined;
        id?: string | undefined;
        name?: string | undefined;
        createdAt?: Date | undefined;
        status?: SecurityGroup_Status | undefined;
        folderId?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
            [x: number]: string | undefined;
        } & {
            [x: string]: string | undefined;
            [x: number]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
        networkId?: string | undefined;
        rules?: ({
            description?: string | undefined;
            id?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
                [x: number]: string | undefined;
            } | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        }[] & ({
            description?: string | undefined;
            id?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
                [x: number]: string | undefined;
            } | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: {
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & {
            description?: string | undefined;
            id?: string | undefined;
            labels?: ({
                [x: string]: string | undefined;
                [x: number]: string | undefined;
            } & {
                [x: string]: string | undefined;
                [x: number]: string | undefined;
            } & Record<Exclude<keyof I["rules"][number]["labels"], string | number>, never>) | undefined;
            ports?: ({
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } & Record<Exclude<keyof I["rules"][number]["ports"], "$type" | "fromPort" | "toPort">, never>) | undefined;
            direction?: SecurityGroupRule_Direction | undefined;
            protocolName?: string | undefined;
            protocolNumber?: number | undefined;
            cidrBlocks?: ({
                v4CidrBlocks?: string[] | undefined;
                v6CidrBlocks?: string[] | undefined;
            } & {
                v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["rules"][number]["cidrBlocks"]["v4CidrBlocks"], "$type" | keyof string[]>, never>) | undefined;
                v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["rules"][number]["cidrBlocks"]["v6CidrBlocks"], "$type" | keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["rules"][number]["cidrBlocks"], "$type" | "v4CidrBlocks" | "v6CidrBlocks">, never>) | undefined;
            securityGroupId?: string | undefined;
            predefinedTarget?: string | undefined;
        } & Record<Exclude<keyof I["rules"][number], "$type" | "description" | "id" | "labels" | "ports" | "direction" | "protocolName" | "protocolNumber" | "cidrBlocks" | "securityGroupId" | "predefinedTarget">, never>)[] & Record<Exclude<keyof I["rules"], "$type" | keyof {
            description?: string | undefined;
            id?: string | undefined;
            labels?: {
                [x: string]: string | undefined;
                [x: number]: string | undefined;
            } | undefined;
            ports?: {
                fromPort?: number | undefined;
                toPort?: number | undefined;
            } | undefined;
            direction?: SecurityGroupRule_Direction | 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, "$type" | "description" | "id" | "name" | "createdAt" | "status" | "folderId" | "labels" | "networkId" | "rules" | "defaultForNetwork">, never>>(object: I): SecurityGroup;
};
export declare const SecurityGroup_LabelsEntry: {
    $type: "yandex.cloud.vpc.v1.SecurityGroup.LabelsEntry";
    encode(message: SecurityGroup_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number | undefined): SecurityGroup_LabelsEntry;
    fromJSON(object: any): SecurityGroup_LabelsEntry;
    toJSON(message: SecurityGroup_LabelsEntry): unknown;
    fromPartial<I extends {
        value?: string | undefined;
        key?: string | undefined;
    } & {
        value?: string | undefined;
        key?: string | undefined;
    } & Record<Exclude<keyof I, "$type" | "value" | "key">, never>>(object: I): SecurityGroup_LabelsEntry;
};
export declare const SecurityGroupRule: {
    $type: "yandex.cloud.vpc.v1.SecurityGroupRule";
    encode(message: SecurityGroupRule, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number | undefined): SecurityGroupRule;
    fromJSON(object: any): SecurityGroupRule;
    toJSON(message: SecurityGroupRule): unknown;
    fromPartial<I extends {
        description?: string | undefined;
        id?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
            [x: number]: string | undefined;
        } | undefined;
        ports?: {
            fromPort?: number | undefined;
            toPort?: number | undefined;
        } | undefined;
        direction?: SecurityGroupRule_Direction | undefined;
        protocolName?: string | undefined;
        protocolNumber?: number | undefined;
        cidrBlocks?: {
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
        } | undefined;
        securityGroupId?: string | undefined;
        predefinedTarget?: string | undefined;
    } & {
        description?: string | undefined;
        id?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
            [x: number]: string | undefined;
        } & {
            [x: string]: string | undefined;
            [x: number]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
        ports?: ({
            fromPort?: number | undefined;
            toPort?: number | undefined;
        } & {
            fromPort?: number | undefined;
            toPort?: number | undefined;
        } & Record<Exclude<keyof I["ports"], "$type" | "fromPort" | "toPort">, never>) | undefined;
        direction?: SecurityGroupRule_Direction | undefined;
        protocolName?: string | undefined;
        protocolNumber?: number | undefined;
        cidrBlocks?: ({
            v4CidrBlocks?: string[] | undefined;
            v6CidrBlocks?: string[] | undefined;
        } & {
            v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["cidrBlocks"]["v4CidrBlocks"], "$type" | keyof string[]>, never>) | undefined;
            v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["cidrBlocks"]["v6CidrBlocks"], "$type" | keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["cidrBlocks"], "$type" | "v4CidrBlocks" | "v6CidrBlocks">, never>) | undefined;
        securityGroupId?: string | undefined;
        predefinedTarget?: string | undefined;
    } & Record<Exclude<keyof I, "$type" | "description" | "id" | "labels" | "ports" | "direction" | "protocolName" | "protocolNumber" | "cidrBlocks" | "securityGroupId" | "predefinedTarget">, never>>(object: I): SecurityGroupRule;
};
export declare const SecurityGroupRule_LabelsEntry: {
    $type: "yandex.cloud.vpc.v1.SecurityGroupRule.LabelsEntry";
    encode(message: SecurityGroupRule_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number | undefined): SecurityGroupRule_LabelsEntry;
    fromJSON(object: any): SecurityGroupRule_LabelsEntry;
    toJSON(message: SecurityGroupRule_LabelsEntry): unknown;
    fromPartial<I extends {
        value?: string | undefined;
        key?: string | undefined;
    } & {
        value?: string | undefined;
        key?: string | undefined;
    } & Record<Exclude<keyof I, "$type" | "value" | "key">, never>>(object: I): SecurityGroupRule_LabelsEntry;
};
export declare const PortRange: {
    $type: "yandex.cloud.vpc.v1.PortRange";
    encode(message: PortRange, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number | undefined): PortRange;
    fromJSON(object: any): PortRange;
    toJSON(message: PortRange): unknown;
    fromPartial<I extends {
        fromPort?: number | undefined;
        toPort?: number | undefined;
    } & {
        fromPort?: number | undefined;
        toPort?: number | undefined;
    } & Record<Exclude<keyof I, "$type" | "fromPort" | "toPort">, never>>(object: I): PortRange;
};
export declare const CidrBlocks: {
    $type: "yandex.cloud.vpc.v1.CidrBlocks";
    encode(message: CidrBlocks, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number | undefined): CidrBlocks;
    fromJSON(object: any): CidrBlocks;
    toJSON(message: CidrBlocks): unknown;
    fromPartial<I extends {
        v4CidrBlocks?: string[] | undefined;
        v6CidrBlocks?: string[] | undefined;
    } & {
        v4CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["v4CidrBlocks"], "$type" | keyof string[]>, never>) | undefined;
        v6CidrBlocks?: (string[] & string[] & Record<Exclude<keyof I["v6CidrBlocks"], "$type" | keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, "$type" | "v4CidrBlocks" | "v6CidrBlocks">, never>>(object: I): CidrBlocks;
};
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export declare 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 Exclude<keyof T, "$type">]?: DeepPartial<T[K]>;
} : Partial<T>;
declare type KeysOfUnion<T> = T extends T ? keyof T : never;
export declare 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> | "$type">, never>;
export {};
