import type { MonacoSDK, Network } from "@0xmonaco/types"; import type { ReactNode } from "react"; import type { WalletClient } from "viem"; import type { TokenLifecycleConfig, UseTokenLifecycleReturn } from "../hooks"; export declare enum AuthenticationStatus { /** User is not authenticated */ UNAUTHENTICATED = "unauthenticated", /** Authentication is in progress */ AUTHENTICATING = "authenticating", /** User is successfully authenticated */ AUTHENTICATED = "authenticated" } export interface MonacoContextValue { /** Monaco SDK instance */ sdk: MonacoSDK | null; /** Client ID for authentication */ clientId: string; /** Whether a wallet client is connected */ isWalletConnected: boolean; /** Any error that occurred (SDK initialization, authentication, etc.) */ error: Error | null; /** Current authentication status */ authenticationStatus: AuthenticationStatus; /** Token lifecycle manager */ tokenLifecycle: UseTokenLifecycleReturn; /** Function to update authentication status */ setAuthenticationStatus: (status: AuthenticationStatus) => void; /** Function to update error */ setError: (error: Error | null) => void; } export interface MonacoProviderProps { /** Child components */ children: ReactNode; /** Client ID for authentication */ clientId: string; /** * Network to use. Must be one of: "local", "development", "staging", "mainnet". */ network: Network; /** RPC URL for Sei blockchain interactions */ seiRpcUrl: string; /** * Optional wallet client for authenticated operations. * Can be obtained from wagmi, RainbowKit, ConnectKit, or any viem-compatible wallet provider. */ walletClient?: WalletClient; /** Token lifecycle configuration options */ tokenLifecycle?: TokenLifecycleConfig; }