{"version":3,"sources":["../src/core/client/client.ts","../src/core/client/types.ts","../src/core/chains/chain.ts","../src/core/chains/chain-definitions/lisk.ts","../src/core/chains/chain-definitions/lisk-sepolia.ts","../src/core/wallet/wallet.ts","../src/core/wallet/types.ts","../src/core/utils/utils.ts","../src/ui/components/panna-provider.tsx","../src/ui/components/login-button.tsx","../src/ui/hooks/use-panna.ts","../src/ui/theme.ts","../src/ui/consts/index.ts","../src/ui/utils/utils.ts","../src/ui/hooks/index.ts"],"sourcesContent":["import {\n  createThirdwebClient,\n  type ThirdwebClient,\n  type CreateThirdwebClientOptions\n} from 'thirdweb';\n\nexport type CreatePannaClientOptions = CreateThirdwebClientOptions;\nexport type PannaClient = ThirdwebClient;\n\n/**\n * Creates a Panna client using the provided client ID (client-side) or secret key (server-side).\n *\n * @param options - Configuration options for the Panna client\n * @returns The created Panna client.\n *\n * @example\n * ```typescript\n * // Client-side usage\n * const client = createPannaClient({ clientId: \"your-client-id\" });\n *\n * // Server-side usage\n * const client = createPannaClient({ secretKey: \"your-secret-key\" });\n * ```\n */\nexport function createPannaClient(\n  options: CreatePannaClientOptions\n): PannaClient {\n  return createThirdwebClient(options);\n}\n","// Enum for allowed ecosystem IDs\nexport enum EcosystemId {\n  LISK = 'ecosystem.lisk'\n}\n\n// Base ecosystem configuration\nexport interface EcosystemConfig {\n  id: EcosystemId;\n  partnerId: string;\n}\n","import { defineChain, getChainMetadata } from 'thirdweb/chains';\nimport { Chain, ChainMetadata, ChainOptions } from './types';\n\n/**\n * Defines a chain with the given options.\n * @param chainOptions The options for the chain.\n * @returns The defined chain.\n * @example\n * Just pass the chain ID to connect to:\n * ```ts\n * const chain = describeChain(1);\n * ```\n * Or pass your own RPC or custom values:\n * ```ts\n * const chain = describeChain({\n *  id: 1,\n *  rpc: \"https://my-rpc.com\",\n *  nativeCurrency: {\n *    name: \"Ether\",\n *    symbol: \"ETH\",\n *    decimals: 18,\n *  },\n * });\n * ```\n * @chain\n */\n\nexport function describeChain(chainOptions: ChainOptions | number): Chain {\n  return defineChain(chainOptions);\n}\n\n/**\n * Retrieves the RPC URL for the specified chain.\n * If a custom RPC URL is defined in the options, it will be used.\n * Otherwise, a thirdweb RPC URL will be constructed using the chain ID and client ID.\n * @param options - The options object containing the chain and client information.\n * @returns The RPC URL for the specified chain.\n * @example\n * ```ts\n * import { getRpcUrlForChain } from \"thirdweb/chains\";\n * const rpcUrl = getRpcUrlForChain({\n *          id: 1,\n *          rpc: \"https://my-rpc.com\",\n *          nativeCurrency: {\n *          name: \"Ether\",\n *          symbol: \"ETH\",\n *          decimals: 18,\n *      },\n * });\n * console.log(rpcUrl); // \"https://1.rpc.thirdweb.com/...\n * ```\n * @chain\n */\nexport function getRpcUrlForChain(chain: Chain): string {\n  return chain.rpc;\n}\n\n/**\n * Retrieves chain data for a given chain.\n * @param chain - The chain object containing the chain ID.\n * @returns A Promise that resolves to the chain data.\n * @throws If there is an error fetching the chain data.\n * @example\n * ```ts\n * const chainData = await getChainInfo(chain);\n * console.log(chainData);\n * ```\n * @chain\n */\nexport async function getChainInfo(chain: Chain): Promise<ChainMetadata> {\n  return getChainMetadata(chain);\n}\n","import { describeChain } from '../chain';\n\n/**\n * @chain\n */\nexport const lisk = describeChain({\n  id: 1135,\n  name: 'Lisk',\n  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n  rpc: 'https://rpc.api.lisk.com',\n  blockExplorers: [\n    {\n      name: 'Lisk BlockScout',\n      url: 'https://blockscout.lisk.com/'\n    }\n  ]\n});\n","import { describeChain } from '../chain';\n\n/**\n * @chain\n */\nexport const liskSepolia = describeChain({\n  id: 4202,\n  name: 'Lisk Sepolia Testnet',\n  nativeCurrency: { name: 'Lisk Sepolia Ether', symbol: 'ETH', decimals: 18 },\n  rpc: 'https://rpc.sepolia-api.lisk.com',\n  blockExplorers: [\n    {\n      name: 'Lisk Sepolia BlockScout',\n      url: 'https://sepolia-blockscout.lisk.com/'\n    }\n  ]\n});\n","import {\n  authenticate,\n  authenticateWithRedirect,\n  ecosystemWallet,\n  getProfiles,\n  getUserEmail,\n  getUserPhoneNumber,\n  linkProfile,\n  preAuthenticate,\n  unlinkProfile\n} from 'thirdweb/wallets';\nimport { EcosystemId, type PannaClient } from '../client';\nimport {\n  type Account,\n  type AuthParams,\n  type CreateAccountOptions,\n  type EmailPrepareParams,\n  type LinkedAccount,\n  type PhonePrepareParams,\n  type SocialLoginParams\n} from './types';\n\n/**\n * Login a user with various authentication methods\n * @param params - Login parameters including client and authentication method\n * @returns Authenticated result\n */\nexport async function login(params: AuthParams) {\n  return authenticate(params as Parameters<typeof authenticate>[0]);\n}\n\n/**\n * Login a user using social authentication providers with redirect flow\n * @param params - Social login parameters including client, provider strategy and redirect URL\n * @returns Promise that resolves when redirect is initiated\n */\nexport async function socialLogin(params: SocialLoginParams): Promise<void> {\n  return authenticateWithRedirect(\n    params as Parameters<typeof authenticateWithRedirect>[0]\n  );\n}\n\n/**\n * Prepare the login process (pre-authentication)\n * @param params - Parameters including client and authentication details\n * @returns Pre-authentication result (void)\n */\nexport async function prepareLogin(\n  params: EmailPrepareParams | PhonePrepareParams\n): Promise<void> {\n  return preAuthenticate(params as Parameters<typeof preAuthenticate>[0]);\n}\n\n/**\n * Create a new user account (Lisk ecosystem wallet)\n * @param options - The account configuration options\n * @param [options.ecosystemId] - The ecosystem ID (defaults to EcosystemId.LISK)\n * @param options.partnerId - Partner ID for the dApp\n * @returns New user account\n */\nexport function createAccount({\n  ecosystemId = EcosystemId.LISK,\n  partnerId\n}: CreateAccountOptions): Account {\n  return ecosystemWallet(ecosystemId, { partnerId });\n}\n\n/**\n * Get the user's email address\n * @param params - Parameters including client and ecosystem configuration\n * @returns User's email address or undefined if not available\n */\nexport async function getEmail(params: {\n  client: PannaClient;\n  ecosystem: {\n    id: EcosystemId;\n    partnerId: string;\n  };\n}): Promise<string | undefined> {\n  return getUserEmail(params as Parameters<typeof getUserEmail>[0]);\n}\n\n/**\n * Get the user's phone number\n * @param params - Parameters including client and ecosystem configuration\n * @returns User's phone number or undefined if not available\n */\nexport async function getPhoneNumber(params: {\n  client: PannaClient;\n  ecosystem: {\n    id: EcosystemId;\n    partnerId: string;\n  };\n}): Promise<string | undefined> {\n  return getUserPhoneNumber(params as Parameters<typeof getUserPhoneNumber>[0]);\n}\n\n/**\n * Link an external account to the user's account\n * @param params - Parameters including client and authentication method\n * @returns Updated list of linked profiles\n */\nexport async function linkAccount(\n  params: AuthParams\n): Promise<LinkedAccount[]> {\n  return linkProfile(params as Parameters<typeof linkProfile>[0]);\n}\n\n/**\n * Get all linked accounts for the current user\n * @param params - Parameters including client and ecosystem configuration\n * @returns List of linked accounts\n */\nexport async function getLinkedAccounts(params: {\n  client: PannaClient;\n  ecosystem: {\n    id: EcosystemId;\n    partnerId: string;\n  };\n}): Promise<LinkedAccount[]> {\n  return getProfiles(params as Parameters<typeof getProfiles>[0]);\n}\n\n/**\n * Unlink an external account from the user's account\n * @param params - Parameters including client and profile to unlink\n * @returns Updated list of profiles\n */\nexport async function unlinkAccount(params: {\n  client: PannaClient;\n  profileToUnlink: LinkedAccount;\n  ecosystem: {\n    id: EcosystemId;\n    partnerId: string;\n  };\n}): Promise<LinkedAccount[]> {\n  return unlinkProfile(params as Parameters<typeof unlinkProfile>[0]);\n}\n","import { type EcosystemConfig, EcosystemId, type PannaClient } from '../client';\nimport { type SocialProvider } from '../utils/types';\n\n// Enum for login strategies\nexport const LoginStrategy = {\n  EMAIL: 'email',\n  PHONE: 'phone'\n} as const;\n\nexport type LoginStrategyType =\n  (typeof LoginStrategy)[keyof typeof LoginStrategy];\n\n// Base authentication parameters\nexport interface BaseAuthParams {\n  client: PannaClient;\n  ecosystem: EcosystemConfig;\n}\n\n// Single-step authentication (email/phone with verification code)\nexport interface EmailAuthParams extends BaseAuthParams {\n  strategy: typeof LoginStrategy.EMAIL;\n  email: string;\n  verificationCode: string;\n}\n\nexport interface PhoneAuthParams extends BaseAuthParams {\n  strategy: typeof LoginStrategy.PHONE;\n  phoneNumber: string;\n  verificationCode: string;\n}\n\n// Multi-step authentication (preparation phase)\nexport interface EmailPrepareParams extends BaseAuthParams {\n  strategy: typeof LoginStrategy.EMAIL;\n  email: string;\n}\n\nexport interface PhonePrepareParams extends BaseAuthParams {\n  strategy: typeof LoginStrategy.PHONE;\n  phoneNumber: string;\n}\n\nexport type CreateAccountOptions = {\n  ecosystemId?: EcosystemId | `ecosystem.${string}`;\n  partnerId: string;\n};\n\n// Social login parameters for redirect flow\nexport interface SocialLoginParams extends BaseAuthParams {\n  strategy: SocialProvider;\n  mode: 'redirect';\n  redirectUrl: string;\n}\n\n// Combined types for different authentication flows\nexport type SingleStepAuthParams = EmailAuthParams | PhoneAuthParams;\n\nexport type MultiStepAuthParams = EmailPrepareParams | PhonePrepareParams;\n\nexport type AuthParams = SingleStepAuthParams | MultiStepAuthParams;\n\n// Re-export types with web2-friendly names\nexport type {\n  Wallet as Account,\n  InAppWalletAuth as AccountAuth,\n  InAppWalletConnectionOptions as AccountConnectionOptions,\n  Profile as LinkedAccount\n} from 'thirdweb/wallets';\n","import { getWalletBalance } from 'thirdweb/wallets';\nimport { getSocialIcon as thirdwebGetSocialIcon } from 'thirdweb/wallets/in-app';\nimport {\n  type AccountBalanceParams,\n  type AccountBalanceResult,\n  type SocialProvider\n} from './types';\n\n/**\n * Get the balance of an account\n * @param params - Parameters for getting account balance\n * @returns Account balance information\n */\nexport async function accountBalance(\n  params: AccountBalanceParams\n): Promise<AccountBalanceResult> {\n  const result = await getWalletBalance({\n    address: params.address,\n    client: params.client,\n    chain: params.chain,\n    tokenAddress: params.tokenAddress\n  });\n\n  return {\n    value: result.value,\n    decimals: result.decimals,\n    symbol: result.symbol,\n    name: result.name,\n    displayValue: result.displayValue\n  };\n}\n\n/**\n * Get the icon URI for a social authentication provider\n * @param provider - The social provider name\n * @returns The icon URI string\n */\nexport function getSocialIcon(provider: SocialProvider): string {\n  return thirdwebGetSocialIcon(provider);\n}\n","import { ReactNode, createContext, useMemo } from 'react';\nimport { ThirdwebProvider } from 'thirdweb/react';\nimport { createPannaClient, type PannaClient } from '../../core';\n\nexport type PannaProviderProps = {\n  children?: ReactNode;\n  clientId?: string;\n  partnerId?: string;\n};\n\nexport type PannaContextValue = {\n  client: PannaClient;\n  partnerId: string;\n};\n\ntype InternalPannaContextValue = {\n  client: PannaClient | null;\n  partnerId: string;\n};\n\nexport const PannaClientContext =\n  createContext<InternalPannaContextValue | null>(null);\n\n/**\n * Framework-agnostic Panna Provider that wraps Thirdweb functionality.\n *\n * For SSR frameworks (like Next.js), wrap this component in a client-only boundary\n * at the application level to prevent hydration mismatches.\n *\n * @example\n * ```tsx\n * // Framework agnostic usage\n * <PannaProvider clientId=\"your-client-id\">\n *   <App />\n * </PannaProvider>\n *\n * // Next.js App Router - wrap in 'use client' component\n * 'use client';\n * export function ClientProviders({ children }) {\n *   return <PannaProvider clientId={process.env.NEXT_PUBLIC_CLIENT_ID}>{children}</PannaProvider>;\n * }\n * ```\n */\nexport function PannaProvider(props: PannaProviderProps) {\n  const { clientId, partnerId, children } = props;\n\n  const contextValue = useMemo(() => {\n    const client = clientId ? createPannaClient({ clientId }) : null;\n    return {\n      client,\n      partnerId: partnerId ?? ''\n    };\n  }, [clientId, partnerId]);\n\n  return (\n    <PannaClientContext value={contextValue}>\n      <ThirdwebProvider>{children}</ThirdwebProvider>\n    </PannaClientContext>\n  );\n}\n","import { ConnectButton, ConnectButtonProps } from 'thirdweb/react';\nimport { createAccount } from '../../core/wallet';\nimport { usePanna } from '../hooks/use-panna';\nimport { liskTheme } from '../theme';\nimport { getAAChain, getChain, getSupportedTokens } from '../utils';\n\nexport type LoginButtonProps = Omit<ConnectButtonProps, 'client'> & {\n  isTesting?: boolean;\n};\n\n/**\n * A login button component that connects users to their wallets using the Panna client from context.\n *\n * This component must be used within a PannaProvider that provides the Panna client via context.\n * It automatically configures the Lisk ecosystem wallet and defaults to the Lisk chain.\n *\n * @param props - All ConnectButtonProps except 'client' (which comes from PannaProvider context)\n * @param {boolean} [props.isTesting] - Optional flag to use the testing chain (default is false)\n * @throws {Error} When used outside of PannaProvider context or when no client is available\n *\n * @example\n * ```tsx\n * <PannaProvider clientId=\"your-client-id\" partnerId=\"your-partner-id\">\n *   <LoginButton />\n * </PannaProvider>\n * ```\n *\n * @example Custom styling (user styles override defaults)\n * ```tsx\n * <LoginButton\n *   connectButton={{\n *     label: \"Custom Label\",\n *     className: \"custom-styles-here\", // These will be applied after defaults\n *     style: { backgroundColor: 'red' } // These will override default styles\n *   }}\n * />\n * ```\n */\nexport function LoginButton({ connectButton, ...props }: LoginButtonProps) {\n  const { client, partnerId } = usePanna();\n\n  const liskEcosystemWallet = createAccount({ partnerId });\n\n  return (\n    <ConnectButton\n      client={client}\n      connectButton={{ label: 'Sign in', ...connectButton }}\n      theme={liskTheme}\n      appMetadata={{\n        name: 'Panna App',\n        logoUrl: 'https://portal-assets.lisk.com/logo/lisk-profile-w.svg'\n      }}\n      connectModal={{\n        showThirdwebBranding: false\n      }}\n      chain={getChain(props.isTesting)}\n      accountAbstraction={{\n        chain: getAAChain(props.isTesting),\n        sponsorGas: true\n      }}\n      supportedTokens={getSupportedTokens(props.isTesting)}\n      wallets={[liskEcosystemWallet]}\n      {...props}\n    />\n  );\n}\n","import { use } from 'react';\nimport {\n  PannaClientContext,\n  PannaContextValue\n} from '../components/panna-provider';\n\n/**\n * Hook to access the Panna context\n *\n * @returns The Panna context\n * @throws {Error} When used outside of PannaProvider context or when no client is available\n *\n * @example\n * ```tsx\n * function MyComponent() {\n *   const { client, partnerId } = usePanna();\n *\n *   // client is guaranteed to be available here\n *   return <div>Connected with client ID: {client.clientId} and partner ID: {partnerId}</div>;\n * }\n * ```\n */\nexport function usePanna(): PannaContextValue {\n  const context = use(PannaClientContext);\n\n  if (!context) {\n    throw new Error(\n      'usePanna must be used within a PannaProvider. ' +\n        'Make sure to wrap your app with <PannaProvider clientId=\"your-client-id\">.'\n    );\n  }\n\n  if (!context.client) {\n    throw new Error(\n      'Panna client is not available. ' +\n        'Make sure to provide a valid clientId to PannaProvider.'\n    );\n  }\n\n  return context as PannaContextValue;\n}\n","import { darkTheme } from 'thirdweb/react';\n\nconst PRIMARY = '#FFFFFF';\nconst LAYER_50 = '#0C0C0C';\nconst ZINC_800 = '#27272A';\nconst GRAY_100 = '#F3F4F6';\nconst GRAY_300 = '#D1D5DB';\n\nexport const liskTheme = darkTheme({\n  colors: {\n    modalBg: LAYER_50,\n    borderColor: ZINC_800,\n    accentText: GRAY_100,\n    separatorLine: ZINC_800,\n    skeletonBg: LAYER_50,\n    primaryText: PRIMARY,\n    secondaryText: GRAY_300\n  }\n});\n","import { SupportedTokens } from 'thirdweb/react';\nimport { lisk, liskSepolia } from '../../core';\n\nexport const liskTokenConfig: SupportedTokens = {\n  [lisk.id]: [\n    {\n      address: '0xac485391EB2d7D88253a7F1eF18C37f4242D1A24',\n      name: 'Lisk',\n      symbol: 'LSK',\n      icon: 'ipfs://QmRBakJ259a4RPFkMayjmeG7oL6f1hWqYg4CUDFUSbttNx'\n    }\n  ]\n};\n\nexport const liskSepoliaTokenConfig: SupportedTokens = {\n  [liskSepolia.id]: [\n    {\n      address: '0x8a21CF9Ba08Ae709D64Cb25AfAA951183EC9FF6D',\n      name: 'Lisk',\n      symbol: 'LSK',\n      icon: 'ipfs://QmRBakJ259a4RPFkMayjmeG7oL6f1hWqYg4CUDFUSbttNx'\n    },\n    {\n      address: '0xed875CABEE46D734F38B5ED453ED1569347c0da8',\n      name: 'USDC',\n      symbol: 'USDC',\n      icon: 'data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9Ijg2OTc3Njg0LTEyZGItNDg1MC04ZjMwLTIzM2E3YzI2N2QxMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4KICA8cGF0aCBkPSJNMTAwMCAyMDAwYzU1NC4xNyAwIDEwMDAtNDQ1LjgzIDEwMDAtMTAwMFMxNTU0LjE3IDAgMTAwMCAwIDAgNDQ1LjgzIDAgMTAwMHM0NDUuODMgMTAwMCAxMDAwIDEwMDB6IiBmaWxsPSIjMjc3NWNhIi8+CiAgPHBhdGggZD0iTTEyNzUgMTE1OC4zM2MwLTE0NS44My04Ny41LTE5NS44My0yNjIuNS0yMTYuNjYtMTI1LTE2LjY3LTE1MC01MC0xNTAtMTA4LjM0czQxLjY3LTk1LjgzIDEyNS05NS44M2M3NSAwIDExNi42NyAyNSAxMzcuNSA4Ny41IDQuMTcgMTIuNSAxNi42NyAyMC44MyAyOS4xNyAyMC44M2g2Ni42NmMxNi42NyAwIDI5LjE3LTEyLjUgMjkuMTctMjkuMTZ2LTQuMTdjLTE2LjY3LTkxLjY3LTkxLjY3LTE2Mi41LTE4Ny41LTE3MC44M3YtMTAwYzAtMTYuNjctMTIuNS0yOS4xNy0zMy4zMy0zMy4zNGgtNjIuNWMtMTYuNjcgMC0yOS4xNyAxMi41LTMzLjM0IDMzLjM0djk1LjgzYy0xMjUgMTYuNjctMjA0LjE2IDEwMC0yMDQuMTYgMjA0LjE3IDAgMTM3LjUgODMuMzMgMTkxLjY2IDI1OC4zMyAyMTIuNSAxMTYuNjcgMjAuODMgMTU0LjE3IDQ1LjgzIDE1NC4xNyAxMTIuNXMtNTguMzQgMTEyLjUtMTM3LjUgMTEyLjVjLTEwOC4zNCAwLTE0NS44NC00NS44NC0xNTguMzQtMTA4LjM0LTQuMTYtMTYuNjYtMTYuNjYtMjUtMjkuMTYtMjVoLTcwLjg0Yy0xNi42NiAwLTI5LjE2IDEyLjUtMjkuMTYgMjkuMTd2NC4xN2MxNi42NiAxMDQuMTYgODMuMzMgMTc5LjE2IDIyMC44MyAyMDB2MTAwYzAgMTYuNjYgMTIuNSAyOS4xNiAzMy4zMyAzMy4zM2g2Mi41YzE2LjY3IDAgMjkuMTctMTIuNSAzMy4zNC0zMy4zM3YtMTAwYzEyNS0yMC44NCAyMDguMzMtMTA4LjM0IDIwOC4zMy0yMjAuODR6IiBmaWxsPSIjZmZmIi8+CiAgPHBhdGggZD0iTTc4Ny41IDE1OTUuODNjLTMyNS0xMTYuNjYtNDkxLjY3LTQ3OS4xNi0zNzAuODMtODAwIDYyLjUtMTc1IDIwMC0zMDguMzMgMzcwLjgzLTM3MC44MyAxNi42Ny04LjMzIDI1LTIwLjgzIDI1LTQxLjY3VjMyNWMwLTE2LjY3LTguMzMtMjkuMTctMjUtMzMuMzMtNC4xNyAwLTEyLjUgMC0xNi42NyA0LjE2LTM5NS44MyAxMjUtNjEyLjUgNTQ1Ljg0LTQ4Ny41IDk0MS42NyA3NSAyMzMuMzMgMjU0LjE3IDQxMi41IDQ4Ny41IDQ4Ny41IDE2LjY3IDguMzMgMzMuMzQgMCAzNy41LTE2LjY3IDQuMTctNC4xNiA0LjE3LTguMzMgNC4xNy0xNi42NnYtNTguMzRjMC0xMi41LTEyLjUtMjkuMTYtMjUtMzcuNXpNMTIyOS4xNyAyOTUuODNjLTE2LjY3LTguMzMtMzMuMzQgMC0zNy41IDE2LjY3LTQuMTcgNC4xNy00LjE3IDguMzMtNC4xNyAxNi42N3Y1OC4zM2MwIDE2LjY3IDEyLjUgMzMuMzMgMjUgNDEuNjcgMzI1IDExNi42NiA0OTEuNjcgNDc5LjE2IDM3MC44MyA4MDAtNjIuNSAxNzUtMjAwIDMwOC4zMy0zNzAuODMgMzcwLjgzLTE2LjY3IDguMzMtMjUgMjAuODMtMjUgNDEuNjdWMTcwMGMwIDE2LjY3IDguMzMgMjkuMTcgMjUgMzMuMzMgNC4xNyAwIDEyLjUgMCAxNi42Ny00LjE2IDM5NS44My0xMjUgNjEyLjUtNTQ1Ljg0IDQ4Ny41LTk0MS42Ny03NS0yMzcuNS0yNTguMzQtNDE2LjY3LTQ4Ny41LTQ5MS42N3oiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg=='\n    }\n  ]\n};\n","import { lisk, liskSepolia } from '../../core';\nimport { liskSepoliaTokenConfig, liskTokenConfig } from '../consts';\n\n/**\n * Get the supported tokens for a given chain.\n * @param testingStatus - The testing status\n * @returns The supported tokens for the given chain\n */\nexport function getSupportedTokens(testingStatus?: boolean | undefined) {\n  return testingStatus ? liskSepoliaTokenConfig : liskTokenConfig;\n}\n\n/**\n * Get the chain settings for a given chain.\n * @param testingStatus - The testing status\n * @returns The chain settings for the given chain\n */\nexport function getChain(testingStatus?: boolean | undefined) {\n  return testingStatus ? liskSepolia : lisk;\n}\n\n/**\n * Get the account abstraction settings for a given chain.\n * @param testingStatus - The testing status\n * @returns The account abstraction settings for the given chain\n */\nexport function getAAChain(testingStatus?: boolean | undefined) {\n  return getChain(testingStatus);\n}\n","export {\n  // Connection Management hooks\n  useConnect as useLogin,\n  useDisconnect as useLogout,\n  useAutoConnect as useAutoLogin,\n  useConnectedWallets as useConnectedAccounts,\n  useActiveAccount,\n  useSetActiveWallet as useSetActiveAccount,\n\n  // Balance & Wallet Info hooks\n  useWalletBalance as useAccountBalance,\n  useWalletInfo as useAccountInfo,\n  useWalletImage as useAccountAvatar,\n\n  // Profile & Identity hooks\n  useProfiles as useUserProfiles,\n  useLinkProfile as useLinkAccount,\n  useUnlinkProfile as useUnlinkAccount,\n  useSocialProfiles as useSocialAccounts,\n\n  // UI Modal hooks\n  useConnectModal as useLoginModal,\n  useWalletDetailsModal as useAccountDetailsModal\n} from 'thirdweb/react';\n\nexport { usePanna as usePanna } from './use-panna';\n"],"mappings":"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","names":["EcosystemId","jsx"]}