type ResponseKey = string | number | symbol; /** A bounded path through a normalized Yahoo response envelope. */ export type ResponsePath = readonly [ResponseKey] | readonly [ResponseKey, ResponseKey] | readonly [ResponseKey, ResponseKey, ResponseKey] | readonly [ResponseKey, ResponseKey, ResponseKey, ResponseKey] | readonly [ ResponseKey, ResponseKey, ResponseKey, ResponseKey, ResponseKey ] | readonly [ ResponseKey, ResponseKey, ResponseKey, ResponseKey, ResponseKey, ResponseKey ]; type RequireOnePath = TPath extends readonly [infer TKey extends ResponseKey, ...infer TRest] ? NonNullable extends readonly (infer TItem)[] ? NonNullable extends unknown[] ? Array> : ReadonlyArray> : TKey extends keyof NonNullable ? Omit, TKey> & { [TRequiredKey in TKey]-?: TRest extends ResponsePath ? RequireOnePath[TRequiredKey], TRest> : NonNullable[TRequiredKey]>; } : never : NonNullable; type UnionToIntersection = (TValue extends TValue ? (value: TValue) => void : never) extends (value: infer TIntersection) => void ? TIntersection : never; /** * Requires one or more known paths while retaining the complete root envelope. * A union of paths is expanded as an intersection, supporting multi-include calls. */ export type RequireResponsePath = UnionToIntersection : never>; export type AppendResponsePath = TPath extends TPath ? readonly [...TPath, TKey] extends ResponsePath ? readonly [...TPath, TKey] : never : never; export {}; //# sourceMappingURL=response-contract.d.ts.map