import { QueryClient, QueryOptions, skipToken } from '@tanstack/query-core';
import { FullOrganizationParams } from './full-organization-query';
import { ListOrganization } from './list-organizations-query';
import { OrganizationAuthClient } from './organization-auth-client';
/**
 * Cached data returned by active organization queries.
 */
export type ActiveOrganizationData<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = ListOrganization<TAuthClient> | null;
/**
 * Parameters forwarded to the active organization query factory.
 */
export type ActiveOrganizationParams<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = FullOrganizationParams<TAuthClient>;
/**
 * Consumer options for active organization query helpers and hooks.
 */
export type ActiveOrganizationOptions<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = Omit<QueryOptions<ActiveOrganizationData<TAuthClient>>, "queryKey"> & ActiveOrganizationParams<TAuthClient>;
type ActiveOrganizationQuery<TAuthClient extends OrganizationAuthClient> = NonNullable<ActiveOrganizationParams<TAuthClient>> extends {
    query?: infer TQuery;
} ? TQuery : never;
/**
 * Resolve the active organization query from explicit options and plugin state.
 *
 * An explicit caller-provided organization ID or slug takes precedence over
 * plugin state. Otherwise, a plugin slug selects the route organization and a
 * `null` plugin slug selects no organization. An undefined plugin slug lets
 * Better Auth use the active organization stored on the session.
 *
 * @param query - Caller-provided organization query options.
 * @param organizationSlug - Organization slug from framework plugin state.
 */
export declare function resolveActiveOrganizationQuery<TAuthClient extends OrganizationAuthClient>(query: ActiveOrganizationQuery<TAuthClient> | undefined, organizationSlug?: string | null): ActiveOrganizationQuery<TAuthClient> | undefined;
/**
 * Query options factory for the current user's active organization.
 *
 * `organizationSlug: null` returns `null` without a network request, while a
 * missing user ID disables the query with `skipToken`.
 *
 * @param authClient - The Better Auth organization client.
 * @param userId - The current signed-in user's ID. Used for cache partitioning.
 * @param params - Parameters forwarded to `getFullOrganization`.
 */
export declare function activeOrganizationOptions<TAuthClient extends OrganizationAuthClient>(authClient: TAuthClient, userId?: string, params?: ActiveOrganizationParams<TAuthClient>): {
    queryKey: readonly ["auth", "user", string | undefined, "organization", "active", {
        organizationId?: string | undefined;
        organizationSlug?: string | undefined;
        membersLimit?: string | number | undefined;
    } | null];
    queryFn: typeof skipToken | (({ signal }: {
        signal: AbortSignal;
    }) => Promise<ActiveOrganizationData<TAuthClient>>);
};
/**
 * Get the active organization from cache, fetching if needed.
 */
export declare const ensureActiveOrganization: <TAuthClient extends OrganizationAuthClient>(queryClient: QueryClient, authClient: TAuthClient, userId: string, options?: ActiveOrganizationOptions<TAuthClient>) => Promise<ActiveOrganizationData<TAuthClient>>;
/**
 * Prefetch the active organization into the query cache.
 */
export declare const prefetchActiveOrganization: <TAuthClient extends OrganizationAuthClient>(queryClient: QueryClient, authClient: TAuthClient, userId: string, options?: ActiveOrganizationOptions<TAuthClient>) => Promise<void>;
/**
 * Fetch and cache the active organization, resolving with data or throwing.
 */
export declare const fetchActiveOrganization: <TAuthClient extends OrganizationAuthClient>(queryClient: QueryClient, authClient: TAuthClient, userId: string, options?: ActiveOrganizationOptions<TAuthClient>) => Promise<ActiveOrganizationData<TAuthClient>>;
/**
 * Read the active organization synchronously from the query cache.
 */
export declare const getActiveOrganization: <TAuthClient extends OrganizationAuthClient = OrganizationAuthClient>(queryClient: QueryClient, _authClient?: TAuthClient, userId?: string, params?: ActiveOrganizationParams<TAuthClient>) => ActiveOrganizationData<TAuthClient> | undefined;
export {};
