import type { FixedValue } from '../generators/fixed'; import type { FieldsGenerator } from '../generators/generate'; import { ResetSignal } from '../reset/ResetSignal'; export type FunctionalGenerator = () => T; export type FieldGenerator = FunctionalGenerator | Iterator; export type FieldType = T | FixedValue | FieldGenerator | FieldsConfiguration; export type FieldsConfiguration = { readonly [Key in keyof Origin]: FieldType; }; export type FieldsConfigurationFunction = (prevBuild?: Origin) => FieldsConfiguration; export type FieldsConfigurationGenerator = Generator, never | void, Origin | undefined>; export type FieldsConfigurationGeneratorFunction = (...initialParameters: InitialParameters) => FieldsConfigurationGenerator; export type BuilderConfigurationFields = FieldsConfiguration | FieldsConfigurationFunction | FieldsGenerator; export type BuilderConfiguration = { readonly fields: BuilderConfigurationFields; readonly traits?: TraitsConfiguration; readonly postBuild?: (x: Origin) => PostBuildResult; }; export type Overrides = { [Key in keyof Result]?: FieldType | Overrides; }; export type BuildTimeConfig = { overrides?: Overrides; postBuild?: (builtThing: StaticPostBuildResult) => PostBuildResult; traits?: TraitName | TraitName[]; initialParameters?: InitialParameters; }; export interface Builder { one(buildTimeConfig?: BuildTimeConfig): Result; many(count: number, buildTimeConfig?: BuildTimeConfig): Result[]; reset(): void; } export type IteratorsConfiguration = { [Key in keyof T]: IteratorsConfiguration | Iterator; }; export type FreezeKeys = { [Key in keyof T as Key]: T[Key]; }; export type TraitsConfiguration = { [key in TraitName]: { overrides?: Overrides>; }; }; export type Mutable = { -readonly [Key in keyof T]: T[Key]; }; //# sourceMappingURL=types.d.ts.map