import { type CacheConfig } from "../shared/cache-config";
import type { MutationOptions, SuspenseQueryOptions } from "../shared/hook-types";
import { type QueryKey, type QueryNamespace } from "../shared/query-keys";
import type { AuthQueryInput, AuthQueryKeys, AuthService, UseAuthResult, UseSuspenseAuthResult } from "./types";
export type CreateAuthHooksConfig<TCustomer, TLoginInput, TRegisterInput, TUpdateInput, TCreateCustomerInput = unknown, TLoginResult = unknown, TRegisterResult = unknown, TRequestAccountDeactivationResult = unknown, TConfirmAccountDeactivationInput = unknown, TConfirmAccountDeactivationResult = unknown> = {
    service: AuthService<TCustomer, TLoginInput, TRegisterInput, TUpdateInput, TCreateCustomerInput, TLoginResult, TRegisterResult, TRequestAccountDeactivationResult, TConfirmAccountDeactivationInput, TConfirmAccountDeactivationResult>;
    queryKeys?: AuthQueryKeys;
    queryKeyNamespace?: QueryNamespace;
    cacheConfig?: CacheConfig;
    invalidateOnAuthChange?: {
        /**
         * Include default cross-domain keys (`customer`, `orders`).
         * Enabled by default.
         */
        includeDefaults?: boolean;
        /** Additional key prefixes to invalidate on auth changes. */
        invalidate?: readonly QueryKey[];
        /** Additional key prefixes to remove when logging out. */
        removeOnLogout?: readonly QueryKey[];
    };
};
export type AuthMutationOptions<TData, TVariables, TContext = unknown> = MutationOptions<TData, TVariables, TContext>;
export declare function createAuthHooks<TCustomer, TLoginInput, TRegisterInput, TUpdateInput, TCreateCustomerInput = unknown, TLoginResult = unknown, TRegisterResult = unknown, TRequestAccountDeactivationResult = unknown, TConfirmAccountDeactivationInput = unknown, TConfirmAccountDeactivationResult = unknown>({ service, queryKeys, queryKeyNamespace, cacheConfig, invalidateOnAuthChange, }: CreateAuthHooksConfig<TCustomer, TLoginInput, TRegisterInput, TUpdateInput, TCreateCustomerInput, TLoginResult, TRegisterResult, TRequestAccountDeactivationResult, TConfirmAccountDeactivationInput, TConfirmAccountDeactivationResult>): {
    useAuth: (options?: AuthQueryInput<TCustomer>) => UseAuthResult<TCustomer>;
    useSuspenseAuth: (options?: {
        queryOptions?: SuspenseQueryOptions<TCustomer | null>;
    }) => UseSuspenseAuthResult<TCustomer>;
    useLogin: <TContext = unknown>(options?: AuthMutationOptions<TLoginResult, TLoginInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TLoginResult, unknown, TLoginInput, TContext>;
    useRegister: <TContext = unknown>(options?: AuthMutationOptions<TRegisterResult, TRegisterInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TRegisterResult, unknown, TRegisterInput, TContext>;
    useCreateCustomer: <TContext = unknown>(options?: AuthMutationOptions<TCustomer, TCreateCustomerInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TCustomer, unknown, TCreateCustomerInput, TContext>;
    useRequestAccountDeactivation: <TContext = unknown>(options?: AuthMutationOptions<TRequestAccountDeactivationResult, void, TContext>) => import("@tanstack/react-query").UseMutationResult<TRequestAccountDeactivationResult, unknown, void, TContext>;
    useConfirmAccountDeactivation: <TContext = unknown>(options?: AuthMutationOptions<TConfirmAccountDeactivationResult, TConfirmAccountDeactivationInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TConfirmAccountDeactivationResult, unknown, TConfirmAccountDeactivationInput, TContext>;
    useLogout: <TContext = unknown>(options?: AuthMutationOptions<void, void, TContext>) => import("@tanstack/react-query").UseMutationResult<void, unknown, void, TContext>;
    useUpdateCustomer: <TContext = unknown>(options?: AuthMutationOptions<TCustomer, TUpdateInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TCustomer, unknown, TUpdateInput, TContext>;
    useRefreshAuth: <TContext = unknown>(options?: AuthMutationOptions<unknown, void, TContext>) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, void, TContext>;
};
export type AuthHooks<TCustomer, TLoginInput, TRegisterInput, TUpdateInput, TCreateCustomerInput = unknown, TLoginResult = unknown, TRegisterResult = unknown, TRequestAccountDeactivationResult = unknown, TConfirmAccountDeactivationInput = unknown, TConfirmAccountDeactivationResult = unknown> = ReturnType<typeof createAuthHooks<TCustomer, TLoginInput, TRegisterInput, TUpdateInput, TCreateCustomerInput, TLoginResult, TRegisterResult, TRequestAccountDeactivationResult, TConfirmAccountDeactivationInput, TConfirmAccountDeactivationResult>>;
//# sourceMappingURL=hooks.d.ts.map