import type { TypedDocumentNode } from '@graphql-typed-document-node/core';
import type { Faker } from '@faker-js/faker';
type JSONPrimitive = string | number | boolean | null;
type JSONArray = JSONValue[];
type JSONObject = {
    [key in string]: JSONValue | undefined;
};
type JSONValue = JSONPrimitive | JSONArray | JSONObject;
type DeepPartial<T> = T extends any[] ? DeepPartialArray<T[number]> : T extends object ? DeepPartialObject<T> : T;
type DeepPartialArray<T> = Array<DeepPartial<T>>;
type DeepPartialObject<T> = {
    [P in keyof T]?: DeepPartial<T[P]>;
};
type FieldGenerators = {
    [className: string]: {
        [key: string]: (faker: Faker, potentialValue?: any) => JSONValue;
    };
};
type TypeGenerators = {
    [key: string]: (faker: Faker, potentialValue?: any) => JSONValue;
};
interface MockerOptions {
    schema: string;
    faker?: Faker;
    typeGenerators?: TypeGenerators;
    fieldGenerators?: FieldGenerators;
}
type QueryOrMutationWrapped<T> = {
    __meta__: {
        $DEBUG: {
            ast: TypedDocumentNode<T>;
        };
    };
};
export declare class Mocker {
    private faker;
    private fieldGenerators;
    private typeGenerators;
    private schema;
    constructor({ schema, faker, typeGenerators, fieldGenerators, }: MockerOptions);
    mock<Document extends JSONObject = JSONObject>(documentNode: TypedDocumentNode<Document> | QueryOrMutationWrapped<Document>, mockData: DeepPartial<Document>): Document;
    private generateMockDataForUnionFields;
    private generateMockDataForFields;
    private generateMockDataForEnum;
    private generateMockDataForType;
}
export {};
//# sourceMappingURL=index.d.ts.map