@miradexio/client 0.1.0
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/LICENSE +21 -0
- package/README.md +405 -0
- package/dist/address/base58.d.ts +9 -0
- package/dist/address/base58.d.ts.map +1 -0
- package/dist/address/base58.js +33 -0
- package/dist/address/base58.js.map +1 -0
- package/dist/address/bech32.d.ts +13 -0
- package/dist/address/bech32.d.ts.map +1 -0
- package/dist/address/bech32.js +41 -0
- package/dist/address/bech32.js.map +1 -0
- package/dist/address/evm.d.ts +5 -0
- package/dist/address/evm.d.ts.map +1 -0
- package/dist/address/evm.js +27 -0
- package/dist/address/evm.js.map +1 -0
- package/dist/address/index.d.ts +15 -0
- package/dist/address/index.d.ts.map +1 -0
- package/dist/address/index.js +134 -0
- package/dist/address/index.js.map +1 -0
- package/dist/address/monero.d.ts +15 -0
- package/dist/address/monero.d.ts.map +1 -0
- package/dist/address/monero.js +30 -0
- package/dist/address/monero.js.map +1 -0
- package/dist/address/polkadot.d.ts +10 -0
- package/dist/address/polkadot.d.ts.map +1 -0
- package/dist/address/polkadot.js +36 -0
- package/dist/address/polkadot.js.map +1 -0
- package/dist/address/solana.d.ts +5 -0
- package/dist/address/solana.d.ts.map +1 -0
- package/dist/address/solana.js +17 -0
- package/dist/address/solana.js.map +1 -0
- package/dist/address/ton.d.ts +11 -0
- package/dist/address/ton.d.ts.map +1 -0
- package/dist/address/ton.js +28 -0
- package/dist/address/ton.js.map +1 -0
- package/dist/api/index.d.ts +80 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +213 -0
- package/dist/api/index.js.map +1 -0
- package/dist/atomic-swap/drive.d.ts +22 -0
- package/dist/atomic-swap/drive.d.ts.map +1 -0
- package/dist/atomic-swap/drive.js +713 -0
- package/dist/atomic-swap/drive.js.map +1 -0
- package/dist/atomic-swap/extract.d.ts +46 -0
- package/dist/atomic-swap/extract.d.ts.map +1 -0
- package/dist/atomic-swap/extract.js +55 -0
- package/dist/atomic-swap/extract.js.map +1 -0
- package/dist/atomic-swap/index.d.ts +15 -0
- package/dist/atomic-swap/index.d.ts.map +1 -0
- package/dist/atomic-swap/index.js +13 -0
- package/dist/atomic-swap/index.js.map +1 -0
- package/dist/atomic-swap/monero-sweep/errors.d.ts +2 -0
- package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -0
- package/dist/atomic-swap/monero-sweep/errors.js +43 -0
- package/dist/atomic-swap/monero-sweep/errors.js.map +1 -0
- package/dist/atomic-swap/monero-sweep/index.d.ts +33 -0
- package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -0
- package/dist/atomic-swap/monero-sweep/index.js +415 -0
- package/dist/atomic-swap/monero-sweep/index.js.map +1 -0
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts +12 -0
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -0
- package/dist/atomic-swap/monero-sweep/ring-select.js +61 -0
- package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -0
- package/dist/atomic-swap/presign.d.ts +101 -0
- package/dist/atomic-swap/presign.d.ts.map +1 -0
- package/dist/atomic-swap/presign.js +460 -0
- package/dist/atomic-swap/presign.js.map +1 -0
- package/dist/atomic-swap/refund.d.ts +72 -0
- package/dist/atomic-swap/refund.d.ts.map +1 -0
- package/dist/atomic-swap/refund.js +224 -0
- package/dist/atomic-swap/refund.js.map +1 -0
- package/dist/atomic-swap/run.d.ts +27 -0
- package/dist/atomic-swap/run.d.ts.map +1 -0
- package/dist/atomic-swap/run.js +282 -0
- package/dist/atomic-swap/run.js.map +1 -0
- package/dist/atomic-swap/snapshot.d.ts +111 -0
- package/dist/atomic-swap/snapshot.d.ts.map +1 -0
- package/dist/atomic-swap/snapshot.js +69 -0
- package/dist/atomic-swap/snapshot.js.map +1 -0
- package/dist/atomic-swap/submit-encsig.d.ts +10 -0
- package/dist/atomic-swap/submit-encsig.d.ts.map +1 -0
- package/dist/atomic-swap/submit-encsig.js +56 -0
- package/dist/atomic-swap/submit-encsig.js.map +1 -0
- package/dist/atomic-swap/types.d.ts +168 -0
- package/dist/atomic-swap/types.d.ts.map +1 -0
- package/dist/atomic-swap/types.js +5 -0
- package/dist/atomic-swap/types.js.map +1 -0
- package/dist/blockchain/quorum-provider.d.ts +25 -0
- package/dist/blockchain/quorum-provider.d.ts.map +1 -0
- package/dist/blockchain/quorum-provider.js +144 -0
- package/dist/blockchain/quorum-provider.js.map +1 -0
- package/dist/cooperative-redeem.d.ts +23 -0
- package/dist/cooperative-redeem.d.ts.map +1 -0
- package/dist/cooperative-redeem.js +40 -0
- package/dist/cooperative-redeem.js.map +1 -0
- package/dist/engine/blockchain-querier.d.ts +34 -0
- package/dist/engine/blockchain-querier.d.ts.map +1 -0
- package/dist/engine/blockchain-querier.js +2 -0
- package/dist/engine/blockchain-querier.js.map +1 -0
- package/dist/engine/engine-state.d.ts +20 -0
- package/dist/engine/engine-state.d.ts.map +1 -0
- package/dist/engine/engine-state.js +9 -0
- package/dist/engine/engine-state.js.map +1 -0
- package/dist/engine/flow-context.d.ts +494 -0
- package/dist/engine/flow-context.d.ts.map +1 -0
- package/dist/engine/flow-context.js +147 -0
- package/dist/engine/flow-context.js.map +1 -0
- package/dist/engine/flows/atomic-flow-state.d.ts +124 -0
- package/dist/engine/flows/atomic-flow-state.d.ts.map +1 -0
- package/dist/engine/flows/atomic-flow-state.js +2 -0
- package/dist/engine/flows/atomic-flow-state.js.map +1 -0
- package/dist/engine/flows/atomic-flow.d.ts +88 -0
- package/dist/engine/flows/atomic-flow.d.ts.map +1 -0
- package/dist/engine/flows/atomic-flow.js +1192 -0
- package/dist/engine/flows/atomic-flow.js.map +1 -0
- package/dist/engine/flows/history-flow-state.d.ts +19 -0
- package/dist/engine/flows/history-flow-state.d.ts.map +1 -0
- package/dist/engine/flows/history-flow-state.js +2 -0
- package/dist/engine/flows/history-flow-state.js.map +1 -0
- package/dist/engine/flows/providers-flow-state.d.ts +14 -0
- package/dist/engine/flows/providers-flow-state.d.ts.map +1 -0
- package/dist/engine/flows/providers-flow-state.js +2 -0
- package/dist/engine/flows/providers-flow-state.js.map +1 -0
- package/dist/engine/flows/quote-flow-state.d.ts +20 -0
- package/dist/engine/flows/quote-flow-state.d.ts.map +1 -0
- package/dist/engine/flows/quote-flow-state.js +2 -0
- package/dist/engine/flows/quote-flow-state.js.map +1 -0
- package/dist/engine/flows/swap-flow-state.d.ts +155 -0
- package/dist/engine/flows/swap-flow-state.d.ts.map +1 -0
- package/dist/engine/flows/swap-flow-state.js +2 -0
- package/dist/engine/flows/swap-flow-state.js.map +1 -0
- package/dist/engine/flows/swap-flow.d.ts +81 -0
- package/dist/engine/flows/swap-flow.d.ts.map +1 -0
- package/dist/engine/flows/swap-flow.js +720 -0
- package/dist/engine/flows/swap-flow.js.map +1 -0
- package/dist/engine/flows/tokens-flow-state.d.ts +16 -0
- package/dist/engine/flows/tokens-flow-state.d.ts.map +1 -0
- package/dist/engine/flows/tokens-flow-state.js +2 -0
- package/dist/engine/flows/tokens-flow-state.js.map +1 -0
- package/dist/engine/miradex-engine.d.ts +152 -0
- package/dist/engine/miradex-engine.d.ts.map +1 -0
- package/dist/engine/miradex-engine.js +278 -0
- package/dist/engine/miradex-engine.js.map +1 -0
- package/dist/engine/pipeline.d.ts +27 -0
- package/dist/engine/pipeline.d.ts.map +1 -0
- package/dist/engine/pipeline.js +166 -0
- package/dist/engine/pipeline.js.map +1 -0
- package/dist/engine/platform.d.ts +220 -0
- package/dist/engine/platform.d.ts.map +1 -0
- package/dist/engine/platform.js +2 -0
- package/dist/engine/platform.js.map +1 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/blockchain.d.ts +33 -0
- package/dist/interfaces/blockchain.d.ts.map +1 -0
- package/dist/interfaces/blockchain.js +2 -0
- package/dist/interfaces/blockchain.js.map +1 -0
- package/dist/interfaces/logger.d.ts +14 -0
- package/dist/interfaces/logger.d.ts.map +1 -0
- package/dist/interfaces/logger.js +7 -0
- package/dist/interfaces/logger.js.map +1 -0
- package/dist/lib/bitcoin/deposit-watcher.d.ts +66 -0
- package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -0
- package/dist/lib/bitcoin/deposit-watcher.js +218 -0
- package/dist/lib/bitcoin/deposit-watcher.js.map +1 -0
- package/dist/lib/bitcoin/script-hash.d.ts +8 -0
- package/dist/lib/bitcoin/script-hash.d.ts.map +1 -0
- package/dist/lib/bitcoin/script-hash.js +29 -0
- package/dist/lib/bitcoin/script-hash.js.map +1 -0
- package/dist/lib/bitcoin/sweep.d.ts +56 -0
- package/dist/lib/bitcoin/sweep.d.ts.map +1 -0
- package/dist/lib/bitcoin/sweep.js +185 -0
- package/dist/lib/bitcoin/sweep.js.map +1 -0
- package/dist/lib/bitcoin/tx-verify.d.ts +43 -0
- package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -0
- package/dist/lib/bitcoin/tx-verify.js +202 -0
- package/dist/lib/bitcoin/tx-verify.js.map +1 -0
- package/dist/lib/bitcoin/wallet.d.ts +71 -0
- package/dist/lib/bitcoin/wallet.d.ts.map +1 -0
- package/dist/lib/bitcoin/wallet.js +141 -0
- package/dist/lib/bitcoin/wallet.js.map +1 -0
- package/dist/lib/crypto/bytes.d.ts +21 -0
- package/dist/lib/crypto/bytes.d.ts.map +1 -0
- package/dist/lib/crypto/bytes.js +39 -0
- package/dist/lib/crypto/bytes.js.map +1 -0
- package/dist/lib/crypto/errors.d.ts +12 -0
- package/dist/lib/crypto/errors.d.ts.map +1 -0
- package/dist/lib/crypto/errors.js +16 -0
- package/dist/lib/crypto/errors.js.map +1 -0
- package/dist/lib/crypto/keygen.d.ts +19 -0
- package/dist/lib/crypto/keygen.d.ts.map +1 -0
- package/dist/lib/crypto/keygen.js +24 -0
- package/dist/lib/crypto/keygen.js.map +1 -0
- package/dist/lib/crypto/libp2p-identity.d.ts +25 -0
- package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -0
- package/dist/lib/crypto/libp2p-identity.js +80 -0
- package/dist/lib/crypto/libp2p-identity.js.map +1 -0
- package/dist/lib/crypto/mnemonic.d.ts +28 -0
- package/dist/lib/crypto/mnemonic.d.ts.map +1 -0
- package/dist/lib/crypto/mnemonic.js +97 -0
- package/dist/lib/crypto/mnemonic.js.map +1 -0
- package/dist/lib/crypto/platform.d.ts +10 -0
- package/dist/lib/crypto/platform.d.ts.map +1 -0
- package/dist/lib/crypto/platform.js +38 -0
- package/dist/lib/crypto/platform.js.map +1 -0
- package/dist/lib/crypto/scalars.d.ts +33 -0
- package/dist/lib/crypto/scalars.d.ts.map +1 -0
- package/dist/lib/crypto/scalars.js +81 -0
- package/dist/lib/crypto/scalars.js.map +1 -0
- package/dist/lib/crypto/types.d.ts +24 -0
- package/dist/lib/crypto/types.d.ts.map +1 -0
- package/dist/lib/crypto/types.js +2 -0
- package/dist/lib/crypto/types.js.map +1 -0
- package/dist/lib/crypto/wasm.d.ts +51 -0
- package/dist/lib/crypto/wasm.d.ts.map +1 -0
- package/dist/lib/crypto/wasm.js +192 -0
- package/dist/lib/crypto/wasm.js.map +1 -0
- package/dist/lib/default-config.d.ts +140 -0
- package/dist/lib/default-config.d.ts.map +1 -0
- package/dist/lib/default-config.js +239 -0
- package/dist/lib/default-config.js.map +1 -0
- package/dist/lib/delay.d.ts +6 -0
- package/dist/lib/delay.d.ts.map +1 -0
- package/dist/lib/delay.js +20 -0
- package/dist/lib/delay.js.map +1 -0
- package/dist/lib/errors.d.ts +90 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +129 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/format.d.ts +7 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +43 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/keystore.d.ts +85 -0
- package/dist/lib/keystore.d.ts.map +1 -0
- package/dist/lib/keystore.js +105 -0
- package/dist/lib/keystore.js.map +1 -0
- package/dist/lib/monero/output-scanner.d.ts +53 -0
- package/dist/lib/monero/output-scanner.d.ts.map +1 -0
- package/dist/lib/monero/output-scanner.js +180 -0
- package/dist/lib/monero/output-scanner.js.map +1 -0
- package/dist/lib/monero/rpc.d.ts +131 -0
- package/dist/lib/monero/rpc.d.ts.map +1 -0
- package/dist/lib/monero/rpc.js +267 -0
- package/dist/lib/monero/rpc.js.map +1 -0
- package/dist/lib/monero/verify-lock.d.ts +50 -0
- package/dist/lib/monero/verify-lock.d.ts.map +1 -0
- package/dist/lib/monero/verify-lock.js +161 -0
- package/dist/lib/monero/verify-lock.js.map +1 -0
- package/dist/lib/monero/verify-sweep.d.ts +59 -0
- package/dist/lib/monero/verify-sweep.d.ts.map +1 -0
- package/dist/lib/monero/verify-sweep.js +82 -0
- package/dist/lib/monero/verify-sweep.js.map +1 -0
- package/dist/lib/monero/wasm.d.ts +19 -0
- package/dist/lib/monero/wasm.d.ts.map +1 -0
- package/dist/lib/monero/wasm.js +24 -0
- package/dist/lib/monero/wasm.js.map +1 -0
- package/dist/lib/pow-solver.d.ts +4 -0
- package/dist/lib/pow-solver.d.ts.map +1 -0
- package/dist/lib/pow-solver.js +37 -0
- package/dist/lib/pow-solver.js.map +1 -0
- package/dist/lib/retry.d.ts +86 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +104 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/portable.d.ts +23 -0
- package/dist/portable.d.ts.map +1 -0
- package/dist/portable.js +13 -0
- package/dist/portable.js.map +1 -0
- package/dist/quote-binding.d.ts +31 -0
- package/dist/quote-binding.d.ts.map +1 -0
- package/dist/quote-binding.js +40 -0
- package/dist/quote-binding.js.map +1 -0
- package/dist/swap-executor.d.ts +51 -0
- package/dist/swap-executor.d.ts.map +1 -0
- package/dist/swap-executor.js +138 -0
- package/dist/swap-executor.js.map +1 -0
- package/dist/types/api.d.ts +34 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +18 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/errors.d.ts +94 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +93 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/keys.d.ts +33 -0
- package/dist/types/keys.d.ts.map +1 -0
- package/dist/types/keys.js +2 -0
- package/dist/types/keys.js.map +1 -0
- package/dist/types/protocol.d.ts +93 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +18 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/status.d.ts +3 -0
- package/dist/types/status.d.ts.map +1 -0
- package/dist/types/status.js +23 -0
- package/dist/types/status.js.map +1 -0
- package/dist/types/verification.d.ts +49 -0
- package/dist/types/verification.d.ts.map +1 -0
- package/dist/types/verification.js +34 -0
- package/dist/types/verification.js.map +1 -0
- package/dist/verification/atomic-swap.d.ts +9 -0
- package/dist/verification/atomic-swap.d.ts.map +1 -0
- package/dist/verification/atomic-swap.js +22 -0
- package/dist/verification/atomic-swap.js.map +1 -0
- package/dist/verification/chainflip-networks.d.ts +46 -0
- package/dist/verification/chainflip-networks.d.ts.map +1 -0
- package/dist/verification/chainflip-networks.js +24 -0
- package/dist/verification/chainflip-networks.js.map +1 -0
- package/dist/verification/chainflip.d.ts +61 -0
- package/dist/verification/chainflip.d.ts.map +1 -0
- package/dist/verification/chainflip.js +377 -0
- package/dist/verification/chainflip.js.map +1 -0
- package/dist/verification/constants.d.ts +52 -0
- package/dist/verification/constants.d.ts.map +1 -0
- package/dist/verification/constants.js +54 -0
- package/dist/verification/constants.js.map +1 -0
- package/dist/verification/index.d.ts +71 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +91 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/memo.d.ts +27 -0
- package/dist/verification/memo.d.ts.map +1 -0
- package/dist/verification/memo.js +52 -0
- package/dist/verification/memo.js.map +1 -0
- package/dist/verification/near-intents.d.ts +91 -0
- package/dist/verification/near-intents.d.ts.map +1 -0
- package/dist/verification/near-intents.js +213 -0
- package/dist/verification/near-intents.js.map +1 -0
- package/dist/verification/rate-oracle.d.ts +32 -0
- package/dist/verification/rate-oracle.d.ts.map +1 -0
- package/dist/verification/rate-oracle.js +43 -0
- package/dist/verification/rate-oracle.js.map +1 -0
- package/dist/verification/shared.d.ts +20 -0
- package/dist/verification/shared.d.ts.map +1 -0
- package/dist/verification/shared.js +25 -0
- package/dist/verification/shared.js.map +1 -0
- package/dist/verification/thorchain-networks.d.ts +35 -0
- package/dist/verification/thorchain-networks.d.ts.map +1 -0
- package/dist/verification/thorchain-networks.js +35 -0
- package/dist/verification/thorchain-networks.js.map +1 -0
- package/dist/verification/thorchain.d.ts +55 -0
- package/dist/verification/thorchain.d.ts.map +1 -0
- package/dist/verification/thorchain.js +232 -0
- package/dist/verification/thorchain.js.map +1 -0
- package/dist/wasm-pins.d.ts +4 -0
- package/dist/wasm-pins.d.ts.map +1 -0
- package/dist/wasm-pins.js +6 -0
- package/dist/wasm-pins.js.map +1 -0
- package/dist/wire/chainflip.zod.d.ts +144 -0
- package/dist/wire/chainflip.zod.d.ts.map +1 -0
- package/dist/wire/chainflip.zod.js +33 -0
- package/dist/wire/chainflip.zod.js.map +1 -0
- package/dist/wire/near-intents.zod.d.ts +376 -0
- package/dist/wire/near-intents.zod.d.ts.map +1 -0
- package/dist/wire/near-intents.zod.js +101 -0
- package/dist/wire/near-intents.zod.js.map +1 -0
- package/dist/wire/server/action.zod.d.ts +1119 -0
- package/dist/wire/server/action.zod.d.ts.map +1 -0
- package/dist/wire/server/action.zod.js +173 -0
- package/dist/wire/server/action.zod.js.map +1 -0
- package/dist/wire/server/common.zod.d.ts +62 -0
- package/dist/wire/server/common.zod.d.ts.map +1 -0
- package/dist/wire/server/common.zod.js +43 -0
- package/dist/wire/server/common.zod.js.map +1 -0
- package/dist/wire/server/index.d.ts +8 -0
- package/dist/wire/server/index.d.ts.map +1 -0
- package/dist/wire/server/index.js +8 -0
- package/dist/wire/server/index.js.map +1 -0
- package/dist/wire/server/pow.zod.d.ts +45 -0
- package/dist/wire/server/pow.zod.d.ts.map +1 -0
- package/dist/wire/server/pow.zod.js +18 -0
- package/dist/wire/server/pow.zod.js.map +1 -0
- package/dist/wire/server/quotes.zod.d.ts +694 -0
- package/dist/wire/server/quotes.zod.d.ts.map +1 -0
- package/dist/wire/server/quotes.zod.js +103 -0
- package/dist/wire/server/quotes.zod.js.map +1 -0
- package/dist/wire/server/swap.zod.d.ts +1981 -0
- package/dist/wire/server/swap.zod.d.ts.map +1 -0
- package/dist/wire/server/swap.zod.js +270 -0
- package/dist/wire/server/swap.zod.js.map +1 -0
- package/dist/wire/server/tokens.zod.d.ts +93 -0
- package/dist/wire/server/tokens.zod.d.ts.map +1 -0
- package/dist/wire/server/tokens.zod.js +28 -0
- package/dist/wire/server/tokens.zod.js.map +1 -0
- package/dist/wire/server/verify.zod.d.ts +30 -0
- package/dist/wire/server/verify.zod.d.ts.map +1 -0
- package/dist/wire/server/verify.zod.js +12 -0
- package/dist/wire/server/verify.zod.js.map +1 -0
- package/dist/wire/thorchain.zod.d.ts +224 -0
- package/dist/wire/thorchain.zod.d.ts.map +1 -0
- package/dist/wire/thorchain.zod.js +51 -0
- package/dist/wire/thorchain.zod.js.map +1 -0
- package/package.json +128 -0
- package/wasm/miradex-rust/README.md +74 -0
- package/wasm/miradex-rust/miradex_rust.d.ts +149 -0
- package/wasm/miradex-rust/miradex_rust.js +943 -0
- package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
- package/wasm/miradex-rust/miradex_rust_bg.wasm.d.ts +31 -0
- package/wasm/miradex-rust/package.json +24 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { swapPipelineStage, atomicPipelineStage, computeDoneStages, mapServerStatus, PIPELINE_LABELS, PIPELINE_LABELS_CANCEL, PIPELINE_LABELS_REFUND, PIPELINE_LABELS_EXPIRED, } from './engine/pipeline.js';
|
|
2
|
+
export type { PipelineStage, PipelineLabel } from './engine/pipeline.js';
|
|
3
|
+
export { TERMINAL_STATUSES } from './types/index.js';
|
|
4
|
+
export { createInitialEngineState } from './engine/engine-state.js';
|
|
5
|
+
export type { SwapStatus, TerminalStatus, SwapProvider, SwapQuote, SwapDetail, SwapFee, SwapTokenInfo, SwapTokenMap, SwapPair, SwapVerification, CreateSwapBody, CreateSwapResponse, VerificationCheck, VerificationResult, QuotesResponse, RateResponse, LimitsResponse, ProviderInfo, ProvidersResponse, RecentSwap, HistoryEntry, RequiredAction, } from './types/index.js';
|
|
6
|
+
export type { EngineState, ActiveFlow } from './engine/engine-state.js';
|
|
7
|
+
export type { SwapFlowState } from './engine/flows/swap-flow-state.js';
|
|
8
|
+
export type { AtomicFlowState } from './engine/flows/atomic-flow-state.js';
|
|
9
|
+
export type { KeystoreMetadata, KeystoreStatus } from './engine/platform.js';
|
|
10
|
+
export type { VerifyDepositParams } from './verification/index.js';
|
|
11
|
+
export type { StartSwapParams, StartAtomicSwapParams } from './engine/miradex-engine.js';
|
|
12
|
+
export type { GetQuotesParams, GetRateParams, GetLimitsParams } from './api/index.js';
|
|
13
|
+
export { validateAddress, resolveChain, getSupportedChains, tokensForChain, } from './address/index.js';
|
|
14
|
+
export type { ValidationResult } from './address/index.js';
|
|
15
|
+
export { DEFAULT_NODES, MONERO_MAINNET_NODES, MONERO_STAGENET_NODES, ELECTRUM_SERVERS, ELECTRUM_PRIMARY_URL, ELECTRUM_TESTNET_URL, electrumUrlForNetwork, } from './lib/default-config.js';
|
|
16
|
+
export type { DefaultNodeBlockchain, ElectrumServerEntry } from './lib/default-config.js';
|
|
17
|
+
export { ensureWasm } from './lib/crypto/wasm.js';
|
|
18
|
+
export type { EnsureWasmOptions } from './lib/crypto/wasm.js';
|
|
19
|
+
export { WasmError } from './lib/crypto/errors.js';
|
|
20
|
+
export type { WasmModule } from './lib/crypto/types.js';
|
|
21
|
+
export { detectPlatform } from './lib/crypto/platform.js';
|
|
22
|
+
export type { Platform } from './lib/crypto/platform.js';
|
|
23
|
+
//# sourceMappingURL=portable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable.d.ts","sourceRoot":"","sources":["../src/portable.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,YAAY,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,UAAU,EACV,OAAO,EACP,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/portable.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Portable subset of the @miradex/client surface — safe in browsers, Electron
|
|
2
|
+
// renderer, React Native, and any runtime without Node built-ins. Pulls only
|
|
3
|
+
// pure-TS modules with no fs/net dependencies. Server / signing code lives in
|
|
4
|
+
// the main barrel ('@miradex/client').
|
|
5
|
+
export { swapPipelineStage, atomicPipelineStage, computeDoneStages, mapServerStatus, PIPELINE_LABELS, PIPELINE_LABELS_CANCEL, PIPELINE_LABELS_REFUND, PIPELINE_LABELS_EXPIRED, } from './engine/pipeline.js';
|
|
6
|
+
export { TERMINAL_STATUSES } from './types/index.js';
|
|
7
|
+
export { createInitialEngineState } from './engine/engine-state.js';
|
|
8
|
+
export { validateAddress, resolveChain, getSupportedChains, tokensForChain, } from './address/index.js';
|
|
9
|
+
export { DEFAULT_NODES, MONERO_MAINNET_NODES, MONERO_STAGENET_NODES, ELECTRUM_SERVERS, ELECTRUM_PRIMARY_URL, ELECTRUM_TESTNET_URL, electrumUrlForNetwork, } from './lib/default-config.js';
|
|
10
|
+
export { ensureWasm } from './lib/crypto/wasm.js';
|
|
11
|
+
export { WasmError } from './lib/crypto/errors.js';
|
|
12
|
+
export { detectPlatform } from './lib/crypto/platform.js';
|
|
13
|
+
//# sourceMappingURL=portable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../src/portable.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,uCAAuC;AAEvC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAmCpE,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SwapProvider } from './types/index.js';
|
|
2
|
+
export interface AcceptedQuote {
|
|
3
|
+
readonly provider: SwapProvider;
|
|
4
|
+
readonly fromAsset: string;
|
|
5
|
+
readonly toAsset: string;
|
|
6
|
+
readonly amount: string;
|
|
7
|
+
readonly destAddress: string;
|
|
8
|
+
readonly refundAddress: string;
|
|
9
|
+
readonly expectedOutputAmount: string;
|
|
10
|
+
readonly rateBpsFromOracle: number;
|
|
11
|
+
readonly acceptedAtEpochMs: number;
|
|
12
|
+
readonly quoteHash: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const QUOTE_MAX_AGE_MS: number;
|
|
15
|
+
/**
|
|
16
|
+
* Compute the canonical SHA-256 hash over an accepted quote. The hash is
|
|
17
|
+
* deterministic under key-order normalisation; consumers may compare two
|
|
18
|
+
* quotes for strict equality via their hashes.
|
|
19
|
+
*/
|
|
20
|
+
export declare function hashQuote(q: Omit<AcceptedQuote, 'quoteHash'>): string;
|
|
21
|
+
/**
|
|
22
|
+
* Assert a quote hashes to the same value the consumer recorded at accept
|
|
23
|
+
* time. Throws `E_QUOTE_TAMPERED` on mismatch.
|
|
24
|
+
*/
|
|
25
|
+
export declare function requireQuoteHashMatches(accepted: AcceptedQuote, current: Omit<AcceptedQuote, 'quoteHash'>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Assert the accepted quote is still within `QUOTE_MAX_AGE_MS` of now.
|
|
28
|
+
* Throws `E_QUOTE_STALE` when expired.
|
|
29
|
+
*/
|
|
30
|
+
export declare function requireQuoteFresh(accepted: AcceptedQuote, nowEpochMs?: number): void;
|
|
31
|
+
//# sourceMappingURL=quote-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-binding.d.ts","sourceRoot":"","sources":["../src/quote-binding.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,gBAAgB,QAAgB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,CAIrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACxC,IAAI,CAQN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,UAAU,GAAE,MAAmB,GAC9B,IAAI,CAQN"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quote binding: every AcceptedQuote is hashed canonically at accept time and
|
|
3
|
+
* re-hashed just before funding. Prevents the server from changing the
|
|
4
|
+
* expected output between accept and funding (AV-D.4 / Part VIII §8.4.1).
|
|
5
|
+
*/
|
|
6
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
7
|
+
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
8
|
+
import { VerificationError } from './types/index.js';
|
|
9
|
+
export const QUOTE_MAX_AGE_MS = 5 * 60 * 1000;
|
|
10
|
+
/**
|
|
11
|
+
* Compute the canonical SHA-256 hash over an accepted quote. The hash is
|
|
12
|
+
* deterministic under key-order normalisation; consumers may compare two
|
|
13
|
+
* quotes for strict equality via their hashes.
|
|
14
|
+
*/
|
|
15
|
+
export function hashQuote(q) {
|
|
16
|
+
const keys = Object.keys(q).sort();
|
|
17
|
+
const canonical = JSON.stringify(q, keys);
|
|
18
|
+
return bytesToHex(sha256(new TextEncoder().encode(canonical)));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Assert a quote hashes to the same value the consumer recorded at accept
|
|
22
|
+
* time. Throws `E_QUOTE_TAMPERED` on mismatch.
|
|
23
|
+
*/
|
|
24
|
+
export function requireQuoteHashMatches(accepted, current) {
|
|
25
|
+
const currentHash = hashQuote(current);
|
|
26
|
+
if (currentHash !== accepted.quoteHash) {
|
|
27
|
+
throw new VerificationError('E_QUOTE_TAMPERED', `quote hash mismatch: accepted=${accepted.quoteHash.slice(0, 16)}..., current=${currentHash.slice(0, 16)}...`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Assert the accepted quote is still within `QUOTE_MAX_AGE_MS` of now.
|
|
32
|
+
* Throws `E_QUOTE_STALE` when expired.
|
|
33
|
+
*/
|
|
34
|
+
export function requireQuoteFresh(accepted, nowEpochMs = Date.now()) {
|
|
35
|
+
const age = nowEpochMs - accepted.acceptedAtEpochMs;
|
|
36
|
+
if (age > QUOTE_MAX_AGE_MS) {
|
|
37
|
+
throw new VerificationError('E_QUOTE_STALE', `quote age ${Math.round(age / 1000)}s exceeds max ${Math.round(QUOTE_MAX_AGE_MS / 1000)}s`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=quote-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-binding.js","sourceRoot":"","sources":["../src/quote-binding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAerD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,CAAmC;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAuB,EACvB,OAAyC;IAEzC,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,WAAW,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,iCAAiC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAC9G,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAuB,EACvB,aAAqB,IAAI,CAAC,GAAG,EAAE;IAE/B,MAAM,GAAG,GAAG,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IACpD,IAAI,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CACzB,eAAe,EACf,aAAa,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ApiClient } from './api/index.js';
|
|
2
|
+
import type { SwapDetail, VerificationResult, SwapStatus, ProtocolData } from './types/index.js';
|
|
3
|
+
export interface SwapResult {
|
|
4
|
+
readonly swapId: string;
|
|
5
|
+
readonly swapNumber: string;
|
|
6
|
+
readonly status: SwapStatus;
|
|
7
|
+
readonly provider: string;
|
|
8
|
+
readonly depositAddress: string | null;
|
|
9
|
+
readonly verification: VerificationResult | null;
|
|
10
|
+
readonly expectedAmountOut: string | null;
|
|
11
|
+
readonly amountIn: string | null;
|
|
12
|
+
readonly expiresAt: string | null;
|
|
13
|
+
readonly protocolData?: ProtocolData;
|
|
14
|
+
}
|
|
15
|
+
export declare class SwapExecutor {
|
|
16
|
+
private readonly api;
|
|
17
|
+
private readonly pollIntervalMs;
|
|
18
|
+
private readonly fetchFn;
|
|
19
|
+
constructor(api: ApiClient, pollIntervalMs?: number, fetchFn?: typeof globalThis.fetch);
|
|
20
|
+
executeSwap(params: {
|
|
21
|
+
from: string;
|
|
22
|
+
to: string;
|
|
23
|
+
amount: string;
|
|
24
|
+
destAddress: string;
|
|
25
|
+
refundAddress: string;
|
|
26
|
+
provider?: string;
|
|
27
|
+
variantId?: string;
|
|
28
|
+
fromChain?: string;
|
|
29
|
+
toChain?: string;
|
|
30
|
+
slippageBps?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Opt-in escape hatch for providers that don't expose a refund-address
|
|
33
|
+
* binding. Setting this to `true` logs a security warning and lets the
|
|
34
|
+
* swap proceed without refund-address assertion.
|
|
35
|
+
*/
|
|
36
|
+
acknowledgedNoRefundAddress?: boolean;
|
|
37
|
+
}, powHeader?: string): Promise<SwapResult>;
|
|
38
|
+
executeAtomicSwap(params: {
|
|
39
|
+
amount: string;
|
|
40
|
+
destAddress: string;
|
|
41
|
+
refundAddress: string;
|
|
42
|
+
}): Promise<SwapResult>;
|
|
43
|
+
fundSwap(swapId: string, signedPsbt: string): Promise<unknown>;
|
|
44
|
+
cancelSwap(swapId: string, reason?: string): Promise<unknown>;
|
|
45
|
+
getSweepOutputs(swapId: string): Promise<unknown>;
|
|
46
|
+
submitKeyImages(swapId: string, keyImagesHex: string): Promise<unknown>;
|
|
47
|
+
submitMoneroTx(swapId: string, signedTxHex: string): Promise<unknown>;
|
|
48
|
+
pollUntil(swapId: string, targets: readonly SwapStatus[], timeoutMs?: number, onPoll?: (detail: SwapDetail) => void, signal?: AbortSignal): Promise<SwapDetail>;
|
|
49
|
+
private verify;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=swap-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap-executor.d.ts","sourceRoot":"","sources":["../src/swap-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAEV,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,GAAG,EAAE,SAAS,EACd,cAAc,SAAQ,EACtB,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB;IAGhE,WAAW,CACf,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;;WAIG;QACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;KACvC,EACD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,CAAC;IA8BhB,iBAAiB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsDjB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,SAAS,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,SAAS,SAAU,EACnB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EACrC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;YAuBR,MAAM;CAuCrB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { TERMINAL_STATUSES, VerificationError, isAtomicProtocolData } from './types/index.js';
|
|
2
|
+
import { verifyDepositAddress } from './verification/index.js';
|
|
3
|
+
import { generateClientKeys, isKeygenAvailable } from './lib/crypto/wasm.js';
|
|
4
|
+
import { delay } from './lib/delay.js';
|
|
5
|
+
export class SwapExecutor {
|
|
6
|
+
api;
|
|
7
|
+
pollIntervalMs;
|
|
8
|
+
fetchFn;
|
|
9
|
+
constructor(api, pollIntervalMs = 5_000, fetchFn = globalThis.fetch) {
|
|
10
|
+
this.api = api;
|
|
11
|
+
this.pollIntervalMs = pollIntervalMs;
|
|
12
|
+
this.fetchFn = fetchFn;
|
|
13
|
+
}
|
|
14
|
+
async executeSwap(params, powHeader) {
|
|
15
|
+
if (!params.refundAddress && !params.acknowledgedNoRefundAddress) {
|
|
16
|
+
throw new VerificationError('E_PROVIDER_UNSUPPORTED_REFUND', 'refundAddress is required; set acknowledgedNoRefundAddress:true to override');
|
|
17
|
+
}
|
|
18
|
+
const swap = await this.api.createSwap(params, powHeader);
|
|
19
|
+
if (params.provider && swap.provider !== params.provider) {
|
|
20
|
+
throw new VerificationError('E_PROVIDER_SUBSTITUTED', `server returned provider ${swap.provider}, caller requested ${params.provider}`);
|
|
21
|
+
}
|
|
22
|
+
const vr = await this.verify(swap, params);
|
|
23
|
+
return {
|
|
24
|
+
swapId: swap.swapNumber,
|
|
25
|
+
swapNumber: swap.swapNumber,
|
|
26
|
+
status: swap.status,
|
|
27
|
+
provider: swap.provider,
|
|
28
|
+
depositAddress: vr?.verified ? swap.depositAddress : null,
|
|
29
|
+
verification: vr,
|
|
30
|
+
expectedAmountOut: swap.expectedAmountOut,
|
|
31
|
+
amountIn: swap.amountIn,
|
|
32
|
+
expiresAt: swap.expiresAt,
|
|
33
|
+
protocolData: swap.protocolData ?? undefined,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async executeAtomicSwap(params) {
|
|
37
|
+
if (!isKeygenAvailable()) {
|
|
38
|
+
throw new Error('keygen-wasm not available — atomic swaps disabled');
|
|
39
|
+
}
|
|
40
|
+
const keys = generateClientKeys();
|
|
41
|
+
const body = {
|
|
42
|
+
from: 'BTC',
|
|
43
|
+
to: 'XMR',
|
|
44
|
+
amount: params.amount,
|
|
45
|
+
destAddress: params.destAddress,
|
|
46
|
+
refundAddress: params.refundAddress,
|
|
47
|
+
provider: 'atomicswap',
|
|
48
|
+
protocol: {
|
|
49
|
+
type: 'atomicSwap',
|
|
50
|
+
atomicSwap: {
|
|
51
|
+
S_b_bitcoin: keys.s_b_bitcoin,
|
|
52
|
+
S_b_monero: keys.s_b_monero,
|
|
53
|
+
dleq_proof: keys.dleq_proof,
|
|
54
|
+
v_b: keys.v_b,
|
|
55
|
+
B: keys.B,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
const swap = await this.api.createSwap(body);
|
|
60
|
+
if (swap.provider !== 'atomicswap') {
|
|
61
|
+
throw new VerificationError('E_PROVIDER_SUBSTITUTED', `server returned provider ${swap.provider} for an atomic-swap request`);
|
|
62
|
+
}
|
|
63
|
+
const current = swap.status === 'initializing'
|
|
64
|
+
? await this.pollUntil(swap.swapNumber, ['awaiting_funding', 'failed', 'expired'])
|
|
65
|
+
: swap;
|
|
66
|
+
const vr = await this.verify(current, { ...params, from: 'BTC', to: 'XMR' });
|
|
67
|
+
return {
|
|
68
|
+
swapId: current.swapNumber,
|
|
69
|
+
swapNumber: current.swapNumber,
|
|
70
|
+
status: current.status,
|
|
71
|
+
provider: 'atomicswap',
|
|
72
|
+
depositAddress: vr?.verified ? current.depositAddress : null,
|
|
73
|
+
verification: vr,
|
|
74
|
+
expectedAmountOut: current.expectedAmountOut,
|
|
75
|
+
amountIn: current.amountIn,
|
|
76
|
+
expiresAt: current.expiresAt,
|
|
77
|
+
protocolData: current.protocolData ?? undefined,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async fundSwap(swapId, signedPsbt) {
|
|
81
|
+
return this.api.executeAction(swapId, { type: 'fund', signedPsbt });
|
|
82
|
+
}
|
|
83
|
+
async cancelSwap(swapId, reason) {
|
|
84
|
+
return this.api.executeAction(swapId, { type: 'cancel', reason });
|
|
85
|
+
}
|
|
86
|
+
async getSweepOutputs(swapId) {
|
|
87
|
+
return this.api.executeAction(swapId, { type: 'get-outputs' }, 120_000);
|
|
88
|
+
}
|
|
89
|
+
async submitKeyImages(swapId, keyImagesHex) {
|
|
90
|
+
return this.api.executeAction(swapId, { type: 'get-key-images', keyImagesHex }, 120_000);
|
|
91
|
+
}
|
|
92
|
+
async submitMoneroTx(swapId, signedTxHex) {
|
|
93
|
+
return this.api.executeAction(swapId, { type: 'submit-monero-tx', signedTxHex }, 120_000);
|
|
94
|
+
}
|
|
95
|
+
async pollUntil(swapId, targets, timeoutMs = 120_000, onPoll, signal) {
|
|
96
|
+
const targetSet = new Set([...targets, ...TERMINAL_STATUSES]);
|
|
97
|
+
const deadline = Date.now() + timeoutMs;
|
|
98
|
+
while (Date.now() < deadline) {
|
|
99
|
+
if (signal?.aborted)
|
|
100
|
+
return this.api.getSwapDetail(swapId);
|
|
101
|
+
const detail = await this.api.getSwapDetail(swapId);
|
|
102
|
+
onPoll?.(detail);
|
|
103
|
+
if (targetSet.has(detail.status))
|
|
104
|
+
return detail;
|
|
105
|
+
// Break out of polling if a user-actionable requiredAction is detected.
|
|
106
|
+
const actionType = detail.requiredAction?.type;
|
|
107
|
+
if (actionType === 'cancel' || actionType === 'refund' || actionType === 'sweep') {
|
|
108
|
+
return detail;
|
|
109
|
+
}
|
|
110
|
+
await delay(this.pollIntervalMs, signal);
|
|
111
|
+
}
|
|
112
|
+
return this.api.getSwapDetail(swapId);
|
|
113
|
+
}
|
|
114
|
+
async verify(swap, params) {
|
|
115
|
+
if (swap.depositAddress === null || swap.verification === null) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
return verifyDepositAddress({
|
|
119
|
+
depositAddress: swap.depositAddress,
|
|
120
|
+
verification: swap.verification,
|
|
121
|
+
destAddress: params.destAddress,
|
|
122
|
+
refundAddress: params.refundAddress,
|
|
123
|
+
toToken: params.to ?? params.toToken ?? '',
|
|
124
|
+
amount: params.amount ?? '',
|
|
125
|
+
protocol: isAtomicProtocolData(swap.protocolData)
|
|
126
|
+
? {
|
|
127
|
+
psbt: swap.protocolData.psbt,
|
|
128
|
+
lock_address: swap.protocolData.lock_address,
|
|
129
|
+
timelock_blocks: swap.protocolData.timelock_blocks,
|
|
130
|
+
}
|
|
131
|
+
: undefined,
|
|
132
|
+
expectedAmountOut: swap.expectedAmountOut ?? undefined,
|
|
133
|
+
expectedDestAddress: params.destAddress,
|
|
134
|
+
fetchFn: this.fetchFn,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=swap-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap-executor.js","sourceRoot":"","sources":["../src/swap-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SwapStatus, SwapDetailProtocolData } from '../wire/server/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Unified protocol data shape used by the engine during atomic-swap state
|
|
4
|
+
* tracking. Directly typed from the swapDetailProtocolDataSchema so shape
|
|
5
|
+
* drift from the server surfaces as a SCHEMA_MISMATCH at the API boundary.
|
|
6
|
+
*/
|
|
7
|
+
export type ProtocolData = SwapDetailProtocolData;
|
|
8
|
+
/** Type guard for the atomic-swap protocol shape (psbt + lock + timelock). */
|
|
9
|
+
export declare function isAtomicProtocolData(pd: unknown): pd is SwapDetailProtocolData & {
|
|
10
|
+
psbt: string;
|
|
11
|
+
lock_address: string;
|
|
12
|
+
timelock_blocks: number;
|
|
13
|
+
};
|
|
14
|
+
export interface HistoryEntry {
|
|
15
|
+
readonly id: number;
|
|
16
|
+
readonly swapNumber: string;
|
|
17
|
+
readonly fromToken: string;
|
|
18
|
+
readonly toToken: string;
|
|
19
|
+
readonly amountIn: string;
|
|
20
|
+
readonly expectedAmountOut: string;
|
|
21
|
+
readonly actualAmountOut: string | null;
|
|
22
|
+
readonly provider: string;
|
|
23
|
+
readonly status: SwapStatus;
|
|
24
|
+
readonly depositAddress: string;
|
|
25
|
+
readonly destAddress: string;
|
|
26
|
+
readonly refundAddress: string;
|
|
27
|
+
readonly depositTxHash: string | null;
|
|
28
|
+
readonly outputTxHash: string | null;
|
|
29
|
+
readonly verified: boolean;
|
|
30
|
+
readonly createdAt: string;
|
|
31
|
+
readonly updatedAt: string;
|
|
32
|
+
readonly completedAt: string | null;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAElD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,OAAO,GACV,EAAE,IAAI,sBAAsB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAQA;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Client-side types that are NOT server-response shapes.
|
|
2
|
+
//
|
|
3
|
+
// Server-response types live in src/wire/server/ and are inferred from
|
|
4
|
+
// zod schemas. This file houses:
|
|
5
|
+
// - HistoryEntry: the client-side history-store row (distinct from recents)
|
|
6
|
+
// - ProtocolData + isAtomicProtocolData: the unified shape the engine
|
|
7
|
+
// tracks during atomic-swap state transitions, sourced from the
|
|
8
|
+
// swapDetailProtocolDataSchema.
|
|
9
|
+
/** Type guard for the atomic-swap protocol shape (psbt + lock + timelock). */
|
|
10
|
+
export function isAtomicProtocolData(pd) {
|
|
11
|
+
if (!pd || typeof pd !== 'object')
|
|
12
|
+
return false;
|
|
13
|
+
const obj = pd;
|
|
14
|
+
return (typeof obj.psbt === 'string' &&
|
|
15
|
+
typeof obj.lock_address === 'string' &&
|
|
16
|
+
typeof obj.timelock_blocks === 'number');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,uEAAuE;AACvE,iCAAiC;AACjC,8EAA8E;AAC9E,wEAAwE;AACxE,oEAAoE;AACpE,oCAAoC;AAWpC,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAClC,EAAW;IAMX,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChD,MAAM,GAAG,GAAG,EAA6B,CAAC;IAC1C,OAAO,CACL,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ,CACxC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical error codes emitted by the client. Every `VerificationError` and
|
|
3
|
+
* `ProtocolError` constructs with one of these. Consumers switch on `code`
|
|
4
|
+
* to produce stable UI.
|
|
5
|
+
*
|
|
6
|
+
* @see docs/ERROR-CODES.md for the human-readable reference.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ERROR_CODES: {
|
|
9
|
+
readonly E_REDEEM_DIGEST_MISMATCH: "Local redeem digest differs from sidecar claim";
|
|
10
|
+
readonly E_LOCK_ADDR_MISMATCH: "Derived P2WSH address differs from sidecar claim";
|
|
11
|
+
readonly E_LOCK_SCRIPT: "Failed to derive P2WSH from (A, B)";
|
|
12
|
+
readonly E_S_A_MISMATCH: "Sidecar s_a does not satisfy s_a * G == S_a_monero";
|
|
13
|
+
readonly E_S_A_MONERO_MISSING: "Protocol params missing S_a_monero";
|
|
14
|
+
readonly E_COOP_SA_ADAPTOR_MISMATCH: "Cooperative s_a fails adaptor-target check";
|
|
15
|
+
readonly E_COOP_SA_PUBKEY_MISMATCH: "Cooperative s_a does not hash to S_a_monero";
|
|
16
|
+
readonly E_AMNESTY_EXCEEDS_CAP: "Amnesty exceeds configured ratio cap";
|
|
17
|
+
readonly E_AMNESTY_NEGATIVE: "Amnesty amount is negative";
|
|
18
|
+
readonly E_FEE_BELOW_RELAY: "Fee below relay floor";
|
|
19
|
+
readonly E_FEE_ABOVE_CAP: "Fee above sanity ceiling";
|
|
20
|
+
readonly E_OUTPUT_DUST: "Output below dust floor";
|
|
21
|
+
readonly E_XMR_LOCK_FAILED: "XMR lock verification failed";
|
|
22
|
+
readonly E_XMR_TIMELOCKED_OUTPUT: "Monero output has non-zero unlock_time";
|
|
23
|
+
readonly E_QUORUM_IMPOSSIBLE: "Quorum target exceeds provider count";
|
|
24
|
+
readonly E_QUORUM_DISAGREE: "Providers did not reach quorum";
|
|
25
|
+
readonly E_MONERO_QUORUM: "Not enough Monero nodes responded";
|
|
26
|
+
readonly E_DEST_ADDR_INVALID: "Destination address invalid for network";
|
|
27
|
+
readonly E_PROVIDER_UNKNOWN: "Unknown swap provider";
|
|
28
|
+
readonly E_PROTOCOL_PARAMS_MISSING: "Protocol params expected but absent";
|
|
29
|
+
readonly E_NO_SIGNED_PSBT: "Need locally-signed PSBT to recompute digest";
|
|
30
|
+
readonly E_DRIVE_TIMEOUT: "Swap driver exceeded wall-clock budget";
|
|
31
|
+
readonly E_TERMINAL: "Swap reached terminal state";
|
|
32
|
+
readonly E_WASM_INTEGRITY: "WASM SHA-256 integrity check failed";
|
|
33
|
+
readonly E_KEYSTORE_V1_INCOMPLETE: "V1 keystore migration missing required field";
|
|
34
|
+
readonly E_ENCSIG_SUBMIT_FAILED: "Encsig submission exceeded retry budget";
|
|
35
|
+
readonly E_MEMO_MALFORMED: "THORChain memo does not parse";
|
|
36
|
+
readonly E_MEMO_DEST_MISMATCH: "THORChain memo destination differs from expected";
|
|
37
|
+
readonly E_THORCHAIN_QUORUM: "Too few THORChain vault sources responded";
|
|
38
|
+
readonly E_THORCHAIN_VAULT_DISAGREE: "THORNode and Midgard disagree on vault";
|
|
39
|
+
readonly E_VAULT_UNKNOWN: "Sidecar-claimed vault does not appear in authoritative list";
|
|
40
|
+
readonly E_VAULT_HALTED: "THORChain vault or chain trading is halted";
|
|
41
|
+
readonly E_THORNODE_QUOTE_UNAVAILABLE: "Could not fetch THORNode quote";
|
|
42
|
+
readonly E_UNEXPECTED_TIMELOCK: "timelock_blocks set for non-atomicswap provider";
|
|
43
|
+
readonly E_CHAINFLIP_SHAPE: "Chainflip response failed schema validation";
|
|
44
|
+
readonly E_CHAINFLIP_HTTP: "Chainflip broker returned error status";
|
|
45
|
+
readonly E_CHAINFLIP_TIMEOUT: "Chainflip channel not found within timeout";
|
|
46
|
+
readonly E_CHAINFLIP_CHANNEL_DISAGREE: "Broker and state-chain disagree on channel";
|
|
47
|
+
readonly E_CHAINFLIP_CHANNEL_MISBINDING: "Channel does not bind user destination / refund";
|
|
48
|
+
readonly E_CHAINFLIP_CHANNEL_EXPIRING: "Channel expires before funding can confirm";
|
|
49
|
+
readonly E_CHAINFLIP_AMOUNT_BELOW_MIN: "Deposit amount below channel minimum";
|
|
50
|
+
readonly E_CHAINFLIP_AMOUNT_ABOVE_MAX: "Deposit amount above channel maximum";
|
|
51
|
+
readonly E_NEAR_INTENT_NOT_REGISTERED: "Intent not found on 1Click";
|
|
52
|
+
readonly E_NEAR_INTENT_EXPIRED: "Intent deadline passed";
|
|
53
|
+
readonly E_NEAR_INTENT_EXPIRING: "Intent deadline too close to funding confirmation";
|
|
54
|
+
readonly E_NEAR_INTENT_FAILED: "1Click reports intent failed";
|
|
55
|
+
readonly E_NEAR_INTENT_MISBINDING: "Intent does not bind user destination / refund";
|
|
56
|
+
readonly E_NEAR_INTENT_CHAIN_DEST: "On-chain intent destination differs from 1Click claim";
|
|
57
|
+
readonly E_NEAR_INTENT_CHAIN_AMOUNT: "On-chain intent amount differs from 1Click claim";
|
|
58
|
+
readonly E_RATE_DRIFT: "Engine expected output outside slippage band";
|
|
59
|
+
readonly E_QUOTE_DRIFT: "Server quote drifted from accepted quote beyond slippage";
|
|
60
|
+
readonly E_QUOTE_TAMPERED: "Server quote hash does not match accepted quote";
|
|
61
|
+
readonly E_QUOTE_STALE: "Accepted quote exceeds max age, re-quote required";
|
|
62
|
+
readonly E_ORACLE_QUORUM: "Too few rate oracles responded";
|
|
63
|
+
readonly E_ORACLE_SPREAD: "Rate oracles disagree beyond threshold";
|
|
64
|
+
readonly E_RATE_DEVIATION: "Engine rate deviates from oracle median beyond threshold";
|
|
65
|
+
readonly E_PROVIDER_UNSUPPORTED_REFUND: "Provider does not support refund-address binding";
|
|
66
|
+
readonly E_DEPOSIT_TOO_MANY_UTXOS: "Deposit address received too many UTXOs";
|
|
67
|
+
readonly E_SWEEP_DUST: "Sweep output below dust floor";
|
|
68
|
+
readonly E_SLIPPAGE_OUT_OF_RANGE: "slippageBps out of permitted range";
|
|
69
|
+
readonly E_INVALID_DEST_ADDRESS: "destAddress is not valid for the destination token";
|
|
70
|
+
readonly E_POLL_OUT_OF_RANGE: "pollMs out of permitted range";
|
|
71
|
+
readonly E_RETRIES_OUT_OF_RANGE: "maxRetries out of permitted range";
|
|
72
|
+
readonly E_PROVIDER_SUBSTITUTED: "Server returned a different provider than requested";
|
|
73
|
+
readonly E_VERIFICATION_ABSENT: "Server has not produced a verification after retry budget";
|
|
74
|
+
readonly E_TX_CANCEL_UNVERIFIED: "TxCancel not confirmed on-chain";
|
|
75
|
+
readonly E_TX_CANCEL_MALFORMED: "TxCancel hex did not parse";
|
|
76
|
+
readonly E_ENCSIG_REFUND_INVALID: "Alice encsig_refund did not verify under recomputed digest";
|
|
77
|
+
readonly E_ENCSIG_REFUND_MISSING: "Server did not provide tx_full_refund_encsig at setup";
|
|
78
|
+
readonly E_REFUND_DUST: "Refund output below dust floor";
|
|
79
|
+
readonly E_AMNESTY_DUST: "Amnesty output below dust floor";
|
|
80
|
+
readonly E_AMNESTY_DERIVE: "Failed to derive amnesty P2WSH";
|
|
81
|
+
readonly E_REFUND_SIG_A: "Alice sig on TxRefund failed local verification";
|
|
82
|
+
readonly E_REFUND_SIG_B: "Bob sig on TxRefund failed local verification";
|
|
83
|
+
readonly E_REFUND_BROADCAST: "Refund broadcast failed";
|
|
84
|
+
readonly E_SIG_HIGH_S: "Signature is not in low-S form";
|
|
85
|
+
readonly E_REFUND_PARAMS_MISSING: "Refund protocol params absent from server response";
|
|
86
|
+
readonly E_SNAPSHOT_WRITE_FAILED: "Failed to persist recovery snapshot before broadcast";
|
|
87
|
+
readonly E_LIBP2P_SEED_REQUIRED: "Keystore has no libp2p master seed — legacy V2 keystores cannot start new swaps. Create a new keystore.";
|
|
88
|
+
readonly E_TIMELOCK_OUT_OF_RANGE: "BIP68 sequence supplied by sidecar is outside the accepted range";
|
|
89
|
+
readonly E_DLEQ_PROOF_REQUIRED: "Alice DLEQ proof is required before funding; refusing to proceed without it";
|
|
90
|
+
readonly E_DLEQ_PROOF_INVALID: "Alice DLEQ proof failed cross-curve verification";
|
|
91
|
+
readonly E_PRESIGS_WEDGED: "Sidecar repeatedly rejected /presigs with \"no pending PSBT\" while the encsig never appeared on /getSwapDetail. The sidecar broker is out of sync with crypto-server's view; the swap cannot progress without operator intervention.";
|
|
92
|
+
};
|
|
93
|
+
export type ErrorCode = keyof typeof ERROR_CODES;
|
|
94
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical error codes emitted by the client. Every `VerificationError` and
|
|
3
|
+
* `ProtocolError` constructs with one of these. Consumers switch on `code`
|
|
4
|
+
* to produce stable UI.
|
|
5
|
+
*
|
|
6
|
+
* @see docs/ERROR-CODES.md for the human-readable reference.
|
|
7
|
+
*/
|
|
8
|
+
export const ERROR_CODES = {
|
|
9
|
+
E_REDEEM_DIGEST_MISMATCH: 'Local redeem digest differs from sidecar claim',
|
|
10
|
+
E_LOCK_ADDR_MISMATCH: 'Derived P2WSH address differs from sidecar claim',
|
|
11
|
+
E_LOCK_SCRIPT: 'Failed to derive P2WSH from (A, B)',
|
|
12
|
+
E_S_A_MISMATCH: 'Sidecar s_a does not satisfy s_a * G == S_a_monero',
|
|
13
|
+
E_S_A_MONERO_MISSING: 'Protocol params missing S_a_monero',
|
|
14
|
+
E_COOP_SA_ADAPTOR_MISMATCH: 'Cooperative s_a fails adaptor-target check',
|
|
15
|
+
E_COOP_SA_PUBKEY_MISMATCH: 'Cooperative s_a does not hash to S_a_monero',
|
|
16
|
+
E_AMNESTY_EXCEEDS_CAP: 'Amnesty exceeds configured ratio cap',
|
|
17
|
+
E_AMNESTY_NEGATIVE: 'Amnesty amount is negative',
|
|
18
|
+
E_FEE_BELOW_RELAY: 'Fee below relay floor',
|
|
19
|
+
E_FEE_ABOVE_CAP: 'Fee above sanity ceiling',
|
|
20
|
+
E_OUTPUT_DUST: 'Output below dust floor',
|
|
21
|
+
E_XMR_LOCK_FAILED: 'XMR lock verification failed',
|
|
22
|
+
E_XMR_TIMELOCKED_OUTPUT: 'Monero output has non-zero unlock_time',
|
|
23
|
+
E_QUORUM_IMPOSSIBLE: 'Quorum target exceeds provider count',
|
|
24
|
+
E_QUORUM_DISAGREE: 'Providers did not reach quorum',
|
|
25
|
+
E_MONERO_QUORUM: 'Not enough Monero nodes responded',
|
|
26
|
+
E_DEST_ADDR_INVALID: 'Destination address invalid for network',
|
|
27
|
+
E_PROVIDER_UNKNOWN: 'Unknown swap provider',
|
|
28
|
+
E_PROTOCOL_PARAMS_MISSING: 'Protocol params expected but absent',
|
|
29
|
+
E_NO_SIGNED_PSBT: 'Need locally-signed PSBT to recompute digest',
|
|
30
|
+
E_DRIVE_TIMEOUT: 'Swap driver exceeded wall-clock budget',
|
|
31
|
+
E_TERMINAL: 'Swap reached terminal state',
|
|
32
|
+
E_WASM_INTEGRITY: 'WASM SHA-256 integrity check failed',
|
|
33
|
+
E_KEYSTORE_V1_INCOMPLETE: 'V1 keystore migration missing required field',
|
|
34
|
+
E_ENCSIG_SUBMIT_FAILED: 'Encsig submission exceeded retry budget',
|
|
35
|
+
E_MEMO_MALFORMED: 'THORChain memo does not parse',
|
|
36
|
+
E_MEMO_DEST_MISMATCH: 'THORChain memo destination differs from expected',
|
|
37
|
+
E_THORCHAIN_QUORUM: 'Too few THORChain vault sources responded',
|
|
38
|
+
E_THORCHAIN_VAULT_DISAGREE: 'THORNode and Midgard disagree on vault',
|
|
39
|
+
E_VAULT_UNKNOWN: 'Sidecar-claimed vault does not appear in authoritative list',
|
|
40
|
+
E_VAULT_HALTED: 'THORChain vault or chain trading is halted',
|
|
41
|
+
E_THORNODE_QUOTE_UNAVAILABLE: 'Could not fetch THORNode quote',
|
|
42
|
+
E_UNEXPECTED_TIMELOCK: 'timelock_blocks set for non-atomicswap provider',
|
|
43
|
+
E_CHAINFLIP_SHAPE: 'Chainflip response failed schema validation',
|
|
44
|
+
E_CHAINFLIP_HTTP: 'Chainflip broker returned error status',
|
|
45
|
+
E_CHAINFLIP_TIMEOUT: 'Chainflip channel not found within timeout',
|
|
46
|
+
E_CHAINFLIP_CHANNEL_DISAGREE: 'Broker and state-chain disagree on channel',
|
|
47
|
+
E_CHAINFLIP_CHANNEL_MISBINDING: 'Channel does not bind user destination / refund',
|
|
48
|
+
E_CHAINFLIP_CHANNEL_EXPIRING: 'Channel expires before funding can confirm',
|
|
49
|
+
E_CHAINFLIP_AMOUNT_BELOW_MIN: 'Deposit amount below channel minimum',
|
|
50
|
+
E_CHAINFLIP_AMOUNT_ABOVE_MAX: 'Deposit amount above channel maximum',
|
|
51
|
+
E_NEAR_INTENT_NOT_REGISTERED: 'Intent not found on 1Click',
|
|
52
|
+
E_NEAR_INTENT_EXPIRED: 'Intent deadline passed',
|
|
53
|
+
E_NEAR_INTENT_EXPIRING: 'Intent deadline too close to funding confirmation',
|
|
54
|
+
E_NEAR_INTENT_FAILED: '1Click reports intent failed',
|
|
55
|
+
E_NEAR_INTENT_MISBINDING: 'Intent does not bind user destination / refund',
|
|
56
|
+
E_NEAR_INTENT_CHAIN_DEST: 'On-chain intent destination differs from 1Click claim',
|
|
57
|
+
E_NEAR_INTENT_CHAIN_AMOUNT: 'On-chain intent amount differs from 1Click claim',
|
|
58
|
+
E_RATE_DRIFT: 'Engine expected output outside slippage band',
|
|
59
|
+
E_QUOTE_DRIFT: 'Server quote drifted from accepted quote beyond slippage',
|
|
60
|
+
E_QUOTE_TAMPERED: 'Server quote hash does not match accepted quote',
|
|
61
|
+
E_QUOTE_STALE: 'Accepted quote exceeds max age, re-quote required',
|
|
62
|
+
E_ORACLE_QUORUM: 'Too few rate oracles responded',
|
|
63
|
+
E_ORACLE_SPREAD: 'Rate oracles disagree beyond threshold',
|
|
64
|
+
E_RATE_DEVIATION: 'Engine rate deviates from oracle median beyond threshold',
|
|
65
|
+
E_PROVIDER_UNSUPPORTED_REFUND: 'Provider does not support refund-address binding',
|
|
66
|
+
E_DEPOSIT_TOO_MANY_UTXOS: 'Deposit address received too many UTXOs',
|
|
67
|
+
E_SWEEP_DUST: 'Sweep output below dust floor',
|
|
68
|
+
E_SLIPPAGE_OUT_OF_RANGE: 'slippageBps out of permitted range',
|
|
69
|
+
E_INVALID_DEST_ADDRESS: 'destAddress is not valid for the destination token',
|
|
70
|
+
E_POLL_OUT_OF_RANGE: 'pollMs out of permitted range',
|
|
71
|
+
E_RETRIES_OUT_OF_RANGE: 'maxRetries out of permitted range',
|
|
72
|
+
E_PROVIDER_SUBSTITUTED: 'Server returned a different provider than requested',
|
|
73
|
+
E_VERIFICATION_ABSENT: 'Server has not produced a verification after retry budget',
|
|
74
|
+
E_TX_CANCEL_UNVERIFIED: 'TxCancel not confirmed on-chain',
|
|
75
|
+
E_TX_CANCEL_MALFORMED: 'TxCancel hex did not parse',
|
|
76
|
+
E_ENCSIG_REFUND_INVALID: 'Alice encsig_refund did not verify under recomputed digest',
|
|
77
|
+
E_ENCSIG_REFUND_MISSING: 'Server did not provide tx_full_refund_encsig at setup',
|
|
78
|
+
E_REFUND_DUST: 'Refund output below dust floor',
|
|
79
|
+
E_AMNESTY_DUST: 'Amnesty output below dust floor',
|
|
80
|
+
E_AMNESTY_DERIVE: 'Failed to derive amnesty P2WSH',
|
|
81
|
+
E_REFUND_SIG_A: 'Alice sig on TxRefund failed local verification',
|
|
82
|
+
E_REFUND_SIG_B: 'Bob sig on TxRefund failed local verification',
|
|
83
|
+
E_REFUND_BROADCAST: 'Refund broadcast failed',
|
|
84
|
+
E_SIG_HIGH_S: 'Signature is not in low-S form',
|
|
85
|
+
E_REFUND_PARAMS_MISSING: 'Refund protocol params absent from server response',
|
|
86
|
+
E_SNAPSHOT_WRITE_FAILED: 'Failed to persist recovery snapshot before broadcast',
|
|
87
|
+
E_LIBP2P_SEED_REQUIRED: 'Keystore has no libp2p master seed \u2014 legacy V2 keystores cannot start new swaps. Create a new keystore.',
|
|
88
|
+
E_TIMELOCK_OUT_OF_RANGE: 'BIP68 sequence supplied by sidecar is outside the accepted range',
|
|
89
|
+
E_DLEQ_PROOF_REQUIRED: 'Alice DLEQ proof is required before funding; refusing to proceed without it',
|
|
90
|
+
E_DLEQ_PROOF_INVALID: 'Alice DLEQ proof failed cross-curve verification',
|
|
91
|
+
E_PRESIGS_WEDGED: 'Sidecar repeatedly rejected /presigs with "no pending PSBT" while the encsig never appeared on /getSwapDetail. The sidecar broker is out of sync with crypto-server\'s view; the swap cannot progress without operator intervention.',
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from '../wire/server/index.js';
|
|
2
|
+
export * from './api.js';
|
|
3
|
+
export * from './errors.js';
|
|
4
|
+
export * from './keys.js';
|
|
5
|
+
export * from './protocol.js';
|
|
6
|
+
export * from './status.js';
|
|
7
|
+
export * from './verification.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Server-response schemas + inferred types live in ../wire/server/.
|
|
2
|
+
// Re-exported here so internal files can still `import { X } from '../types/index.js'`.
|
|
3
|
+
export * from '../wire/server/index.js';
|
|
4
|
+
export * from './api.js';
|
|
5
|
+
export * from './errors.js';
|
|
6
|
+
export * from './keys.js';
|
|
7
|
+
export * from './protocol.js';
|
|
8
|
+
export * from './status.js';
|
|
9
|
+
export * from './verification.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|