{"version":3,"sources":["../src/index.ts","../src/walletManagerPlugin.ts","../src/useWallet.ts","../src/useNetwork.ts"],"sourcesContent":["export * from '@txnlab/use-wallet'\nexport { WalletManagerPlugin } from './walletManagerPlugin'\nexport { useWallet, type Wallet } from './useWallet'\nexport { useNetwork } from './useNetwork'\n","import { WalletManager, type WalletManagerConfig } from '@txnlab/use-wallet'\nimport { ref } from 'vue'\nimport type algosdk from 'algosdk'\n\nexport const WalletManagerPlugin = {\n  install(app: any, options: WalletManagerConfig) {\n    const manager = new WalletManager(options)\n    const algodClient = ref(manager.algodClient)\n\n    const setAlgodClient = (client: algosdk.Algodv2) => {\n      algodClient.value = client\n      manager.algodClient = client\n    }\n\n    app.provide('walletManager', manager)\n    app.provide('algodClient', algodClient)\n    app.provide('setAlgodClient', setAlgodClient)\n\n    manager.resumeSessions().catch((error) => {\n      console.error('Error resuming sessions:', error)\n    })\n  }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport {\n  BaseWallet,\n  WalletManager,\n  type WalletAccount,\n  type WalletKey,\n  type WalletMetadata,\n  type WalletId,\n  type SignMetadata,\n  type SignDataResponse\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\n\nexport interface Wallet {\n  id: WalletId\n  /** Unique key for this wallet instance. Used for skinned WalletConnect instances. */\n  walletKey: WalletKey\n  metadata: WalletMetadata\n  accounts: WalletAccount[]\n  activeAccount: WalletAccount | null\n  isConnected: boolean\n  isActive: boolean\n  connect: (args?: Record<string, any>) => Promise<WalletAccount[]>\n  disconnect: () => Promise<void>\n  setActive: () => void\n  setActiveAccount: (address: string) => void\n  canSignData: boolean\n  canUsePrivateKey: boolean\n}\n\nexport type SetAlgodClient = (client: algosdk.Algodv2) => void\n\nexport function useWallet() {\n  const manager = inject<WalletManager>('walletManager')\n  const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n\n  if (!manager) {\n    throw new Error('WalletManager plugin is not properly installed')\n  }\n  if (!algodClient) {\n    throw new Error('Algod client not properly installed')\n  }\n\n  const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n  const isReady = computed(() => managerStatus.value === 'ready')\n\n  const walletStateMap = useStore(manager.store, (state) => state.wallets)\n  const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n  const transformToWallet = (wallet: BaseWallet): Wallet => {\n    const walletState = walletStateMap.value[wallet.walletKey]\n    return {\n      id: wallet.id,\n      walletKey: wallet.walletKey,\n      metadata: wallet.metadata,\n      accounts: walletState?.accounts ?? [],\n      activeAccount: walletState?.activeAccount ?? null,\n      isConnected: !!walletState,\n      isActive: wallet.walletKey === activeWalletId.value,\n      canSignData: wallet.canSignData ?? false,\n      canUsePrivateKey: wallet.canUsePrivateKey ?? false,\n      connect: (args) => wallet.connect(args),\n      disconnect: () => wallet.disconnect(),\n      setActive: () => wallet.setActive(),\n      setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n    }\n  }\n\n  const wallets = computed(() => {\n    return [...manager.wallets.values()].map(transformToWallet)\n  })\n\n  const activeWallet = computed(() => {\n    const wallet = activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n    return wallet ? transformToWallet(wallet) : null\n  })\n\n  const activeBaseWallet = computed(() => {\n    return activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n  })\n\n  const activeWalletState = computed(() => {\n    const wallet = activeWallet.value\n    return wallet ? walletStateMap.value[wallet.walletKey] || null : null\n  })\n\n  const activeWalletAccounts = computed(() => {\n    return activeWalletState.value?.accounts ?? null\n  })\n\n  const activeWalletAddresses = computed(() => {\n    return activeWalletAccounts.value?.map((account) => account.address) ?? null\n  })\n\n  const activeAccount = computed(() => {\n    return activeWalletState.value?.activeAccount ?? null\n  })\n\n  const activeAddress = computed(() => {\n    return activeAccount.value?.address ?? null\n  })\n\n  const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n    txnGroup: T | T[],\n    indexesToSign?: number[]\n  ): Promise<(Uint8Array | null)[]> => {\n    if (!activeBaseWallet.value) {\n      throw new Error('No active wallet')\n    }\n    return activeBaseWallet.value.signTransactions(txnGroup, indexesToSign)\n  }\n\n  const transactionSigner = (\n    txnGroup: algosdk.Transaction[],\n    indexesToSign: number[]\n  ): Promise<Uint8Array[]> => {\n    if (!activeBaseWallet.value) {\n      throw new Error('No active wallet')\n    }\n    return activeBaseWallet.value.transactionSigner(txnGroup, indexesToSign)\n  }\n\n  const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n    if (!activeBaseWallet.value) {\n      throw new Error('No active wallet')\n    }\n    return activeBaseWallet.value.signData(data, metadata)\n  }\n\n  const withPrivateKey = <T>(callback: (secretKey: Uint8Array) => Promise<T>): Promise<T> => {\n    if (!activeBaseWallet.value) {\n      throw new Error('No active wallet')\n    }\n    return activeBaseWallet.value.withPrivateKey(callback)\n  }\n\n  return {\n    wallets,\n    isReady,\n    algodClient: computed(() => {\n      if (!algodClient.value) {\n        throw new Error('Algod client is undefined')\n      }\n      return algodClient.value\n    }),\n    activeWallet,\n    activeWalletAccounts,\n    activeWalletAddresses,\n    activeAccount,\n    activeAddress,\n    signData,\n    withPrivateKey,\n    signTransactions,\n    transactionSigner\n  }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport { WalletManager, type AlgodConfig } from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\nimport type { SetAlgodClient } from './useWallet'\n\nexport function useNetwork() {\n  const manager = inject<WalletManager>('walletManager')\n  const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n  const setAlgodClient = inject<SetAlgodClient>('setAlgodClient')\n\n  if (!manager) {\n    throw new Error('WalletManager plugin is not properly installed')\n  }\n  if (!algodClient || !setAlgodClient) {\n    throw new Error('Algod client or setter not properly installed')\n  }\n\n  const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n  // Create a reactive store for network config\n  const networkConfig = useStore(manager.store, (state) => ({\n    networks: { ...manager.networkConfig },\n    activeNetwork: state.activeNetwork\n  }))\n\n  const activeNetworkConfig = computed(\n    () => networkConfig.value.networks[networkConfig.value.activeNetwork]\n  )\n\n  const setActiveNetwork = async (networkId: string): Promise<void> => {\n    if (networkId === activeNetwork.value) {\n      return\n    }\n\n    if (!manager.networkConfig[networkId]) {\n      throw new Error(`Network \"${networkId}\" not found in network configuration`)\n    }\n\n    console.info(`[Vue] Creating new Algodv2 client...`)\n\n    const { algod } = manager.networkConfig[networkId]\n    const { token = '', baseServer, port = '', headers = {} } = algod\n    const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n\n    await manager.setActiveNetwork(networkId)\n    setAlgodClient(newClient)\n\n    console.info(`[Vue] ✅ Active network set to ${networkId}.`)\n  }\n\n  const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n    manager.updateAlgodConfig(networkId, config)\n    manager.store.setState((state) => ({ ...state }))\n\n    // If this is the active network, update the algodClient\n    if (networkId === activeNetwork.value) {\n      console.info(`[Vue] Creating new Algodv2 client...`)\n      const { algod } = manager.networkConfig[networkId]\n      const { token = '', baseServer, port = '', headers = {} } = algod\n      const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n      setAlgodClient(newClient)\n    }\n  }\n\n  const resetNetworkConfig = (networkId: string): void => {\n    manager.resetNetworkConfig(networkId)\n    manager.store.setState((state) => ({ ...state }))\n\n    // If this is the active network, update the algodClient\n    if (networkId === activeNetwork.value) {\n      console.info(`[Vue] Creating new Algodv2 client...`)\n      const { algod } = manager.networkConfig[networkId]\n      const { token = '', baseServer, port = '', headers = {} } = algod\n      const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n      setAlgodClient(newClient)\n    }\n  }\n\n  return {\n    activeNetwork,\n    networkConfig: manager.networkConfig,\n    activeNetworkConfig,\n    setActiveNetwork,\n    updateAlgodConfig,\n    resetNetworkConfig\n  }\n}\n"],"mappings":"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","names":["import_use_wallet","import_vue","import_vue_store","import_use_wallet","import_algosdk","import_vue","algosdk"]}