export type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; } : T; export type DeepRequired = T extends object ? { [P in keyof T]-?: DeepRequired; } : T; export type DeepReadonly = T extends object ? { readonly [P in keyof T]: DeepReadonly; } : T; export type ArrayElement = ArrayType extends readonly (infer ElementType)[] ? ElementType : never; export type RequireKeys = T & Required>; export type PartialKeys = Omit & Partial>; export type NonNullableFields = { [P in keyof T]: NonNullable; }; export interface TypeGuard { (value: unknown): value is T; } export type PromiseValue = T extends Promise ? U : T; export type AsyncReturnType Promise> = T extends (...args: any[]) => Promise ? R : never; export type ArgumentTypes = F extends (...args: infer A) => any ? A : never; export type ReturnType = F extends (...args: any[]) => infer R ? R : never; export type Mutable = { -readonly [P in keyof T]: T[P]; }; export type ValueOf = T[keyof T]; export type Split = string extends S ? string[] : S extends '' ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split] : [ S ]; export type Join = T extends [] ? '' : T extends [string] ? T[0] : T extends [string, ...infer U] ? U extends string[] ? `${T[0]}${D}${Join}` : never : never; export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; export type Brand = K & { __brand: T; }; export type UUID = Brand; export type Email = Brand; export type URL = Brand; export type Timestamp = Brand; export type Result = { success: true; data: T; } | { success: false; error: E; }; export type Maybe = T | null | undefined; export type Some = NonNullable; export type Head = T extends readonly [infer H, ...any[]] ? H : never; export type Tail = T extends readonly [any, ...infer R] ? R : []; export type Length = T['length']; export type ValidateShape = T extends Shape ? T : never; export interface ApiResponse { data?: T; error?: ApiError; meta?: ResponseMeta; } export interface ApiError { code: string; message: string; details?: unknown; } export interface ResponseMeta { timestamp: number; version: string; requestId: string; } //# sourceMappingURL=utilities.d.ts.map