import type { DocumentByName, FieldTypeFromFieldPath, GenericDatabaseReader, GenericDataModel, TableNamesInDataModel } from "convex/server"; import type { GenericId } from "convex/values"; import type { Brand } from "effect"; export type IsOptional = {} extends Pick ? true : false; export type IsAny = 0 extends 1 & T ? true : false; export type IsUnion = T extends unknown ? [U] extends [T] ? false : true : never; export type IsValueLiteral = [Vl] extends [never] ? never : IsUnion extends true ? false : [Vl] extends [string | number | bigint | boolean] ? [string] extends [Vl] ? false : [number] extends [Vl] ? false : [boolean] extends [Vl] ? false : [bigint] extends [Vl] ? false : true : false; /** * Only checks for records with string keys. */ export type IsRecord = [T] extends [never] ? false : IsUnion extends true ? false : T extends Record ? string extends keyof T ? keyof T extends string ? T extends Record ? Record extends T ? true : false : false : false : false : false; export type DeepMutable = IsAny extends true ? any : T extends NonRecursiveLeaf ? T : T extends ReadonlyMap ? Map, DeepMutable> : T extends ReadonlySet ? Set> : [keyof T] extends [never] ? T : { -readonly [K in keyof T]: DeepMutable; }; export type TypeError = [Message, T]; export type TypeDefect = [Message, T]; export type IsRecursive = true extends DetectCycle ? true : false; type NonRecursiveLeaf = Brand.Brand | GenericId | ArrayBuffer; type DetectCycle = IsAny extends true ? false : [T] extends [any] ? T extends NonRecursiveLeaf ? false : T extends Cache[number] ? true : T extends Array ? DetectCycle : T extends Map ? DetectCycle : T extends Set ? DetectCycle : T extends object ? true extends { [K in keyof T]: DetectCycle; }[keyof T] ? true : false : false : never; export type UnionToTuple = _unionToTuple extends infer result ? conform : never; type _unionToTuple = getLastBranch extends infer current ? [t] extends [never] ? result : _unionToTuple, [current, ...result]> : never; type getLastBranch = intersectUnion void : never> extends (x: infer branch) => void ? branch : never; type intersectUnion = (t extends unknown ? (_: t) => void : never) extends (_: infer intersection) => void ? intersection : never; type conform = t extends base ? t : base; export type IndexFieldTypesForEq, T extends string[]> = T extends readonly [...infer Rest, any] ? Rest extends readonly string[] ? { [K in keyof Rest]: FieldTypeFromFieldPath, Rest[K]>; } : never : never; export type BaseDatabaseReader = { get: GenericDatabaseReader["get"]; query: GenericDatabaseReader["query"]; }; export {}; //# sourceMappingURL=Types.d.ts.map