@relayprotocol/relay-kit-ui 11.0.3 → 11.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/_cjs/src/components/common/TransactionModal/TransactionModalRenderer.js +6 -0
  2. package/_cjs/src/components/common/TransactionModal/TransactionModalRenderer.js.map +1 -1
  3. package/_cjs/src/constants/walletCompatibility.js +2 -1
  4. package/_cjs/src/constants/walletCompatibility.js.map +1 -1
  5. package/_cjs/src/utils/relayTransaction.js +4 -3
  6. package/_cjs/src/utils/relayTransaction.js.map +1 -1
  7. package/_cjs/src/utils/solana.js +1 -1
  8. package/_cjs/src/utils/solana.js.map +1 -1
  9. package/_cjs/src/version.js +1 -1
  10. package/_cjs/src/version.js.map +1 -1
  11. package/_cjs/tsconfig.build.tsbuildinfo +1 -1
  12. package/_esm/src/components/common/TransactionModal/TransactionModalRenderer.js +8 -0
  13. package/_esm/src/components/common/TransactionModal/TransactionModalRenderer.js.map +1 -1
  14. package/_esm/src/constants/walletCompatibility.js +2 -1
  15. package/_esm/src/constants/walletCompatibility.js.map +1 -1
  16. package/_esm/src/utils/relayTransaction.js +11 -3
  17. package/_esm/src/utils/relayTransaction.js.map +1 -1
  18. package/_esm/src/utils/solana.js +1 -1
  19. package/_esm/src/utils/solana.js.map +1 -1
  20. package/_esm/src/version.js +1 -1
  21. package/_esm/src/version.js.map +1 -1
  22. package/_esm/tsconfig.build.tsbuildinfo +1 -1
  23. package/_types/src/components/common/TransactionModal/TransactionModalRenderer.d.ts.map +1 -1
  24. package/_types/src/constants/walletCompatibility.d.ts.map +1 -1
  25. package/_types/src/utils/relayTransaction.d.ts +6 -0
  26. package/_types/src/utils/relayTransaction.d.ts.map +1 -1
  27. package/_types/src/utils/solana.d.ts.map +1 -1
  28. package/_types/src/version.d.ts +1 -1
  29. package/_types/tsconfig.build.tsbuildinfo +1 -1
  30. package/package.json +1 -1
@@ -113,6 +113,12 @@ const TransactionModalRenderer = ({ open, slippageTolerance, wallet, steps, quot
113
113
  if (!transaction) {
114
114
  return 2500;
115
115
  }
116
+ const isTerminalStatus = transaction.status === 'success' ||
117
+ transaction.status === 'failure' ||
118
+ transaction.status === 'refund';
119
+ if (!isTerminalStatus) {
120
+ return 2500;
121
+ }
116
122
  const isRefund = transaction.status === 'refund' ||
117
123
  transaction.data?.refundCurrencyData;
118
124
  if (isRefund &&
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionModalRenderer.js","sourceRoot":"","sources":["../../../../../src/components/common/TransactionModal/TransactionModalRenderer.tsx"],"names":[],"mappings":";;;;AAAA,iCAQc;AAQd,4EAG2C;AAE3C,oEAA4D;AAC5D,sDAAwD;AACxD,sDAGgC;AAChC,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,qFAAY,CAAA;IACZ,+EAAS,CAAA;IACT,2EAAO,CAAA;IACP,uEAAK,CAAA;AACP,CAAC,EALW,uBAAuB,uCAAvB,uBAAuB,QAKlC;AAoDM,MAAM,wBAAwB,GAAc,CAAC,EAClD,IAAI,EACJ,iBAAiB,EACjB,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,YAAY,EACb,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,IAAA,yBAAc,GAAE,CAAA;IACpC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAA;IAElE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAC9C,uBAAuB,CAAC,YAAY,CACrC,CAAA;IACD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,GAE3C,CAAA;IACH,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,GAEnD,CAAA;IACH,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAW,EAAE,CAAC,CAAA;IAC5D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAC7D,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAEvE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;YAC9C,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAM;QACR,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAC9C,CAAA;QAED,IAAI,SAAS,GAAG,eAAe,CAAC,MAAM,CAAA;QACtC,IAAI,QAAQ,GAAa,EAAE,CAAA;QAC3B,IAAI,WAAW,GAA8C,IAAI,CAAA;QACjE,IAAI,eAES,CAAA;QAEb,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;gBAChD,CAAC;gBACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9D,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;gBACxD,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;oBACjC,WAAW,GAAG,IAAI,CAAA;oBAClB,eAAe,GAAG,IAAI,CAAA;oBAEtB,MAAK;gBACP,CAAC;YACH,CAAC;YACD,IAAI,WAAW,IAAI,eAAe;gBAAE,MAAK;QAC3C,CAAC;QAED,cAAc,CAAC,QAAQ,CAAC,CAAA;QAExB,IACE,CAAC,oBAAoB;YACrB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,EAAE,qBAAqB,IAAI,IAAI,CAAC;YACvE,YAAY,KAAK,uBAAuB,CAAC,YAAY,EACrD,CAAC;YACD,YAAY,EAAE,CAAC,KAAgB,CAAC,CAAA;YAChC,uBAAuB,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;QAC9C,CAAC;QAED,cAAc,CAAC,WAAW,CAAC,CAAA;QAC3B,kBAAkB,CAAC,eAAe,CAAC,CAAA;QAEnC,MAAM,oBAAoB,GACxB,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAA;QAE5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAClC,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,KAAK;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,oBAAoB,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;oBAC7D,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAA;YACnC,CAAC,CAAC,CACL,CAAA;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAC3D,CAAA;QAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,CAC7D,CAAA;QAGD,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7C,IAAI,CAAC,KAAK,EAAE,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,qBAAqB,KAAK,IAAI;YACnC,IAAI,CAAC,aAAa,KAAK,YAAY,CACtC,CACF,CAAA;QAGD,IACE,CAAC,eAAe,IAAI,iBAAiB,CAAC;YACtC,YAAY,KAAK,uBAAuB,CAAC,YAAY;YACrD,CAAC,kBAAkB,EACnB,CAAC;YACD,eAAe,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAA;YAClD,YAAY,EAAE,CAAC,KAAgB,CAAC,CAAA;QAClC,CAAC;QAGD,IAAI,gBAAgB,IAAI,YAAY,KAAK,uBAAuB,CAAC,OAAO,EAAE,CAAC;YACzE,eAAe,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;YAChD,SAAS,EAAE,CAAC,KAAgB,EAAE,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IAEtB,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,6CAAuB,EAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAGxE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,GAClE,IAAA,6BAAW,EACT,CAAC,YAAY,KAAK,uBAAuB,CAAC,OAAO;QAC/C,YAAY,KAAK,uBAAuB,CAAC,KAAK,CAAC;QAC/C,SAAS;QACT,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE;QACnB,CAAC,CAAC,SAAS,EACb,WAAW,EAAE,UAAU,EACvB;QACE,OAAO,EACL,CAAC,YAAY,KAAK,uBAAuB,CAAC,OAAO;YAC/C,YAAY,KAAK,uBAAuB,CAAC,KAAK,CAAC;YACjD,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK;QACX,eAAe,CAAC,KAAK;YACnB,IAAI,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAA;YACV,CAAC;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,MAAM,QAAQ,GACZ,WAAW,CAAC,MAAM,KAAK,QAAQ;gBAC/B,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAA;YACtC,IACE,QAAQ;gBACR,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EACnE,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CACF,CAAA;IACH,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IACnC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAA,uCAAiB,EAAC,WAAW,CAAC,CAAA;IAE5D,MAAM,cAAc,GAAG,iBAAiB,KAAK,SAAS,CAAA;IACtD,MAAM,YAAY,GAAG,IAAA,qCAA0B,EAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,IAAA,yBAAc,EAAC,KAAgB,CAAC,CAAA;IAExD,OAAO,CACL,2DACG,QAAQ,CAAC;YACR,MAAM;YACN,YAAY;YACZ,eAAe;YACf,WAAW;YACX,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,KAAK;YACL,KAAK;YACL,eAAe;YACf,SAAS;YACT,YAAY;YACZ,WAAW;YACX,cAAc;YACd,WAAW;YACX,QAAQ;YACR,OAAO;YACP,SAAS;YACT,oBAAoB;YACpB,cAAc;YACd,YAAY;YACZ,cAAc,EAAE,eAAe;YAC/B,kBAAkB,EAAE,eAAe,EAAE,WAAW;SACjD,CAAC,GACD,CACJ,CAAA;AACH,CAAC,CAAA;AAvNY,QAAA,wBAAwB,4BAuNpC","sourcesContent":["import {\n type FC,\n useMemo,\n useState,\n useEffect,\n type ReactNode,\n type SetStateAction,\n type Dispatch\n} from 'react'\nimport { type Address } from 'viem'\nimport {\n type AdaptedWallet,\n type Execute,\n type ExecuteStep,\n type ExecuteStepItem\n} from '@relayprotocol/relay-sdk'\nimport {\n calculateFillTime,\n extractDepositRequestId\n} from '../../../utils/relayTransaction.js'\nimport type { Token } from '../../../types/index.js'\nimport { useRequests } from '@relayprotocol/relay-kit-hooks'\nimport { useRelayClient } from '../../../hooks/index.js'\nimport {\n calculatePriceTimeEstimate,\n isGasSponsored\n} from '../../../utils/quote.js'\nexport enum TransactionProgressStep {\n Confirmation,\n Submitted,\n Success,\n Error\n}\n\nexport type TxHashes = {\n txHash: string\n chainId: number\n isBatchTx?: boolean\n}[]\n\nexport type ChildrenProps = {\n wallet?: AdaptedWallet\n progressStep: TransactionProgressStep\n setProgressStep: Dispatch<SetStateAction<TransactionProgressStep>>\n currentStep?: ExecuteStep | null\n setCurrentStep: Dispatch<SetStateAction<ExecuteStep | undefined | null>>\n currentStepItem: ExecuteStepItem | null | undefined\n setCurrentStepItem: Dispatch<\n SetStateAction<ExecuteStepItem | null | undefined>\n >\n quote: Execute | null\n swapError: Error | null\n setSwapError: Dispatch<SetStateAction<Error | null>>\n steps: Execute['steps'] | null\n waitingForSteps: boolean\n allTxHashes: TxHashes\n setAllTxHashes: Dispatch<SetStateAction<TxHashes>>\n transaction: ReturnType<typeof useRequests>['data']['0']\n seconds: number\n fillTime: string\n requestId: string | null\n isLoadingTransaction: boolean\n isAutoSlippage: boolean\n timeEstimate?: { time: number; formattedTime: string }\n isGasSponsored: boolean\n currentCheckStatus?: ExecuteStepItem['checkStatus']\n}\n\ntype Props = {\n open: boolean\n address?: Address | string\n fromToken?: Token\n toToken?: Token\n slippageTolerance?: string\n wallet?: AdaptedWallet\n steps: Execute['steps'] | null\n quote: Execute | null\n swapError: Error | null\n setSwapError: Dispatch<SetStateAction<Error | null>>\n children: (props: ChildrenProps) => ReactNode\n onSuccess?: (quote: Execute, steps: Execute['steps']) => void\n onValidating?: (quote: Execute) => void\n}\n\nexport const TransactionModalRenderer: FC<Props> = ({\n open,\n slippageTolerance,\n wallet,\n steps,\n quote,\n swapError,\n setSwapError,\n children,\n onSuccess,\n onValidating\n}) => {\n const relayClient = useRelayClient()\n const chainId = quote?.details?.currencyIn?.currency?.chainId || 1\n\n const [progressStep, setProgressStep] = useState(\n TransactionProgressStep.Confirmation\n )\n const [currentStep, setCurrentStep] = useState<\n null | NonNullable<Execute['steps']>['0']\n >()\n const [currentStepItem, setCurrentStepItem] = useState<\n null | NonNullable<NonNullable<Execute['steps']>['0']['items']>['0']\n >()\n const [allTxHashes, setAllTxHashes] = useState<TxHashes>([])\n const [waitingForSteps, setWaitingForSteps] = useState(false)\n const [hasStartedValidation, setHasStartedValidation] = useState(false)\n\n useEffect(() => {\n if (!open) {\n setHasStartedValidation(false)\n }\n }, [open])\n\n useEffect(() => {\n if (swapError) {\n setProgressStep(TransactionProgressStep.Error)\n return\n }\n if (!steps) {\n return\n }\n\n const executableSteps = steps.filter(\n (step) => step.items && step.items.length > 0\n )\n\n let stepCount = executableSteps.length\n let txHashes: TxHashes = []\n let currentStep: NonNullable<Execute['steps']>['0'] | null = null\n let currentStepItem:\n | NonNullable<Execute['steps'][0]['items']>[0]\n | undefined\n\n for (const step of executableSteps) {\n for (const item of step.items || []) {\n if (item.txHashes && item.txHashes.length > 0) {\n txHashes = item.txHashes.concat([...txHashes])\n }\n if (item.internalTxHashes && item.internalTxHashes.length > 0) {\n txHashes = item.internalTxHashes.concat([...txHashes])\n }\n if (item.status === 'incomplete') {\n currentStep = step\n currentStepItem = item\n\n break // Exit the inner loop once the first incomplete item is found\n }\n }\n if (currentStep && currentStepItem) break // Exit the outer loop if the current step and item have been found\n }\n\n setAllTxHashes(txHashes)\n\n if (\n !hasStartedValidation &&\n (txHashes.length > 0 || currentStepItem?.isValidatingSignature == true) &&\n progressStep === TransactionProgressStep.Confirmation\n ) {\n onValidating?.(quote as Execute)\n setHasStartedValidation(true)\n }\n\n if (!currentStep) {\n currentStep = executableSteps[stepCount - 1]\n }\n\n setCurrentStep(currentStep)\n setCurrentStepItem(currentStepItem)\n\n const isBitcoinDestination =\n quote?.details?.currencyOut?.currency?.chainId === 8253038\n\n const allStepsComplete = steps.every(\n (step) =>\n !step.items ||\n step.items.length == 0 ||\n step.items?.every((item) => {\n if (isBitcoinDestination && item.checkStatus === 'submitted') {\n return true\n }\n return item.status === 'complete'\n })\n )\n\n const hasPendingItems = steps.some((step) =>\n step.items?.some((item) => item.checkStatus === 'pending')\n )\n\n const hasSubmittedItems = steps.some((step) =>\n step.items?.some((item) => item.checkStatus === 'submitted')\n )\n\n // Check if any step items are still validating\n const hasValidatingItems = steps.some((step) =>\n step.items?.some(\n (item) =>\n item.isValidatingSignature === true ||\n item.progressState === 'validating'\n )\n )\n\n // Transition to Submitted state when items are pending or submitted\n if (\n (hasPendingItems || hasSubmittedItems) &&\n progressStep === TransactionProgressStep.Confirmation &&\n !hasValidatingItems\n ) {\n setProgressStep(TransactionProgressStep.Submitted)\n onValidating?.(quote as Execute)\n }\n\n // Only show success if all steps are complete\n if (allStepsComplete && progressStep !== TransactionProgressStep.Success) {\n setProgressStep(TransactionProgressStep.Success)\n onSuccess?.(quote as Execute, steps)\n }\n }, [steps, swapError])\n\n const requestId = useMemo(() => extractDepositRequestId(steps), [steps])\n\n // Fetch Success Tx\n const { data: transactions, isInitialLoading: isLoadingTransaction } =\n useRequests(\n (progressStep === TransactionProgressStep.Success ||\n progressStep === TransactionProgressStep.Error) &&\n requestId\n ? { id: requestId }\n : undefined,\n relayClient?.baseApiUrl,\n {\n enabled:\n (progressStep === TransactionProgressStep.Success ||\n progressStep === TransactionProgressStep.Error) &&\n (requestId || allTxHashes[0])\n ? true\n : false,\n refetchInterval(query) {\n if (query.state.dataUpdateCount > 10) {\n return 0\n }\n const transaction = query.state.data?.pages[0].requests?.[0]\n if (!transaction) {\n return 2500\n }\n // If this is a refund but outTxs is not populated yet, keep polling\n const isRefund =\n transaction.status === 'refund' ||\n transaction.data?.refundCurrencyData\n if (\n isRefund &&\n (!transaction.data?.outTxs || transaction.data.outTxs.length === 0)\n ) {\n return 2500\n }\n return 0\n }\n }\n )\n const transaction = transactions[0]\n const { fillTime, seconds } = calculateFillTime(transaction)\n\n const isAutoSlippage = slippageTolerance === undefined\n const timeEstimate = calculatePriceTimeEstimate(quote?.details)\n const _isGasSponsored = isGasSponsored(quote as Execute)\n\n return (\n <>\n {children({\n wallet,\n progressStep,\n setProgressStep,\n currentStep,\n setCurrentStep,\n currentStepItem,\n setCurrentStepItem,\n quote,\n steps,\n waitingForSteps,\n swapError,\n setSwapError,\n allTxHashes,\n setAllTxHashes,\n transaction,\n fillTime,\n seconds,\n requestId,\n isLoadingTransaction,\n isAutoSlippage,\n timeEstimate,\n isGasSponsored: _isGasSponsored,\n currentCheckStatus: currentStepItem?.checkStatus\n })}\n </>\n )\n}\n"]}
1
+ {"version":3,"file":"TransactionModalRenderer.js","sourceRoot":"","sources":["../../../../../src/components/common/TransactionModal/TransactionModalRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type FC,\n useMemo,\n useState,\n useEffect,\n type ReactNode,\n type SetStateAction,\n type Dispatch\n} from 'react'\nimport { type Address } from 'viem'\nimport {\n type AdaptedWallet,\n type Execute,\n type ExecuteStep,\n type ExecuteStepItem\n} from '@relayprotocol/relay-sdk'\nimport {\n calculateFillTime,\n extractDepositRequestId\n} from '../../../utils/relayTransaction.js'\nimport type { Token } from '../../../types/index.js'\nimport { useRequests } from '@relayprotocol/relay-kit-hooks'\nimport { useRelayClient } from '../../../hooks/index.js'\nimport {\n calculatePriceTimeEstimate,\n isGasSponsored\n} from '../../../utils/quote.js'\nexport enum TransactionProgressStep {\n Confirmation,\n Submitted,\n Success,\n Error\n}\n\nexport type TxHashes = {\n txHash: string\n chainId: number\n isBatchTx?: boolean\n}[]\n\nexport type ChildrenProps = {\n wallet?: AdaptedWallet\n progressStep: TransactionProgressStep\n setProgressStep: Dispatch<SetStateAction<TransactionProgressStep>>\n currentStep?: ExecuteStep | null\n setCurrentStep: Dispatch<SetStateAction<ExecuteStep | undefined | null>>\n currentStepItem: ExecuteStepItem | null | undefined\n setCurrentStepItem: Dispatch<\n SetStateAction<ExecuteStepItem | null | undefined>\n >\n quote: Execute | null\n swapError: Error | null\n setSwapError: Dispatch<SetStateAction<Error | null>>\n steps: Execute['steps'] | null\n waitingForSteps: boolean\n allTxHashes: TxHashes\n setAllTxHashes: Dispatch<SetStateAction<TxHashes>>\n transaction: ReturnType<typeof useRequests>['data']['0']\n seconds: number\n fillTime: string\n requestId: string | null\n isLoadingTransaction: boolean\n isAutoSlippage: boolean\n timeEstimate?: { time: number; formattedTime: string }\n isGasSponsored: boolean\n currentCheckStatus?: ExecuteStepItem['checkStatus']\n}\n\ntype Props = {\n open: boolean\n address?: Address | string\n fromToken?: Token\n toToken?: Token\n slippageTolerance?: string\n wallet?: AdaptedWallet\n steps: Execute['steps'] | null\n quote: Execute | null\n swapError: Error | null\n setSwapError: Dispatch<SetStateAction<Error | null>>\n children: (props: ChildrenProps) => ReactNode\n onSuccess?: (quote: Execute, steps: Execute['steps']) => void\n onValidating?: (quote: Execute) => void\n}\n\nexport const TransactionModalRenderer: FC<Props> = ({\n open,\n slippageTolerance,\n wallet,\n steps,\n quote,\n swapError,\n setSwapError,\n children,\n onSuccess,\n onValidating\n}) => {\n const relayClient = useRelayClient()\n const chainId = quote?.details?.currencyIn?.currency?.chainId || 1\n\n const [progressStep, setProgressStep] = useState(\n TransactionProgressStep.Confirmation\n )\n const [currentStep, setCurrentStep] = useState<\n null | NonNullable<Execute['steps']>['0']\n >()\n const [currentStepItem, setCurrentStepItem] = useState<\n null | NonNullable<NonNullable<Execute['steps']>['0']['items']>['0']\n >()\n const [allTxHashes, setAllTxHashes] = useState<TxHashes>([])\n const [waitingForSteps, setWaitingForSteps] = useState(false)\n const [hasStartedValidation, setHasStartedValidation] = useState(false)\n\n useEffect(() => {\n if (!open) {\n setHasStartedValidation(false)\n }\n }, [open])\n\n useEffect(() => {\n if (swapError) {\n setProgressStep(TransactionProgressStep.Error)\n return\n }\n if (!steps) {\n return\n }\n\n const executableSteps = steps.filter(\n (step) => step.items && step.items.length > 0\n )\n\n let stepCount = executableSteps.length\n let txHashes: TxHashes = []\n let currentStep: NonNullable<Execute['steps']>['0'] | null = null\n let currentStepItem:\n | NonNullable<Execute['steps'][0]['items']>[0]\n | undefined\n\n for (const step of executableSteps) {\n for (const item of step.items || []) {\n if (item.txHashes && item.txHashes.length > 0) {\n txHashes = item.txHashes.concat([...txHashes])\n }\n if (item.internalTxHashes && item.internalTxHashes.length > 0) {\n txHashes = item.internalTxHashes.concat([...txHashes])\n }\n if (item.status === 'incomplete') {\n currentStep = step\n currentStepItem = item\n\n break // Exit the inner loop once the first incomplete item is found\n }\n }\n if (currentStep && currentStepItem) break // Exit the outer loop if the current step and item have been found\n }\n\n setAllTxHashes(txHashes)\n\n if (\n !hasStartedValidation &&\n (txHashes.length > 0 || currentStepItem?.isValidatingSignature == true) &&\n progressStep === TransactionProgressStep.Confirmation\n ) {\n onValidating?.(quote as Execute)\n setHasStartedValidation(true)\n }\n\n if (!currentStep) {\n currentStep = executableSteps[stepCount - 1]\n }\n\n setCurrentStep(currentStep)\n setCurrentStepItem(currentStepItem)\n\n const isBitcoinDestination =\n quote?.details?.currencyOut?.currency?.chainId === 8253038\n\n const allStepsComplete = steps.every(\n (step) =>\n !step.items ||\n step.items.length == 0 ||\n step.items?.every((item) => {\n if (isBitcoinDestination && item.checkStatus === 'submitted') {\n return true\n }\n return item.status === 'complete'\n })\n )\n\n const hasPendingItems = steps.some((step) =>\n step.items?.some((item) => item.checkStatus === 'pending')\n )\n\n const hasSubmittedItems = steps.some((step) =>\n step.items?.some((item) => item.checkStatus === 'submitted')\n )\n\n // Check if any step items are still validating\n const hasValidatingItems = steps.some((step) =>\n step.items?.some(\n (item) =>\n item.isValidatingSignature === true ||\n item.progressState === 'validating'\n )\n )\n\n // Transition to Submitted state when items are pending or submitted\n if (\n (hasPendingItems || hasSubmittedItems) &&\n progressStep === TransactionProgressStep.Confirmation &&\n !hasValidatingItems\n ) {\n setProgressStep(TransactionProgressStep.Submitted)\n onValidating?.(quote as Execute)\n }\n\n // Only show success if all steps are complete\n if (allStepsComplete && progressStep !== TransactionProgressStep.Success) {\n setProgressStep(TransactionProgressStep.Success)\n onSuccess?.(quote as Execute, steps)\n }\n }, [steps, swapError])\n\n const requestId = useMemo(() => extractDepositRequestId(steps), [steps])\n\n // Fetch Success Tx\n const { data: transactions, isInitialLoading: isLoadingTransaction } =\n useRequests(\n (progressStep === TransactionProgressStep.Success ||\n progressStep === TransactionProgressStep.Error) &&\n requestId\n ? { id: requestId }\n : undefined,\n relayClient?.baseApiUrl,\n {\n enabled:\n (progressStep === TransactionProgressStep.Success ||\n progressStep === TransactionProgressStep.Error) &&\n (requestId || allTxHashes[0])\n ? true\n : false,\n refetchInterval(query) {\n if (query.state.dataUpdateCount > 10) {\n return 0\n }\n const transaction = query.state.data?.pages[0].requests?.[0]\n if (!transaction) {\n return 2500\n }\n // Keep polling until the request reaches a terminal status so the\n // success view can replace quoted values with the final actual ones\n const isTerminalStatus =\n transaction.status === 'success' ||\n transaction.status === 'failure' ||\n transaction.status === 'refund'\n if (!isTerminalStatus) {\n return 2500\n }\n // If this is a refund but outTxs is not populated yet, keep polling\n const isRefund =\n transaction.status === 'refund' ||\n transaction.data?.refundCurrencyData\n if (\n isRefund &&\n (!transaction.data?.outTxs || transaction.data.outTxs.length === 0)\n ) {\n return 2500\n }\n return 0\n }\n }\n )\n const transaction = transactions[0]\n const { fillTime, seconds } = calculateFillTime(transaction)\n\n const isAutoSlippage = slippageTolerance === undefined\n const timeEstimate = calculatePriceTimeEstimate(quote?.details)\n const _isGasSponsored = isGasSponsored(quote as Execute)\n\n return (\n <>\n {children({\n wallet,\n progressStep,\n setProgressStep,\n currentStep,\n setCurrentStep,\n currentStepItem,\n setCurrentStepItem,\n quote,\n steps,\n waitingForSteps,\n swapError,\n setSwapError,\n allTxHashes,\n setAllTxHashes,\n transaction,\n fillTime,\n seconds,\n requestId,\n isLoadingTransaction,\n isAutoSlippage,\n timeEstimate,\n isGasSponsored: _isGasSponsored,\n currentCheckStatus: currentStepItem?.checkStatus\n })}\n </>\n )\n}\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NormalizedWalletName = exports.WalletChainIncompatible = exports.WalletChainRestricted = void 0;
4
4
  exports.WalletChainRestricted = {
5
5
  phantom: [1, 8453, 792703809, 137, 8253038, 101, 10143, 143, 999],
6
- backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 9286185, 792703809],
6
+ backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 792703809],
7
7
  magiceden: [
8
8
  1, 137, 8453, 33139, 8253038, 792703809, 1329, 2741, 42161, 80094, 56, 43114
9
9
  ],
@@ -22,6 +22,7 @@ exports.WalletChainIncompatible = {
22
22
  coinbase: [4663]
23
23
  };
24
24
  exports.NormalizedWalletName = {
25
+ backpackeclipse: 'backpack',
25
26
  phantomevm: 'phantom',
26
27
  phantombtc: 'phantom',
27
28
  magicedensol: 'magiceden',
@@ -1 +1 @@
1
- {"version":3,"file":"walletCompatibility.js","sourceRoot":"","sources":["../../../src/constants/walletCompatibility.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAA6B;IAC7D,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;IACrE,SAAS,EAAE;QACT,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK;KAC7E;IACD,OAAO,EAAE;QACP,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;QACxE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACnC;IACD,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;CAC/D,CAAA;AAEY,QAAA,uBAAuB,GAA6B;IAC/D,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC;CACjB,CAAA;AAEY,QAAA,oBAAoB,GAA2B;IAC1D,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,WAAW;IAC5B,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,UAAU;CACpB,CAAA","sourcesContent":["export const WalletChainRestricted: Record<string, number[]> = {\n phantom: [1, 8453, 792703809, 137, 8253038, 101, 10143, 143, 999],\n backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 9286185, 792703809],\n magiceden: [\n 1, 137, 8453, 33139, 8253038, 792703809, 1329, 2741, 42161, 80094, 56, 43114\n ],\n uniswap: [\n 1, 130, 42161, 43114, 8453, 81457, 56, 42220, 10, 137, 480, 324, 7777777,\n 4663, 59144, 143, 1868, 4326, 4217\n ],\n abstract: [2741],\n ronin: [1, 56, 137, 42161, 8453, 2020],\n porto: [8453, 42161, 56, 42220, 1, 10, 137, 80094],\n robinhood: [1, 10, 137, 4663, 8453, 42161, 8253038, 792703809]\n}\n\nexport const WalletChainIncompatible: Record<string, number[]> = {\n binance: [7777777, 8453],\n binanceus: [7777777, 8453],\n coinbase: [4663]\n}\n\nexport const NormalizedWalletName: Record<string, string> = {\n phantomevm: 'phantom',\n phantombtc: 'phantom',\n magicedensol: 'magiceden',\n roninwallet: 'ronin',\n robinhoodwallet: 'robinhood',\n uniswapwallet: 'uniswap',\n portoevm: 'porto',\n trusttron: 'trust',\n coinbasewalletevm: 'coinbase',\n baseevm: 'coinbase'\n}\n"]}
1
+ {"version":3,"file":"walletCompatibility.js","sourceRoot":"","sources":["../../../src/constants/walletCompatibility.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAA6B;IAC7D,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;IAC5D,SAAS,EAAE;QACT,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK;KAC7E;IACD,OAAO,EAAE;QACP,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;QACxE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACnC;IACD,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;CAC/D,CAAA;AAEY,QAAA,uBAAuB,GAA6B;IAC/D,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC;CACjB,CAAA;AAEY,QAAA,oBAAoB,GAA2B;IAC1D,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,WAAW;IAC5B,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,UAAU;CACpB,CAAA","sourcesContent":["export const WalletChainRestricted: Record<string, number[]> = {\n phantom: [1, 8453, 792703809, 137, 8253038, 101, 10143, 143, 999],\n backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 792703809],\n magiceden: [\n 1, 137, 8453, 33139, 8253038, 792703809, 1329, 2741, 42161, 80094, 56, 43114\n ],\n uniswap: [\n 1, 130, 42161, 43114, 8453, 81457, 56, 42220, 10, 137, 480, 324, 7777777,\n 4663, 59144, 143, 1868, 4326, 4217\n ],\n abstract: [2741],\n ronin: [1, 56, 137, 42161, 8453, 2020],\n porto: [8453, 42161, 56, 42220, 1, 10, 137, 80094],\n robinhood: [1, 10, 137, 4663, 8453, 42161, 8253038, 792703809]\n}\n\nexport const WalletChainIncompatible: Record<string, number[]> = {\n binance: [7777777, 8453],\n binanceus: [7777777, 8453],\n coinbase: [4663]\n}\n\nexport const NormalizedWalletName: Record<string, string> = {\n backpackeclipse: 'backpack',\n phantomevm: 'phantom',\n phantombtc: 'phantom',\n magicedensol: 'magiceden',\n roninwallet: 'ronin',\n robinhoodwallet: 'robinhood',\n uniswapwallet: 'uniswap',\n portoevm: 'porto',\n trusttron: 'trust',\n coinbasewalletevm: 'coinbase',\n baseevm: 'coinbase'\n}\n"]}
@@ -7,11 +7,12 @@ const getRequestCurrencies = (transaction) => {
7
7
  const actual = route?.actual;
8
8
  const quoted = route?.quoted;
9
9
  const currencyIn = actual?.origin?.inputCurrency ?? quoted?.origin?.inputCurrency;
10
- const currencyOut = actual?.destination?.outputCurrency ??
10
+ const settledActual = transaction?.status === 'success' ? actual : undefined;
11
+ const currencyOut = settledActual?.destination?.outputCurrency ??
11
12
  quoted?.destination?.outputCurrency ??
12
- actual?.origin?.outputCurrency ??
13
+ settledActual?.origin?.outputCurrency ??
13
14
  quoted?.origin?.outputCurrency;
14
- const currencyGasTopup = actual?.destination?.currencyGasTopup;
15
+ const currencyGasTopup = settledActual?.destination?.currencyGasTopup;
15
16
  return { currencyIn, currencyOut, currencyGasTopup };
16
17
  };
17
18
  exports.getRequestCurrencies = getRequestCurrencies;
@@ -1 +1 @@
1
- {"version":3,"file":"relayTransaction.js","sourceRoot":"","sources":["../../../src/utils/relayTransaction.ts"],"names":[],"mappings":";;;AAEA,uCAAyC;AAelC,MAAM,oBAAoB,GAAG,CAClC,WAAqC,EAKrC,EAAE;IACF,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,CAAA;IACtC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAA;IAC5B,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAA;IAE5B,MAAM,UAAU,GACd,MAAM,EAAE,MAAM,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,EAAE,aAAa,CAAA;IAEhE,MAAM,WAAW,GACf,MAAM,EAAE,WAAW,EAAE,cAAc;QACnC,MAAM,EAAE,WAAW,EAAE,cAAc;QACnC,MAAM,EAAE,MAAM,EAAE,cAAc;QAC9B,MAAM,EAAE,MAAM,EAAE,cAAc,CAAA;IAEhC,MAAM,gBAAgB,GAAG,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAA;IAE9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA;AACtD,CAAC,CAAA;AAvBY,QAAA,oBAAoB,wBAuBhC;AAEM,MAAM,gBAAgB,GAAG,CAC9B,WAAqC,EACrC,MAA2B,EAC3B,EAAE;IACF,MAAM,OAAO,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAA;IACtD,OAAO,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;AAC7D,CAAC,CAAA;AANY,QAAA,gBAAgB,oBAM5B;AAEM,MAAM,cAAc,GAAG,CAC5B,WAAqC,EACrC,MAA2B,EAC3B,EAAE;IACF,MAAM,OAAO,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAA;IACvD,OAAO,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;AAC7D,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B;AAEM,MAAM,iBAAiB,GAAG,CAAC,WAAqC,EAAE,EAAE;IACzE,IAAI,QAAQ,GAAG,GAAG,CAAA;IAClB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,WAAW,EAAE,MAAM,KAAK,SAAS,IAAI,WAAW,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3E,MAAM,cAAc,GAClB,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAmB,CAAC,IAAI,IAAI,CAAA;QACvE,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC5E,MAAM,eAAe,GACnB,WAAW,EAAE,IAAI,EAAE,MAAM;YACvB,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YAC9B,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAmB,CAAC,IAAI,IAAI,CAAA;QAEjD,MAAM,cAAc,GAClB,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAA;QAEV,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;YACvC,OAAO,GAAG,cAAc,GAAG,gBAAgB,CAAA;YAE3C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,QAAQ,GAAG,GAAG,CAAA;gBACd,OAAO,GAAG,CAAC,CAAA;YACb,CAAC;iBAAM,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;gBACxB,QAAQ,GAAG,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,GAAG,OAAO,GAAG,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC9B,CAAC,CAAA;AA/BY,QAAA,iBAAiB,qBA+B7B;AAEM,MAAM,uBAAuB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACzE,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAA;IAG/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,IAAI,IAAI,CAAA;AAChE,CAAC,CAAA;AALY,QAAA,uBAAuB,2BAKnC;AAEY,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;CACrB,CAAA","sourcesContent":["import { type Execute, RelayClient } from '@relayprotocol/relay-sdk'\nimport { type RelayTransaction } from '../types/index.js'\nimport { formatSeconds } from './time.js'\n\ntype RequestRoute = NonNullable<NonNullable<RelayTransaction['data']>['route']>\ntype RouteAmount = NonNullable<\n NonNullable<NonNullable<RequestRoute['quoted']>['origin']>['inputCurrency']\n>\n\n/**\n * Resolves the input/output currency amounts to display for a request from\n * `data.route`, preferring actual over quoted values.\n *\n * - currencyIn: the token deposited on the origin side.\n * - currencyOut: the token received, preferring the destination output and\n * falling back to the origin output (e.g. same-chain swaps).\n */\nexport const getRequestCurrencies = (\n transaction?: RelayTransaction | null\n): {\n currencyIn?: RouteAmount | null\n currencyOut?: RouteAmount | null\n currencyGasTopup?: RouteAmount | null\n} => {\n const route = transaction?.data?.route\n const actual = route?.actual\n const quoted = route?.quoted\n\n const currencyIn =\n actual?.origin?.inputCurrency ?? quoted?.origin?.inputCurrency\n\n const currencyOut =\n actual?.destination?.outputCurrency ??\n quoted?.destination?.outputCurrency ??\n actual?.origin?.outputCurrency ??\n quoted?.origin?.outputCurrency\n\n const currencyGasTopup = actual?.destination?.currencyGasTopup\n\n return { currencyIn, currencyOut, currencyGasTopup }\n}\n\nexport const extractFromChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.inTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const extractToChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.outTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const calculateFillTime = (transaction?: RelayTransaction | null) => {\n let fillTime = '-'\n let seconds = 0\n if (transaction?.status !== 'pending' && transaction?.status !== 'waiting') {\n const inTxTimestamps =\n transaction?.data?.inTxs?.map((tx) => tx.timestamp as number) ?? null\n const txStartTimestamp = inTxTimestamps ? Math.min(...inTxTimestamps) : null\n const outTxTimestamps =\n transaction?.data?.outTxs\n ?.filter((tx) => tx.timestamp)\n ?.map((tx) => tx.timestamp as number) ?? null\n\n const txEndTimestamp =\n outTxTimestamps && outTxTimestamps.length > 0\n ? Math.max(...outTxTimestamps)\n : null\n\n if (txStartTimestamp && txEndTimestamp) {\n seconds = txEndTimestamp - txStartTimestamp\n // Guard against negative time (invalid timestamps or timing issues)\n if (seconds < 0) {\n fillTime = '-'\n seconds = 0\n } else if (seconds > 60) {\n fillTime = formatSeconds(seconds)\n } else {\n fillTime = `${seconds}s`\n }\n }\n }\n return { fillTime, seconds }\n}\n\nexport const extractDepositRequestId = (steps?: Execute['steps'] | null) => {\n if (!steps?.length) return null\n\n // Find the first step that has a requestId\n return steps.find((step) => step.requestId)?.requestId || null\n}\n\nexport const statusToText = {\n pending: 'Pending',\n failure: 'Failure',\n received: 'Received',\n success: 'Success',\n fallback: 'Refunded'\n}\n"]}
1
+ {"version":3,"file":"relayTransaction.js","sourceRoot":"","sources":["../../../src/utils/relayTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Execute, RelayClient } from '@relayprotocol/relay-sdk'\nimport { type RelayTransaction } from '../types/index.js'\nimport { formatSeconds } from './time.js'\n\ntype RequestRoute = NonNullable<NonNullable<RelayTransaction['data']>['route']>\ntype RouteAmount = NonNullable<\n NonNullable<NonNullable<RequestRoute['quoted']>['origin']>['inputCurrency']\n>\n\n/**\n * Resolves the input/output currency amounts to display for a request from\n * `data.route`, preferring actual over quoted values.\n *\n * - currencyIn: the token deposited on the origin side.\n * - currencyOut: the token received, preferring the destination output and\n * falling back to the origin output (e.g. same-chain swaps).\n *\n * `route.actual` is populated progressively while a request is in flight, so\n * before the request status is `success` it can hold provisional values (e.g.\n * the intermediate origin swap output). Output-side actual values are only\n * used once the request status is `success`; until then the quoted values are\n * returned so the UI never presents a provisional token/amount as received.\n */\nexport const getRequestCurrencies = (\n transaction?: RelayTransaction | null\n): {\n currencyIn?: RouteAmount | null\n currencyOut?: RouteAmount | null\n currencyGasTopup?: RouteAmount | null\n} => {\n const route = transaction?.data?.route\n const actual = route?.actual\n const quoted = route?.quoted\n\n const currencyIn =\n actual?.origin?.inputCurrency ?? quoted?.origin?.inputCurrency\n\n // Only trust output-side actual values once the request has succeeded\n const settledActual = transaction?.status === 'success' ? actual : undefined\n\n const currencyOut =\n settledActual?.destination?.outputCurrency ??\n quoted?.destination?.outputCurrency ??\n settledActual?.origin?.outputCurrency ??\n quoted?.origin?.outputCurrency\n\n const currencyGasTopup = settledActual?.destination?.currencyGasTopup\n\n return { currencyIn, currencyOut, currencyGasTopup }\n}\n\nexport const extractFromChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.inTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const extractToChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.outTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const calculateFillTime = (transaction?: RelayTransaction | null) => {\n let fillTime = '-'\n let seconds = 0\n if (transaction?.status !== 'pending' && transaction?.status !== 'waiting') {\n const inTxTimestamps =\n transaction?.data?.inTxs?.map((tx) => tx.timestamp as number) ?? null\n const txStartTimestamp = inTxTimestamps ? Math.min(...inTxTimestamps) : null\n const outTxTimestamps =\n transaction?.data?.outTxs\n ?.filter((tx) => tx.timestamp)\n ?.map((tx) => tx.timestamp as number) ?? null\n\n const txEndTimestamp =\n outTxTimestamps && outTxTimestamps.length > 0\n ? Math.max(...outTxTimestamps)\n : null\n\n if (txStartTimestamp && txEndTimestamp) {\n seconds = txEndTimestamp - txStartTimestamp\n // Guard against negative time (invalid timestamps or timing issues)\n if (seconds < 0) {\n fillTime = '-'\n seconds = 0\n } else if (seconds > 60) {\n fillTime = formatSeconds(seconds)\n } else {\n fillTime = `${seconds}s`\n }\n }\n }\n return { fillTime, seconds }\n}\n\nexport const extractDepositRequestId = (steps?: Execute['steps'] | null) => {\n if (!steps?.length) return null\n\n // Find the first step that has a requestId\n return steps.find((step) => step.requestId)?.requestId || null\n}\n\nexport const statusToText = {\n pending: 'Pending',\n failure: 'Failure',\n received: 'Received',\n success: 'Success',\n fallback: 'Refunded'\n}\n"]}
@@ -8,7 +8,7 @@ exports.solana = {
8
8
  exports.eclipse = {
9
9
  id: 9286185
10
10
  };
11
- exports.eclipseWallets = ['backpackeclipse'];
11
+ exports.eclipseWallets = ['nightlyeclipse', 'okxeclipse'];
12
12
  function isSolanaAddress(address) {
13
13
  return exports.solanaAddressRegex.test(address);
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../src/utils/solana.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAC7B,gHAAgH,CAAA;AACrG,QAAA,MAAM,GAAG;IACpB,EAAE,EAAE,SAAS;CACd,CAAA;AACY,QAAA,OAAO,GAAG;IACrB,EAAE,EAAE,OAAO;CACZ,CAAA;AACY,QAAA,cAAc,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAEjD,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,0BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC;AAFD,0CAEC","sourcesContent":["export const solanaAddressRegex =\n /^(?!T[1-9A-HJ-NP-Za-km-z]{33}$)(?!0x[0-9a-fA-F]{40}$)(?!0x[0-9a-fA-F]{64}$)(?!bc1)[1-9A-HJ-NP-Za-km-z]{32,44}$/\nexport const solana = {\n id: 792703809\n}\nexport const eclipse = {\n id: 9286185\n}\nexport const eclipseWallets = ['backpackeclipse']\n\nexport function isSolanaAddress(address: string): boolean {\n return solanaAddressRegex.test(address)\n}\n"]}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../src/utils/solana.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAC7B,gHAAgH,CAAA;AACrG,QAAA,MAAM,GAAG;IACpB,EAAE,EAAE,SAAS;CACd,CAAA;AACY,QAAA,OAAO,GAAG;IACrB,EAAE,EAAE,OAAO;CACZ,CAAA;AACY,QAAA,cAAc,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;AAE9D,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,0BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC;AAFD,0CAEC","sourcesContent":["export const solanaAddressRegex =\n /^(?!T[1-9A-HJ-NP-Za-km-z]{33}$)(?!0x[0-9a-fA-F]{40}$)(?!0x[0-9a-fA-F]{64}$)(?!bc1)[1-9A-HJ-NP-Za-km-z]{32,44}$/\nexport const solana = {\n id: 792703809\n}\nexport const eclipse = {\n id: 9286185\n}\nexport const eclipseWallets = ['nightlyeclipse', 'okxeclipse']\n\nexport function isSolanaAddress(address: string): boolean {\n return solanaAddressRegex.test(address)\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UI_VERSION = void 0;
4
- exports.UI_VERSION = '11.0.3';
4
+ exports.UI_VERSION = '11.0.4';
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["export const UI_VERSION = '11.0.3';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["export const UI_VERSION = '11.0.4';\n"]}