{
  "version": 3,
  "sources": ["../src/xaman/index.ts", "../src/xaman/helpers.ts", "../src/xaman/walletMethods.ts"],
  "sourcesContent": [
    "import { Chain, filterSupportedChains, SKConfig, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport { createWallet, getWalletSupportedChains } from \"@swapkit/wallet-core\";\nimport { Xumm } from \"xumm\";\nimport { getWalletForChain } from \"./helpers\";\nimport type { XamanConfig } from \"./types\";\nimport { connectXamanWallet as connectXamanWalletMethod } from \"./walletMethods\";\n\nexport const xamanWallet = createWallet({\n  connect: ({ addChain, supportedChains: walletSupportedChains, walletType }) =>\n    function connectXamanWallet(chains: Chain[], xamanConfigOverwrite?: XamanConfig) {\n      const supportedChains = filterSupportedChains({ chains, supportedChains: walletSupportedChains, walletType });\n\n      const { xaman: xamanApiKey } = SKConfig.get(\"apiKeys\");\n      const apiKey = xamanConfigOverwrite?.apiKey || xamanApiKey;\n\n      if (!apiKey) {\n        throw new SwapKitError(\"wallet_missing_api_key\", { wallet: \"Xaman\" });\n      }\n\n      const xumm = new Xumm(apiKey);\n\n      return new Promise<boolean>((resolve, reject) => {\n        xumm.on(\"success\", async () => {\n          try {\n            const address = await connectXamanWalletMethod(xumm);\n\n            const promises = supportedChains.map(async (chain) => {\n              const walletMethods = await getWalletForChain({ address, chain, xumm });\n\n              addChain({\n                ...walletMethods,\n                address,\n                balance: [],\n                chain,\n                disconnect: xumm.logout,\n                walletType: WalletOption.XAMAN,\n              });\n            });\n\n            await Promise.all(promises);\n            resolve(true);\n          } catch (error) {\n            reject(error);\n          }\n        });\n\n        xumm.on(\"error\", (error) => {\n          reject(error);\n        });\n\n        xumm.authorize();\n      });\n    },\n  directSigningSupport: { [Chain.Ripple]: true },\n  name: \"connectXaman\",\n  supportedChains: [Chain.Ripple],\n  walletType: WalletOption.XAMAN,\n});\n\nexport const XAMAN_SUPPORTED_CHAINS = getWalletSupportedChains(xamanWallet);\nexport type XamanSupportedChain = (typeof XAMAN_SUPPORTED_CHAINS)[number];\n\nexport type { XamanConfig, XamanPaymentParams, XamanTrustSetParams } from \"./types\";\n",
    "import { type AssetValue, Chain, SwapKitError } from \"@swapkit/helpers\";\nimport { match } from \"ts-pattern\";\nimport type { Xumm } from \"xumm\";\nimport { sendXamanTransaction, sendXamanTrustSet, submitXamanPayload } from \"./walletMethods\";\n\ninterface GetWalletForChainParams {\n  chain: Chain;\n  address: string;\n  xumm: Xumm;\n}\n\nexport function getWalletForChain({ xumm, chain, address }: GetWalletForChainParams) {\n  return match(chain)\n    .with(Chain.Ripple, async () => {\n      const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n\n      const signer = {\n        getAddress: () => address,\n        signTransaction: async (jsonTx: Record<string, unknown>) => {\n          const txjson = { ...jsonTx, Account: jsonTx.Account ?? address };\n          const submitted = await submitXamanPayload(xumm, txjson, { submit: false });\n\n          if (!submitted.result.hex) {\n            throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n          }\n\n          return { hash: submitted.result.transactionId, tx_blob: submitted.result.hex };\n        },\n      };\n\n      const toolbox = await getRippleToolbox({ signer });\n\n      const transfer = async ({\n        assetValue,\n        recipient,\n        memo,\n        destinationTag,\n      }: {\n        assetValue: AssetValue;\n        recipient: string;\n        memo?: string;\n        destinationTag?: number;\n      }) => {\n        const isTokenTransfer = !assetValue.isGasAsset;\n\n        if (isTokenTransfer && (!assetValue.ticker || !assetValue.address)) {\n          throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n        }\n\n        const paymentResult = await sendXamanTransaction(xumm, {\n          amount: assetValue.getValue(\"string\"),\n          destination: recipient,\n          destinationTag,\n          from: address,\n          memo,\n          ...(isTokenTransfer && { currency: assetValue.ticker, issuer: assetValue.address }),\n        });\n\n        if (!(paymentResult.result.success && paymentResult.result.transactionId)) {\n          throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n        }\n\n        return paymentResult.result.transactionId;\n      };\n\n      const setTrustLine = async (params: { currency: string; issuer: string; limit: string }) => {\n        const trustSetResult = await sendXamanTrustSet(xumm, { ...params, from: address });\n\n        if (!(trustSetResult.result.success && trustSetResult.result.transactionId)) {\n          throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n        }\n\n        return trustSetResult.result.transactionId;\n      };\n\n      return {\n        ...toolbox,\n        address,\n        createAndSubscribePayment: sendXamanTransaction,\n        disconnect: xumm.logout,\n        getAddress: () => address,\n        setTrustLine,\n        transfer,\n      };\n    })\n    .otherwise(() => {\n      throw new SwapKitError(\"wallet_chain_not_supported\", { chain, wallet: \"Xaman\" });\n    });\n}\n",
    "import { SwapKitError } from \"@swapkit/helpers\";\nimport type { Xumm } from \"xumm\";\nimport type { XamanPaymentParams, XamanTrustSetParams } from \"./types\";\n\nexport const connectXamanWallet = async (xumm: Xumm) => {\n  if (!xumm) {\n    throw new SwapKitError(\"wallet_xaman_not_configured\");\n  }\n\n  try {\n    const user = await xumm.user;\n    const account = await user?.account;\n\n    if (account) {\n      return account;\n    }\n\n    throw new SwapKitError(\"wallet_xaman_auth_failed\");\n  } catch {\n    throw new SwapKitError(\"wallet_xaman_connection_failed\");\n  }\n};\n\nexport async function submitXamanPayload(\n  xumm: Xumm,\n  txjson: Record<string, unknown>,\n  { submit = true }: { submit?: boolean } = {},\n) {\n  const payload = (submit ? txjson : { options: { submit: false }, txjson }) as Parameters<\n    NonNullable<Xumm[\"payload\"]>[\"createAndSubscribe\"]\n  >[0];\n\n  const subscription = await xumm.payload?.createAndSubscribe(payload, (event) => {\n    if (\"signed\" in event.data) return event.data;\n    return undefined;\n  });\n\n  if (!subscription) {\n    throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n  }\n\n  const { created } = subscription;\n\n  if (xumm.runtime?.xapp) {\n    xumm.xapp?.openSignRequest(created);\n  } else if (typeof window !== \"undefined\") {\n    const url =\n      created.pushed && created.next?.no_push_msg_received ? created.next.no_push_msg_received : created.next?.always;\n    if (url) window.open(url);\n  }\n\n  const resolved = await subscription.resolved;\n\n  if (!resolved || typeof resolved !== \"object\" || !(\"signed\" in resolved) || !resolved.signed) {\n    throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n  }\n\n  const payloadDetails = await xumm.payload?.get((resolved as any).payload_uuidv4);\n\n  if (!payloadDetails) {\n    throw new SwapKitError(\"wallet_xaman_monitoring_failed\");\n  }\n\n  const transactionId = payloadDetails.response?.txid || \"\";\n  const account = payloadDetails.response?.account || \"\";\n  const hex = payloadDetails.response?.hex || \"\";\n\n  if (!transactionId) {\n    throw new SwapKitError(\"wallet_xaman_transaction_failed\");\n  }\n\n  return {\n    deepLink: created.next?.always || \"\",\n    payloadId: created.uuid || \"\",\n    qrCode: created.refs?.qr_png || \"\",\n    result: { account, hex, reason: undefined, success: true, transactionId },\n    websocketUrl: created.refs?.websocket_status || \"\",\n  };\n}\n\nexport async function sendXamanTransaction(xumm: Xumm, params: XamanPaymentParams) {\n  if (!(params.destination && params.amount && params.from)) {\n    throw new SwapKitError(\"wallet_xaman_connection_failed\");\n  }\n\n  const isTokenTransfer = params.currency && params.issuer;\n  const amount = isTokenTransfer\n    ? { currency: params.currency, issuer: params.issuer, value: params.amount }\n    : (Number.parseFloat(params.amount) * 1000000).toString();\n\n  const transaction = {\n    Account: params.from,\n    Amount: amount,\n    Destination: params.destination,\n    TransactionType: \"Payment\" as const,\n    ...(params.destinationTag !== undefined && { DestinationTag: params.destinationTag }),\n    ...(params.memo && {\n      Memos: [{ Memo: { MemoData: Buffer.from(params.memo, \"utf8\").toString(\"hex\").toUpperCase() } }],\n    }),\n  };\n\n  return await submitXamanPayload(xumm, transaction);\n}\n\nexport async function sendXamanTrustSet(xumm: Xumm, params: XamanTrustSetParams) {\n  if (!(params.from && params.currency && params.issuer && params.limit !== undefined)) {\n    throw new SwapKitError(\"wallet_xaman_connection_failed\");\n  }\n\n  const transaction = {\n    Account: params.from,\n    LimitAmount: { currency: params.currency, issuer: params.issuer, value: params.limit },\n    TransactionType: \"TrustSet\" as const,\n  };\n\n  return await submitXamanPayload(xumm, transaction);\n}\n"
  ],
  "mappings": "mFAAmF,IAAnF,8BACA,kCACA,kBCFqD,IAArD,8BACA,wBCD6B,IAA7B,8BAIa,EAAqB,MAAO,IAAe,CACtD,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,6BAA6B,EAGtD,GAAI,CAEF,IAAM,EAAU,MADH,MAAM,EAAK,OACI,QAE5B,GAAI,EACF,OAAO,EAGT,MAAM,IAAI,eAAa,0BAA0B,EACjD,KAAM,CACN,MAAM,IAAI,eAAa,gCAAgC,IAI3D,eAAsB,CAAkB,CACtC,EACA,GACE,SAAS,IAA+B,CAAC,EAC3C,CACA,IAAM,EAAW,EAAS,EAAS,CAAE,QAAS,CAAE,OAAQ,EAAM,EAAG,QAAO,EAIlE,EAAe,MAAM,EAAK,SAAS,mBAAmB,EAAS,CAAC,IAAU,CAC9E,GAAI,WAAY,EAAM,KAAM,OAAO,EAAM,KACzC,OACD,EAED,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,iCAAiC,EAG1D,IAAQ,WAAY,EAEpB,GAAI,EAAK,SAAS,KAChB,EAAK,MAAM,gBAAgB,CAAO,EAC7B,QAAI,OAAO,OAAW,IAAa,CACxC,IAAM,EACJ,EAAQ,QAAU,EAAQ,MAAM,qBAAuB,EAAQ,KAAK,qBAAuB,EAAQ,MAAM,OAC3G,GAAI,EAAK,OAAO,KAAK,CAAG,EAG1B,IAAM,EAAW,MAAM,EAAa,SAEpC,GAAI,CAAC,GAAY,OAAO,IAAa,UAAY,EAAE,WAAY,IAAa,CAAC,EAAS,OACpF,MAAM,IAAI,eAAa,iCAAiC,EAG1D,IAAM,EAAiB,MAAM,EAAK,SAAS,IAAK,EAAiB,cAAc,EAE/E,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,gCAAgC,EAGzD,IAAM,EAAgB,EAAe,UAAU,MAAQ,GACjD,EAAU,EAAe,UAAU,SAAW,GAC9C,EAAM,EAAe,UAAU,KAAO,GAE5C,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,iCAAiC,EAG1D,MAAO,CACL,SAAU,EAAQ,MAAM,QAAU,GAClC,UAAW,EAAQ,MAAQ,GAC3B,OAAQ,EAAQ,MAAM,QAAU,GAChC,OAAQ,CAAE,UAAS,MAAK,OAAQ,OAAW,QAAS,GAAM,eAAc,EACxE,aAAc,EAAQ,MAAM,kBAAoB,EAClD,EAGF,eAAsB,CAAoB,CAAC,EAAY,EAA4B,CACjF,GAAI,EAAE,EAAO,aAAe,EAAO,QAAU,EAAO,MAClD,MAAM,IAAI,eAAa,gCAAgC,EAIzD,IAAM,EADkB,EAAO,UAAY,EAAO,OAE9C,CAAE,SAAU,EAAO,SAAU,OAAQ,EAAO,OAAQ,MAAO,EAAO,MAAO,GACxE,OAAO,WAAW,EAAO,MAAM,EAAI,KAAS,SAAS,EAEpD,EAAc,CAClB,QAAS,EAAO,KAChB,OAAQ,EACR,YAAa,EAAO,YACpB,gBAAiB,aACb,EAAO,iBAAmB,QAAa,CAAE,eAAgB,EAAO,cAAe,KAC/E,EAAO,MAAQ,CACjB,MAAO,CAAC,CAAE,KAAM,CAAE,SAAU,OAAO,KAAK,EAAO,KAAM,MAAM,EAAE,SAAS,KAAK,EAAE,YAAY,CAAE,CAAE,CAAC,CAChG,CACF,EAEA,OAAO,MAAM,EAAmB,EAAM,CAAW,EAGnD,eAAsB,CAAiB,CAAC,EAAY,EAA6B,CAC/E,GAAI,EAAE,EAAO,MAAQ,EAAO,UAAY,EAAO,QAAU,EAAO,QAAU,QACxE,MAAM,IAAI,eAAa,gCAAgC,EAGzD,IAAM,EAAc,CAClB,QAAS,EAAO,KAChB,YAAa,CAAE,SAAU,EAAO,SAAU,OAAQ,EAAO,OAAQ,MAAO,EAAO,KAAM,EACrF,gBAAiB,UACnB,EAEA,OAAO,MAAM,EAAmB,EAAM,CAAW,EDxG5C,SAAS,CAAiB,EAAG,OAAM,QAAO,WAAoC,CACnF,OAAO,QAAM,CAAK,EACf,KAAK,QAAM,OAAQ,SAAY,CAC9B,IAAQ,oBAAqB,KAAa,qCAgBpC,EAAU,MAAM,EAAiB,CAAE,OAd1B,CACb,WAAY,IAAM,EAClB,gBAAiB,MAAO,IAAoC,CAC1D,IAAM,EAAS,IAAK,EAAQ,QAAS,EAAO,SAAW,CAAQ,EACzD,EAAY,MAAM,EAAmB,EAAM,EAAQ,CAAE,OAAQ,EAAM,CAAC,EAE1E,GAAI,CAAC,EAAU,OAAO,IACpB,MAAM,IAAI,eAAa,iCAAiC,EAG1D,MAAO,CAAE,KAAM,EAAU,OAAO,cAAe,QAAS,EAAU,OAAO,GAAI,EAEjF,CAEgD,CAAC,EAE3C,EAAW,OACf,aACA,YACA,OACA,oBAMI,CACJ,IAAM,EAAkB,CAAC,EAAW,WAEpC,GAAI,IAAoB,CAAC,EAAW,QAAU,CAAC,EAAW,SACxD,MAAM,IAAI,eAAa,iCAAiC,EAG1D,IAAM,EAAgB,MAAM,EAAqB,EAAM,CACrD,OAAQ,EAAW,SAAS,QAAQ,EACpC,YAAa,EACb,iBACA,KAAM,EACN,UACI,GAAmB,CAAE,SAAU,EAAW,OAAQ,OAAQ,EAAW,OAAQ,CACnF,CAAC,EAED,GAAI,EAAE,EAAc,OAAO,SAAW,EAAc,OAAO,eACzD,MAAM,IAAI,eAAa,iCAAiC,EAG1D,OAAO,EAAc,OAAO,eAGxB,EAAe,MAAO,IAAgE,CAC1F,IAAM,EAAiB,MAAM,EAAkB,EAAM,IAAK,EAAQ,KAAM,CAAQ,CAAC,EAEjF,GAAI,EAAE,EAAe,OAAO,SAAW,EAAe,OAAO,eAC3D,MAAM,IAAI,eAAa,iCAAiC,EAG1D,OAAO,EAAe,OAAO,eAG/B,MAAO,IACF,EACH,UACA,0BAA2B,EAC3B,WAAY,EAAK,OACjB,WAAY,IAAM,EAClB,eACA,UACF,EACD,EACA,UAAU,IAAM,CACf,MAAM,IAAI,eAAa,6BAA8B,CAAE,QAAO,OAAQ,OAAQ,CAAC,EAChF,EDhFE,IAAM,EAAc,eAAa,CACtC,QAAS,EAAG,WAAU,gBAAiB,EAAuB,gBAC5D,QAA2B,CAAC,EAAiB,EAAoC,CAC/E,IAAM,EAAkB,wBAAsB,CAAE,SAAQ,gBAAiB,EAAuB,YAAW,CAAC,GAEpG,MAAO,GAAgB,WAAS,IAAI,SAAS,EAC/C,EAAS,GAAsB,QAAU,EAE/C,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,yBAA0B,CAAE,OAAQ,OAAQ,CAAC,EAGtE,IAAM,EAAO,IAAI,OAAK,CAAM,EAE5B,OAAO,IAAI,QAAiB,CAAC,EAAS,IAAW,CAC/C,EAAK,GAAG,UAAW,SAAY,CAC7B,GAAI,CACF,IAAM,EAAU,MAAM,EAAyB,CAAI,EAE7C,EAAW,EAAgB,IAAI,MAAO,IAAU,CACpD,IAAM,EAAgB,MAAM,EAAkB,CAAE,UAAS,QAAO,MAAK,CAAC,EAEtE,EAAS,IACJ,EACH,UACA,QAAS,CAAC,EACV,QACA,WAAY,EAAK,OACjB,WAAY,eAAa,KAC3B,CAAC,EACF,EAED,MAAM,QAAQ,IAAI,CAAQ,EAC1B,EAAQ,EAAI,EACZ,MAAO,EAAO,CACd,EAAO,CAAK,GAEf,EAED,EAAK,GAAG,QAAS,CAAC,IAAU,CAC1B,EAAO,CAAK,EACb,EAED,EAAK,UAAU,EAChB,GAEL,qBAAsB,EAAG,QAAM,QAAS,EAAK,EAC7C,KAAM,eACN,gBAAiB,CAAC,QAAM,MAAM,EAC9B,WAAY,eAAa,KAC3B,CAAC,EAEY,EAAyB,2BAAyB,CAAW",
  "debugId": "4100E078498B407F64756E2164756E21",
  "names": []
}