import Long from "long"; import _m0 from "protobufjs/minimal"; import { ClientConsensusStates, IdentifiedClientState, Params } from "./client"; export declare const protobufPackage = "ibc.core.client.v1"; /** GenesisState defines the ibc client submodule's genesis state. */ export interface GenesisState { /** client states with their corresponding identifiers */ clients: IdentifiedClientState[]; /** consensus states from each client */ clientsConsensus: ClientConsensusStates[]; /** metadata from each client */ clientsMetadata: IdentifiedGenesisMetadata[]; params?: Params; /** create localhost on initialization */ createLocalhost: boolean; /** the sequence for the next generated client identifier */ nextClientSequence: Long; } /** * GenesisMetadata defines the genesis type for metadata that clients may return * with ExportMetadata */ export interface GenesisMetadata { /** store key of metadata without clientID-prefix */ key: Uint8Array; /** metadata value */ value: Uint8Array; } /** * IdentifiedGenesisMetadata has the client metadata with the corresponding * client id. */ export interface IdentifiedGenesisMetadata { clientId: string; clientMetadata: GenesisMetadata[]; } export declare const GenesisState: { encode(message: GenesisState, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): GenesisState; fromJSON(object: any): GenesisState; toJSON(message: GenesisState): unknown; create]: never; }) | undefined; } & { [K_1 in Exclude]: never; })[] & { [K_2 in Exclude]: never; }) | undefined; clientsConsensus?: ({ clientId?: string | undefined; consensusStates?: { height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; }[] | undefined; }[] & ({ clientId?: string | undefined; consensusStates?: { height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; }[] | undefined; } & { clientId?: string | undefined; consensusStates?: ({ height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; }[] & ({ height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; } & { height?: ({ revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } & { revisionNumber?: string | number | (Long.Long & { high: number; low: number; unsigned: boolean; add: (addend: string | number | Long.Long) => Long.Long; and: (other: string | number | Long.Long) => Long.Long; compare: (other: string | number | Long.Long) => number; comp: (other: string | number | Long.Long) => number; divide: (divisor: string | number | Long.Long) => Long.Long; div: (divisor: string | number | Long.Long) => Long.Long; equals: (other: string | number | Long.Long) => boolean; eq: (other: string | number | Long.Long) => boolean; getHighBits: () => number; getHighBitsUnsigned: () => number; getLowBits: () => number; getLowBitsUnsigned: () => number; getNumBitsAbs: () => number; greaterThan: (other: string | number | Long.Long) => boolean; gt: (other: string | number | Long.Long) => boolean; greaterThanOrEqual: (other: string | number | Long.Long) => boolean; gte: (other: string | number | Long.Long) => boolean; isEven: () => boolean; isNegative: () => boolean; isOdd: () => boolean; isPositive: () => boolean; isZero: () => boolean; lessThan: (other: string | number | Long.Long) => boolean; lt: (other: string | number | Long.Long) => boolean; lessThanOrEqual: (other: string | number | Long.Long) => boolean; lte: (other: string | number | Long.Long) => boolean; modulo: (other: string | number | Long.Long) => Long.Long; mod: (other: string | number | Long.Long) => Long.Long; multiply: (multiplier: string | number | Long.Long) => Long.Long; mul: (multiplier: string | number | Long.Long) => Long.Long; negate: () => Long.Long; neg: () => Long.Long; not: () => Long.Long; notEquals: (other: string | number | Long.Long) => boolean; neq: (other: string | number | Long.Long) => boolean; or: (other: string | number | Long.Long) => Long.Long; shiftLeft: (numBits: number | Long.Long) => Long.Long; shl: (numBits: number | Long.Long) => Long.Long; shiftRight: (numBits: number | Long.Long) => Long.Long; shr: (numBits: number | Long.Long) => Long.Long; shiftRightUnsigned: (numBits: number | Long.Long) => Long.Long; shru: (numBits: number | Long.Long) => Long.Long; subtract: (subtrahend: string | number | Long.Long) => Long.Long; sub: (subtrahend: string | number | Long.Long) => Long.Long; toInt: () => number; toNumber: () => number; toBytes: (le?: boolean | undefined) => number[]; toBytesLE: () => number[]; toBytesBE: () => number[]; toSigned: () => Long.Long; toString: (radix?: number | undefined) => string; toUnsigned: () => Long.Long; xor: (other: string | number | Long.Long) => Long.Long; } & { [K_3 in Exclude]: never; }) | undefined; revisionHeight?: string | number | (Long.Long & { high: number; low: number; unsigned: boolean; add: (addend: string | number | Long.Long) => Long.Long; and: (other: string | number | Long.Long) => Long.Long; compare: (other: string | number | Long.Long) => number; comp: (other: string | number | Long.Long) => number; divide: (divisor: string | number | Long.Long) => Long.Long; div: (divisor: string | number | Long.Long) => Long.Long; equals: (other: string | number | Long.Long) => boolean; eq: (other: string | number | Long.Long) => boolean; getHighBits: () => number; getHighBitsUnsigned: () => number; getLowBits: () => number; getLowBitsUnsigned: () => number; getNumBitsAbs: () => number; greaterThan: (other: string | number | Long.Long) => boolean; gt: (other: string | number | Long.Long) => boolean; greaterThanOrEqual: (other: string | number | Long.Long) => boolean; gte: (other: string | number | Long.Long) => boolean; isEven: () => boolean; isNegative: () => boolean; isOdd: () => boolean; isPositive: () => boolean; isZero: () => boolean; lessThan: (other: string | number | Long.Long) => boolean; lt: (other: string | number | Long.Long) => boolean; lessThanOrEqual: (other: string | number | Long.Long) => boolean; lte: (other: string | number | Long.Long) => boolean; modulo: (other: string | number | Long.Long) => Long.Long; mod: (other: string | number | Long.Long) => Long.Long; multiply: (multiplier: string | number | Long.Long) => Long.Long; mul: (multiplier: string | number | Long.Long) => Long.Long; negate: () => Long.Long; neg: () => Long.Long; not: () => Long.Long; notEquals: (other: string | number | Long.Long) => boolean; neq: (other: string | number | Long.Long) => boolean; or: (other: string | number | Long.Long) => Long.Long; shiftLeft: (numBits: number | Long.Long) => Long.Long; shl: (numBits: number | Long.Long) => Long.Long; shiftRight: (numBits: number | Long.Long) => Long.Long; shr: (numBits: number | Long.Long) => Long.Long; shiftRightUnsigned: (numBits: number | Long.Long) => Long.Long; shru: (numBits: number | Long.Long) => Long.Long; subtract: (subtrahend: string | number | Long.Long) => Long.Long; sub: (subtrahend: string | number | Long.Long) => Long.Long; toInt: () => number; toNumber: () => number; toBytes: (le?: boolean | undefined) => number[]; toBytesLE: () => number[]; toBytesBE: () => number[]; toSigned: () => Long.Long; toString: (radix?: number | undefined) => string; toUnsigned: () => Long.Long; xor: (other: string | number | Long.Long) => Long.Long; } & { [K_4 in Exclude]: never; }) | undefined; } & { [K_5 in Exclude]: never; }) | undefined; consensusState?: ({ typeUrl?: string | undefined; value?: Uint8Array | undefined; } & { typeUrl?: string | undefined; value?: Uint8Array | undefined; } & { [K_6 in Exclude]: never; }) | undefined; } & { [K_7 in Exclude]: never; })[] & { [K_8 in Exclude]: never; }) | undefined; } & { [K_9 in Exclude]: never; })[] & { [K_10 in Exclude]: never; }) | undefined; clientsMetadata?: ({ clientId?: string | undefined; clientMetadata?: { key?: Uint8Array | undefined; value?: Uint8Array | undefined; }[] | undefined; }[] & ({ clientId?: string | undefined; clientMetadata?: { key?: Uint8Array | undefined; value?: Uint8Array | undefined; }[] | undefined; } & { clientId?: string | undefined; clientMetadata?: ({ key?: Uint8Array | undefined; value?: Uint8Array | undefined; }[] & ({ key?: Uint8Array | undefined; value?: Uint8Array | undefined; } & { key?: Uint8Array | undefined; value?: Uint8Array | undefined; } & { [K_11 in Exclude]: never; })[] & { [K_12 in Exclude]: never; }) | undefined; } & { [K_13 in Exclude]: never; })[] & { [K_14 in Exclude]: never; }) | undefined; params?: ({ allowedClients?: string[] | undefined; } & { allowedClients?: (string[] & string[] & { [K_15 in Exclude]: never; }) | undefined; } & { [K_16 in Exclude]: never; }) | undefined; createLocalhost?: boolean | undefined; nextClientSequence?: string | number | (Long.Long & { high: number; low: number; unsigned: boolean; add: (addend: string | number | Long.Long) => Long.Long; and: (other: string | number | Long.Long) => Long.Long; compare: (other: string | number | Long.Long) => number; comp: (other: string | number | Long.Long) => number; divide: (divisor: string | number | Long.Long) => Long.Long; div: (divisor: string | number | Long.Long) => Long.Long; equals: (other: string | number | Long.Long) => boolean; eq: (other: string | number | Long.Long) => boolean; getHighBits: () => number; getHighBitsUnsigned: () => number; getLowBits: () => number; getLowBitsUnsigned: () => number; getNumBitsAbs: () => number; greaterThan: (other: string | number | Long.Long) => boolean; gt: (other: string | number | Long.Long) => boolean; greaterThanOrEqual: (other: string | number | Long.Long) => boolean; gte: (other: string | number | Long.Long) => boolean; isEven: () => boolean; isNegative: () => boolean; isOdd: () => boolean; isPositive: () => boolean; isZero: () => boolean; lessThan: (other: string | number | Long.Long) => boolean; lt: (other: string | number | Long.Long) => boolean; lessThanOrEqual: (other: string | number | Long.Long) => boolean; lte: (other: string | number | Long.Long) => boolean; modulo: (other: string | number | Long.Long) => Long.Long; mod: (other: string | number | Long.Long) => Long.Long; multiply: (multiplier: string | number | Long.Long) => Long.Long; mul: (multiplier: string | number | Long.Long) => Long.Long; negate: () => Long.Long; neg: () => Long.Long; not: () => Long.Long; notEquals: (other: string | number | Long.Long) => boolean; neq: (other: string | number | Long.Long) => boolean; or: (other: string | number | Long.Long) => Long.Long; shiftLeft: (numBits: number | Long.Long) => Long.Long; shl: (numBits: number | Long.Long) => Long.Long; shiftRight: (numBits: number | Long.Long) => Long.Long; shr: (numBits: number | Long.Long) => Long.Long; shiftRightUnsigned: (numBits: number | Long.Long) => Long.Long; shru: (numBits: number | Long.Long) => Long.Long; subtract: (subtrahend: string | number | Long.Long) => Long.Long; sub: (subtrahend: string | number | Long.Long) => Long.Long; toInt: () => number; toNumber: () => number; toBytes: (le?: boolean | undefined) => number[]; toBytesLE: () => number[]; toBytesBE: () => number[]; toSigned: () => Long.Long; toString: (radix?: number | undefined) => string; toUnsigned: () => Long.Long; xor: (other: string | number | Long.Long) => Long.Long; } & { [K_17 in Exclude]: never; }) | undefined; } & { [K_18 in Exclude]: never; }>(base?: I | undefined): GenesisState; fromPartial]: never; }) | undefined; } & { [K_20 in Exclude]: never; })[] & { [K_21 in Exclude]: never; }) | undefined; clientsConsensus?: ({ clientId?: string | undefined; consensusStates?: { height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; }[] | undefined; }[] & ({ clientId?: string | undefined; consensusStates?: { height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; }[] | undefined; } & { clientId?: string | undefined; consensusStates?: ({ height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; }[] & ({ height?: { revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } | undefined; consensusState?: { typeUrl?: string | undefined; value?: Uint8Array | undefined; } | undefined; } & { height?: ({ revisionNumber?: string | number | Long.Long | undefined; revisionHeight?: string | number | Long.Long | undefined; } & { revisionNumber?: string | number | (Long.Long & { high: number; low: number; unsigned: boolean; add: (addend: string | number | Long.Long) => Long.Long; and: (other: string | number | Long.Long) => Long.Long; compare: (other: string | number | Long.Long) => number; comp: (other: string | number | Long.Long) => number; divide: (divisor: string | number | Long.Long) => Long.Long; div: (divisor: string | number | Long.Long) => Long.Long; equals: (other: string | number | Long.Long) => boolean; eq: (other: string | number | Long.Long) => boolean; getHighBits: () => number; getHighBitsUnsigned: () => number; getLowBits: () => number; getLowBitsUnsigned: () => number; getNumBitsAbs: () => number; greaterThan: (other: string | number | Long.Long) => boolean; gt: (other: string | number | Long.Long) => boolean; greaterThanOrEqual: (other: string | number | Long.Long) => boolean; gte: (other: string | number | Long.Long) => boolean; isEven: () => boolean; isNegative: () => boolean; isOdd: () => boolean; isPositive: () => boolean; isZero: () => boolean; lessThan: (other: string | number | Long.Long) => boolean; lt: (other: string | number | Long.Long) => boolean; lessThanOrEqual: (other: string | number | Long.Long) => boolean; lte: (other: string | number | Long.Long) => boolean; modulo: (other: string | number | Long.Long) => Long.Long; mod: (other: string | number | Long.Long) => Long.Long; multiply: (multiplier: string | number | Long.Long) => Long.Long; mul: (multiplier: string | number | Long.Long) => Long.Long; negate: () => Long.Long; neg: () => Long.Long; not: () => Long.Long; notEquals: (other: string | number | Long.Long) => boolean; neq: (other: string | number | Long.Long) => boolean; or: (other: string | number | Long.Long) => Long.Long; shiftLeft: (numBits: number | Long.Long) => Long.Long; shl: (numBits: number | Long.Long) => Long.Long; shiftRight: (numBits: number | Long.Long) => Long.Long; shr: (numBits: number | Long.Long) => Long.Long; shiftRightUnsigned: (numBits: number | Long.Long) => Long.Long; shru: (numBits: number | Long.Long) => Long.Long; subtract: (subtrahend: string | number | Long.Long) => Long.Long; sub: (subtrahend: string | number | Long.Long) => Long.Long; toInt: () => number; toNumber: () => number; toBytes: (le?: boolean | undefined) => number[]; toBytesLE: () => number[]; toBytesBE: () => number[]; toSigned: () => Long.Long; toString: (radix?: number | undefined) => string; toUnsigned: () => Long.Long; xor: (other: string | number | Long.Long) => Long.Long; } & { [K_22 in Exclude]: never; }) | undefined; revisionHeight?: string | number | (Long.Long & { high: number; low: number; unsigned: boolean; add: (addend: string | number | Long.Long) => Long.Long; and: (other: string | number | Long.Long) => Long.Long; compare: (other: string | number | Long.Long) => number; comp: (other: string | number | Long.Long) => number; divide: (divisor: string | number | Long.Long) => Long.Long; div: (divisor: string | number | Long.Long) => Long.Long; equals: (other: string | number | Long.Long) => boolean; eq: (other: string | number | Long.Long) => boolean; getHighBits: () => number; getHighBitsUnsigned: () => number; getLowBits: () => number; getLowBitsUnsigned: () => number; getNumBitsAbs: () => number; greaterThan: (other: string | number | Long.Long) => boolean; gt: (other: string | number | Long.Long) => boolean; greaterThanOrEqual: (other: string | number | Long.Long) => boolean; gte: (other: string | number | Long.Long) => boolean; isEven: () => boolean; isNegative: () => boolean; isOdd: () => boolean; isPositive: () => boolean; isZero: () => boolean; lessThan: (other: string | number | Long.Long) => boolean; lt: (other: string | number | Long.Long) => boolean; lessThanOrEqual: (other: string | number | Long.Long) => boolean; lte: (other: string | number | Long.Long) => boolean; modulo: (other: string | number | Long.Long) => Long.Long; mod: (other: string | number | Long.Long) => Long.Long; multiply: (multiplier: string | number | Long.Long) => Long.Long; mul: (multiplier: string | number | Long.Long) => Long.Long; negate: () => Long.Long; neg: () => Long.Long; not: () => Long.Long; notEquals: (other: string | number | Long.Long) => boolean; neq: (other: string | number | Long.Long) => boolean; or: (other: string | number | Long.Long) => Long.Long; shiftLeft: (numBits: number | Long.Long) => Long.Long; shl: (numBits: number | Long.Long) => Long.Long; shiftRight: (numBits: number | Long.Long) => Long.Long; shr: (numBits: number | Long.Long) => Long.Long; shiftRightUnsigned: (numBits: number | Long.Long) => Long.Long; shru: (numBits: number | Long.Long) => Long.Long; subtract: (subtrahend: string | number | Long.Long) => Long.Long; sub: (subtrahend: string | number | Long.Long) => Long.Long; toInt: () => number; toNumber: () => number; toBytes: (le?: boolean | undefined) => number[]; toBytesLE: () => number[]; toBytesBE: () => number[]; toSigned: () => Long.Long; toString: (radix?: number | undefined) => string; toUnsigned: () => Long.Long; xor: (other: string | number | Long.Long) => Long.Long; } & { [K_23 in Exclude]: never; }) | undefined; } & { [K_24 in Exclude]: never; }) | undefined; consensusState?: ({ typeUrl?: string | undefined; value?: Uint8Array | undefined; } & { typeUrl?: string | undefined; value?: Uint8Array | undefined; } & { [K_25 in Exclude]: never; }) | undefined; } & { [K_26 in Exclude]: never; })[] & { [K_27 in Exclude]: never; }) | undefined; } & { [K_28 in Exclude]: never; })[] & { [K_29 in Exclude]: never; }) | undefined; clientsMetadata?: ({ clientId?: string | undefined; clientMetadata?: { key?: Uint8Array | undefined; value?: Uint8Array | undefined; }[] | undefined; }[] & ({ clientId?: string | undefined; clientMetadata?: { key?: Uint8Array | undefined; value?: Uint8Array | undefined; }[] | undefined; } & { clientId?: string | undefined; clientMetadata?: ({ key?: Uint8Array | undefined; value?: Uint8Array | undefined; }[] & ({ key?: Uint8Array | undefined; value?: Uint8Array | undefined; } & { key?: Uint8Array | undefined; value?: Uint8Array | undefined; } & { [K_30 in Exclude]: never; })[] & { [K_31 in Exclude]: never; }) | undefined; } & { [K_32 in Exclude]: never; })[] & { [K_33 in Exclude]: never; }) | undefined; params?: ({ allowedClients?: string[] | undefined; } & { allowedClients?: (string[] & string[] & { [K_34 in Exclude]: never; }) | undefined; } & { [K_35 in Exclude]: never; }) | undefined; createLocalhost?: boolean | undefined; nextClientSequence?: string | number | (Long.Long & { high: number; low: number; unsigned: boolean; add: (addend: string | number | Long.Long) => Long.Long; and: (other: string | number | Long.Long) => Long.Long; compare: (other: string | number | Long.Long) => number; comp: (other: string | number | Long.Long) => number; divide: (divisor: string | number | Long.Long) => Long.Long; div: (divisor: string | number | Long.Long) => Long.Long; equals: (other: string | number | Long.Long) => boolean; eq: (other: string | number | Long.Long) => boolean; getHighBits: () => number; getHighBitsUnsigned: () => number; getLowBits: () => number; getLowBitsUnsigned: () => number; getNumBitsAbs: () => number; greaterThan: (other: string | number | Long.Long) => boolean; gt: (other: string | number | Long.Long) => boolean; greaterThanOrEqual: (other: string | number | Long.Long) => boolean; gte: (other: string | number | Long.Long) => boolean; isEven: () => boolean; isNegative: () => boolean; isOdd: () => boolean; isPositive: () => boolean; isZero: () => boolean; lessThan: (other: string | number | Long.Long) => boolean; lt: (other: string | number | Long.Long) => boolean; lessThanOrEqual: (other: string | number | Long.Long) => boolean; lte: (other: string | number | Long.Long) => boolean; modulo: (other: string | number | Long.Long) => Long.Long; mod: (other: string | number | Long.Long) => Long.Long; multiply: (multiplier: string | number | Long.Long) => Long.Long; mul: (multiplier: string | number | Long.Long) => Long.Long; negate: () => Long.Long; neg: () => Long.Long; not: () => Long.Long; notEquals: (other: string | number | Long.Long) => boolean; neq: (other: string | number | Long.Long) => boolean; or: (other: string | number | Long.Long) => Long.Long; shiftLeft: (numBits: number | Long.Long) => Long.Long; shl: (numBits: number | Long.Long) => Long.Long; shiftRight: (numBits: number | Long.Long) => Long.Long; shr: (numBits: number | Long.Long) => Long.Long; shiftRightUnsigned: (numBits: number | Long.Long) => Long.Long; shru: (numBits: number | Long.Long) => Long.Long; subtract: (subtrahend: string | number | Long.Long) => Long.Long; sub: (subtrahend: string | number | Long.Long) => Long.Long; toInt: () => number; toNumber: () => number; toBytes: (le?: boolean | undefined) => number[]; toBytesLE: () => number[]; toBytesBE: () => number[]; toSigned: () => Long.Long; toString: (radix?: number | undefined) => string; toUnsigned: () => Long.Long; xor: (other: string | number | Long.Long) => Long.Long; } & { [K_36 in Exclude]: never; }) | undefined; } & { [K_37 in Exclude]: never; }>(object: I_1): GenesisState; }; export declare const GenesisMetadata: { encode(message: GenesisMetadata, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): GenesisMetadata; fromJSON(object: any): GenesisMetadata; toJSON(message: GenesisMetadata): unknown; create]: never; }>(base?: I | undefined): GenesisMetadata; fromPartial]: never; }>(object: I_1): GenesisMetadata; }; export declare const IdentifiedGenesisMetadata: { encode(message: IdentifiedGenesisMetadata, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): IdentifiedGenesisMetadata; fromJSON(object: any): IdentifiedGenesisMetadata; toJSON(message: IdentifiedGenesisMetadata): unknown; create]: never; })[] & { [K_1 in Exclude]: never; }) | undefined; } & { [K_2 in Exclude]: never; }>(base?: I | undefined): IdentifiedGenesisMetadata; fromPartial]: never; })[] & { [K_4 in Exclude]: never; }) | undefined; } & { [K_5 in Exclude]: never; }>(object: I_1): IdentifiedGenesisMetadata; }; declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export declare type DeepPartial = T extends Builtin ? T : T extends Long ? string | number | Long : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? { [K in keyof T]?: DeepPartial; } : Partial; declare type KeysOfUnion = T extends T ? keyof T : never; export declare type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact; } & { [K in Exclude>]: never; }; export {};