/**
 * Base factory functions for creating mock data
 */
import type { MockDataFactory, MockListFactory, DataGeneratorOptions } from './types';
/**
 * Create a data factory function
 */
export declare function createDataFactory<T>(template: (overrides?: Partial<T>) => T, options?: DataGeneratorOptions): MockDataFactory<T>;
/**
 * Create a list factory function
 */
export declare function createListFactory<T>(itemFactory: MockDataFactory<T>, defaultCount?: number): MockListFactory<T>;
/**
 * Create a typed factory with TypeScript support
 */
export declare function createTypedFactory<T>(template: (overrides?: Partial<T>) => T): MockDataFactory<T>;
/**
 * Combine multiple factories into one
 */
export declare function combineFactories<T>(...factories: MockDataFactory<Partial<T>>[]): MockDataFactory<T>;
/**
 * Create a factory that extends another factory
 */
export declare function extendFactory<T, U extends T>(baseFactory: MockDataFactory<T>, extension: (base: T, overrides?: Partial<U>) => U): MockDataFactory<U>;
/**
 * Create a conditional factory
 */
export declare function conditionalFactory<T>(condition: () => boolean, trueFactory: MockDataFactory<T>, falseFactory: MockDataFactory<T>): MockDataFactory<T>;
/**
 * Create a weighted factory (randomly selects from multiple factories)
 */
export declare function weightedFactory<T>(factories: Array<{
    factory: MockDataFactory<T>;
    weight: number;
}>): MockDataFactory<T>;
/**
 * Create a sequence factory (cycles through values)
 */
export declare function sequenceFactory<T>(values: T[], startIndex?: number): () => T;
/**
 * Create a unique factory (ensures unique values)
 */
export declare function uniqueFactory<T>(factory: MockDataFactory<T>, keyExtractor?: (item: T) => string | number, maxAttempts?: number): MockDataFactory<T>;
/**
 * Create a cached factory (caches results)
 */
export declare function cachedFactory<T>(factory: MockDataFactory<T>, cacheSize?: number): MockDataFactory<T>;
/**
 * Create a factory with validation
 */
export declare function validatedFactory<T>(factory: MockDataFactory<T>, validator: (item: T) => boolean, maxAttempts?: number): MockDataFactory<T>;
/**
 * Create a factory that tracks generation statistics
 */
export declare function instrumentedFactory<T>(factory: MockDataFactory<T>, onGenerate?: (item: T, stats: {
    count: number;
    totalTime: number;
}) => void): MockDataFactory<T>;
/**
 * Get seeded random number (if seed was set)
 */
export declare function getRandom(): number;
/**
 * Reset random seed
 */
export declare function resetRandomSeed(): void;
//# sourceMappingURL=base.d.ts.map