import _m0 from 'protobufjs/minimal';
import { ResourceOptions } from '../../../../yandex/cloud/cdn/v1/resource';
export declare const protobufPackage = "yandex.cloud.cdn.v1";
/** Resource rule. */
export interface Rule {
    /** Rule ID. */
    id: number;
    /** Rule name. */
    name: string;
    /**
     * Rule pattern.
     * Must be a valid regular expression.
     */
    rulePattern: string;
    options?: ResourceOptions;
}
export declare const Rule: {
    encode(message: Rule, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Rule;
    fromJSON(object: any): Rule;
    toJSON(message: Rule): unknown;
    fromPartial<I extends {
        id?: number | undefined;
        name?: string | undefined;
        rulePattern?: string | undefined;
        options?: {
            disableCache?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            edgeCacheSettings?: {
                enabled?: boolean | undefined;
                value?: {
                    simpleValue?: number | undefined;
                    customValues?: {
                        [x: string]: number | undefined;
                    } | undefined;
                } | undefined;
                defaultValue?: number | undefined;
            } | undefined;
            browserCacheSettings?: {
                enabled?: boolean | undefined;
                value?: number | undefined;
            } | undefined;
            cacheHttpHeaders?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            queryParamsOptions?: {
                ignoreQueryString?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                queryParamsWhitelist?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
                queryParamsBlacklist?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
            } | undefined;
            slice?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            compressionOptions?: {
                fetchCompressed?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                gzipOn?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                brotliCompression?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
            } | undefined;
            redirectOptions?: {
                redirectHttpToHttps?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                redirectHttpsToHttp?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
            } | undefined;
            hostOptions?: {
                host?: {
                    enabled?: boolean | undefined;
                    value?: string | undefined;
                } | undefined;
                forwardHostHeader?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
            } | undefined;
            staticHeaders?: {
                enabled?: boolean | undefined;
                value?: {
                    [x: string]: string | undefined;
                } | undefined;
            } | undefined;
            cors?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            stale?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            allowedHttpMethods?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            proxyCacheMethodsSet?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            disableProxyForceRanges?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            staticRequestHeaders?: {
                enabled?: boolean | undefined;
                value?: {
                    [x: string]: string | undefined;
                } | undefined;
            } | undefined;
            customServerName?: {
                enabled?: boolean | undefined;
                value?: string | undefined;
            } | undefined;
            ignoreCookie?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            rewrite?: {
                enabled?: boolean | undefined;
                body?: string | undefined;
                flag?: import("../../../../yandex/cloud/cdn/v1/resource").RewriteFlag | undefined;
            } | undefined;
            secureKey?: {
                enabled?: boolean | undefined;
                key?: string | undefined;
                type?: import("../../../../yandex/cloud/cdn/v1/resource").SecureKeyURLType | undefined;
            } | undefined;
            ipAddressAcl?: {
                enabled?: boolean | undefined;
                policyType?: import("../../../../yandex/cloud/cdn/v1/resource").PolicyType | undefined;
                exceptedValues?: string[] | undefined;
            } | undefined;
        } | undefined;
    } & {
        id?: number | undefined;
        name?: string | undefined;
        rulePattern?: string | undefined;
        options?: ({
            disableCache?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            edgeCacheSettings?: {
                enabled?: boolean | undefined;
                value?: {
                    simpleValue?: number | undefined;
                    customValues?: {
                        [x: string]: number | undefined;
                    } | undefined;
                } | undefined;
                defaultValue?: number | undefined;
            } | undefined;
            browserCacheSettings?: {
                enabled?: boolean | undefined;
                value?: number | undefined;
            } | undefined;
            cacheHttpHeaders?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            queryParamsOptions?: {
                ignoreQueryString?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                queryParamsWhitelist?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
                queryParamsBlacklist?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
            } | undefined;
            slice?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            compressionOptions?: {
                fetchCompressed?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                gzipOn?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                brotliCompression?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
            } | undefined;
            redirectOptions?: {
                redirectHttpToHttps?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                redirectHttpsToHttp?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
            } | undefined;
            hostOptions?: {
                host?: {
                    enabled?: boolean | undefined;
                    value?: string | undefined;
                } | undefined;
                forwardHostHeader?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
            } | undefined;
            staticHeaders?: {
                enabled?: boolean | undefined;
                value?: {
                    [x: string]: string | undefined;
                } | undefined;
            } | undefined;
            cors?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            stale?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            allowedHttpMethods?: {
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } | undefined;
            proxyCacheMethodsSet?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            disableProxyForceRanges?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            staticRequestHeaders?: {
                enabled?: boolean | undefined;
                value?: {
                    [x: string]: string | undefined;
                } | undefined;
            } | undefined;
            customServerName?: {
                enabled?: boolean | undefined;
                value?: string | undefined;
            } | undefined;
            ignoreCookie?: {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } | undefined;
            rewrite?: {
                enabled?: boolean | undefined;
                body?: string | undefined;
                flag?: import("../../../../yandex/cloud/cdn/v1/resource").RewriteFlag | undefined;
            } | undefined;
            secureKey?: {
                enabled?: boolean | undefined;
                key?: string | undefined;
                type?: import("../../../../yandex/cloud/cdn/v1/resource").SecureKeyURLType | undefined;
            } | undefined;
            ipAddressAcl?: {
                enabled?: boolean | undefined;
                policyType?: import("../../../../yandex/cloud/cdn/v1/resource").PolicyType | undefined;
                exceptedValues?: string[] | undefined;
            } | undefined;
        } & {
            disableCache?: ({
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & Record<Exclude<keyof I["options"]["disableCache"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            edgeCacheSettings?: ({
                enabled?: boolean | undefined;
                value?: {
                    simpleValue?: number | undefined;
                    customValues?: {
                        [x: string]: number | undefined;
                    } | undefined;
                } | undefined;
                defaultValue?: number | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: ({
                    simpleValue?: number | undefined;
                    customValues?: {
                        [x: string]: number | undefined;
                    } | undefined;
                } & {
                    simpleValue?: number | undefined;
                    customValues?: ({
                        [x: string]: number | undefined;
                    } & {
                        [x: string]: number | undefined;
                    } & Record<Exclude<keyof I["options"]["edgeCacheSettings"]["value"]["customValues"], string | number>, never>) | undefined;
                } & Record<Exclude<keyof I["options"]["edgeCacheSettings"]["value"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_CachingTimes>, never>) | undefined;
                defaultValue?: number | undefined;
            } & Record<Exclude<keyof I["options"]["edgeCacheSettings"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_EdgeCacheSettings>, never>) | undefined;
            browserCacheSettings?: ({
                enabled?: boolean | undefined;
                value?: number | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: number | undefined;
            } & Record<Exclude<keyof I["options"]["browserCacheSettings"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_Int64Option>, never>) | undefined;
            cacheHttpHeaders?: ({
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: (string[] & string[] & Record<Exclude<keyof I["options"]["cacheHttpHeaders"]["value"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["cacheHttpHeaders"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
            queryParamsOptions?: ({
                ignoreQueryString?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                queryParamsWhitelist?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
                queryParamsBlacklist?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
            } & {
                ignoreQueryString?: ({
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & Record<Exclude<keyof I["options"]["queryParamsOptions"]["ignoreQueryString"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
                queryParamsWhitelist?: ({
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: (string[] & string[] & Record<Exclude<keyof I["options"]["queryParamsOptions"]["queryParamsWhitelist"]["value"], keyof string[]>, never>) | undefined;
                } & Record<Exclude<keyof I["options"]["queryParamsOptions"]["queryParamsWhitelist"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
                queryParamsBlacklist?: ({
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: (string[] & string[] & Record<Exclude<keyof I["options"]["queryParamsOptions"]["queryParamsBlacklist"]["value"], keyof string[]>, never>) | undefined;
                } & Record<Exclude<keyof I["options"]["queryParamsOptions"]["queryParamsBlacklist"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["queryParamsOptions"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_QueryParamsOptions>, never>) | undefined;
            slice?: ({
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & Record<Exclude<keyof I["options"]["slice"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            compressionOptions?: ({
                fetchCompressed?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                gzipOn?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                brotliCompression?: {
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } | undefined;
            } & {
                fetchCompressed?: ({
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & Record<Exclude<keyof I["options"]["compressionOptions"]["fetchCompressed"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
                gzipOn?: ({
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & Record<Exclude<keyof I["options"]["compressionOptions"]["gzipOn"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
                brotliCompression?: ({
                    enabled?: boolean | undefined;
                    value?: string[] | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: (string[] & string[] & Record<Exclude<keyof I["options"]["compressionOptions"]["brotliCompression"]["value"], keyof string[]>, never>) | undefined;
                } & Record<Exclude<keyof I["options"]["compressionOptions"]["brotliCompression"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["compressionOptions"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_CompressionOptions>, never>) | undefined;
            redirectOptions?: ({
                redirectHttpToHttps?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
                redirectHttpsToHttp?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
            } & {
                redirectHttpToHttps?: ({
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & Record<Exclude<keyof I["options"]["redirectOptions"]["redirectHttpToHttps"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
                redirectHttpsToHttp?: ({
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & Record<Exclude<keyof I["options"]["redirectOptions"]["redirectHttpsToHttp"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["redirectOptions"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_RedirectOptions>, never>) | undefined;
            hostOptions?: ({
                host?: {
                    enabled?: boolean | undefined;
                    value?: string | undefined;
                } | undefined;
                forwardHostHeader?: {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } | undefined;
            } & {
                host?: ({
                    enabled?: boolean | undefined;
                    value?: string | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: string | undefined;
                } & Record<Exclude<keyof I["options"]["hostOptions"]["host"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringOption>, never>) | undefined;
                forwardHostHeader?: ({
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & {
                    enabled?: boolean | undefined;
                    value?: boolean | undefined;
                } & Record<Exclude<keyof I["options"]["hostOptions"]["forwardHostHeader"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["hostOptions"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_HostOptions>, never>) | undefined;
            staticHeaders?: ({
                enabled?: boolean | undefined;
                value?: {
                    [x: string]: string | undefined;
                } | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: ({
                    [x: string]: string | undefined;
                } & {
                    [x: string]: string | undefined;
                } & Record<Exclude<keyof I["options"]["staticHeaders"]["value"], string | number>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["staticHeaders"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsMapOption>, never>) | undefined;
            cors?: ({
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: (string[] & string[] & Record<Exclude<keyof I["options"]["cors"]["value"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["cors"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
            stale?: ({
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: (string[] & string[] & Record<Exclude<keyof I["options"]["stale"]["value"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["stale"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
            allowedHttpMethods?: ({
                enabled?: boolean | undefined;
                value?: string[] | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: (string[] & string[] & Record<Exclude<keyof I["options"]["allowedHttpMethods"]["value"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["allowedHttpMethods"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsListOption>, never>) | undefined;
            proxyCacheMethodsSet?: ({
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & Record<Exclude<keyof I["options"]["proxyCacheMethodsSet"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            disableProxyForceRanges?: ({
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & Record<Exclude<keyof I["options"]["disableProxyForceRanges"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            staticRequestHeaders?: ({
                enabled?: boolean | undefined;
                value?: {
                    [x: string]: string | undefined;
                } | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: ({
                    [x: string]: string | undefined;
                } & {
                    [x: string]: string | undefined;
                } & Record<Exclude<keyof I["options"]["staticRequestHeaders"]["value"], string | number>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["staticRequestHeaders"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringsMapOption>, never>) | undefined;
            customServerName?: ({
                enabled?: boolean | undefined;
                value?: string | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: string | undefined;
            } & Record<Exclude<keyof I["options"]["customServerName"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_StringOption>, never>) | undefined;
            ignoreCookie?: ({
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & {
                enabled?: boolean | undefined;
                value?: boolean | undefined;
            } & Record<Exclude<keyof I["options"]["ignoreCookie"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_BoolOption>, never>) | undefined;
            rewrite?: ({
                enabled?: boolean | undefined;
                body?: string | undefined;
                flag?: import("../../../../yandex/cloud/cdn/v1/resource").RewriteFlag | undefined;
            } & {
                enabled?: boolean | undefined;
                body?: string | undefined;
                flag?: import("../../../../yandex/cloud/cdn/v1/resource").RewriteFlag | undefined;
            } & Record<Exclude<keyof I["options"]["rewrite"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_RewriteOption>, never>) | undefined;
            secureKey?: ({
                enabled?: boolean | undefined;
                key?: string | undefined;
                type?: import("../../../../yandex/cloud/cdn/v1/resource").SecureKeyURLType | undefined;
            } & {
                enabled?: boolean | undefined;
                key?: string | undefined;
                type?: import("../../../../yandex/cloud/cdn/v1/resource").SecureKeyURLType | undefined;
            } & Record<Exclude<keyof I["options"]["secureKey"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_SecureKeyOption>, never>) | undefined;
            ipAddressAcl?: ({
                enabled?: boolean | undefined;
                policyType?: import("../../../../yandex/cloud/cdn/v1/resource").PolicyType | undefined;
                exceptedValues?: string[] | undefined;
            } & {
                enabled?: boolean | undefined;
                policyType?: import("../../../../yandex/cloud/cdn/v1/resource").PolicyType | undefined;
                exceptedValues?: (string[] & string[] & Record<Exclude<keyof I["options"]["ipAddressAcl"]["exceptedValues"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["options"]["ipAddressAcl"], keyof import("../../../../yandex/cloud/cdn/v1/resource").ResourceOptions_IPAddressACLOption>, never>) | undefined;
        } & Record<Exclude<keyof I["options"], keyof ResourceOptions>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof Rule>, never>>(object: I): Rule;
};
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 {};
