import { PrismaUnifiedBuilder } from './core/prisma/prisma-unified-builder';
import { PrismaQueryBuilder } from './core/prisma/prisma-query-builder';
import { PrismaMutationBuilder } from './core/prisma/prisma-mutation-builder';
import { GraphQLUnifiedBuilder } from './core/graphql/graphql-unified-builder';
import { GraphQLQueryBuilder } from './core/graphql/graphql-query-builder';
import { GraphQLMutationBuilder } from './core/graphql/graphql-mutation-builder';
import { IGenQLClient } from './collections/graphql/graphql-queryable';
import { TypedGraphQLRepository, GraphQLRepositoryConfig } from './core/graphql/graphql-repository';
import { GraphQLRepository as UniversalGraphQLRepository } from './core/graphql/graphql-repository-universal';
export declare class PrismaCoreService {
    private _prismaClient;
    private _graphqlClient;
    constructor();
    get isInitialized(): boolean;
    get isGraphQLInitialized(): boolean;
    initialize(prismaClient: any): void;
    initializeGraphQL(graphqlClient: IGenQLClient): void;
    get client(): any;
    get graphqlClient(): IGenQLClient;
    model<TModel = any>(modelName: string): PrismaUnifiedBuilder<TModel>;
    QueryBuilder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any>(modelName: string): PrismaQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput>;
    MutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>(modelName: string): PrismaMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>;
    Builder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any, TCreateInput = any, TUpdateInput = any, TWhereUniqueInput = any>(modelName: string): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
    Query<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any>(modelName: string): PrismaQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput>;
    Mutate<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>(modelName: string): PrismaMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>;
    GraphQLQueryBuilder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any>(operationName: string): GraphQLQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput>;
    GraphQLMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>(operationNames: {
        create: string;
        createMany?: string;
        update: string;
        updateMany?: string;
        upsert?: string;
        delete: string;
        deleteMany?: string;
    }): GraphQLMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>;
    GraphQLBuilder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any, TCreateInput = any, TUpdateInput = any, TWhereUniqueInput = any>(queryOperationName: string, mutationOperationNames: {
        create: string;
        createMany?: string;
        update: string;
        updateMany?: string;
        upsert?: string;
        delete: string;
        deleteMany?: string;
    }): GraphQLUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
    GraphQLSubscriptionBuilder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any>(operationName: string): GraphQLQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput>;
    GraphQLQuery<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any>(operationName: string): GraphQLQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput>;
    GraphQLMutate<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>(operationNames: {
        create: string;
        createMany?: string;
        update: string;
        updateMany?: string;
        upsert?: string;
        delete: string;
        deleteMany?: string;
    }): GraphQLMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>;
    GraphQLRepository<T extends TypedGraphQLRepository<any>>(repositoryClass: new (client: IGenQLClient, config: GraphQLRepositoryConfig) => T, config: GraphQLRepositoryConfig): T;
    GraphQLCrudRepository<T extends TypedGraphQLRepository<any>>(repositoryClass: new (client: IGenQLClient, config: GraphQLRepositoryConfig) => T, modelName: string, options?: {
        queryOperationName?: string;
        pluralName?: string;
        subscriptions?: string[];
    }): T;
    get graphqlRepository(): UniversalGraphQLRepository;
    static createWithClient(prismaClient: any): PrismaCoreService;
    static createWithGraphQLClient(graphqlClient: IGenQLClient): PrismaCoreService;
    static createWithBothClients(prismaClient: any, graphqlClient: IGenQLClient): PrismaCoreService;
}
