import type { AtlexFaker } from './atlexFaker.js'; interface ModelWithCreate { create(attributes: Record): Promise; } /** * Base class for model factories: bind a `static model`, implement {@link definition}, then {@link create} or {@link createMany}. * * @example * ```ts * export class UserFactory extends Factory { * public static model = User; * protected definition(): Record { * const f = this.faker(); * return { name: f.name(), email: f.unique().safeEmail() }; * } * } * await new UserFactory().create(); * await new UserFactory().createMany(10); * ``` */ export declare abstract class Factory { /** * The model class this factory persists (must expose `create(attributes)`). */ static model: ModelWithCreate | undefined; /** * Default attribute set for one record. */ protected abstract definition(): Record; /** * Faker for use inside {@link definition}. */ protected faker(): AtlexFaker; /** * Build attributes for one record without persisting. */ make(overrides?: Record): Record; /** * Build `count` attribute objects; each call runs {@link definition} again (fresh random values). */ makeMany(count: number, overrides?: Record): Record[]; /** * Persist one model using {@link Factory.model}. */ create(overrides?: Record): Promise; /** * Persist `count` models; each row uses a fresh {@link definition} (unless `overrides` fixes fields). */ createMany(count: number, overrides?: Record): Promise; } export {}; //# sourceMappingURL=Factory.d.ts.map