import type { Schema, Serializable, EntityInterface, NormalizedIndex } from './interface.js'; export * from './schemaArgs.js'; export type AbstractInstanceType = T extends new (...args: any) => infer U ? U : T extends { prototype: infer U; } ? U : never; export type NormalizedEntity = T extends ({ prototype: infer U; schema: infer S; }) ? { [K in Exclude]: U[K]; } & { [K in keyof S]: string; } : never; export type DenormalizeObject> = { [K in keyof S]: S[K] extends Schema ? Denormalize : S[K]; }; export type DenormalizeNullableObject> = { [K in keyof S]: S[K] extends Schema ? DenormalizeNullable : S[K]; }; export type NormalizeObject> = { [K in keyof S]: S[K] extends Schema ? Normalize : S[K]; }; export type NormalizedNullableObject> = { [K in keyof S]: S[K] extends Schema ? NormalizeNullable : S[K]; }; interface NestedSchemaClass { schema: Record; prototype: T; } export interface RecordClass extends NestedSchemaClass { fromJS: (...args: any) => AbstractInstanceType; } export type DenormalizeNullableNestedSchema = keyof S['schema'] extends never ? S['prototype'] : string extends keyof S['schema'] ? S['prototype'] : S['prototype']; export type NormalizeReturnType = T extends (...args: any) => infer R ? R : never; export type Denormalize = S extends { createIfValid: any; pk: any; key: string; prototype: infer U; } ? U : S extends RecordClass ? AbstractInstanceType : S extends { denormalize: (...args: any) => any; } ? ReturnType : S extends Serializable ? T : S extends Array ? Denormalize[] : S extends { [K: string]: any; } ? DenormalizeObject : S; export type DenormalizeNullable = S extends ({ createIfValid: any; pk: any; key: string; prototype: any; schema: any; }) ? DenormalizeNullableNestedSchema | undefined : S extends RecordClass ? DenormalizeNullableNestedSchema : S extends { _denormalizeNullable: (...args: any) => any; } ? ReturnType : S extends Serializable ? T : S extends Array ? Denormalize[] | undefined : S extends { [K: string]: any; } ? DenormalizeNullableObject : S; export type Normalize = S extends { createIfValid: any; pk: any; key: string; prototype: {}; } ? string : S extends RecordClass ? NormalizeObject : S extends { normalize: (...args: any) => any; } ? NormalizeReturnType : S extends Serializable ? T : S extends Array ? Normalize[] : S extends { [K: string]: any; } ? NormalizeObject : S; export type NormalizeNullable = S extends { createIfValid: any; pk: any; key: string; prototype: {}; } ? string | undefined : S extends RecordClass ? NormalizedNullableObject : S extends { _normalizeNullable: (...args: any) => any; } ? NormalizeReturnType : S extends Serializable ? T : S extends Array ? Normalize[] | undefined : S extends { [K: string]: any; } ? NormalizedNullableObject : S; export type NormalizedSchema | undefined>, R> = { entities: E; result: R; indexes: NormalizedIndex; entitiesMeta: EntitiesToMeta; }; export interface StoreData | undefined>> { entities: Readonly; indexes: Readonly; entitiesMeta: EntitiesToMeta; } export type EntitiesToMeta | undefined>> = { readonly [entityKey in keyof E]: { readonly [pk in keyof E[entityKey]]: NormalizeMeta; }; }; export interface NormalizeMeta { expiresAt: number; date: number; fetchedAt: number; } export type EntityMap = Record>; //# sourceMappingURL=types.d.ts.map