import { BaseCloudflare, ClientOptions } from "./client.mjs"; import { APIResource } from "./core/resource.mjs"; export type PartialCloudflare = BaseCloudflare & T; type InferClientStructure = SimplifyResources>> extends infer O extends MaybeResource ? O : never; /** * Creates a client with a subset of the available resources to reduce * bundle size. * Import the resource classes you need from `cloudflare/resources/*`. * Use the BaseResource variants if you do not need to use subresources. * * @example * ```ts * import { Accounts } from `cloudflare/resources/accounts`; * import { createClient } from `cloudflare/tree-shakable`; * * const client = createClient({ * resources: [Accounts], * }); * ``` */ export declare function createClient(options: ClientOptions & { resources: T; }): PartialCloudflare>; /** * `FromDeepEntry<['a', 'b', 'c'], 'value'>` -> `{ a: { b: { c: 'value'; }; }; }` */ type FromDeepEntry = K['length'] extends 1 ? { [_ in K[0]]: V; } & {} : K extends readonly [infer First extends PropertyKey, ...infer Rest extends readonly PropertyKey[]] ? { [_ in First]: FromDeepEntry; } : never; /** * `ResourcePath<{ _key: ["a", "b", "c"]; new (): Instance }>` -> `{ a: { b: { c: Instance; }; }; }` */ type ResourcePath = T extends any ? FromDeepEntry> : never; /** * `UnionToIntersection<{ a: 1 } | { b: 2 }>` -> `{ a: 1 } & { b: 2 }` */ type UnionToIntersection = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never; /** * Makes the types look nicer: * `SimplifyResources<{ a: APIResource } & { b: { c: APIResource } & { d: APIResource } }>` -> `{ a: APIResource; b: { c: APIResource; d: APIResource; }; }` */ type SimplifyResources = T extends APIResource ? T : T extends object ? { [P in keyof T as string extends P ? never : P]: SimplifyResources; } : T; type MaybeResource = MaybeResource_ | APIResource; interface MaybeResource_ { [_: string]: MaybeResource; } export {}; //# sourceMappingURL=tree-shakable.d.mts.map