import type { EndpointDefinition, EndpointDefinitions, MutationDefinition, QueryDefinition } from '@reduxjs/toolkit/dist/query/endpointDefinitions';
import { BaseQueryFn } from '@reduxjs/toolkit/query';
import { UseMutation } from './useMutation';
import { UseQuery } from './useQuery';
import { UseQueryState } from './useQueryState';
import { UseQuerySubscription } from './useQuerySubscription';
export declare enum DefinitionType {
    query = "query",
    mutation = "mutation"
}
export declare function isQueryDefinition(e: EndpointDefinition<any, any, any, any>): e is QueryDefinition<any, any, any, any>;
export declare function isMutationDefinition(e: EndpointDefinition<any, any, any, any>): e is MutationDefinition<any, any, any, any>;
declare const vueHooksModuleName: unique symbol;
declare type QueryHooks<D extends QueryDefinition<any, any, any, any, any>> = {
    useQuery: UseQuery<D>;
    useQuerySubscription: UseQuerySubscription<D>;
    useQueryState: UseQueryState<D>;
};
declare type MutationHooks<D extends MutationDefinition<any, any, any, any, any>> = {
    useMutation: UseMutation<D>;
};
export declare type HooksWithUniqueNames<Definitions extends EndpointDefinitions> = keyof Definitions extends infer Keys ? Keys extends string ? Definitions[Keys] extends {
    type: DefinitionType.query;
} ? {
    [K in Keys as `use${Capitalize<K>}Query`]: UseQuery<Extract<Definitions[K], QueryDefinition<any, any, any, any>>>;
} : Definitions[Keys] extends {
    type: DefinitionType.mutation;
} ? {
    [K in Keys as `use${Capitalize<K>}Mutation`]: UseMutation<Extract<Definitions[K], MutationDefinition<any, any, any, any>>>;
} : never : never : never;
declare module '@reduxjs/toolkit/dist/query/apiTypes' {
    interface ApiModules<BaseQuery extends BaseQueryFn, Definitions extends EndpointDefinitions, ReducerPath extends string, TagTypes extends string> {
        [vueHooksModuleName]: {
            /**
             *  Endpoints based on the input endpoints provided to `createApi`, containing `select`, `hooks` and `action matchers`.
             */
            endpoints: {
                [K in keyof Definitions]: Definitions[K] extends QueryDefinition<any, any, any, any, any> ? QueryHooks<Definitions[K]> : Definitions[K] extends MutationDefinition<any, any, any, any, any> ? MutationHooks<Definitions[K]> : never;
            };
        } & HooksWithUniqueNames<Definitions>;
    }
}
export declare const createApi: import("@reduxjs/toolkit/dist/query").CreateApi<typeof import("@reduxjs/toolkit/dist/query/core/module").coreModuleName | typeof vueHooksModuleName>;
export {};
