import type { ComponentChildren, JSX } from "preact"; export type Auth = { userId: string; displayName: string; provider: "guest" | "google"; isGuest: boolean; isAuthenticated: boolean; isLoading?: boolean; email?: string; emailVerified?: boolean; picture?: string; }; export type Identity = { userId: string | null; token?: string; }; export type IdentityClaims = { iss?: string; aud?: string; sub?: string; iat?: number; exp?: number; jti?: string; pairwise_sub?: string; email?: string; email_verified?: boolean; name?: string; picture?: string; }; export type SignInWithGoogleOptions = { callbackPath?: string; clientId?: string; redirectUri?: string; returnTo?: string; shooBaseUrl?: string; }; export type SignInWithGoogleResult = { url: string; bundle: { state: string; verifier: string; challenge: string; }; }; export type SignInWithGoogleProps = Omit, "children"> & SignInWithGoogleOptions & { children?: ComponentChildren; }; export type LakebedLocation = { pathname: string; search: string; hash: string; href: string; }; export type NavigateOptions = { replace?: boolean; }; export type RouterProps = { children?: ComponentChildren; }; export type RoutesProps = { children?: ComponentChildren; }; export type RouteProps = { path: string; element: ComponentChildren; }; export type LinkProps = Omit, "href"> & { to: string; replace?: boolean; children?: ComponentChildren; }; export function useAuth(): Auth; export function signInWithGoogle(options?: SignInWithGoogleOptions): Promise; export function signOut(): void; export function getIdentity(): Identity; export function decodeIdentityClaims(idToken?: string): IdentityClaims | null; export function SignInWithGoogle(props?: SignInWithGoogleProps): JSX.Element; export function Router(props?: RouterProps): JSX.Element; export function Routes(props?: RoutesProps): JSX.Element | null; export function Route(props: RouteProps): JSX.Element | null; export function Link(props: LinkProps): JSX.Element; export function navigate(to: string, options?: NavigateOptions): void; export function useLocation(): LakebedLocation; export function useNavigate(): (to: string, options?: NavigateOptions) => void; export function useParams>(): TParams; export function useQuery(name: string): T; export function useMutation(name: string): (...args: TArgs) => Promise;