import { UseQueryResult } from '@tanstack/react-query'; /** Loose permission set accepted by Athena admin hasPermission. */ export type AthenaUiAdminPermissions = string[] | Record; export interface UseHasAdminAccessOptions { allowRoleBypass?: boolean; /** * When true, treat unresolved checks as loadable (`data !== false`). * Prefer false for product surfaces (deny until allowed). * Defaults to false. */ allowUntilDenied?: boolean; enabled?: boolean; fetchOptions?: Record; permission?: AthenaUiAdminPermissions; /** * Permission set checked via Athena admin bindings. * Defaults to `["admin:read"]`. */ permissions?: AthenaUiAdminPermissions; /** Extra query-key segments (gateway URL, client name, …). */ queryKey?: readonly unknown[]; requestOptions?: Record; staleTime?: number; } export interface UseHasAdminAccessResult { /** * Whether admin-gated surfaces may load. * Strict by default; with `allowUntilDenied`, stays true until a definitive false. */ canLoadAdminSurfaces: boolean; /** True only after a successful allowed check. */ hasAdminAccess: boolean; /** True while the permission query is loading. */ isCheckingAdmin: boolean; query: UseQueryResult; } /** * TanStack Query gate for Athena admin access in Auth UI surfaces. * * Backed by {@link checkAdminPermissions} / `@xylex-group/athena/admin`. * * @example * ```tsx * const { hasAdminAccess, isCheckingAdmin, canLoadAdminSurfaces } = * useHasAdminAccess(athenaClient, { permissions: ["admin:read"] }) * ``` */ export declare function useHasAdminAccess(client: unknown, options?: UseHasAdminAccessOptions): UseHasAdminAccessResult;