@stridge/kit 0.1.0-alpha.6 → 0.1.0-alpha.60
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.
- package/README.md +22 -6
- package/dist/KitProvider.d.ts +61 -0
- package/dist/KitProvider.js +1 -1
- package/dist/_internal/activity/driver/index.d.ts +3 -0
- package/dist/_internal/activity/driver/index.js +1 -0
- package/dist/_internal/deposit/driver/index.d.ts +2 -2
- package/dist/_internal/drivers/stridge/index.d.ts +4 -2
- package/dist/_internal/drivers/stridge/index.js +1 -1
- package/dist/_internal/drivers/stridge-mock/index.d.ts +2 -1
- package/dist/_internal/drivers/stridge-mock/index.js +1 -1
- package/dist/_internal/withdraw/driver/index.d.ts +2 -2
- package/dist/activity/compound/index.d.ts +19 -0
- package/dist/activity/compound/index.js +1 -0
- package/dist/activity/dialog/index.d.ts +4 -0
- package/dist/activity/dialog/index.js +1 -0
- package/dist/activity/widgets/index.d.ts +5 -0
- package/dist/activity/widgets/index.js +1 -0
- package/dist/deposit/compound/index.d.ts +22 -15
- package/dist/deposit/compound/index.js +1 -1
- package/dist/deposit/dialog/index.d.ts +2 -1
- package/dist/deposit/widgets/index.d.ts +16 -0
- package/dist/deposit/widgets/index.js +1 -0
- package/dist/drivers/stridge/catalog.d.ts +54 -0
- package/dist/drivers/stridge/catalog.js +1 -0
- package/dist/drivers/stridge/createStridgeActivityDriver.d.ts +44 -0
- package/dist/drivers/stridge/createStridgeActivityDriver.js +1 -0
- package/dist/drivers/stridge/createStridgeDepositDriver.d.ts +10 -1
- package/dist/drivers/stridge/createStridgeDepositDriver.js +1 -1
- package/dist/drivers/stridge/createStridgeWithdrawDriver.d.ts +37 -14
- package/dist/drivers/stridge/createStridgeWithdrawDriver.js +1 -1
- package/dist/drivers/stridge/internal/ensureWalletChain.js +1 -0
- package/dist/drivers/stridge/internal/pollOnce.js +1 -1
- package/dist/drivers/stridge/internal/resolveAddEthereumChain.js +1 -0
- package/dist/drivers/stridge/internal/retry.js +1 -0
- package/dist/drivers/stridge/internal/supportedChains.js +1 -0
- package/dist/drivers/stridge/types.d.ts +20 -14
- package/dist/drivers/stridge/types.js +1 -1
- package/dist/drivers/stridge/wagmiSigner.js +1 -1
- package/dist/drivers/stridge-mock/createStridgeMockActivityDriver.d.ts +44 -0
- package/dist/drivers/stridge-mock/createStridgeMockActivityDriver.js +1 -0
- package/dist/drivers/stridge-mock/createStridgeMockDriver.d.ts +2 -2
- package/dist/drivers/stridge-mock/createStridgeMockDriver.js +1 -1
- package/dist/drivers/stridge-mock/createStridgeMockWithdrawDriver.d.ts +15 -3
- package/dist/drivers/stridge-mock/createStridgeMockWithdrawDriver.js +1 -1
- package/dist/drivers/stridge-mock/fixtures.d.ts +14 -12
- package/dist/drivers/stridge-mock/fixtures.js +1 -1
- package/dist/events/bus/createBus.d.ts +26 -0
- package/dist/events/bus/createBus.js +1 -0
- package/dist/events/bus/flowIdRegistry.d.ts +17 -0
- package/dist/events/bus/flowIdRegistry.js +1 -0
- package/dist/events/bus/index.js +1 -0
- package/dist/events/bus/metadata.js +1 -0
- package/dist/events/context.js +1 -0
- package/dist/events/emit/index.js +1 -0
- package/dist/events/emit/mapFailure.js +1 -0
- package/dist/events/emit/useActivityEmissions.js +1 -0
- package/dist/events/emit/useDepositEmissions.js +1 -0
- package/dist/events/emit/useKitEmitter.js +1 -0
- package/dist/events/emit/useWithdrawEmissions.js +1 -0
- package/dist/events/hooks/index.d.ts +6 -0
- package/dist/events/hooks/index.js +1 -0
- package/dist/events/hooks/useCurrentFlowId.d.ts +6 -0
- package/dist/events/hooks/useCurrentFlowId.js +1 -0
- package/dist/events/hooks/useStableHandler.js +1 -0
- package/dist/events/hooks/useStridgeEvent.d.ts +9 -0
- package/dist/events/hooks/useStridgeEvent.js +1 -0
- package/dist/events/hooks/useStridgeEventBus.d.ts +34 -0
- package/dist/events/hooks/useStridgeEventBus.js +1 -0
- package/dist/events/hooks/useStridgeEvents.d.ts +7 -0
- package/dist/events/hooks/useStridgeEvents.js +1 -0
- package/dist/events/hooks/useStridgeFlowEvent.d.ts +8 -0
- package/dist/events/hooks/useStridgeFlowEvent.js +1 -0
- package/dist/events/hooks/useStridgeFlowEvents.d.ts +6 -0
- package/dist/events/hooks/useStridgeFlowEvents.js +1 -0
- package/dist/events/index.d.ts +17 -0
- package/dist/events/index.js +1 -0
- package/dist/events/publish.js +1 -0
- package/dist/events/redact.d.ts +34 -0
- package/dist/events/redact.js +1 -0
- package/dist/events/types/activity.d.ts +53 -0
- package/dist/events/types/deposit.d.ts +235 -0
- package/dist/events/types/envelope.d.ts +145 -0
- package/dist/events/types/index.d.ts +32 -0
- package/dist/events/types/kit.d.ts +23 -0
- package/dist/events/types/withdraw.d.ts +150 -0
- package/dist/flows/activity/compound/ActivityFlow.d.ts +46 -0
- package/dist/flows/activity/compound/ActivityFlow.js +1 -0
- package/dist/flows/activity/compound/components/Boundary.d.ts +29 -0
- package/dist/flows/activity/compound/components/Boundary.js +1 -0
- package/dist/flows/activity/compound/components/Steps.d.ts +24 -0
- package/dist/flows/activity/compound/components/Steps.js +1 -0
- package/dist/flows/activity/dialog/ActivityDialog.d.ts +55 -0
- package/dist/flows/activity/dialog/ActivityDialog.js +1 -0
- package/dist/flows/activity/dialog/ActivityFlowBoundary.d.ts +1 -0
- package/dist/flows/activity/dialog/ActivityFlowBoundary.js +1 -0
- package/dist/flows/activity/driver/context.d.ts +38 -0
- package/dist/flows/activity/driver/context.js +1 -0
- package/dist/flows/activity/driver/types.d.ts +58 -0
- package/dist/flows/activity/orchestrator/controller.d.ts +11 -0
- package/dist/flows/activity/orchestrator/controller.js +1 -0
- package/dist/flows/activity/orchestrator/index.d.ts +4 -0
- package/dist/flows/activity/orchestrator/index.js +1 -0
- package/dist/flows/activity/orchestrator/reducer.d.ts +1 -0
- package/dist/flows/activity/orchestrator/reducer.js +1 -0
- package/dist/flows/activity/orchestrator/types.d.ts +71 -0
- package/dist/flows/activity/orchestrator/useActivity.d.ts +94 -0
- package/dist/flows/activity/orchestrator/useActivity.js +1 -0
- package/dist/flows/activity/widgets/ActivityDetail.d.ts +41 -0
- package/dist/flows/activity/widgets/ActivityDetail.js +1 -0
- package/dist/flows/activity/widgets/ActivityList.d.ts +38 -0
- package/dist/flows/activity/widgets/ActivityList.js +1 -0
- package/dist/flows/activity/widgets/useStandaloneActivitySource.js +1 -0
- package/dist/flows/deposit/bindings/DepositBindings.d.ts +87 -0
- package/dist/flows/deposit/bindings/DepositBindings.js +1 -0
- package/dist/flows/deposit/bindings/index.d.ts +1 -0
- package/dist/flows/deposit/bindings/index.js +1 -0
- package/dist/flows/deposit/dialog/DepositBootstrapErrorState.js +1 -1
- package/dist/flows/deposit/dialog/DepositDialog.d.ts +26 -79
- package/dist/flows/deposit/dialog/DepositDialog.js +1 -1
- package/dist/flows/deposit/dialog/WalletRequiredState.js +1 -0
- package/dist/flows/deposit/dialog/WalletRequiredState.styles.js +1 -0
- package/dist/flows/deposit/driver/payloads.d.ts +52 -5
- package/dist/flows/deposit/driver/transformers/balanceToBalancesPayload.d.ts +2 -0
- package/dist/flows/deposit/driver/transformers/balanceToBalancesPayload.js +1 -1
- package/dist/flows/deposit/driver/transformers/index.d.ts +1 -0
- package/dist/flows/deposit/driver/transformers/quoteToPayload.d.ts +2 -0
- package/dist/flows/deposit/driver/transformers/settlementToPayload.d.ts +25 -0
- package/dist/flows/deposit/driver/transformers/settlementToPayload.js +1 -1
- package/dist/flows/deposit/driver/transformers/startToAddressesPayload.d.ts +2 -0
- package/dist/flows/deposit/driver/transformers/startToAddressesPayload.js +1 -1
- package/dist/flows/deposit/driver/transformers/startToBrandPayload.d.ts +1 -0
- package/dist/flows/deposit/driver/transformers/startToTargetPayload.d.ts +2 -0
- package/dist/flows/deposit/driver/transformers/startToTargetPayload.js +1 -1
- package/dist/flows/deposit/driver/transformers/walletAddressToWalletPayload.d.ts +1 -0
- package/dist/flows/deposit/driver/types.d.ts +37 -4
- package/dist/flows/deposit/orchestrator/controller.js +1 -1
- package/dist/flows/deposit/orchestrator/index.d.ts +5 -0
- package/dist/flows/deposit/orchestrator/reducer.d.ts +1 -0
- package/dist/flows/deposit/orchestrator/reducer.js +1 -1
- package/dist/flows/deposit/orchestrator/types.d.ts +228 -7
- package/dist/flows/deposit/orchestrator/useDeposit.d.ts +45 -1
- package/dist/flows/deposit/orchestrator/useDeposit.js +1 -1
- package/dist/flows/deposit/shared/cash.d.ts +20 -0
- package/dist/flows/deposit/shared/cash.js +1 -0
- package/dist/flows/deposit/widgets/activity/DepositActivityDetail.d.ts +40 -0
- package/dist/flows/deposit/widgets/activity/DepositActivityDetail.js +1 -0
- package/dist/flows/deposit/widgets/activity/DepositActivityList.d.ts +38 -0
- package/dist/flows/deposit/widgets/activity/DepositActivityList.js +1 -0
- package/dist/flows/deposit/widgets/activity/index.d.ts +2 -0
- package/dist/flows/deposit/widgets/activity/index.js +1 -0
- package/dist/flows/deposit/widgets/activity/useDepositActivitySource.js +1 -0
- package/dist/flows/deposit/widgets/amount-entry/AmountEntry.d.ts +32 -5
- package/dist/flows/deposit/widgets/amount-entry/AmountEntry.js +1 -1
- package/dist/flows/deposit/widgets/amount-entry/footerIntent.js +1 -0
- package/dist/flows/deposit/widgets/asset-picker/AssetPicker.d.ts +24 -4
- package/dist/flows/deposit/widgets/asset-picker/AssetPicker.js +1 -1
- package/dist/flows/deposit/widgets/cash-amount-entry/CashAmountEntry.d.ts +71 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/CashAmountEntry.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.d.ts +69 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.slots.d.ts +16 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.slots.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.styles.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/HeroLabel.d.ts +13 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/HeroLabel.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/MethodChip.d.ts +18 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/MethodChip.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/ReceiveChip.d.ts +14 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/ReceiveChip.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/context.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/index.d.ts +3 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/index.js +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/compound/types.d.ts +42 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/index.d.ts +1 -0
- package/dist/flows/deposit/widgets/cash-amount-entry/index.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/CashConfirm.d.ts +63 -0
- package/dist/flows/deposit/widgets/cash-confirm/CashConfirm.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.d.ts +54 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.slots.d.ts +33 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.slots.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.styles.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/cashConfirmDimensions.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/ApplePayBody.d.ts +15 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/ApplePayBody.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/Body.d.ts +22 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/Body.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/BodyLabel.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardBody.d.ts +16 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardBody.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.icons.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.keys.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.state.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.styles.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/GooglePayBody.d.ts +16 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/GooglePayBody.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/Header.d.ts +21 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/Header.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/Summary.d.ts +17 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/Summary.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/components/cardFormat.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/context.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/index.d.ts +3 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/index.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/compound/types.d.ts +66 -0
- package/dist/flows/deposit/widgets/cash-confirm/index.d.ts +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/index.js +1 -0
- package/dist/flows/deposit/widgets/cash-confirm/mocks.js +1 -0
- package/dist/flows/deposit/widgets/confirm-deposit/ConfirmDeposit.d.ts +37 -4
- package/dist/flows/deposit/widgets/confirm-deposit/ConfirmDeposit.js +1 -1
- package/dist/flows/deposit/widgets/deposit/Deposit.d.ts +39 -4
- package/dist/flows/deposit/widgets/deposit/Deposit.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/Deposit.d.ts +58 -1
- package/dist/flows/deposit/widgets/deposit/compound/Deposit.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/Deposit.slots.d.ts +6 -0
- package/dist/flows/deposit/widgets/deposit/compound/Deposit.slots.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/Deposit.styles.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/components/Boundary.d.ts +29 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Boundary.js +1 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Guards.d.ts +28 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Guards.js +1 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Header.d.ts +11 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Header.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/components/Method.d.ts +7 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Method.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/components/MethodSection.d.ts +40 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/MethodSection.js +1 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Methods.d.ts +16 -9
- package/dist/flows/deposit/widgets/deposit/compound/components/Methods.js +1 -1
- package/dist/flows/deposit/widgets/deposit/compound/components/Rail.d.ts +18 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Rail.js +1 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/RailPicker.d.ts +43 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/RailPicker.js +1 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Steps.d.ts +24 -0
- package/dist/flows/deposit/widgets/deposit/compound/components/Steps.js +1 -0
- package/dist/flows/deposit/widgets/deposit/compound/index.d.ts +2 -1
- package/dist/flows/deposit/widgets/deposit/compound/types.d.ts +106 -4
- package/dist/flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.d.ts +41 -1
- package/dist/flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.js +1 -1
- package/dist/flows/deposit/widgets/deposit-status-banner/compound/DepositStatusBanner.js +1 -1
- package/dist/flows/deposit/widgets/deposit-status-banner/compound/components/Hero.js +1 -1
- package/dist/flows/deposit/widgets/deposit-status-banner/compound/components/PrimaryAction.js +1 -1
- package/dist/flows/deposit/widgets/deposit-status-banner/compound/types.d.ts +5 -5
- package/dist/flows/deposit/widgets/error-state/ErrorState.d.ts +39 -4
- package/dist/flows/deposit/widgets/error-state/ErrorState.js +1 -1
- package/dist/flows/deposit/widgets/processing-state/ProcessingState.d.ts +30 -4
- package/dist/flows/deposit/widgets/processing-state/ProcessingState.js +1 -1
- package/dist/flows/deposit/widgets/success-state/SuccessState.d.ts +38 -4
- package/dist/flows/deposit/widgets/success-state/SuccessState.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/TransferCrypto.d.ts +34 -3
- package/dist/flows/deposit/widgets/transfer-crypto/TransferCrypto.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/TransferCrypto.d.ts +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/TransferCrypto.styles.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Address.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Disclosure.d.ts +5 -2
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Disclosure.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Header.d.ts +6 -0
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Header.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/QrCode.d.ts +4 -10
- package/dist/flows/deposit/widgets/transfer-crypto/compound/components/QrCode.js +1 -1
- package/dist/flows/deposit/widgets/transfer-crypto/compound/types.d.ts +16 -2
- package/dist/flows/shared/transformers/computeQuoteAttrs.d.ts +1 -0
- package/dist/flows/shared/transformers/index.d.ts +1 -0
- package/dist/flows/shared/transformers/pickRelevantSettlement.d.ts +1 -0
- package/dist/flows/shared/transformers/pickRelevantSettlement.js +1 -1
- package/dist/flows/shared/transformers/testnets.js +1 -0
- package/dist/flows/withdraw/bindings/WithdrawBindings.d.ts +92 -0
- package/dist/flows/withdraw/bindings/WithdrawBindings.js +1 -0
- package/dist/flows/withdraw/bindings/index.d.ts +1 -0
- package/dist/flows/withdraw/bindings/index.js +1 -0
- package/dist/flows/withdraw/dialog/WithdrawDialog.d.ts +44 -71
- package/dist/flows/withdraw/dialog/WithdrawDialog.js +1 -1
- package/dist/flows/withdraw/driver/dto.d.ts +8 -7
- package/dist/flows/withdraw/driver/payloads.d.ts +16 -1
- package/dist/flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js +1 -1
- package/dist/flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js +1 -1
- package/dist/flows/withdraw/driver/types.d.ts +77 -14
- package/dist/flows/withdraw/orchestrator/controller.js +1 -1
- package/dist/flows/withdraw/orchestrator/index.d.ts +1 -1
- package/dist/flows/withdraw/orchestrator/reducer.js +1 -1
- package/dist/flows/withdraw/orchestrator/types.d.ts +218 -35
- package/dist/flows/withdraw/orchestrator/useWithdraw.d.ts +36 -1
- package/dist/flows/withdraw/orchestrator/useWithdraw.js +1 -1
- package/dist/flows/withdraw/widgets/activity/WithdrawActivityDetail.d.ts +39 -0
- package/dist/flows/withdraw/widgets/activity/WithdrawActivityDetail.js +1 -0
- package/dist/flows/withdraw/widgets/activity/WithdrawActivityList.d.ts +36 -0
- package/dist/flows/withdraw/widgets/activity/WithdrawActivityList.js +1 -0
- package/dist/flows/withdraw/widgets/activity/index.d.ts +2 -0
- package/dist/flows/withdraw/widgets/activity/index.js +1 -0
- package/dist/flows/withdraw/widgets/activity/useWithdrawActivitySource.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.d.ts +60 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.slots.d.ts +13 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.slots.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/components/Boundary.d.ts +29 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/components/Boundary.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/components/Guards.d.ts +25 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/components/Guards.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/components/Steps.d.ts +27 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/components/Steps.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/index.d.ts +3 -0
- package/dist/flows/withdraw/widgets/withdraw/compound/index.js +1 -0
- package/dist/flows/withdraw/widgets/withdraw-error/WithdrawError.d.ts +45 -2
- package/dist/flows/withdraw/widgets/withdraw-error/WithdrawError.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-form/WithdrawForm.d.ts +32 -12
- package/dist/flows/withdraw/widgets/withdraw-form/WithdrawForm.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-form/compound/WithdrawForm.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Body.d.ts +7 -6
- package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Header.d.ts +6 -1
- package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Header.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-form/compound/components/RecipientField.d.ts +7 -5
- package/dist/flows/withdraw/widgets/withdraw-form/compound/components/RecipientField.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-form/compound/types.d.ts +15 -5
- package/dist/flows/withdraw/widgets/withdraw-form/validation.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-in-progress/WithdrawInProgress.d.ts +39 -3
- package/dist/flows/withdraw/widgets/withdraw-in-progress/WithdrawInProgress.js +1 -1
- package/dist/flows/withdraw/widgets/withdraw-success/WithdrawSuccess.d.ts +46 -2
- package/dist/flows/withdraw/widgets/withdraw-success/WithdrawSuccess.js +1 -1
- package/dist/format/index.d.ts +2 -1
- package/dist/format/index.js +1 -1
- package/dist/i18n/index.d.ts +5 -4
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/locales/ar.js +1 -1
- package/dist/i18n/locales/es.js +1 -1
- package/dist/i18n/locales/source-keys.d.ts +12 -0
- package/dist/i18n/locales/source-keys.js +0 -0
- package/dist/icons/index.d.ts +12 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +36 -11
- package/dist/index.js +1 -1
- package/dist/package.js +1 -1
- package/dist/scope/KitPortalScope.js +1 -1
- package/dist/scope/KitScope.d.ts +27 -1
- package/dist/scope/KitScope.js +1 -1
- package/dist/scope/context.d.ts +24 -1
- package/dist/scope/index.d.ts +1 -1
- package/dist/shared/attribution/Attribution.js +1 -0
- package/dist/shared/attribution/Attribution.slots.js +1 -0
- package/dist/shared/attribution/Attribution.styles.js +1 -0
- package/dist/shared/attribution/index.js +1 -0
- package/dist/shared/chains/index.d.ts +48 -29
- package/dist/shared/chains/index.js +1 -1
- package/dist/shared/constants/brand-intercom.js +1 -0
- package/dist/shared/cuer/Cuer.js +1 -1
- package/dist/shared/dialog/DialogShell.d.ts +21 -6
- package/dist/shared/dialog/DialogShell.js +1 -1
- package/dist/shared/dialog/Frame.js +1 -1
- package/dist/shared/dialog/LoadingState.js +1 -0
- package/dist/shared/dialog/LoadingState.styles.js +1 -0
- package/dist/shared/dialog/StepTransition.js +1 -1
- package/dist/shared/dialog/useDirectionalChevronTransform.js +1 -1
- package/dist/shared/driver/types.d.ts +4 -3
- package/dist/shared/format/formatSmartRelative.d.ts +25 -0
- package/dist/shared/format/formatSmartRelative.js +1 -0
- package/dist/shared/format/formatUsd.js +1 -1
- package/dist/shared/i18n/KitI18nProvider.d.ts +11 -8
- package/dist/shared/i18n/KitI18nProvider.js +1 -1
- package/dist/shared/i18n/createKitI18n.d.ts +79 -16
- package/dist/shared/i18n/createKitI18n.js +1 -1
- package/dist/shared/i18n/useLingui.d.ts +11 -3
- package/dist/shared/icons/ActivityIcon.d.ts +12 -0
- package/dist/shared/icons/ActivityIcon.js +1 -0
- package/dist/shared/icons/AmexIcon.d.ts +14 -0
- package/dist/shared/icons/AmexIcon.js +1 -0
- package/dist/shared/icons/ApplePayIcon.d.ts +15 -0
- package/dist/shared/icons/ApplePayIcon.js +1 -0
- package/dist/shared/icons/BitcoinIcon.d.ts +17 -0
- package/dist/shared/icons/BitcoinIcon.js +1 -0
- package/dist/shared/icons/CardIcon.d.ts +16 -0
- package/dist/shared/icons/CardIcon.js +1 -0
- package/dist/shared/icons/CashIcon.d.ts +16 -0
- package/dist/shared/icons/CashIcon.js +1 -0
- package/dist/shared/icons/DiscoverIcon.d.ts +14 -0
- package/dist/shared/icons/DiscoverIcon.js +1 -0
- package/dist/shared/icons/GooglePayIcon.d.ts +15 -0
- package/dist/shared/icons/GooglePayIcon.js +1 -0
- package/dist/shared/icons/LogoIcon.d.ts +13 -0
- package/dist/shared/icons/LogoIcon.js +1 -0
- package/dist/shared/icons/MastercardIcon.d.ts +16 -0
- package/dist/shared/icons/MastercardIcon.js +1 -0
- package/dist/shared/icons/VisaIcon.d.ts +15 -0
- package/dist/shared/icons/VisaIcon.js +1 -0
- package/dist/shared/merchant-link/MerchantLink.d.ts +1 -0
- package/dist/shared/merchant-link/MerchantLink.js +1 -0
- package/dist/shared/merchant-link/MerchantLinkButton.d.ts +1 -0
- package/dist/shared/merchant-link/MerchantLinkButton.js +1 -0
- package/dist/shared/merchant-link/index.d.ts +1 -0
- package/dist/shared/merchant-link/index.js +1 -0
- package/dist/shared/merchant-link/resolveMerchantLink.js +1 -0
- package/dist/shared/orchestrator/activityOpenInput.d.ts +21 -0
- package/dist/shared/orchestrator/createActivityReducers.js +1 -0
- package/dist/shared/orchestrator/index.d.ts +2 -0
- package/dist/shared/orchestrator/index.js +1 -1
- package/dist/shared/orchestrator/resolveActivityEntry.d.ts +1 -0
- package/dist/shared/orchestrator/resolveActivityEntry.js +1 -0
- package/dist/shared/orchestrator/toFailure.js +1 -1
- package/dist/shared/orchestrator/types.d.ts +8 -0
- package/dist/shared/orchestrator/useSettlementWatcher.js +1 -1
- package/dist/shared/presentation/index.js +1 -0
- package/dist/shared/presentation/types.d.ts +30 -0
- package/dist/shared/presentation/types.js +1 -0
- package/dist/shared/presentation/useResolvedSurfaceKind.js +1 -0
- package/dist/shared/primitives/TxHashValue/TxHashValue.js +1 -1
- package/dist/shared/support/SupportConfigContext.d.ts +1 -0
- package/dist/shared/support/SupportConfigContext.js +1 -0
- package/dist/shared/support/SupportLink.d.ts +1 -0
- package/dist/shared/support/SupportLink.js +1 -0
- package/dist/shared/support/SupportSpinner.d.ts +1 -0
- package/dist/shared/support/SupportSpinner.js +1 -0
- package/dist/shared/support/index.d.ts +2 -0
- package/dist/shared/support/index.js +1 -0
- package/dist/shared/support/intercom-loader.d.ts +17 -0
- package/dist/shared/support/intercom-loader.js +1 -0
- package/dist/shared/support/types.d.ts +43 -0
- package/dist/shared/support/useIntercomMerchantContext.d.ts +27 -0
- package/dist/shared/support/useIntercomMerchantContext.js +1 -0
- package/dist/shared/support/useIntercomShutdownOnUnmount.js +1 -0
- package/dist/shared/support/useMerchantContext.d.ts +1 -0
- package/dist/shared/support/useMerchantContext.js +1 -0
- package/dist/shared/support/useSupportTrigger.js +1 -0
- package/dist/shared/terms/TermsConfigContext.d.ts +1 -0
- package/dist/shared/terms/TermsConfigContext.js +1 -0
- package/dist/shared/terms/TermsLink.d.ts +1 -0
- package/dist/shared/terms/TermsLink.js +1 -0
- package/dist/shared/terms/index.d.ts +1 -0
- package/dist/shared/terms/index.js +1 -0
- package/dist/shared/terms/types.d.ts +43 -0
- package/dist/shared/ui/AdaptiveSurface/AdaptiveSurface.d.ts +52 -0
- package/dist/shared/ui/AdaptiveSurface/AdaptiveSurface.js +1 -0
- package/dist/shared/ui/AdaptiveSurface/index.d.ts +2 -0
- package/dist/shared/ui/AdaptiveSurface/index.js +1 -0
- package/dist/shared/ui/Card/Card.d.ts +12 -9
- package/dist/shared/ui/Card/Card.js +1 -1
- package/dist/shared/ui/Card/Card.styles.js +1 -1
- package/dist/shared/ui/Details/Details.d.ts +9 -1
- package/dist/shared/ui/Details/Details.styles.js +1 -1
- package/dist/shared/ui/Dialog/Dialog.d.ts +10 -8
- package/dist/shared/ui/Dialog/Dialog.js +1 -1
- package/dist/shared/ui/Dialog/Dialog.styles.js +1 -1
- package/dist/shared/ui/Drawer/Drawer.d.ts +135 -0
- package/dist/shared/ui/Drawer/Drawer.js +1 -0
- package/dist/shared/ui/Drawer/Drawer.slots.d.ts +19 -0
- package/dist/shared/ui/Drawer/Drawer.slots.js +1 -0
- package/dist/shared/ui/Drawer/Drawer.styles.js +1 -0
- package/dist/shared/ui/Drawer/index.d.ts +2 -0
- package/dist/shared/ui/Drawer/index.js +1 -0
- package/dist/shared/ui/Select/Select.js +1 -1
- package/dist/shared/ui/SelectableTile/SelectableTile.d.ts +21 -8
- package/dist/shared/ui/SelectableTile/SelectableTile.js +1 -1
- package/dist/shared/ui/Steps/Steps.d.ts +52 -0
- package/dist/shared/ui/Steps/Steps.js +1 -0
- package/dist/shared/ui/Steps/Steps.slots.d.ts +7 -0
- package/dist/shared/ui/Steps/Steps.slots.js +1 -0
- package/dist/shared/ui/Steps/Steps.styles.js +1 -0
- package/dist/shared/ui/Steps/index.d.ts +2 -0
- package/dist/shared/ui/Steps/index.js +1 -0
- package/dist/shared/ui/Tabs/Tabs.d.ts +79 -0
- package/dist/shared/ui/Tabs/Tabs.js +1 -0
- package/dist/shared/ui/Tabs/Tabs.slots.d.ts +11 -0
- package/dist/shared/ui/Tabs/Tabs.slots.js +1 -0
- package/dist/shared/ui/Tabs/Tabs.styles.js +1 -0
- package/dist/shared/ui/Tabs/index.d.ts +2 -0
- package/dist/shared/ui/Tabs/index.js +1 -0
- package/dist/shared/ui/WalletRow/WalletRow.d.ts +1 -1
- package/dist/shared/ui/WalletRow/WalletRow.js +1 -1
- package/dist/shared/ui/surfaceContext.d.ts +9 -0
- package/dist/shared/ui/surfaceContext.js +1 -0
- package/dist/shared/utils/assertNever.js +1 -0
- package/dist/shared/utils/logos/types.d.ts +1 -1
- package/dist/shared/utils/useDeepMemo.js +1 -0
- package/dist/shared/wallet/ConnectWalletContext.d.ts +17 -0
- package/dist/shared/wallet/ConnectWalletContext.js +1 -0
- package/dist/shared/widgets/activity/ActivityTrigger.js +1 -0
- package/dist/shared/widgets/activity/ActivityTrigger.styles.js +1 -0
- package/dist/shared/widgets/activity/adapters/settlementToWidgetProps.js +1 -0
- package/dist/shared/widgets/activity/compound/Activity.d.ts +95 -0
- package/dist/shared/widgets/activity/compound/Activity.js +1 -0
- package/dist/shared/widgets/activity/compound/Activity.slots.d.ts +22 -0
- package/dist/shared/widgets/activity/compound/Activity.slots.js +1 -0
- package/dist/shared/widgets/activity/compound/Activity.styles.js +1 -0
- package/dist/shared/widgets/activity/compound/ActivityDetail.d.ts +82 -0
- package/dist/shared/widgets/activity/compound/ActivityDetail.js +1 -0
- package/dist/shared/widgets/activity/compound/Row.slots.d.ts +21 -0
- package/dist/shared/widgets/activity/compound/Row.slots.js +1 -0
- package/dist/shared/widgets/activity/compound/Row.styles.js +1 -0
- package/dist/shared/widgets/activity/compound/components/ActivityHeader.d.ts +39 -0
- package/dist/shared/widgets/activity/compound/components/ActivityHeader.js +1 -0
- package/dist/shared/widgets/activity/compound/components/Empty.d.ts +15 -0
- package/dist/shared/widgets/activity/compound/components/Empty.js +1 -0
- package/dist/shared/widgets/activity/compound/components/ErrorView.d.ts +26 -0
- package/dist/shared/widgets/activity/compound/components/ErrorView.js +1 -0
- package/dist/shared/widgets/activity/compound/components/List.d.ts +23 -0
- package/dist/shared/widgets/activity/compound/components/List.js +1 -0
- package/dist/shared/widgets/activity/compound/components/Row.d.ts +51 -0
- package/dist/shared/widgets/activity/compound/components/Row.js +1 -0
- package/dist/shared/widgets/activity/compound/components/StatusPip.js +1 -0
- package/dist/shared/widgets/activity/compound/context.d.ts +95 -0
- package/dist/shared/widgets/activity/compound/context.js +1 -0
- package/dist/shared/widgets/activity/compound/index.d.ts +8 -0
- package/dist/shared/widgets/activity/compound/index.js +1 -0
- package/dist/shared/widgets/activity/index.js +1 -0
- package/dist/shared/widgets/activity/payloads.d.ts +108 -0
- package/dist/shared/widgets/activity/transformers/activityResponseToPayload.js +1 -0
- package/dist/shared/widgets/activity/transformers/resolveDirection.js +1 -0
- package/dist/shared/widgets/amount-entry/compound/AmountEntry.d.ts +10 -2
- package/dist/shared/widgets/amount-entry/compound/AmountEntry.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/AmountEntry.slots.d.ts +6 -0
- package/dist/shared/widgets/amount-entry/compound/AmountEntry.slots.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/AmountEntry.styles.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/components/Details.d.ts +34 -0
- package/dist/shared/widgets/amount-entry/compound/components/Details.js +1 -0
- package/dist/shared/widgets/amount-entry/compound/components/Footer.d.ts +2 -1
- package/dist/shared/widgets/amount-entry/compound/components/Footer.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/components/Header.d.ts +6 -1
- package/dist/shared/widgets/amount-entry/compound/components/Header.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/components/Hero/Hero.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/components/Hero/SwapBackdrop.js +1 -1
- package/dist/shared/widgets/amount-entry/compound/components/Notice.d.ts +7 -0
- package/dist/shared/widgets/amount-entry/compound/components/Notice.js +1 -0
- package/dist/shared/widgets/amount-entry/compound/index.d.ts +1 -1
- package/dist/shared/widgets/amount-entry/compound/types.d.ts +63 -3
- package/dist/shared/widgets/asset-picker/compound/AssetPicker.d.ts +3 -0
- package/dist/shared/widgets/asset-picker/compound/AssetPicker.js +1 -1
- package/dist/shared/widgets/asset-picker/compound/AssetPicker.slots.d.ts +2 -0
- package/dist/shared/widgets/asset-picker/compound/AssetPicker.slots.js +1 -1
- package/dist/shared/widgets/asset-picker/compound/AssetPicker.styles.js +1 -1
- package/dist/shared/widgets/asset-picker/compound/components/Asset.d.ts +7 -1
- package/dist/shared/widgets/asset-picker/compound/components/Asset.js +1 -1
- package/dist/shared/widgets/asset-picker/compound/components/Empty.d.ts +15 -0
- package/dist/shared/widgets/asset-picker/compound/components/Empty.js +1 -0
- package/dist/shared/widgets/asset-picker/compound/components/Header.d.ts +6 -1
- package/dist/shared/widgets/asset-picker/compound/components/Header.js +1 -1
- package/dist/shared/widgets/asset-picker/compound/types.d.ts +15 -1
- package/dist/shared/widgets/confirm-transfer/compound/ConfirmTransfer.styles.js +1 -1
- package/dist/shared/widgets/confirm-transfer/compound/components/Breakdown.js +1 -1
- package/dist/shared/widgets/confirm-transfer/compound/components/Disclaimer.d.ts +4 -3
- package/dist/shared/widgets/confirm-transfer/compound/components/Disclaimer.js +1 -1
- package/dist/shared/widgets/confirm-transfer/compound/components/QuoteTimer.js +1 -1
- package/dist/shared/widgets/error-state/compound/components/AssetValue.js +1 -1
- package/dist/shared/widgets/error-state/compound/components/HelpInfo.js +1 -1
- package/dist/shared/widgets/error-state/compound/components/MoreDetails.d.ts +1 -1
- package/dist/shared/widgets/error-state/compound/components/MoreDetails.js +1 -1
- package/dist/shared/widgets/error-state/compound/components/StatusValue.js +1 -1
- package/dist/shared/widgets/processing-state/compound/ProcessingState.d.ts +1 -5
- package/dist/shared/widgets/processing-state/compound/ProcessingState.js +1 -1
- package/dist/shared/widgets/processing-state/compound/ProcessingState.slots.d.ts +0 -1
- package/dist/shared/widgets/processing-state/compound/ProcessingState.slots.js +1 -1
- package/dist/shared/widgets/processing-state/compound/ProcessingState.styles.js +1 -1
- package/dist/shared/widgets/processing-state/compound/components/Details.d.ts +6 -1
- package/dist/shared/widgets/processing-state/compound/components/Details.js +1 -1
- package/dist/shared/widgets/processing-state/compound/components/Header.d.ts +4 -3
- package/dist/shared/widgets/processing-state/compound/components/Header.js +1 -1
- package/dist/shared/widgets/processing-state/compound/components/Hero.d.ts +14 -7
- package/dist/shared/widgets/processing-state/compound/components/Hero.js +1 -1
- package/dist/shared/widgets/processing-state/compound/components/Rows.js +1 -1
- package/dist/shared/widgets/processing-state/compound/components/StatusPill.js +1 -1
- package/dist/shared/widgets/processing-state/compound/components/splitAmount.js +1 -0
- package/dist/shared/widgets/processing-state/compound/index.d.ts +1 -1
- package/dist/shared/widgets/processing-state/compound/types.d.ts +11 -29
- package/dist/shared/widgets/success-state/compound/components/Actions.js +1 -1
- package/dist/shared/widgets/success-state/compound/components/AssetValue.js +1 -1
- package/dist/shared/widgets/success-state/compound/components/MoreDetails.d.ts +1 -1
- package/dist/shared/widgets/success-state/compound/components/MoreDetails.js +1 -1
- package/dist/shared/widgets/success-state/compound/components/RouteValue.js +1 -1
- package/dist/shared/widgets/success-state/compound/components/StatusPill.js +1 -1
- package/dist/shared/widgets/success-state/compound/types.d.ts +5 -5
- package/dist/storage/context.d.ts +9 -1
- package/dist/storage/context.js +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/stridge/StridgeProvider.d.ts +187 -35
- package/dist/stridge/StridgeProvider.js +1 -1
- package/dist/stridge/depositOwner.js +1 -0
- package/dist/stridge/optionalWagmi.js +1 -0
- package/dist/stridge/stubs.js +1 -1
- package/dist/styles/index.css +607 -12
- package/dist/types.d.ts +7 -5
- package/dist/ui/index.d.ts +9 -1
- package/dist/ui/index.js +1 -1
- package/dist/version.d.ts +10 -0
- package/dist/version.js +1 -0
- package/dist/withdraw/compound/index.d.ts +11 -8
- package/dist/withdraw/compound/index.js +1 -1
- package/dist/withdraw/dialog/index.d.ts +4 -1
- package/dist/withdraw/widgets/index.d.ts +7 -0
- package/dist/withdraw/widgets/index.js +1 -0
- package/package.json +31 -7
- package/dist/_internal/deposit/widgets/index.d.ts +0 -11
- package/dist/_internal/deposit/widgets/index.js +0 -1
- package/dist/_internal/withdraw/widgets/index.d.ts +0 -5
- package/dist/_internal/withdraw/widgets/index.js +0 -1
- package/dist/flows/withdraw/dialog/WithdrawDialogEventsContext.d.ts +0 -36
- package/dist/flows/withdraw/dialog/WithdrawDialogEventsContext.js +0 -1
- package/dist/shared/widgets/processing-state/compound/components/Actions.d.ts +0 -17
- package/dist/shared/widgets/processing-state/compound/components/Actions.js +0 -1
- package/dist/stridge/StridgeContext.d.ts +0 -29
- package/dist/stridge/StridgeContext.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{pickRelevantSettlement as t}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{formatUsd as n}from"../../shared/format/formatUsd.js";import{balanceToBalancesPayload as r,buildRoutableAllowlist as i}from"../../flows/deposit/driver/transformers/balanceToBalancesPayload.js";import{quoteToPayload as a}from"../../flows/deposit/driver/transformers/quoteToPayload.js";import{settlementToPayload as o}from"../../flows/deposit/driver/transformers/settlementToPayload.js";import{startToAddressesPayload as s}from"../../flows/deposit/driver/transformers/startToAddressesPayload.js";import{startToBrandPayload as c}from"../../flows/deposit/driver/transformers/startToBrandPayload.js";import{startToTargetPayload as l}from"../../flows/deposit/driver/transformers/startToTargetPayload.js";import{walletAddressToWalletPayload as u}from"../../flows/deposit/driver/transformers/walletAddressToWalletPayload.js";import{defaultBlockExplorers as d}from"../../shared/utils/explorers.js";import{createEntityStore as f}from"../stridge-mock/store.js";import{NATIVE_QUOTE_ADDRESS as p,isStablecoinSymbol as m,toBaseUnits as ee}from"./internal/encoding.js";import"./types.js";import{resolveSdkEnv as h}from"./internal/env.js";import{buildKitMetadata as g}from"./internal/metadata.js";import{pollOnce as _}from"./internal/pollOnce.js";import{buildErc20OrNativeStep as v,signAndConfirm as y}from"./internal/signAndConfirm.js";import{startPoll as b}from"./poll.js";import{createStridgeRpc as te}from"./rpc.js";import{createWagmiSigner as x}from"./wagmiSigner.js";import{createApiClient as S}from"@stridge/sdk";function C(C){let O=S({projectKey:C.projectKey,env:h(C.environment)}),k=C.pollIntervals??{},A=k.detectionMs??2e3,j=k.processingMs??2e3,M=k.terminalMs??1e4,N=k.balancesMs??6e4,P=C.minDepositUsd??3,F=C.getI18n??(()=>e),I={...d(),...C.explorers??{}},L=C.destination.network_id,R=C.destination.asset_symbol,z=C.destination.to_address??C.userAddress,B=x({wagmiConfig:C.wagmiConfig}),V=C.rpc??te(),H={address:C.userAddress},U=f({brand:{status:`loading`},target:{status:`loading`},addresses:{status:`loading`},balances:{status:`loading`},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:u(H),raw:H,response:H}}),W,G,K,q;function J(){if(G)return K??=i(G),K}let Y=(async()=>{try{let[e,t]=await Promise.all([O.gateway.start({owner:C.userAddress,destination:{network_id:L,to_address:z,asset_symbol:R},metadata:g({flow:`deposit`,...C.metadata?{hostMetadata:C.metadata}:{},extras:{destination:{networkId:L,assetSymbol:R}}})}),O.uda.supportedAssets().catch(()=>null)]);W=e;let n=e.metadata?.brand_name;typeof n==`string`&&n.trim().length>0&&(q=n.trim());let r=F();if(t&&(G=t,K=void 0),U.update({brand:{status:`ready`,payload:c(e.metadata),raw:e.metadata,response:e},addresses:{status:`ready`,payload:s(e.deposit_addresses,{i18n:r,explorers:I,...t?{chainLogos:T(t)}:{},...t?{minDepositUsdByEip155Id:D(t,P),nativeAssetByEip155Id:E(t)}:{}}),raw:e.deposit_addresses,response:e}}),t){let e=l(t,{i18n:r,networkId:L,assetSymbol:R,minDepositUsd:P}),n=t.assets.find(e=>String(e.network_id)===L);e&&n?U.update({target:{status:`ready`,payload:e,raw:n,response:t}}):U.update({target:{status:`error`,error:Error(`Destination not found in supportedAssets catalog.`)}})}else U.update({target:{status:`error`,error:Error(`supportedAssets fetch failed.`)}})}catch(e){let t=e instanceof Error?e:Error(String(e));U.update({brand:{status:`error`,error:t},target:{status:`error`,error:t},addresses:{status:`error`,error:t}})}})(),X=!1,Z=(async()=>{try{let e=await O.balance.onchain(C.userAddress,{includeSpam:!1,includeZero:!1});await Y;let t=J();if(!t)return null;let n=r(e,{i18n:F(),routable:t,minDepositUsd:P,...C.resolveTokenIcon?{resolveTokenIcon:C.resolveTokenIcon}:{}});return U.update({balances:{status:`ready`,payload:n,raw:e,response:e},wallet:Q(n,F())}),e}catch(e){let t=e instanceof Error?e:Error(String(e));return U.update({balances:{status:`error`,error:t}}),null}})();function Q(e,t){let r=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{status:`ready`,payload:{...u(H),balanceTotalUsd:{value:r,formatted:n(r,t)}},raw:H,response:H}}return{getSnapshot(){return U.getSnapshot()},subscribe(e){return U.subscribe(e)},async requestQuote(e,t){U.update({quote:{status:`loading`}});let n=W;if(!n){U.update({quote:{status:`error`,error:Error(`gateway/start not yet resolved.`)}});return}try{let r=e.sourceChainId,i=e.sourceIsNative?p:e.sourceTokenAddress,o=ee(e.amount,e.sourceTokenDecimals),s=await O.uda.quote({fromNetworkId:r,fromAsset:i,toNetworkId:Number(n.destination.eip155_id),toAsset:n.destination.asset_address||`0x0000000000000000000000000000000000000000`,amount:o,fromAddress:C.userAddress,toAddress:z},{signal:t});if(t.aborted)return;let c=F(),l={chainId:r,networkName:w(r),eip155Id:String(r),symbol:e.sourceTokenSymbol,decimals:e.sourceTokenDecimals,address:e.sourceTokenAddress,isNative:e.sourceIsNative},u={chainId:Number(n.destination.eip155_id),networkName:n.destination.network_name,eip155Id:n.destination.eip155_id,symbol:n.destination.asset_symbol,decimals:n.destination.asset_decimals,address:n.destination.asset_address,isNative:!n.destination.asset_address},d=m(n.destination.asset_symbol)?1:void 0,f=a(s,{i18n:c,sendSide:l,receiveSide:u,sourceAmount:e.amount,now:Date.now(),...e.sourcePriceUsd===void 0?{}:{sendPriceUsd:e.sourcePriceUsd},...d===void 0?{}:{receivePriceUsd:d}});U.update({quote:{status:`ready`,payload:f,raw:s,response:s}})}catch(e){if(t.aborted)return;let n=e instanceof Error?e:Error(String(e));U.update({quote:{status:`error`,error:n}})}},async submitDeposit(e,t){let n=W;if(!n)throw Error(`gateway/start not yet resolved.`);let r=n.deposit_addresses.find(t=>Number(t.eip155_id)===Number(e.sourceChainId));if(!r)throw Error(`No Stridge deposit address provisioned on chain ${e.sourceChainId}. Pick a supported source chain.`);return y({signer:B,rpc:V,step:v({chainId:e.sourceChainId,from:C.userAddress,udaDepositAddress:r.address,amount:e.amount,decimals:e.sourceTokenDecimals,isNative:e.sourceIsNative,...e.sourceIsNative?{}:{sourceTokenAddress:e.sourceTokenAddress}}),signal:t,explorers:I,...C.receiptConfirmations===void 0?{}:{receiptConfirmations:C.receiptConfirmations},...C.receiptPollingIntervalMs===void 0?{}:{receiptPollingIntervalMs:C.receiptPollingIntervalMs}})},watchBalances(e,t,n){b({signal:n,fetch:async e=>{if(!X)return X=!0,Z;try{let t=await O.balance.onchain(C.userAddress,{signal:e,includeSpam:!1,includeZero:!1});await Y;let n=J();if(!n)return null;let i=r(t,{i18n:F(),routable:n,minDepositUsd:P,...C.resolveTokenIcon?{resolveTokenIcon:C.resolveTokenIcon}:{}});return U.update({balances:{status:`ready`,payload:i,raw:t,response:t},wallet:Q(i,F())}),t}catch{return null}},listener:()=>{t(U.getSnapshot().balances)},nextIntervalMs:()=>N})},watchSourceTx(e,t,n){let r=new Set,i={current:!1},a=!1;b({signal:n,fetch:e=>_(O,C.userAddress,$(),e),listener:e=>{if(a||!e)return;let n=e.settlements??[];if(!i.current){for(let e of n)r.add(e.id);i.current=!0;return}let o=n.find(e=>!r.has(e.id));if(!o)return;a=!0;let s=Number(o.from?.eip155_id??`0`);t({hash:o.from?.tx_id??``,...I[s]&&o.from?.tx_id?{explorerUrl:`${I[s].replace(/\/+$/,``)}/tx/${o.from.tx_id}`}:{}})},nextIntervalMs:()=>a?0:A})},watchSettlement(e,n,r){let i=e=>_(O,C.userAddress,$(),e),a=!1;b({signal:r,fetch:i,listener:r=>{if(!r)return;let i=t(r,{txHash:e.tx.hash});if(!i)return;let s=o(i,r,{i18n:F(),sourceWallet:{name:`Wallet`,address:C.userAddress},explorers:I,...q?{brandName:q}:{}});s.kind!==`pending`&&(a=!0);let c={status:`ready`,payload:s,raw:i,response:r};U.update({settlement:c}),n(c)},nextIntervalMs:()=>a?M:j})},async fetchActiveSettlement(e,n){let r=await _(O,C.userAddress,$(),n);if(!r)return null;let i=t(r);if(!i)return null;let a=o(i,r,{i18n:F(),sourceWallet:{name:`Wallet`,address:C.userAddress},explorers:I,...q?{brandName:q}:{}});return a.kind===`pending`?{payload:a,raw:i,response:r}:null}};function $(){return{network_id:L,asset_symbol:R,to_address:z}}}function w(e){switch(e){case 1:return`Ethereum`;case 56:return`BSC`;case 137:return`Polygon`;case 42161:return`Arbitrum`;case 10:return`Optimism`;case 8453:return`Base`;default:return`Chain ${e}`}}function T(e){let t={};for(let n of e.assets){let e=String(n.eip155_id),r=n.native_currency?.logo;r&&(t[e]=r)}return t}function E(e){let t={};for(let n of e.assets){let e=n.native_currency;if(!e?.symbol)continue;let r=String(n.eip155_id);t[r]={symbol:e.symbol,address:``,decimals:typeof e.decimals==`number`?e.decimals:18,isNative:!0,...e.logo?{assetLogoUrl:e.logo}:{}}}return t}function D(e,t){let n={};for(let r of e.assets){let e=String(r.eip155_id),i=r.native_currency?.min_deposit_usd,a=typeof i==`string`&&i.trim().length>0?Number.parseFloat(i):NaN;n[e]=Number.isFinite(a)?a:t}return n}export{C as createStridgeDepositDriver};
|
|
1
|
+
import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{NATIVE_QUOTE_ADDRESS as t,isStablecoinSymbol as n,toBaseUnits as r}from"./internal/encoding.js";import{resolveSdkEnv as i}from"./internal/env.js";import{buildKitMetadata as a}from"./internal/metadata.js";import{pollOnce as o}from"./internal/pollOnce.js";import{buildErc20OrNativeStep as s,signAndConfirm as c}from"./internal/signAndConfirm.js";import{buildEvmChainsParam as l}from"./internal/supportedChains.js";import{withOneShotRetry as u}from"./internal/retry.js";import{pickRelevantSettlement as d}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{createEntityStore as f}from"../stridge-mock/store.js";import{startPoll as p}from"./poll.js";import{formatUsd as m}from"../../shared/format/formatUsd.js";import{balanceToBalancesPayload as h,buildRoutableAllowlist as g}from"../../flows/deposit/driver/transformers/balanceToBalancesPayload.js";import{quoteToPayload as _}from"../../flows/deposit/driver/transformers/quoteToPayload.js";import{settlementToPayload as v}from"../../flows/deposit/driver/transformers/settlementToPayload.js";import{startToAddressesPayload as ee}from"../../flows/deposit/driver/transformers/startToAddressesPayload.js";import{startToBrandPayload as te}from"../../flows/deposit/driver/transformers/startToBrandPayload.js";import{startToTargetPayload as ne}from"../../flows/deposit/driver/transformers/startToTargetPayload.js";import{walletAddressToWalletPayload as y}from"../../flows/deposit/driver/transformers/walletAddressToWalletPayload.js";import{defaultBlockExplorers as re}from"../../shared/utils/explorers.js";import{createStridgeRpc as ie}from"./rpc.js";import{createWagmiSigner as b}from"./wagmiSigner.js";import{createApiClient as x}from"@stridge/sdk";function S(S){let T=x({projectKey:S.projectKey,env:i(S.environment)}),E=S.pollIntervals??{},ce=E.detectionMs??2e3,le=E.processingMs??2e3,D=E.terminalMs??1e4,O=E.balancesMs??6e4,k=S.minAmountUsd,A=S.maxAmountUsd,j=S.getI18n??(()=>e),M={...re(),...S.explorers??{}},N=S.destination.network_id,P=S.destination.asset_symbol,F=S.destination.to_address??S.userAddress,ue=S.rpc??ie(),I={address:S.userAddress},L=f({brand:{status:`idle`},target:{status:`idle`},addresses:{status:`idle`},balances:{status:`idle`},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:y(I),raw:I,response:I},cashMethods:{status:`idle`}}),R,z,B,V,H=S.wagmiConfig?b({wagmiConfig:S.wagmiConfig,getSupportedAssets:()=>z,explorers:M}):void 0;function U(){if(z)return B??=g(z),B}let W=!1,G=Promise.resolve(),K=!1,q=Promise.resolve(null),J=null;function Y(){W||(W=!0,G=de(),q=fe())}let X;async function Z(e){try{if(await G,e.aborted)return null;let t=l(z),n=await T.balance.onchain(S.userAddress,{signal:e,includeSpam:!1,includeZero:!1,...t?{chains:t}:{}});if(e.aborted)return null;J=Date.now();let r=U();if(!r)return L.update({balances:{status:`ready`,payload:[],raw:n,response:n}}),null;let i=h(n,{i18n:j(),routable:r,minAmountUsd:k,...S.resolveTokenIcon?{resolveTokenIcon:S.resolveTokenIcon}:{}});return L.update({balances:{status:`ready`,payload:i,raw:n,response:n},wallet:Q(i,j())}),n}catch{return null}}async function de(){L.update({brand:{status:`loading`},target:{status:`loading`},addresses:{status:`loading`},balances:{status:`loading`}});try{let[e,t]=await Promise.all([u(()=>T.gateway.start({owner:S.userAddress,destination:{network_id:N,to_address:F,asset_symbol:P},metadata:a({flow:`deposit`,...S.metadata?{hostMetadata:S.metadata}:{},extras:{destination:{networkId:N,assetSymbol:P}}})})),S.catalog?S.catalog.getSupportedAssets():u(()=>T.gateway.assets()).catch(()=>null)]);R=e;let n=e.metadata?.brand_name;typeof n==`string`&&n.trim().length>0&&(V=n.trim());let r=j();if(t&&(z=t,B=void 0),L.update({brand:{status:`ready`,payload:te(e.metadata),raw:e.metadata,response:e},addresses:{status:`ready`,payload:ee(e.deposit_addresses,{i18n:r,explorers:M,...t?{chainLogos:w(t)}:{},...t?{minAmountUsdByEip155Id:se(t,k),nativeAssetByEip155Id:ae(t),priceImpactByEip155Id:oe(t)}:{}}),raw:e.deposit_addresses,response:e}}),t){let e=ne(t,{i18n:r,networkId:N,assetSymbol:P,minAmountUsd:k,...A===void 0?{}:{maxAmountUsd:A}}),n=t.assets.find(e=>String(e.network_id)===N);e&&n?L.update({target:{status:`ready`,payload:e,raw:n,response:t}}):L.update({target:{status:`error`,error:Error(`Destination not found in supportedAssets catalog.`)}})}else L.update({target:{status:`error`,error:Error(`supportedAssets fetch failed.`)}})}catch(e){let t=e instanceof Error?e:Error(String(e));L.update({brand:{status:`error`,error:t},target:{status:`error`,error:t},addresses:{status:`error`,error:t}})}}async function fe(){try{await G;let e=l(z),t=await u(()=>T.balance.onchain(S.userAddress,{includeSpam:!1,includeZero:!1,...e?{chains:e}:{}}));J=Date.now();let n=U();if(!n)return L.update({balances:{status:`ready`,payload:[],raw:t,response:t}}),t;let r=h(t,{i18n:j(),routable:n,minAmountUsd:k,...S.resolveTokenIcon?{resolveTokenIcon:S.resolveTokenIcon}:{}});return L.update({balances:{status:`ready`,payload:r,raw:t,response:t},wallet:Q(r,j())}),t}catch(e){let t=e instanceof Error?e:Error(String(e));return L.update({balances:{status:`error`,error:t}}),null}}function Q(e,t){let n=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{status:`ready`,payload:{...y(I),balanceTotalUsd:{value:n,formatted:m(n,t)}},raw:I,response:I}}return{getSnapshot(){return L.getSnapshot()},subscribe(e){return L.subscribe(e)},arm:Y,async requestQuote(e,i){if(Y(),L.update({quote:{status:`loading`}}),await G,i.aborted)return;let a=R;if(!a){L.update({quote:{status:`error`,error:Error(`gateway/start not yet resolved.`)}});return}try{let o=e.sourceChainId,s=e.sourceIsNative?t:e.sourceTokenAddress,c=r(e.amount,e.sourceTokenDecimals),l=await T.uda.quote({fromNetworkId:o,fromAsset:s,toNetworkId:Number(a.destination.eip155_id),toAsset:a.destination.asset_address||`0x0000000000000000000000000000000000000000`,amount:c,fromAddress:S.userAddress,toAddress:F},{signal:i});if(i.aborted)return;let u=j(),d={chainId:o,networkName:C(o),eip155Id:String(o),symbol:e.sourceTokenSymbol,decimals:e.sourceTokenDecimals,address:e.sourceTokenAddress,isNative:e.sourceIsNative},f={chainId:Number(a.destination.eip155_id),networkName:a.destination.network_name,eip155Id:a.destination.eip155_id,symbol:a.destination.asset_symbol,decimals:a.destination.asset_decimals,address:a.destination.asset_address,isNative:!a.destination.asset_address},p=n(a.destination.asset_symbol)?1:void 0,m=_(l,{i18n:u,sendSide:d,receiveSide:f,sourceAmount:e.amount,now:Date.now(),...e.sourcePriceUsd===void 0?{}:{sendPriceUsd:e.sourcePriceUsd},...p===void 0?{}:{receivePriceUsd:p}});L.update({quote:{status:`ready`,payload:m,raw:l,response:l}})}catch(e){if(i.aborted)return;let t=e instanceof Error?e:Error(String(e));L.update({quote:{status:`error`,error:t}})}},async submitDeposit(e,t){if(!H)throw Error(`Connect a wallet to sign and submit the deposit.`);if(Y(),await G,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=R;if(!n)throw Error(`gateway/start not yet resolved.`);let r=n.deposit_addresses.find(t=>Number(t.eip155_id)===Number(e.sourceChainId));if(!r)throw Error(`No Stridge deposit address provisioned on chain ${e.sourceChainId}. Pick a supported source chain.`);return c({signer:H,rpc:ue,step:s({chainId:e.sourceChainId,from:S.userAddress,udaDepositAddress:r.address,amount:e.amount,decimals:e.sourceTokenDecimals,isNative:e.sourceIsNative,...e.sourceIsNative?{}:{sourceTokenAddress:e.sourceTokenAddress}}),signal:t,explorers:M,...S.receiptConfirmations===void 0?{}:{receiptConfirmations:S.receiptConfirmations},...S.receiptPollingIntervalMs===void 0?{}:{receiptPollingIntervalMs:S.receiptPollingIntervalMs}})},watchBalances(e,t,n){Y(),p({signal:n,fetch:async e=>K?J!==null&&Date.now()-J<3e4?L.getSnapshot().balances:Z(e):(K=!0,q),listener:()=>{t(L.getSnapshot().balances)},nextIntervalMs:()=>O})},invalidateBalances(){J=null,X?.abort();let e=new AbortController;X=e,Z(e.signal).finally(()=>{X===e&&(X=void 0)})},watchSourceTx(e,t,n){Y();let r=new Set,i={current:!1},a=!1;p({signal:n,fetch:async e=>{let{matched:t}=await o(T,S.userAddress,$(),e);return t},listener:e=>{if(a||!e)return;let n=e.settlements??[];if(!i.current){for(let e of n)r.add(e.id);i.current=!0;return}let o=n.find(e=>!r.has(e.id));if(!o)return;a=!0;let s=Number(o.from?.eip155_id??`0`);t({hash:o.from?.tx_id??``,...M[s]&&o.from?.tx_id?{explorerUrl:`${M[s].replace(/\/+$/,``)}/tx/${o.from.tx_id}`}:{}})},nextIntervalMs:()=>a?0:ce})},watchSettlement(e,t,n){let r=async e=>{let{matched:t}=await o(T,S.userAddress,$(),e);return t},i=!1;p({signal:n,fetch:r,listener:n=>{if(!n)return;let r=d(n,{txHash:e.tx.hash});if(!r)return;let a=v(r,n,{i18n:j(),sourceWallet:{name:`Wallet`,address:S.userAddress},explorers:M,...V?{brandName:V}:{}});a.kind!==`pending`&&(i=!0);let o={status:`ready`,payload:a,raw:r,response:n};L.update({settlement:o}),t(o)},nextIntervalMs:()=>i?D:le})},async fetchActiveSettlement(e,t){let{matched:n}=await o(T,S.userAddress,$(),t);if(!n)return null;let r=d(n);if(!r)return null;let i=v(r,n,{i18n:j(),sourceWallet:{name:`Wallet`,address:S.userAddress},explorers:M,...V?{brandName:V}:{}});return i.kind===`pending`?{payload:i,raw:r,response:n}:null}};function $(){return{network_id:N,asset_symbol:P,to_address:F}}}function C(e){switch(e){case 1:return`Ethereum`;case 56:return`BSC`;case 137:return`Polygon`;case 42161:return`Arbitrum`;case 10:return`Optimism`;case 8453:return`Base`;default:return`Chain ${e}`}}function w(e){let t={};for(let n of e.assets){let e=String(n.eip155_id),r=n.native_currency?.logo;r&&(t[e]=r)}return t}function ae(e){let t={};for(let n of e.assets){let e=n.native_currency;if(!e?.symbol)continue;let r=String(n.eip155_id),i=typeof e.price_impact==`string`?e.price_impact.trim():``;t[r]={symbol:e.symbol,address:``,decimals:typeof e.decimals==`number`?e.decimals:18,isNative:!0,...e.logo?{assetLogoUrl:e.logo}:{},...i?{priceImpact:i}:{}}}return t}function oe(e){let t={};for(let n of e.assets){let e={};for(let t of n.assets??[]){let n=t.price_impact;typeof n==`string`&&n.trim().length>0&&t.address&&(e[t.address.toLowerCase()]=n.trim())}Object.keys(e).length>0&&(t[String(n.eip155_id)]=e)}return t}function se(e,t){let n={};for(let r of e.assets){let e=String(r.eip155_id),i=r.native_currency?.min_deposit_usd,a=typeof i==`string`&&i.trim().length>0?Number.parseFloat(i):NaN;n[e]=Number.isFinite(a)?a:t}return n}export{S as createStridgeDepositDriver};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { WithdrawDriver } from "../../flows/withdraw/driver/types.js";
|
|
2
2
|
import { StridgeRpc } from "./rpc.js";
|
|
3
3
|
import { StridgeEnvironment, StridgePollIntervals, StridgeTokenIconResolverEntry } from "./types.js";
|
|
4
|
+
import { StridgeCatalog } from "./catalog.js";
|
|
4
5
|
import { I18n } from "@lingui/core";
|
|
5
6
|
import { Config } from "wagmi";
|
|
6
7
|
|
|
@@ -28,7 +29,8 @@ interface StridgeWithdrawCurrency {
|
|
|
28
29
|
* recipient/chain/token, so the destination is per-submit (closure state) rather than
|
|
29
30
|
* driver-config.
|
|
30
31
|
* - No `confirmDisplay` — withdraw doesn't ship a confirm-deposit step.
|
|
31
|
-
* - No `
|
|
32
|
+
* - No bundled default for `minAmountUsd` — the floor only blocks submit when the host
|
|
33
|
+
* explicitly configures one.
|
|
32
34
|
*/
|
|
33
35
|
interface CreateStridgeWithdrawDriverInput {
|
|
34
36
|
/** Connected wallet EOA. Threaded as `gateway/start.owner` and `uda/quote.from_address`. */
|
|
@@ -52,12 +54,13 @@ interface CreateStridgeWithdrawDriverInput {
|
|
|
52
54
|
*/
|
|
53
55
|
currency: StridgeWithdrawCurrency;
|
|
54
56
|
/**
|
|
55
|
-
* Wagmi config
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
57
|
+
* Wagmi config slot — retained for symmetry with {@link import("./types").StridgeDriverConfig}
|
|
58
|
+
* but no longer consumed by the withdraw driver. Withdraw broadcasting is fully host-driven
|
|
59
|
+
* via the orchestrator's `onSubmit` callback + actions; the kit never signs the source-chain
|
|
60
|
+
* transfer to the UDA itself. Pass it for forward compatibility or omit entirely — both
|
|
61
|
+
* behave identically.
|
|
59
62
|
*/
|
|
60
|
-
wagmiConfig
|
|
63
|
+
wagmiConfig?: Config;
|
|
61
64
|
/**
|
|
62
65
|
* Stable `I18n` ref-getter. The driver re-runs transformers on read so locale flips don't
|
|
63
66
|
* re-bootstrap. When omitted, falls back to the kit's English-only {@link defaultI18n}.
|
|
@@ -78,33 +81,53 @@ interface CreateStridgeWithdrawDriverInput {
|
|
|
78
81
|
/** Polling cadence overrides. */
|
|
79
82
|
pollIntervals?: StridgePollIntervals;
|
|
80
83
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
84
|
+
* Retained-for-symmetry RPC slot — accepted for parity with the deposit driver config but
|
|
85
|
+
* no longer consumed; the withdraw driver does not poll source-chain receipts (host-side
|
|
86
|
+
* `onSubmit` owns the broadcast lifecycle).
|
|
83
87
|
*/
|
|
84
88
|
rpc?: StridgeRpc;
|
|
85
|
-
/** Block confirmations to wait on before treating the broadcast tx as mined. Defaults to `1`. */
|
|
86
|
-
receiptConfirmations?: number;
|
|
87
|
-
/** Receipt polling interval in milliseconds while waiting for mining. */
|
|
88
|
-
receiptPollingIntervalMs?: number;
|
|
89
89
|
/**
|
|
90
90
|
* Optional metadata persisted on every UDA the driver provisions. Echoed back on
|
|
91
91
|
* `gateway/{owner}` and webhook payloads. Treat as untrusted display data on read. Merged
|
|
92
92
|
* UNDER the kit-set `kit_flow` / `kit_version` / `source` keys (kit keys win).
|
|
93
93
|
*/
|
|
94
94
|
metadata?: Record<string, unknown>;
|
|
95
|
+
/**
|
|
96
|
+
* Optional lower USD bound on the withdraw amount. Surfaced on
|
|
97
|
+
* {@link WithdrawSnapshot.minAmountUsd}; the form blocks submit with a localized "Min $X"
|
|
98
|
+
* CTA while the typed amount sits below this value. Omit to leave the form without a lower
|
|
99
|
+
* bound (only the wallet balance / non-zero gate apply).
|
|
100
|
+
*/
|
|
101
|
+
minAmountUsd?: number;
|
|
102
|
+
/**
|
|
103
|
+
* Optional upper USD bound on the withdraw amount. Surfaced on
|
|
104
|
+
* {@link WithdrawSnapshot.maxAmountUsd}; the form blocks submit with a localized "Max $X"
|
|
105
|
+
* CTA while the typed amount sits above this value. Omit to let the brand-currency balance
|
|
106
|
+
* be the only ceiling.
|
|
107
|
+
*/
|
|
108
|
+
maxAmountUsd?: number;
|
|
109
|
+
/**
|
|
110
|
+
* Provider-scoped shared catalog cache. When supplied, the driver awaits this single
|
|
111
|
+
* in-flight promise instead of issuing its own `Gateway.assets()` call — deduplicates the
|
|
112
|
+
* catalog fetch across deposit + withdraw drivers mounted under one `<StridgeProvider>`.
|
|
113
|
+
* When omitted, the driver falls back to its own per-instance fetch.
|
|
114
|
+
*/
|
|
115
|
+
catalog?: StridgeCatalog;
|
|
95
116
|
}
|
|
96
117
|
/**
|
|
97
118
|
* Builds a Stridge-backed {@link WithdrawDriver}. Returns the unified driver contract — the kit's
|
|
98
119
|
* `<KitProvider withdraw={…}>` consumes this directly, no separate `dataSource` / `operations`
|
|
99
120
|
* adapter layer.
|
|
100
121
|
*
|
|
101
|
-
* Bootstrap
|
|
122
|
+
* Bootstrap is lazy — `Gateway.assets()` and `balance/onchain` fire on the first `arm()`, not
|
|
123
|
+
* at construction. Inside `arm()` the two calls run sequentially (assets first so its EVM chain
|
|
124
|
+
* list can be threaded as the `chains` filter on the initial `balance/onchain` call). The
|
|
102
125
|
* `receiveOptions` entity transitions `loading → ready` once supportedAssets lands; the
|
|
103
126
|
* `withdrawableBalances` entity flips `loading → ready` after the first balance fetch (and the
|
|
104
127
|
* supportedAssets-derived source-currency lookup completes).
|
|
105
128
|
*
|
|
106
129
|
* `gateway/start` is **not** part of bootstrap — the destination is user-picked at submit time, so
|
|
107
|
-
* each `
|
|
130
|
+
* each `prepareWithdrawal` call provisions a fresh UDA scoped to the chosen recipient/chain/token.
|
|
108
131
|
* The destination is idempotent on `(owner, destination)`, so repeat submits to the same target
|
|
109
132
|
* dedupe to one UDA.
|
|
110
133
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{
|
|
1
|
+
"use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{NATIVE_QUOTE_ADDRESS as t,isStablecoinSymbol as n,toBaseUnits as r}from"./internal/encoding.js";import{resolveSdkEnv as i}from"./internal/env.js";import{buildKitMetadata as a}from"./internal/metadata.js";import{pollOnce as o}from"./internal/pollOnce.js";import{buildEvmChainsParam as s}from"./internal/supportedChains.js";import{withOneShotRetry as c}from"./internal/retry.js";import{pickRelevantSettlement as l}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{createEntityStore as u}from"../stridge-mock/store.js";import{startPoll as d}from"./poll.js";import{formatUsd as f}from"../../shared/format/formatUsd.js";import{defaultBlockExplorers as p}from"../../shared/utils/explorers.js";import{balanceToWithdrawableBalancesPayload as m}from"../../flows/withdraw/driver/transformers/balanceToWithdrawableBalancesPayload.js";import{quoteToWithdrawalPayload as h}from"../../flows/withdraw/driver/transformers/quoteToWithdrawalPayload.js";import{settlementToWithdrawalPayload as g}from"../../flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js";import{supportedAssetsToReceiveOptionsPayload as _}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{createApiClient as v}from"@stridge/sdk";function y(y){let b=v({projectKey:y.projectKey,env:i(y.environment)}),x=y.pollIntervals??{},S=x.processingMs??2e3,C=x.terminalMs??1e4,w=x.balancesMs??6e4,T=y.getI18n??(()=>e),E={...p(),...y.explorers??{}},D=T(),O=u({withdrawableBalances:{status:`idle`},receiveOptions:{status:`idle`},quote:{status:`idle`},settlement:{status:`idle`},...y.minAmountUsd===void 0?{}:{minAmountUsd:{value:y.minAmountUsd,formatted:f(y.minAmountUsd,D)}},...y.maxAmountUsd===void 0?{}:{maxAmountUsd:{value:y.maxAmountUsd,formatted:f(y.maxAmountUsd,D)}}}),k,A,j;function M(e){let t=e.assets.find(e=>e.network_id===y.currency.networkId);if(!t)return;let n=y.currency.assetSymbol.toUpperCase(),r=t.native_currency?.symbol?.toUpperCase()===n?t.native_currency:void 0,i=t.assets.find(e=>e.symbol?.toUpperCase()===n),a={networkId:t.network_id,eip155Id:t.eip155_id,networkName:t.network_name,...t.native_currency?.logo?{chainLogoUrl:t.native_currency.logo}:{},decimals:i?.decimals??r?.decimals??18,address:i?.address??``,isNative:!i&&!!r,...i?.logo?{assetLogoUrl:i.logo}:r?.logo?{assetLogoUrl:r.logo}:{}};return i||r?a:void 0}function N(e){let t=T(),n=A,r=m(e,{i18n:t,networkId:y.currency.networkId,assetSymbol:y.currency.assetSymbol,...n?{fallbackMeta:{decimals:n.decimals,address:n.address,isNative:n.isNative,eip155Id:String(n.eip155Id),networkName:n.networkName,...n.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{},...n.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{}}}:{}});O.update({withdrawableBalances:{status:`ready`,payload:r,raw:e,response:e}})}let P=!1,F=Promise.resolve(),I=!1,L=null;function R(){P||(P=!0,F=z())}async function z(){O.update({withdrawableBalances:{status:`loading`},receiveOptions:{status:`loading`}});let e=y.catalog?await y.catalog.getSupportedAssets():await c(()=>b.gateway.assets()).catch(()=>null);if(e){k=e,A=M(e);let t=_(e);O.update({receiveOptions:{status:`ready`,payload:t,raw:e.assets,response:e}})}else O.update({receiveOptions:{status:`error`,error:Error(`supportedAssets fetch failed.`)}});let t=s(e??void 0),n=await c(()=>b.balance.onchain(y.userAddress,{includeSpam:!1,includeZero:!1,...t?{chains:t}:{}})).catch(()=>null);n?(L=Date.now(),N(n)):N({wallet_address:y.userAddress,fetched_at:new Date().toISOString(),total_usd:`0`,chains:[]})}function B(){return a({flow:`withdraw`,...y.metadata?{hostMetadata:y.metadata}:{},extras:{source:{networkId:y.currency.networkId,assetSymbol:y.currency.assetSymbol}}})}function V(e,t){if(!k)return;let n=k.assets.find(t=>t.eip155_id===e);if(!n)return;let r=t.toUpperCase(),i=n.native_currency?.symbol?.toUpperCase()===r?n.native_currency:void 0,a=n.assets.find(e=>e.symbol?.toUpperCase()===r);if(!(!i&&!a))return{chainId:n.eip155_id,symbol:a?.symbol??i?.symbol??t,decimals:a?.decimals??i?.decimals??18,address:a?.address??``,isNative:!a&&!!i,...a?.logo?{assetLogoUrl:a.logo}:i?.logo?{assetLogoUrl:i.logo}:{},networkId:n.network_id,networkName:n.network_name,...i?.logo?{chainLogoUrl:i.logo}:{}}}function H(e){let t=O.getSnapshot().receiveOptions;if(!(t.status!==`ready`&&t.status!==`stale`))return t.payload.find(t=>t.eip155Id===e)}return{getSnapshot(){return O.getSnapshot()},subscribe(e){return O.subscribe(e)},arm:R,async requestQuote(e,i){R(),O.update({quote:{status:`loading`}});try{if(await F,i.aborted)return;let a=A;if(!a)throw Error(`Stridge withdraw driver: source currency ${y.currency.assetSymbol} not found on network ${y.currency.networkId} in supportedAssets.`);let o=V(e.receiveChainId,e.receiveTokenSymbol);if(!o)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let s=r(e.amount,a.decimals),c=await b.uda.quote({fromNetworkId:a.eip155Id,fromAsset:a.isNative?t:a.address,toNetworkId:o.chainId,toAsset:o.isNative?t:o.address,amount:s,fromAddress:y.userAddress,toAddress:e.recipientAddress},{signal:i});if(i.aborted)return;let l=n(y.currency.assetSymbol)?1:void 0,u=n(o.symbol)?1:void 0,d=h(c,{i18n:T(),receiveSide:o,sourceAmount:e.amount,sendDecimals:a.decimals,sendSymbol:y.currency.assetSymbol,now:Date.now(),...l===void 0?{}:{sendPriceUsd:l},...u===void 0?{}:{receivePriceUsd:u}});O.update({quote:{status:`ready`,payload:d,raw:c,response:c}})}catch(e){if(i.aborted)return;let t=e instanceof Error?e:Error(String(e));O.update({quote:{status:`error`,error:t}})}},async prepareWithdrawal(e,t){if(R(),await F,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=A;if(!n)throw Error(`Stridge withdraw driver: source currency ${y.currency.assetSymbol} not found on network ${y.currency.networkId} in supportedAssets.`);let r=V(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let i=await b.gateway.start({owner:y.userAddress,destination:{network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},metadata:B()},{signal:t});if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let a=i.deposit_addresses.find(e=>Number(e.eip155_id)===n.eip155Id);if(!a)throw Error(`Stridge withdraw driver: no UDA deposit address provisioned on chain ${n.eip155Id} for the brand currency. Check that supportedAssets advertises this chain.`);return j={network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},{depositTarget:{address:a.address,chainId:n.eip155Id,tokenSymbol:y.currency.assetSymbol,tokenAddress:n.isNative?``:n.address,tokenDecimals:n.decimals,isNative:n.isNative,amount:e.amount},correlation:{owner:y.userAddress}}},watchSettlement(e,t,n){let i=async e=>{let{matched:t}=await o(b,y.userAddress,j,e);return t},a=!1;d({signal:n,fetch:i,listener:n=>{if(!n)return;let i=A?r(e.form.amount,A.decimals).toString():void 0,o=e.tx?.hash?l(n,{txHash:e.tx.hash}):l(n,{bestMatch:{destination:{chainId:e.form.receiveChainId,tokenSymbol:e.form.receiveTokenSymbol,recipientAddress:e.form.recipientAddress},submittedAt:e.submittedAt,...i?{sourceAmountBaseUnits:i}:{}}});if(!o)return;let s=T(),c=H(Number(n.destination.eip155_id)),u=c?.tokens.find(e=>e.symbol===n.destination.asset_symbol),d={...c?.chainLogoUrl?{chainLogoUrl:c.chainLogoUrl}:{},...u?.assetLogoUrl?{assetLogoUrl:u.assetLogoUrl}:{},...c?.networkName?{networkName:c.networkName}:{}},f=g(o,n,{i18n:s,explorers:E,...Object.keys(d).length>0?{receiveAssetEnrichment:d}:{},...u?.decimals===void 0?{}:{receiveAssetDecimals:u.decimals}});f.kind!==`pending`&&(a=!0);let p={status:`ready`,payload:f,raw:o,response:n};O.update({settlement:p}),t(p)},nextIntervalMs:()=>a?C:S})},watchWithdrawableBalances(e,t,n){R(),d({signal:n,fetch:async e=>{if(!I){I=!0,await F;let e=O.getSnapshot().withdrawableBalances;return e.status===`ready`||e.status===`stale`?e.response:null}if(L!==null&&Date.now()-L<3e4)return null;try{if(await F,e.aborted)return null;let t=s(k),n=await b.balance.onchain(y.userAddress,{signal:e,includeSpam:!1,includeZero:!1,...t?{chains:t}:{}});return L=Date.now(),n}catch{return null}},listener:e=>{e&&N(e),t(O.getSnapshot().withdrawableBalances)},nextIntervalMs:()=>w})}}}export{y as createStridgeWithdrawDriver};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{resolveAddEthereumChain as e}from"./resolveAddEthereumChain.js";import{numberToHex as t}from"viem";import{getAccount as n,switchChain as r}from"wagmi/actions";function i(e){let t=e,n=new Set;for(;t&&!n.has(t);){if(n.add(t),t instanceof Error&&t.name===`ChainNotConfiguredError`)return!0;t=t.cause}return!1}function a(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===4902||t.data?.originalError?.code===4902}async function o(o,s){let c=n(s.wagmiConfig);if(c.chainId===o)return;if(!c.connector)throw Error(`Connect a wallet to sign and submit the deposit.`);try{await r(s.wagmiConfig,{chainId:o});return}catch(e){if(!i(e))throw e}let l=e(o,{wagmiConfig:s.wagmiConfig,supportedAssets:s.getSupportedAssets(),explorers:s.explorers});if(!l)throw Error(`Unable to add chain ${o} to your wallet automatically. Add it manually in your wallet and try again.`);let u=await c.connector.getProvider({chainId:o}),d=t(o);try{await u.request({method:`wallet_switchEthereumChain`,params:[{chainId:d}]})}catch(e){if(!a(e))throw e;await u.request({method:`wallet_addEthereumChain`,params:[l]})}let f=await u.request({method:`eth_chainId`});if(Number.parseInt(f,16)!==o){let e=Error(`User rejected the chain switch after adding the network.`);throw e.name=`UserRejectedRequestError`,Object.assign(e,{code:4001}),e}}export{o as ensureWalletChain};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
async function e(e,
|
|
1
|
+
async function e(e,n,r,i){try{let a=await e.gateway.poll(n,{...r?{network_id:r.network_id,to_address:r.to_address,asset_symbol:r.asset_symbol}:{},signal:i});return{matched:t(a.udas,r),envelope:a}}catch(e){if(i.aborted)throw e;if(e.statusCode===404)return{matched:null,envelope:null};throw e}}function t(e,t){if(e.length===0)return null;if(!t)return e[0]??null;let n=t.to_address.toLowerCase(),r=t.asset_symbol.toUpperCase();return e.find(e=>e.destination.network_id===t.network_id&&(e.destination.asset_symbol??``).toUpperCase()===r&&(e.destination.address??``).toLowerCase()===n)??null}export{e as pollOnce};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{numberToHex as e}from"viem";const t=e=>`https://${e}.nodes.stridge.com`;function n(n,r){let i=r.wagmiConfig.chains.find(e=>e.id===n),a=r.supportedAssets?.assets.find(e=>e.chain_type===`EVM`&&e.eip155_id===n),o=i?.name??a?.network_name,s=i?.nativeCurrency.symbol??a?.native_currency.symbol,c=typeof a?.native_currency.decimals==`number`?a.native_currency.decimals:void 0,l=i?.nativeCurrency.decimals??c??18,u=i?.nativeCurrency.name??a?.native_currency.name??s;if(!o||!s||!u)return;let d=i?.rpcUrls.default?.http[0],f=[d&&d.length>0?d:t(n)],p=i?.blockExplorers?.default?.url??r.explorers[n];return{chainId:e(n),chainName:o,nativeCurrency:{name:u,symbol:s,decimals:l},rpcUrls:f,...p?{blockExplorerUrls:[p]}:{}}}export{n as resolveAddEthereumChain};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
async function e(e,r={}){let i=r.baseDelayMs??500,a=r.jitterMs??250;try{return await e()}catch(r){if(!t(r))throw r;return await n(i+Math.random()*a),await e()}}function t(e){if(!e||typeof e!=`object`)return!0;let t=e;return t.name===`AbortError`?!1:typeof t.status==`number`?t.status>=500||t.status===429:!0}function n(e){return new Promise(t=>setTimeout(t,e))}export{e as withOneShotRetry};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{KNOWN_TESTNET_EIP155_IDS as e}from"../../../flows/shared/transformers/testnets.js";function t(t){if(!t)return;let n=new Set;for(let r of t.assets)r.chain_type===`EVM`&&(typeof r.eip155_id!=`number`||!Number.isFinite(r.eip155_id)||r.eip155_id<=0||e.has(r.eip155_id)||n.add(r.eip155_id));if(n.size!==0)return Array.from(n).join(`,`)}export{t as buildEvmChainsParam};
|
|
@@ -34,11 +34,6 @@ interface StridgePollIntervals {
|
|
|
34
34
|
type StridgeEnvironment = "production" | "staging";
|
|
35
35
|
/** Default {@link StridgeEnvironment} when {@link StridgeDriverConfig.environment} is omitted. */
|
|
36
36
|
declare const STRIDGE_DEFAULT_ENVIRONMENT = "production";
|
|
37
|
-
/**
|
|
38
|
-
* Default low-balance / amount-entry floor in USD used when {@link StridgeDriverConfig.minDepositUsd}
|
|
39
|
-
* is omitted. Hosts can override per project (some perp DEXes want a higher floor than $3).
|
|
40
|
-
*/
|
|
41
|
-
declare const STRIDGE_DEFAULT_MIN_DEPOSIT_USD = 3;
|
|
42
37
|
/**
|
|
43
38
|
* Settlement destination for `gateway/start`. Mirrors the wire shape so hosts don't have to reach
|
|
44
39
|
* for the SDK's `GatewayStartRequest.destination` type — every field corresponds 1:1.
|
|
@@ -81,11 +76,19 @@ interface StridgeDriverConfig {
|
|
|
81
76
|
*/
|
|
82
77
|
destination: StridgeDriverDestination;
|
|
83
78
|
/**
|
|
84
|
-
* Low-balance / amount-entry USD floor. Drives the asset-picker's "Low
|
|
85
|
-
* amount-entry hero's `min` / `initialAmount
|
|
86
|
-
*
|
|
79
|
+
* Low-balance / amount-entry USD floor. Drives the asset-picker's "Low Balance" pill and the
|
|
80
|
+
* amount-entry hero's `min` / `initialAmount`. The kit ships no default — when omitted, the
|
|
81
|
+
* floor is unset and the picker / amount-entry surface neither a "Low Balance" pill nor a
|
|
82
|
+
* minimum CTA. Hosts that want a floor opt in by passing the USD value here.
|
|
83
|
+
*/
|
|
84
|
+
minAmountUsd?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Optional upper USD bound on the deposit amount. When set, the amount-entry treats
|
|
87
|
+
* `min(walletBalanceUsd, maxAmountUsd)` as the effective ceiling — typing above it surfaces
|
|
88
|
+
* an inline notice and the footer CTA snaps the amount down on click. Omit to let the
|
|
89
|
+
* wallet balance be the only ceiling.
|
|
87
90
|
*/
|
|
88
|
-
|
|
91
|
+
maxAmountUsd?: number;
|
|
89
92
|
/**
|
|
90
93
|
* Optional metadata persisted on the UDA at `gateway/start` time. Echoed back on
|
|
91
94
|
* `gateway/{owner}` and webhook payloads. Treat as untrusted display data.
|
|
@@ -104,12 +107,15 @@ interface StridgeDriverConfig {
|
|
|
104
107
|
/** Polling cadence overrides. */
|
|
105
108
|
pollIntervals?: StridgePollIntervals;
|
|
106
109
|
/**
|
|
107
|
-
* Wagmi config used to sign and broadcast transfers.
|
|
110
|
+
* Wagmi config used to sign and broadcast transfers. Optional — when omitted, the driver
|
|
111
|
+
* still bootstraps for read-only paths (balances, addresses, brand, quotes) and the
|
|
112
|
+
* transfer-crypto method path, but {@link DepositDriver.submitDeposit} throws a user-readable
|
|
113
|
+
* error since signing has no connector to talk to. Receipt polling is intentionally NOT
|
|
108
114
|
* routed through this — the driver uses an internal Stridge RPC client (see `rpc.ts`) so
|
|
109
|
-
* deposits don't depend on the host's wagmi public client (which falls
|
|
110
|
-
*
|
|
115
|
+
* deposits don't depend on the host's wagmi public client (which falls through to viem's
|
|
116
|
+
* hard-coded public defaults — unreliable for live tx flow).
|
|
111
117
|
*/
|
|
112
|
-
wagmiConfig
|
|
118
|
+
wagmiConfig?: Config;
|
|
113
119
|
/**
|
|
114
120
|
* Advanced escape hatch: inject a custom Stridge RPC client (e.g. for tests or a self-hosted
|
|
115
121
|
* proxy). Defaults to a client that targets `https://${chainId}.nodes.stridge.com`.
|
|
@@ -142,4 +148,4 @@ interface StridgeDriverConfig {
|
|
|
142
148
|
};
|
|
143
149
|
}
|
|
144
150
|
//#endregion
|
|
145
|
-
export { STRIDGE_DEFAULT_ENVIRONMENT,
|
|
151
|
+
export { STRIDGE_DEFAULT_ENVIRONMENT, StridgeDriverConfig, StridgeDriverDestination, StridgeEnvironment, StridgePollIntervals, StridgeTokenIconResolverEntry };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=`production
|
|
1
|
+
const e=`production`;export{e as STRIDGE_DEFAULT_ENVIRONMENT};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ensureWalletChain as e}from"./internal/ensureWalletChain.js";import{numberToHex as t}from"viem";import{getAccount as n,getConnectorClient as r}from"wagmi/actions";function i(i){return{async signAndBroadcastStep(o,s){a(s);let c=n(i.wagmiConfig);if(!c.address)throw Error(`Connect a wallet to sign and submit the deposit.`);await e(o.chainId,{wagmiConfig:i.wagmiConfig,getSupportedAssets:i.getSupportedAssets,explorers:i.explorers}),a(s);let l=o.from??c.address;if(!l)throw Error(`Stridge driver: no connected wallet address available to broadcast the deposit tx.`);return await(await r(i.wagmiConfig,{chainId:o.chainId})).request({method:`eth_sendTransaction`,params:[{from:l,to:o.to,data:o.data,value:t(o.value),chainId:t(o.chainId)}]})}}}function a(e){if(e.aborted)throw new DOMException(`Aborted`,`AbortError`)}export{i as createWagmiSigner};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ActivityDriver } from "../../flows/activity/driver/types.js";
|
|
2
|
+
//#region src/drivers/stridge-mock/createStridgeMockActivityDriver.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Per-call latency budget the mock activity driver imposes to mirror production cadence — the
|
|
5
|
+
* `refreshActivity` round-trip lets the activity surface flash its skeleton briefly before the
|
|
6
|
+
* fixture envelope arrives. Hosts can override when scripting tests / Storybook scenarios that
|
|
7
|
+
* need tighter / longer windows.
|
|
8
|
+
*/
|
|
9
|
+
interface MockActivityDriverLatency {
|
|
10
|
+
/** `refreshActivity` resolves after this many ms. */
|
|
11
|
+
refreshActivity?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Configuration for {@link createStridgeMockActivityDriver}. Every field is optional — calling
|
|
15
|
+
* the factory with no arguments produces a fully seeded driver against the bundled
|
|
16
|
+
* captured-production fixtures.
|
|
17
|
+
*/
|
|
18
|
+
interface CreateStridgeMockActivityDriverInput {
|
|
19
|
+
/**
|
|
20
|
+
* Owner address threaded into the bundled `gateway/{owner}` fixture and used as the
|
|
21
|
+
* direction-discriminator fallback when `metadata.kit_flow` is absent. Defaults to the
|
|
22
|
+
* captured production EOA exported as {@link DEFAULT_WALLET_INFO}.
|
|
23
|
+
*/
|
|
24
|
+
owner?: string;
|
|
25
|
+
/** Per-call latency overrides. */
|
|
26
|
+
latency?: MockActivityDriverLatency;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Result of {@link createStridgeMockActivityDriver}. Mirrors the {@link import("./createStridgeMockDriver").MockDriverHandle}
|
|
30
|
+
* shape — `driver` is the only piece the kit's `<KitProvider activity={…}>` cares about; future
|
|
31
|
+
* iterations can extend the handle with mock-only affordances (e.g. trigger panel hooks) without
|
|
32
|
+
* touching the {@link ActivityDriver} contract.
|
|
33
|
+
*/
|
|
34
|
+
interface MockActivityDriverHandle {
|
|
35
|
+
driver: ActivityDriver;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build a programmatic {@link ActivityDriver} backed by deterministic in-memory state. Used by
|
|
39
|
+
* demos, tests, Storybook, and any `<KitProvider activity={…}>` mount that doesn't have a Stridge
|
|
40
|
+
* gateway key available.
|
|
41
|
+
*/
|
|
42
|
+
declare function createStridgeMockActivityDriver(input?: CreateStridgeMockActivityDriverInput): MockActivityDriverHandle;
|
|
43
|
+
//#endregion
|
|
44
|
+
export { CreateStridgeMockActivityDriverInput, MockActivityDriverHandle, MockActivityDriverLatency, createStridgeMockActivityDriver };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{activityResponseToPayload as e}from"../../shared/widgets/activity/transformers/activityResponseToPayload.js";import{createEntityStore as t}from"./store.js";import{DEFAULT_WALLET_INFO as n,buildMockActivityResponse as r}from"./fixtures.js";const i={refreshActivity:400};function a(a={}){let s=a.owner??n.address,c={...i,...a.latency??{}},l=t({activity:{status:`idle`}}),u=!1,d=Promise.resolve(),f=!1;function p(){u||(u=!0,d=h(new AbortController().signal))}let m={getSnapshot(){return l.getSnapshot()},subscribe(e){return l.subscribe(e)},arm:p,refreshActivity(e){let t=u;if(p(),!t&&!f){f=!0;return}h(e)},watchActivity(e){p();let t,n=async()=>{e.aborted||(f?await h(e):(f=!0,await d),!e.aborted&&(t=setTimeout(n,5e3)))};e.addEventListener(`abort`,()=>{t!==void 0&&clearTimeout(t)},{once:!0}),n()},invalidateActivity(){let e=l.getSnapshot().activity;e.status===`ready`?l.update({activity:{status:`stale`,payload:e.payload,raw:e.raw,response:e.response}}):(e.status===`idle`||e.status===`error`)&&l.update({activity:{status:`loading`}})}};async function h(t){let n=l.getSnapshot().activity;(n.status===`idle`||n.status===`error`)&&l.update({activity:{status:`loading`}});try{await o(c.refreshActivity,t)}catch{return}if(t.aborted)return;let i=r(s),a=e(i,{ownerAddress:s});l.update({activity:{status:`ready`,payload:a,raw:i.udas,response:i}})}return{driver:m}}function o(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0})})}export{a as createStridgeMockActivityDriver};
|
|
@@ -38,8 +38,8 @@ interface CreateStridgeMockDriverInput {
|
|
|
38
38
|
getI18n?: () => I18n;
|
|
39
39
|
/** Connected wallet info. When omitted, defaults to {@link DEFAULT_WALLET_INFO}. */
|
|
40
40
|
wallet?: WalletInfo;
|
|
41
|
-
/** Optional minimum-deposit USD floor surfaced on `target.payload.
|
|
42
|
-
|
|
41
|
+
/** Optional minimum-deposit USD floor surfaced on `target.payload.minAmountUsd`. */
|
|
42
|
+
minAmountUsd?: number;
|
|
43
43
|
/**
|
|
44
44
|
* Settlement-destination override — a `{ chain, symbol }` selector resolved against the
|
|
45
45
|
* mock's bundled catalog ({@link SAMPLE_DEPOSIT_CHAINS} via {@link resolveMockAsset}). Drives
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{
|
|
1
|
+
import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{createEntityStore as t}from"./store.js";import{shortenAddress as n}from"../../shared/format/shortenAddress.js";import{DEFAULT_BRAND_PAYLOAD as r,DEFAULT_WALLET_INFO as i,STUB_DEPOSIT_ADDRESSES_RAW as a,STUB_GATEWAY_POLL_RESPONSE as o,STUB_GATEWAY_SETTLEMENT_DTO as s,STUB_GATEWAY_START_RESPONSE as c,STUB_ONCHAIN_BALANCE_RESPONSE as l,STUB_QUOTE_RESPONSE as u,STUB_SUPPORTED_ASSETS_RESPONSE as d,buildDefaultAddressesPayload as f,buildDefaultBalances as p,buildDefaultCashMethodsPayload as m,buildDefaultFailurePayload as h,buildDefaultPendingPayload as g,buildDefaultQuotePayload as _,buildDefaultSuccessPayload as v,buildDefaultTargetPayload as y,buildDefaultTargetRaw as b,buildDefaultWalletPayload as x,resolveMockAsset as S}from"./fixtures.js";const C={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3,transferDetected:4e3};function w(r={}){let a=r.getI18n??(()=>e),c=r.wallet??i,l=S(r.asset),d=t(T(a(),c,r.minAmountUsd,l,r.initialState)),f={...C,...r.latency??{}},p=r.autoSettleTo??`succeeded`,m=r.pendingTriggerToSuccessMs===void 0?3500:r.pendingTriggerToSuccessMs,y=new Set,b=new Set,x=new Set,w=!1,D,O;function k(){D!==void 0&&(clearTimeout(D),D=void 0),O!==void 0&&(clearTimeout(O),O=void 0),w=!1}function A(){if(w)return;w=!0;let e=a();D=setTimeout(()=>{D=void 0;let t={status:`ready`,payload:g(e,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t);O=setTimeout(()=>{if(O=void 0,p===`succeeded`){let t={status:`ready`,payload:v(e,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t)}else if(p===`failed`){let t={status:`ready`,payload:h(e,void 0,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t)}w=!1},f.processingTerminal)},f.processingPendingDelay)}let j={getSnapshot(){return d.getSnapshot()},subscribe(e){return d.subscribe(e)},arm(){},async requestQuote(e,t){d.update({quote:{status:`loading`}}),await E(f.quote,t);let n=a(),r=Date.now()+3e4;d.update({quote:{status:`ready`,payload:_(n,r,l),raw:u,response:u}})},async submitDeposit(e,t){return await E(f.submit,t),p!==`none`&&A(),{hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`}},watchBalances(e,t,n){x.add(t);let r=d.getSnapshot().balances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>x.delete(t),{once:!0})},invalidateBalances(){let e=d.getSnapshot().balances;for(let t of x)t(e)},watchSourceTx(e,t,n){b.add(t);let r=setTimeout(()=>{n.aborted||t({hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`})},f.transferDetected);n.addEventListener(`abort`,()=>{clearTimeout(r),b.delete(t)},{once:!0})},watchSettlement(e,t,n){y.add(t);let r=d.getSnapshot().settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>y.delete(t),{once:!0})},async fetchActiveSettlement(e,t){let n=d.getSnapshot().settlement;return n.status!==`ready`||n.payload.kind!==`pending`?null:{payload:n.payload,raw:n.raw,response:n.response}}},M=0,N=null;function P(){N!==null&&(clearTimeout(N),N=null)}function F(e){M+=1;let t=`0x${M.toString(16).padStart(8,`0`)}${e.value.length>10?e.value.slice(10):`0`.repeat(56)}`;return{value:t,formatted:n(t)}}function I(e,t){if(e)return e.replace(/(\/tx\/|\/address\/)(0x[0-9a-fA-F]+)/,(e,n)=>`${n}${t}`)}let L={triggerSettlementPending(e){let t=g(a(),l),n=t.txHash?F(t.txHash):void 0,r=n?I(t.txExplorerUrl,n.value):void 0,i={status:`ready`,payload:{...t,...n?{txHash:n}:{},...r?{txExplorerUrl:r}:{},...e},raw:s,response:o};P(),d.update({settlement:i});for(let e of y)e(i);m!==null&&m>=0&&(N=setTimeout(()=>{N=null,L.triggerSettlementSuccess()},m))},triggerSettlementSuccess(e){P();let t=v(a(),l),n=F(t.depositTx.hash),r=I(t.depositTx.explorerUrl,n.value),i={status:`ready`,payload:{...t,depositTx:{...t.depositTx,hash:n,...r?{explorerUrl:r}:{}},...e},raw:s,response:o};d.update({settlement:i});for(let e of y)e(i)},triggerSettlementFailure(e,t){P();let n=h(a(),e,l),r=F(n.txHash),i=I(n.txExplorerUrl,r.value),c={status:`ready`,payload:{...n,txHash:r,...i?{txExplorerUrl:i}:{},...t},raw:s,response:o};d.update({settlement:c});for(let e of y)e(c)},triggerQuoteFailure(e){d.update({quote:{status:`error`,error:e}})},reset(){P(),k(),d.replace(T(a(),c,r.minAmountUsd,l,r.initialState))}};return{driver:j,triggers:L}}function T(e,t,n,i,o){let s={brand:{status:`ready`,payload:r,raw:c.metadata,response:c},target:{status:`ready`,payload:y(e,n,i),raw:b(i),response:d},addresses:{status:`ready`,payload:f(e,n),raw:a,response:c},balances:{status:`ready`,payload:p(e),raw:l,response:l},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:x(e,t),raw:t,response:t},cashMethods:(()=>{let t=m(e);return{status:`ready`,payload:t,raw:t,response:t}})()};return o?{...s,...o}:s}function E(e,t){return new Promise((n,r)=>{if(t.aborted){r(D());return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(D())};t.addEventListener(`abort`,a,{once:!0})})}function D(){if(typeof DOMException==`function`)return new DOMException(`Aborted`,`AbortError`);let e=Error(`Aborted`);return e.name=`AbortError`,e}export{w as createStridgeMockDriver};
|
|
@@ -6,8 +6,8 @@ import { I18n } from "@lingui/core";
|
|
|
6
6
|
|
|
7
7
|
//#region src/drivers/stridge-mock/createStridgeMockWithdrawDriver.d.ts
|
|
8
8
|
declare const DEFAULT_LATENCY: {
|
|
9
|
-
/** `requestQuote` resolves after this many ms. */quote: number; /** `
|
|
10
|
-
submit: number; /** Time between `
|
|
9
|
+
/** `requestQuote` resolves after this many ms. */quote: number; /** `prepareWithdrawal` resolves after this many ms. */
|
|
10
|
+
submit: number; /** Time between `prepareWithdrawal` returning and the settlement entity flipping to `pending`. */
|
|
11
11
|
processingPendingDelay: number; /** Time between `pending` and the terminal verdict. */
|
|
12
12
|
processingTerminal: number;
|
|
13
13
|
};
|
|
@@ -93,10 +93,22 @@ interface CreateStridgeMockWithdrawDriverInput {
|
|
|
93
93
|
/**
|
|
94
94
|
* Settlement asset override — same shape as the deposit factory's `asset` field. Drives the
|
|
95
95
|
* withdrawable-balance row, the quote receive-side, and every settlement banner so the
|
|
96
|
-
* picker's `(
|
|
96
|
+
* picker's `(networkId, symbol)` is reflected end-to-end. Unknown combinations fall back to USDC
|
|
97
97
|
* on BSC via {@link resolveMockAsset}.
|
|
98
98
|
*/
|
|
99
99
|
asset?: MockAssetSelection;
|
|
100
|
+
/**
|
|
101
|
+
* Optional lower USD bound on the withdraw amount. Mirrors the live driver's option —
|
|
102
|
+
* populates {@link WithdrawSnapshot.minAmountUsd} so the form's "Min $X" gate fires under the
|
|
103
|
+
* mock too.
|
|
104
|
+
*/
|
|
105
|
+
minAmountUsd?: number;
|
|
106
|
+
/**
|
|
107
|
+
* Optional upper USD bound on the withdraw amount. Mirrors the live driver's option —
|
|
108
|
+
* populates {@link WithdrawSnapshot.maxAmountUsd} so the form's "Max $X" gate fires under the
|
|
109
|
+
* mock too.
|
|
110
|
+
*/
|
|
111
|
+
maxAmountUsd?: number;
|
|
100
112
|
}
|
|
101
113
|
/**
|
|
102
114
|
* Deterministic in-memory {@link WithdrawDriver} backed by the V2 mockup fixtures. Used by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{formatDurationCompact as t}from"../../shared/format/formatDurationCompact.js";import{formatTimestamp as n}from"../../shared/format/formatTimestamp.js";import{shortenAddress as r}from"../../shared/format/shortenAddress.js";import{supportedAssetsToReceiveOptionsPayload as i}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as a,buildDefaultSupportedAssetsResponse as o,resolveMockAsset as s}from"./fixtures.js";const c=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,l=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function u(e){return{symbol:e.symbol,decimals:e.decimals,address:e.address,isNative:e.isNative,assetLogoUrl:e.assetLogoUrl,networkName:e.networkName,eip155Id:e.eip155IdString,networkId:e.networkId,chainLogoUrl:e.chainLogoUrl}}function d(e){return`${e.explorerBase}/tx/`}const f={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3},p=u(a),m=4.00613;function h(e=a){let t=u(e);return[{networkId:t.networkId,networkName:t.networkName,eip155Id:t.eip155Id,...t.chainLogoUrl?{chainLogoUrl:t.chainLogoUrl}:{},symbol:t.symbol,decimals:t.decimals,address:t.address,...t.assetLogoUrl?{assetLogoUrl:t.assetLogoUrl}:{},isNative:t.isNative,amount:{value:4.01,formatted:`4.01`},amountUsd:{value:4.01,formatted:`$4.01`}}]}function g(e=m,t=a){let n=D(e);return{receiveAsset:u(t),receiveAmount:{value:e,formatted:n},receiveAmountUsd:{value:e,formatted:`$${e.toFixed(2)}`},breakdown:{selectedRoute:{provider:`mock`,scenario:`same_chain_same_token`,label:`Mock · same chain same token`},networkCost:{value:0,formatted:`$0.00`},priceImpact:{value:0,formatted:`0.00%`}},quoteTotalSeconds:30,expiresAt:Date.now()+3e4}}function _(t=e,i=m,o=c,s=l,f=a){let p=Date.now();return{kind:`pending`,receiveAsset:u(f),receiveAmount:{value:i,formatted:D(i)},recipient:{value:o,formatted:r(o)},submittedAt:{value:p,formatted:n(p,t)},txHash:{value:s,formatted:r(s)},txExplorerUrl:`${d(f)}${s}`}}function v(i=e,o=m,s=c,f=14,p=l,h=a,g=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let _=Date.now(),v=f*1e3,y=_-v;return{kind:`succeeded`,receiveAsset:u(h),receiveAmount:{value:o,formatted:D(o)},recipient:{value:s,formatted:r(s)},submittedAt:{value:y,formatted:n(y,i)},filledAt:{value:_,formatted:n(_,i)},totalTime:{value:f,formatted:t(v,i)},txHash:{value:p,formatted:r(p)},txExplorerUrl:`${d(h)}${p}`,completionTx:{hash:{value:g,formatted:r(g)},explorerUrl:`${d(h)}${g}`}}}function y(t=e,i=`unknown`,o=m,s=c,f=l,p=a){let h=Date.now(),g=h-5e3;return{kind:`failed`,failureKind:i,receiveAsset:u(p),receiveAmount:{value:o,formatted:D(o)},recipient:{value:s,formatted:r(s)},submittedAt:{value:g,formatted:n(g,t)},failedAt:{value:h,formatted:n(h,t)},txHash:{value:f,formatted:r(f)},txExplorerUrl:`${d(p)}${f}`}}function b(t={}){let n={...f,...t.latency},r=t.autoSettleTo??`succeeded`,a=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,p=t.getI18n??(()=>e),b=s(t.asset),S=u(b),D=d(b),O=h(b),k=x(O),A=o(),j=i(A),M={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:O,raw:k,response:k},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:j,raw:A.assets,response:A},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`}},N=M,P=new Set,F=new Set,I=new Set,L=new Set,R=()=>{for(let e of P)e()},z=e=>{if(N={...N,...e},R(),e.settlement)for(let e of F)e(N.settlement);if(e.withdrawableBalances)for(let e of I)e(N.withdrawableBalances)},B=(e,t)=>{let n=setTimeout(()=>{L.delete(n),e()},t);L.add(n)},V=null,H=!1,U=0;function W(){return U+=1,`0x${U.toString(16).padStart(8,`0`)}${l.slice(10)}`}let G={getSnapshot:()=>N,subscribe(e){return P.add(e),()=>{P.delete(e)}},async requestQuote(e,t){z({quote:{status:`loading`}}),await E(n.quote,t);let r=g(e.amount,b),i=C(r,e.amount,S);z({quote:{status:`ready`,payload:r,raw:i,response:i}})},async submitWithdrawal(e,t){await E(n.submit,t),V={amount:e.amount,recipient:e.recipientAddress};let r=W(),i={hash:r,explorerUrl:`${D}${r}`};return K(e.amount,e.recipientAddress,r,t),i},watchSettlement(e,t,n){F.add(t);let r=N.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>F.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){I.add(t);let r=N.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>I.delete(t),{once:!0})}};function K(e,t,i,a){H||(H=!0,B(()=>{if(a.aborted){H=!1;return}let o=_(p(),e,t,i,b),s=w(o,S);if(z({settlement:{status:`ready`,payload:o,raw:s,response:T(s,o)}}),r===`none`){H=!1;return}B(()=>{if(H=!1,a.aborted)return;let n=r===`succeeded`?v(p(),e,t,14,i,b):y(p(),`unknown`,e,t,i,b),o=w(n,S);z({settlement:{status:`ready`,payload:n,raw:o,response:T(o,n)}})},n.processingTerminal)},n.processingPendingDelay))}let q={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=J(),r={..._(p(),t,n,W(),b),...e},i=w(r,S);z({settlement:{status:`ready`,payload:r,raw:i,response:T(i,r)}}),a!==null&&B(()=>q.triggerWithdrawalSuccess(),a)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=J(),r={...v(p(),t,n,14,W(),b),...e},i=w(r,S);z({settlement:{status:`ready`,payload:r,raw:i,response:T(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=J(),i={...y(p(),e,n,r,W(),b),...t},a=w(i,S);z({settlement:{status:`ready`,payload:i,raw:a,response:T(a,i)}})},triggerQuoteFailure(e){z({quote:{status:`error`,error:e}})},reset(){for(let e of L)clearTimeout(e);L.clear(),H=!1,V=null,U=0,N=M,R()}};function J(){return{amount:V?.amount??m,recipient:V?.recipient??c}}return{driver:G,triggers:q}}function x(e){let t=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{wallet_address:`0xMockWallet000000000000000000000000000000`,fetched_at:new Date(0).toISOString(),total_usd:t.toFixed(2),chains:e.map(e=>({eip155_id:e.eip155Id?Number(e.eip155Id):0,stridge_network_id:e.networkId??``,network_name:e.networkName.toLowerCase(),label:e.networkName,scanner_url:``,native_symbol:``,subtotal_usd:(e.amountUsd?.value??0).toFixed(2),tokens:[{token_address:e.address,symbol:e.symbol,name:e.symbol,decimals:e.decimals,logo:e.assetLogoUrl??``,is_native:e.isNative,is_spam:!1,raw_amount:S(e.amount.value,e.decimals).toString(),amount:e.amount.value.toString(),amount_usd:(e.amountUsd?.value??0).toFixed(2),usd_price:e.amount.value>0?((e.amountUsd?.value??0)/e.amount.value).toFixed(6):`0`,price_change_24h_pct:`0`}]}))}}function S(e,t){if(!Number.isFinite(e)||e<0)return 0n;let[n,r=``]=e.toFixed(t).split(`.`),i=r.padEnd(t,`0`).slice(0,t);return BigInt((n??`0`)+i)}function C(e,t,n=p){let r=S(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=S(t,n.decimals).toString(),a=t>0?(e.receiveAmount.value/t).toFixed(6):`1`;return{from:{network_id:Number(n.eip155Id??56),asset_address:n.address,amount:i},to:{network_id:Number(e.receiveAsset.eip155Id??56),asset_address:e.receiveAsset.address,amount:r},exchange_rate:a,fees:{total_fee:`0`},route:{provider:`mock`,scenario:`same_chain_same_token`,estimated_time_seconds:30},expires_at:new Date(e.expiresAt).toISOString()}}function w(e,t=p){let n=new Date(e.submittedAt.value).toISOString(),r=e.kind===`succeeded`?`completed`:e.kind===`failed`?`failed`:`routing`,i=e.kind===`succeeded`?e.filledAt.value:e.kind===`failed`?e.failedAt.value:e.submittedAt.value,a={tx_id:(e.kind===`succeeded`?e.txHash.value:e.txHash?.value)??``,asset_symbol:t.symbol,asset_address:t.address,eip155_id:t.eip155Id??`56`,network_id:t.networkId??`9006`,network_name:t.networkName.toLowerCase(),raw_amount:S(e.receiveAmount.value,t.decimals).toString(),amount:e.receiveAmount.value.toString(),confirmed_at:n},o={address:e.recipient.value,asset_address:e.receiveAsset.address,asset_symbol:e.receiveAsset.symbol,eip155_id:e.receiveAsset.eip155Id??``,network_id:e.receiveAsset.networkId??``,network_name:e.receiveAsset.networkName.toLowerCase(),raw_amount:S(e.receiveAmount.value,e.receiveAsset.decimals).toString(),amount:e.receiveAmount.value.toString(),...e.kind===`succeeded`?{settled_at:new Date(e.filledAt.value).toISOString(),...e.completionTx?{tx_id:e.completionTx.hash.value}:{}}:{}};return{id:`mock-settlement-${e.recipient.value}-${a.tx_id}`,status:r,created_at:n,updated_at:new Date(i).toISOString(),events:[],fees:{raw_amount:`0`},from:a,to:o,route:{provider:`mock`,scenario:`withdraw_v1`},...e.kind===`failed`?{error:e.failureKind}:{}}}function T(e,t){let n=t.kind!==`pending`;return{owner:`0xMockOwner`,uda_id:`mock-uda`,created_at:e.created_at,updated_at:e.updated_at,is_terminal:n,status:t.kind===`succeeded`?`completed`:t.kind===`failed`?`failed`:`to_pending`,destination:{address:t.recipient.value,asset_address:t.receiveAsset.address,asset_decimals:t.receiveAsset.decimals,asset_symbol:t.receiveAsset.symbol,eip155_id:t.receiveAsset.eip155Id??``,network_id:t.receiveAsset.networkId??``,network_name:t.receiveAsset.networkName},settlements:[e]}}function E(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),t.removeEventListener(`abort`,a),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a)})}function D(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{h as buildDefaultWithdrawableBalances,y as buildDefaultWithdrawalFailurePayload,_ as buildDefaultWithdrawalPendingPayload,g as buildDefaultWithdrawalQuotePayload,v as buildDefaultWithdrawalSuccessPayload,b as createStridgeMockWithdrawDriver};
|
|
1
|
+
"use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{formatDurationCompact as t}from"../../shared/format/formatDurationCompact.js";import{formatTimestamp as n}from"../../shared/format/formatTimestamp.js";import{formatUsd as r}from"../../shared/format/formatUsd.js";import{shortenAddress as i}from"../../shared/format/shortenAddress.js";import{supportedAssetsToReceiveOptionsPayload as a}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as o,buildDefaultSupportedAssetsResponse as s,resolveMockAsset as c}from"./fixtures.js";const l=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,u=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function d(e){return{symbol:e.symbol,decimals:e.decimals,address:e.address,isNative:e.isNative,assetLogoUrl:e.assetLogoUrl,networkName:e.networkName,eip155Id:e.eip155IdString,networkId:e.networkId,chainLogoUrl:e.chainLogoUrl}}function f(e){return`${e.explorerBase}/tx/`}const p={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3},m=d(o),h=4.00613;function g(e=o){let t=d(e);return[{networkId:t.networkId,networkName:t.networkName,eip155Id:t.eip155Id,...t.chainLogoUrl?{chainLogoUrl:t.chainLogoUrl}:{},symbol:t.symbol,decimals:t.decimals,address:t.address,...t.assetLogoUrl?{assetLogoUrl:t.assetLogoUrl}:{},isNative:t.isNative,amount:{value:4.01,formatted:`4.01`},amountUsd:{value:4.01,formatted:`$4.01`}}]}function _(e=h,t=o){let n=O(e);return{receiveAsset:d(t),receiveAmount:{value:e,formatted:n},receiveAmountUsd:{value:e,formatted:`$${e.toFixed(2)}`},breakdown:{selectedRoute:{provider:`mock`,scenario:`same_chain_same_token`,label:`Mock · same chain same token`},networkCost:{value:0,formatted:`$0.00`},priceImpact:{value:0,formatted:`0.00%`}},quoteTotalSeconds:30,expiresAt:Date.now()+3e4}}function v(t=e,a=h,s=l,c=u,p=o){let m=Date.now();return{kind:`pending`,receiveAsset:d(p),receiveAmount:{value:a,formatted:O(a)},receiveAmountUsd:{value:a,formatted:r(a,t)},recipient:{value:s,formatted:i(s)},submittedAt:{value:m,formatted:n(m,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${f(p)}${c}`}}function y(r=e,a=h,s=l,c=14,p=u,m=o,g=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let _=Date.now(),v=c*1e3,y=_-v;return{kind:`succeeded`,receiveAsset:d(m),receiveAmount:{value:a,formatted:O(a)},recipient:{value:s,formatted:i(s)},submittedAt:{value:y,formatted:n(y,r)},filledAt:{value:_,formatted:n(_,r)},totalTime:{value:c,formatted:t(v,r)},txHash:{value:p,formatted:i(p)},txExplorerUrl:`${f(m)}${p}`,completionTx:{hash:{value:g,formatted:i(g)},explorerUrl:`${f(m)}${g}`}}}function b(t=e,r=`unknown`,a=h,s=l,c=u,p=o){let m=Date.now(),g=m-5e3;return{kind:`failed`,failureKind:r,receiveAsset:d(p),receiveAmount:{value:a,formatted:O(a)},recipient:{value:s,formatted:i(s)},submittedAt:{value:g,formatted:n(g,t)},failedAt:{value:m,formatted:n(m,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${f(p)}${c}`}}function x(t={}){let n={...p,...t.latency},i=t.autoSettleTo??`succeeded`,o=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,f=t.getI18n??(()=>e),m=c(t.asset),x=d(m),C=g(m),O=S(C),k=s(),A=a(k),j=t.initialState?.minAmountUsd??(t.minAmountUsd===void 0?void 0:{value:t.minAmountUsd,formatted:r(t.minAmountUsd,f())}),M=t.initialState?.maxAmountUsd??(t.maxAmountUsd===void 0?void 0:{value:t.maxAmountUsd,formatted:r(t.maxAmountUsd,f())}),N={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:C,raw:O,response:O},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:A,raw:k.assets,response:k},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`},...j?{minAmountUsd:j}:{},...M?{maxAmountUsd:M}:{}},P=N,F=new Set,I=new Set,L=new Set,R=new Set,z=()=>{for(let e of F)e()},B=e=>{if(P={...P,...e},z(),e.settlement)for(let e of I)e(P.settlement);if(e.withdrawableBalances)for(let e of L)e(P.withdrawableBalances)},V=(e,t)=>{let n=setTimeout(()=>{R.delete(n),e()},t);R.add(n)},H=null,U=!1,W=0;function G(){return W+=1,`0x${W.toString(16).padStart(8,`0`)}${u.slice(10)}`}let K={getSnapshot:()=>P,subscribe(e){return F.add(e),()=>{F.delete(e)}},arm(){},async requestQuote(e,t){B({quote:{status:`loading`}}),await D(n.quote,t);let r=_(e.amount,m),i=w(r,e.amount,x);B({quote:{status:`ready`,payload:r,raw:i,response:i}})},async prepareWithdrawal(e,t){await D(n.submit,t),H={amount:e.amount,recipient:e.recipientAddress};let r=G();return q(e.amount,e.recipientAddress,r,t),{depositTarget:{address:`0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC`,chainId:Number(m.eip155IdString),tokenSymbol:m.symbol,tokenAddress:m.address,tokenDecimals:m.decimals,isNative:m.isNative,amount:e.amount},correlation:{owner:`0x70997970C51812dc3A010C7d01b50e0d17dc79C8`}}},watchSettlement(e,t,n){I.add(t);let r=P.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>I.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){L.add(t);let r=P.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>L.delete(t),{once:!0})}};function q(e,t,r,a){U||(U=!0,V(()=>{if(a.aborted){U=!1;return}let o=v(f(),e,t,r,m),s=T(o,x);if(B({settlement:{status:`ready`,payload:o,raw:s,response:E(s,o)}}),i===`none`){U=!1;return}V(()=>{if(U=!1,a.aborted)return;let n=i===`succeeded`?y(f(),e,t,14,r,m):b(f(),`unknown`,e,t,r,m),o=T(n,x);B({settlement:{status:`ready`,payload:n,raw:o,response:E(o,n)}})},n.processingTerminal)},n.processingPendingDelay))}let J={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=Y(),r={...v(f(),t,n,G(),m),...e},i=T(r,x);B({settlement:{status:`ready`,payload:r,raw:i,response:E(i,r)}}),o!==null&&V(()=>J.triggerWithdrawalSuccess(),o)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=Y(),r={...y(f(),t,n,14,G(),m),...e},i=T(r,x);B({settlement:{status:`ready`,payload:r,raw:i,response:E(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=Y(),i={...b(f(),e,n,r,G(),m),...t},a=T(i,x);B({settlement:{status:`ready`,payload:i,raw:a,response:E(a,i)}})},triggerQuoteFailure(e){B({quote:{status:`error`,error:e}})},reset(){for(let e of R)clearTimeout(e);R.clear(),U=!1,H=null,W=0,P=N,z()}};function Y(){return{amount:H?.amount??h,recipient:H?.recipient??l}}return{driver:K,triggers:J}}function S(e){let t=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{wallet_address:`0xMockWallet000000000000000000000000000000`,fetched_at:new Date(0).toISOString(),total_usd:t.toFixed(2),chains:e.map(e=>({eip155_id:e.eip155Id?Number(e.eip155Id):0,stridge_network_id:e.networkId??``,network_name:e.networkName.toLowerCase(),label:e.networkName,scanner_url:``,native_symbol:``,subtotal_usd:(e.amountUsd?.value??0).toFixed(2),tokens:[{token_address:e.address,symbol:e.symbol,name:e.symbol,decimals:e.decimals,logo:e.assetLogoUrl??``,is_native:e.isNative,is_spam:!1,raw_amount:C(e.amount.value,e.decimals).toString(),amount:e.amount.value.toString(),amount_usd:(e.amountUsd?.value??0).toFixed(2),usd_price:e.amount.value>0?((e.amountUsd?.value??0)/e.amount.value).toFixed(6):`0`,price_change_24h_pct:`0`}]}))}}function C(e,t){if(!Number.isFinite(e)||e<0)return 0n;let[n,r=``]=e.toFixed(t).split(`.`),i=r.padEnd(t,`0`).slice(0,t);return BigInt((n??`0`)+i)}function w(e,t,n=m){let r=C(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=C(t,n.decimals).toString(),a=t>0?(e.receiveAmount.value/t).toFixed(6):`1`;return{from:{network_id:Number(n.eip155Id??56),asset_address:n.address,amount:i},to:{network_id:Number(e.receiveAsset.eip155Id??56),asset_address:e.receiveAsset.address,amount:r},exchange_rate:a,fees:{total_fee:`0`},route:{provider:`mock`,scenario:`same_chain_same_token`,estimated_time_seconds:30},expires_at:new Date(e.expiresAt).toISOString()}}function T(e,t=m){let n=new Date(e.submittedAt.value).toISOString(),r=e.kind===`succeeded`?`completed`:e.kind===`failed`?`failed`:`routing`,i=e.kind===`succeeded`?e.filledAt.value:e.kind===`failed`?e.failedAt.value:e.submittedAt.value,a={tx_id:(e.kind===`succeeded`?e.txHash.value:e.txHash?.value)??``,asset_symbol:t.symbol,asset_address:t.address,eip155_id:t.eip155Id??`56`,network_id:t.networkId??`9006`,network_name:t.networkName.toLowerCase(),raw_amount:C(e.receiveAmount.value,t.decimals).toString(),amount:e.receiveAmount.value.toString(),confirmed_at:n},o={address:e.recipient.value,asset_address:e.receiveAsset.address,asset_symbol:e.receiveAsset.symbol,eip155_id:e.receiveAsset.eip155Id??``,network_id:e.receiveAsset.networkId??``,network_name:e.receiveAsset.networkName.toLowerCase(),raw_amount:C(e.receiveAmount.value,e.receiveAsset.decimals).toString(),amount:e.receiveAmount.value.toString(),...e.kind===`succeeded`?{settled_at:new Date(e.filledAt.value).toISOString(),...e.completionTx?{tx_id:e.completionTx.hash.value}:{}}:{}};return{id:`mock-settlement-${e.recipient.value}-${a.tx_id}`,status:r,created_at:n,updated_at:new Date(i).toISOString(),events:[],fees:{raw_amount:`0`},from:a,to:o,route:{provider:`mock`,scenario:`withdraw_v1`},...e.kind===`failed`?{error:e.failureKind}:{}}}function E(e,t){let n=t.kind!==`pending`;return{owner:`0xMockOwner`,uda_id:`mock-uda`,created_at:e.created_at,updated_at:e.updated_at,is_terminal:n,status:t.kind===`succeeded`?`completed`:t.kind===`failed`?`failed`:`to_pending`,destination:{address:t.recipient.value,asset_address:t.receiveAsset.address,asset_decimals:t.receiveAsset.decimals,asset_symbol:t.receiveAsset.symbol,eip155_id:t.receiveAsset.eip155Id??``,network_id:t.receiveAsset.networkId??``,network_name:t.receiveAsset.networkName},settlements:[e]}}function D(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),t.removeEventListener(`abort`,a),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a)})}function O(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{g as buildDefaultWithdrawableBalances,b as buildDefaultWithdrawalFailurePayload,v as buildDefaultWithdrawalPendingPayload,_ as buildDefaultWithdrawalQuotePayload,y as buildDefaultWithdrawalSuccessPayload,x as createStridgeMockWithdrawDriver};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SettlementFailureKind } from "../../shared/driver/types.js";
|
|
2
2
|
import { AddressItemPayload, BalanceItemPayload, BrandPayload, QuotePayload, SettlementFailurePayload, SettlementPayload, SettlementPendingPayload, SettlementSuccessPayload, TargetPayload, WalletInfo, WalletPayload } from "../../flows/deposit/driver/payloads.js";
|
|
3
3
|
import { I18n } from "@lingui/core";
|
|
4
|
-
import { DepositAddressDto, GatewayPollResponse, GatewaySettlementDto, GatewayStartResponse, OnchainBalanceResponse, QuoteResponse, SupportedAssetDto, SupportedAssetsResponse } from "@stridge/sdk";
|
|
4
|
+
import { DepositAddressDto, GatewayPollResponse, GatewaySettlementDto, GatewayStartResponse, GatewayUdaDto, OnchainBalanceResponse, QuoteResponse, SupportedAssetDto, SupportedAssetsResponse } from "@stridge/sdk";
|
|
5
5
|
|
|
6
6
|
//#region src/drivers/stridge-mock/fixtures.d.ts
|
|
7
7
|
/**
|
|
@@ -16,7 +16,7 @@ declare const DEFAULT_WALLET_INFO: WalletInfo;
|
|
|
16
16
|
declare const DEFAULT_BRAND_PAYLOAD: BrandPayload;
|
|
17
17
|
/**
|
|
18
18
|
* Resolved destination-asset record the mock driver seeds every entity from. Hosts that need
|
|
19
|
-
* to demo a non-default `(
|
|
19
|
+
* to demo a non-default `(networkId, symbol)` pass {@link MockAssetSelection} through the factory;
|
|
20
20
|
* the driver resolves it once via {@link resolveMockAsset} and threads this shape into every
|
|
21
21
|
* builder, so target / quote / settlement payloads all stay coherent against the same asset.
|
|
22
22
|
*/
|
|
@@ -42,11 +42,13 @@ interface MockAsset {
|
|
|
42
42
|
nativeSymbol: string;
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
* Selector accepted by {@link resolveMockAsset}. `
|
|
46
|
-
* (
|
|
45
|
+
* Selector accepted by {@link resolveMockAsset}. `networkId` is the Stridge network id
|
|
46
|
+
* (`"9006"`) — the same wire value `StridgeAsset.networkId` carries — and is also matched,
|
|
47
|
+
* case-insensitively, against the gateway's `network_name` (`"bsc"` / `"BSC"`) so legacy
|
|
48
|
+
* callers keep working. `symbol` is the asset ticker (`"USDC"`).
|
|
47
49
|
*/
|
|
48
50
|
interface MockAssetSelection {
|
|
49
|
-
|
|
51
|
+
networkId: string;
|
|
50
52
|
symbol: string;
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
@@ -54,23 +56,23 @@ interface MockAssetSelection {
|
|
|
54
56
|
* {@link buildDefaultTargetRaw}() with no asset override.
|
|
55
57
|
*/
|
|
56
58
|
declare const DEFAULT_TARGET_RAW: SupportedAssetDto;
|
|
57
|
-
declare function buildDefaultTargetPayload(i18n: I18n,
|
|
59
|
+
declare function buildDefaultTargetPayload(i18n: I18n, minAmountUsd?: number, asset?: MockAsset): TargetPayload;
|
|
58
60
|
/**
|
|
59
|
-
* Build the bundled deposit-address fixtures. When `
|
|
60
|
-
* formatted per-chain `
|
|
61
|
+
* Build the bundled deposit-address fixtures. When `minAmountUsd` is set, every row carries a
|
|
62
|
+
* formatted per-chain `minAmountUsd` so the transfer-crypto picker renders `Min $X` next to the
|
|
61
63
|
* Chains label and on each option row — the same display the captured-production payload showed.
|
|
62
64
|
*/
|
|
63
|
-
declare function buildDefaultAddressesPayload(i18n: I18n,
|
|
65
|
+
declare function buildDefaultAddressesPayload(i18n: I18n, minAmountUsd?: number): ReadonlyArray<AddressItemPayload>;
|
|
64
66
|
/**
|
|
65
67
|
* Static-i18n form of {@link buildDefaultAddressesPayload} — kept for callers that pre-import the
|
|
66
|
-
* canonical mock list without a live `I18n` handle. Excludes per-row `
|
|
68
|
+
* canonical mock list without a live `I18n` handle. Excludes per-row `minAmountUsd`; callers that
|
|
67
69
|
* want it must use the builder.
|
|
68
70
|
*/
|
|
69
71
|
declare const DEFAULT_ADDRESSES_PAYLOAD: ReadonlyArray<AddressItemPayload>;
|
|
70
72
|
/**
|
|
71
73
|
* Default source-side balance list — derived from the captured `/v1/balance/onchain/{wallet}`
|
|
72
74
|
* response for `0xf39Fd6…2266` against the production UDA, filtered through routability +
|
|
73
|
-
* spam-drop + the kit's `
|
|
75
|
+
* spam-drop + the kit's `minAmountUsd` floor (rows whose `amountUsd` is below the floor ride in
|
|
74
76
|
* as `lowBalance + disabled` so the picker dims them out instead of dropping them).
|
|
75
77
|
*
|
|
76
78
|
* Captured snapshot (chain × token, after routability filter):
|
|
@@ -87,7 +89,7 @@ declare function buildDefaultBalances(i18n: I18n): ReadonlyArray<BalanceItemPayl
|
|
|
87
89
|
* Default quote payload. Captured production scenario: 5 USDC on Ethereum routed to the
|
|
88
90
|
* destination asset (USDC on BSC by default) via LIFI cross-chain. Total time around 28m on
|
|
89
91
|
* the wire — same number {@link DEFAULT_SUCCESS_PAYLOAD} uses for `totalTime`. Pass `asset` to
|
|
90
|
-
* retarget the receive side at a different `(
|
|
92
|
+
* retarget the receive side at a different `(networkId, symbol)` while keeping the same numeric
|
|
91
93
|
* route shape.
|
|
92
94
|
*/
|
|
93
95
|
declare function buildDefaultQuotePayload(i18n: I18n, expiresAt: number, asset?: MockAsset): QuotePayload;
|