/**
 * ORM Client - createClient factory
 * @generated by @constructive-io/graphql-codegen
 * DO NOT EDIT - changes will be overwritten
 */
import { OrmClient } from './client';
import { EmailModel } from './models/email';
import { PhoneNumberModel } from './models/phoneNumber';
import { CryptoAddressModel } from './models/cryptoAddress';
import { WebauthnCredentialModel } from './models/webauthnCredential';
import { AuditLogModel } from './models/auditLog';
import { IdentityProviderModel } from './models/identityProvider';
import { RoleTypeModel } from './models/roleType';
import { UserConnectedAccountModel } from './models/userConnectedAccount';
import { UserModel } from './models/user';
import { createQueryOperations } from './query';
import { createMutationOperations } from './mutation';
export { GraphQLRequestError } from './client';
export { QueryBuilder } from './query-builder';
export * from './select-types';
export * from './models';
export { createQueryOperations } from './query';
export { createMutationOperations } from './mutation';
/**
 * Create an ORM client instance
 *
 * @example
 * ```typescript
 * const db = createClient({
 *   endpoint: 'https://api.example.com/graphql',
 *   headers: { Authorization: 'Bearer token' },
 * });
 *
 * // Query users
 * const users = await db.user.findMany({
 *   select: { id: true, name: true },
 *   first: 10,
 * }).execute();
 *
 * // Create a user
 * const newUser = await db.user.create({
 *   data: { name: 'John', email: 'john@example.com' },
 *   select: { id: true },
 * }).execute();
 * ```
 */
export function createClient(config) {
    const client = new OrmClient(config);
    return {
        email: new EmailModel(client),
        phoneNumber: new PhoneNumberModel(client),
        cryptoAddress: new CryptoAddressModel(client),
        webauthnCredential: new WebauthnCredentialModel(client),
        auditLog: new AuditLogModel(client),
        identityProvider: new IdentityProviderModel(client),
        roleType: new RoleTypeModel(client),
        userConnectedAccount: new UserConnectedAccountModel(client),
        user: new UserModel(client),
        query: createQueryOperations(client),
        mutation: createMutationOperations(client),
    };
}
