@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,wFAAwF;AACxF,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,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keys generated by keygen-wasm for atomic swap. Lowercase matches the WASM
|
|
3
|
+
* module's output convention.
|
|
4
|
+
*/
|
|
5
|
+
export interface ClientKeys {
|
|
6
|
+
readonly s_b_bitcoin: string;
|
|
7
|
+
readonly s_b_monero: string;
|
|
8
|
+
readonly s_b: string;
|
|
9
|
+
readonly dleq_proof: string;
|
|
10
|
+
readonly v_b: string;
|
|
11
|
+
readonly b: string;
|
|
12
|
+
readonly B: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Server API expects uppercase S_b_* keys. This maps from WASM output to API
|
|
16
|
+
* format. Only the public key B is sent; the private key b never leaves the
|
|
17
|
+
* client.
|
|
18
|
+
*/
|
|
19
|
+
export interface ClientKeysApi {
|
|
20
|
+
readonly S_b_bitcoin: string;
|
|
21
|
+
readonly S_b_monero: string;
|
|
22
|
+
readonly dleq_proof: string;
|
|
23
|
+
readonly v_b: string;
|
|
24
|
+
readonly B: string;
|
|
25
|
+
/**
|
|
26
|
+
* 32-byte hex master seed for the per-swap libp2p identity. Forwarded by
|
|
27
|
+
* the server to the sidecar so a recovery binary (eigenwallet swap CLI)
|
|
28
|
+
* can re-derive the same peer-id from the keystore. Optional — older
|
|
29
|
+
* keystores or callers that don't care about cross-binary recovery omit it.
|
|
30
|
+
*/
|
|
31
|
+
readonly libp2p_seed_hex?: string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/types/keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/types/keys.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { ErrorCode } from './errors.js';
|
|
2
|
+
/** Alice's protocol parameters returned after negotiation (Messages 0-1). */
|
|
3
|
+
export interface ProtocolParams {
|
|
4
|
+
readonly A: string;
|
|
5
|
+
readonly S_a_bitcoin: string;
|
|
6
|
+
readonly cancel_timelock: number;
|
|
7
|
+
readonly punish_timelock: number;
|
|
8
|
+
readonly redeem_address: string;
|
|
9
|
+
readonly punish_address: string;
|
|
10
|
+
readonly tx_cancel_fee_sats: number;
|
|
11
|
+
readonly tx_refund_fee_sats: number;
|
|
12
|
+
readonly tx_redeem_fee_sats: number;
|
|
13
|
+
readonly tx_punish_fee_sats: number;
|
|
14
|
+
readonly amnesty_amount_sats?: number | null;
|
|
15
|
+
readonly remaining_refund_timelock?: number | null;
|
|
16
|
+
readonly tx_partial_refund_fee_sats?: number | null;
|
|
17
|
+
readonly tx_reclaim_fee_sats?: number | null;
|
|
18
|
+
readonly tx_withhold_fee_sats?: number | null;
|
|
19
|
+
readonly tx_mercy_fee_sats?: number | null;
|
|
20
|
+
readonly S_a_monero?: string | null;
|
|
21
|
+
readonly dleq_proof_s_a?: string | null;
|
|
22
|
+
readonly v_a?: string | null;
|
|
23
|
+
readonly monero_lock_address?: string | null;
|
|
24
|
+
readonly xmr_amount_pico?: string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Alice's adaptor-encrypted signature on the TxFullRefund BIP143 digest
|
|
27
|
+
* (bincode-serialised EncryptedSignature, hex). Present once Alice has
|
|
28
|
+
* sent her Message3 in the setup protocol. Consumed by client-side refund.
|
|
29
|
+
* `null` when the variant is `Partial` (amnesty-only) — that swap has no
|
|
30
|
+
* full-refund path; the escape hatch is `tx_partial_refund_encsig` instead.
|
|
31
|
+
*/
|
|
32
|
+
readonly tx_full_refund_encsig?: string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Alice's adaptor-encrypted signature on the TxPartialRefund (amnesty
|
|
35
|
+
* variant) digest. Present only when the swap uses the amnesty path.
|
|
36
|
+
* `null` when the variant is `Legacy` (full-only).
|
|
37
|
+
*/
|
|
38
|
+
readonly tx_partial_refund_encsig?: string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Alice's plain ECDSA pre-sig on TxCancel (delivered in Message3, mirrors
|
|
41
|
+
* the Rust core's `tx_cancel_sig_a`). Persisted in the recovery snapshot
|
|
42
|
+
* before /fund. Currently informational only; the sidecar still publishes
|
|
43
|
+
* TxCancel. V-16 enabling-work toward an autonomous client-side cancel
|
|
44
|
+
* path that does not depend on the sidecar's cooperation.
|
|
45
|
+
*/
|
|
46
|
+
readonly tx_cancel_sig?: string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Unsigned lock PSBT (base64). Client signs once, returns via /fund action.
|
|
49
|
+
* Populated by the sidecar at prepare time; absent until then.
|
|
50
|
+
*/
|
|
51
|
+
readonly unsigned_lock_psbt?: string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Monero lock verification data — populated once the scanner observes
|
|
54
|
+
* Alice's XMR lock transaction. Absent until then.
|
|
55
|
+
*/
|
|
56
|
+
readonly monero_tx_hash?: string | null;
|
|
57
|
+
readonly monero_tx_key?: string | null;
|
|
58
|
+
readonly monero_restore_height?: number | null;
|
|
59
|
+
/**
|
|
60
|
+
* Combined view key v_a + v_b. Server-computed convenience (client could
|
|
61
|
+
* derive via curve arithmetic). Absent until XMR lock is observed.
|
|
62
|
+
*/
|
|
63
|
+
readonly combined_view_key?: string | null;
|
|
64
|
+
/**
|
|
65
|
+
* BIP143 sighash for TxRedeem as the sidecar computes it. The driver
|
|
66
|
+
* recomputes the digest locally from the signed PSBT (or from the on-chain
|
|
67
|
+
* TxLock on the resume path) and compares byte-for-byte before releasing the
|
|
68
|
+
* encrypted signature. Absent until the sidecar surfaces it.
|
|
69
|
+
*/
|
|
70
|
+
readonly tx_redeem_digest?: string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Maker (Alice) libp2p peer-id and multiaddrs. Persisted into the recovery
|
|
73
|
+
* snapshot so eigenwallet (or another runtime) can re-dial the maker after
|
|
74
|
+
* a crash without going through rendezvous discovery again.
|
|
75
|
+
*/
|
|
76
|
+
readonly maker_peer_id?: string | null;
|
|
77
|
+
readonly maker_multiaddrs?: ReadonlyArray<string> | null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Thrown when the protocol-level state is inconsistent (missing required field,
|
|
81
|
+
* terminal state reached unexpectedly, driver timeout). Distinct from
|
|
82
|
+
* `VerificationError` which is thrown when a cryptographic check fails.
|
|
83
|
+
*
|
|
84
|
+
* Carries `category: 'protocol'` so {@link withRetry} fails immediately
|
|
85
|
+
* instead of retrying — protocol errors are not transient.
|
|
86
|
+
*/
|
|
87
|
+
import { MiradexError } from '../lib/errors.js';
|
|
88
|
+
export declare class ProtocolError extends MiradexError {
|
|
89
|
+
readonly name = "ProtocolError";
|
|
90
|
+
readonly code: ErrorCode;
|
|
91
|
+
constructor(code: ErrorCode, message: string);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAIpC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,SAAkB,IAAI,mBAAmB;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACb,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAI7C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when the protocol-level state is inconsistent (missing required field,
|
|
3
|
+
* terminal state reached unexpectedly, driver timeout). Distinct from
|
|
4
|
+
* `VerificationError` which is thrown when a cryptographic check fails.
|
|
5
|
+
*
|
|
6
|
+
* Carries `category: 'protocol'` so {@link withRetry} fails immediately
|
|
7
|
+
* instead of retrying — protocol errors are not transient.
|
|
8
|
+
*/
|
|
9
|
+
import { MiradexError } from '../lib/errors.js';
|
|
10
|
+
export class ProtocolError extends MiradexError {
|
|
11
|
+
name = 'ProtocolError';
|
|
12
|
+
code;
|
|
13
|
+
constructor(code, message) {
|
|
14
|
+
super(message, 'protocol');
|
|
15
|
+
this.code = code;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAmFA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC3B,IAAI,GAAG,eAAe,CAAC;IAChC,IAAI,CAAY;IACzB,YAAY,IAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/types/status.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,QAAQ,GACR,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAYd,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAMhD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Terminal-status set and the narrow literal type used by client-side
|
|
2
|
+
// reducers for terminal checks. SwapStatus itself now lives in
|
|
3
|
+
// src/wire/server/swap.zod.ts as a zod-inferred type; consumers that
|
|
4
|
+
// need SwapStatus / SwapProvider / RequiredAction / RequiredActionType /
|
|
5
|
+
// ActionUrgency import them through the package barrel.
|
|
6
|
+
// Accept any string because SwapStatus now includes a forward-compat
|
|
7
|
+
// `unknown:${string}` tail; .has() just returns false for unknown values.
|
|
8
|
+
//
|
|
9
|
+
// `punished` is intentionally NOT terminal: in atomicswap, when Alice
|
|
10
|
+
// publishes TxPunish (Bob lost the refund window) the sidecar autonomously
|
|
11
|
+
// runs the cooperative_xmr_redeem_after_punish libp2p protocol with Alice
|
|
12
|
+
// to recover s_a, then surfaces it via `cooperative_redemption_data` and
|
|
13
|
+
// flips the required action to `sweep`. The driver finishes the swap with
|
|
14
|
+
// an XMR sweep that lands the row in `completed`. Treating `punished` as
|
|
15
|
+
// terminal would make the driver bail mid-recovery.
|
|
16
|
+
export const TERMINAL_STATUSES = new Set([
|
|
17
|
+
'completed',
|
|
18
|
+
'failed',
|
|
19
|
+
'refunded',
|
|
20
|
+
'withheld',
|
|
21
|
+
'expired',
|
|
22
|
+
]);
|
|
23
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/types/status.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,+DAA+D;AAC/D,qEAAqE;AACrE,yEAAyE;AACzE,wDAAwD;AASxD,qEAAqE;AACrE,0EAA0E;AAC1E,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,yEAAyE;AACzE,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAS;IACpE,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;CACV,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ErrorCode } from './errors.js';
|
|
2
|
+
export interface VerificationCheck {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly passed: boolean;
|
|
5
|
+
readonly detail: string;
|
|
6
|
+
}
|
|
7
|
+
export interface VerificationResult {
|
|
8
|
+
readonly verified: boolean;
|
|
9
|
+
readonly provider: string;
|
|
10
|
+
readonly checks: readonly VerificationCheck[];
|
|
11
|
+
readonly timestamp: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Thrown when an independent cryptographic or protocol-safety check fails.
|
|
15
|
+
* Always carries a stable `code` from `ERROR_CODES`.
|
|
16
|
+
*
|
|
17
|
+
* Carries `category: 'verification'` so {@link withRetry} fails immediately
|
|
18
|
+
* — a failed independent invariant cannot be fixed by retrying the same call.
|
|
19
|
+
*
|
|
20
|
+
* @security Every loud failure of an independent invariant in the client
|
|
21
|
+
* surfaces as this error; callers switch on `code` for UX.
|
|
22
|
+
*/
|
|
23
|
+
import { MiradexError } from '../lib/errors.js';
|
|
24
|
+
export declare class VerificationError extends MiradexError {
|
|
25
|
+
readonly name = "VerificationError";
|
|
26
|
+
readonly code: ErrorCode;
|
|
27
|
+
constructor(code: ErrorCode, message: string);
|
|
28
|
+
}
|
|
29
|
+
export type SafeBigInt = bigint & {
|
|
30
|
+
readonly __safeBigInt: unique symbol;
|
|
31
|
+
};
|
|
32
|
+
export interface BlockHeightSource {
|
|
33
|
+
readonly getTipHeight: () => Promise<number>;
|
|
34
|
+
}
|
|
35
|
+
export interface FeePolicy {
|
|
36
|
+
readonly minRelaySatsPerVbyte: bigint;
|
|
37
|
+
readonly maxSatsPerVbyte: bigint;
|
|
38
|
+
}
|
|
39
|
+
export interface AmnestyPolicy {
|
|
40
|
+
readonly maxRatioBps: number;
|
|
41
|
+
}
|
|
42
|
+
export interface DustPolicy {
|
|
43
|
+
readonly p2wpkhDustSats: bigint;
|
|
44
|
+
readonly p2wshDustSats: bigint;
|
|
45
|
+
}
|
|
46
|
+
export declare const DEFAULT_FEE_POLICY: FeePolicy;
|
|
47
|
+
export declare const DEFAULT_AMNESTY_POLICY: AmnestyPolicy;
|
|
48
|
+
export declare const DEFAULT_DUST_POLICY: DustPolicy;
|
|
49
|
+
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAkB,IAAI,uBAAuB;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACb,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAGvB,CAAC;AAOX,eAAO,MAAM,sBAAsB,EAAE,aAA+C,CAAC;AAErF,eAAO,MAAM,mBAAmB,EAAE,UAGxB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when an independent cryptographic or protocol-safety check fails.
|
|
3
|
+
* Always carries a stable `code` from `ERROR_CODES`.
|
|
4
|
+
*
|
|
5
|
+
* Carries `category: 'verification'` so {@link withRetry} fails immediately
|
|
6
|
+
* — a failed independent invariant cannot be fixed by retrying the same call.
|
|
7
|
+
*
|
|
8
|
+
* @security Every loud failure of an independent invariant in the client
|
|
9
|
+
* surfaces as this error; callers switch on `code` for UX.
|
|
10
|
+
*/
|
|
11
|
+
import { MiradexError } from '../lib/errors.js';
|
|
12
|
+
export class VerificationError extends MiradexError {
|
|
13
|
+
name = 'VerificationError';
|
|
14
|
+
code;
|
|
15
|
+
constructor(code, message) {
|
|
16
|
+
super(message, 'verification');
|
|
17
|
+
this.code = code;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export const DEFAULT_FEE_POLICY = {
|
|
21
|
+
minRelaySatsPerVbyte: 1n,
|
|
22
|
+
maxSatsPerVbyte: 500n,
|
|
23
|
+
};
|
|
24
|
+
// Mirrors the Rust upstream's MAX_ANTI_SPAM_DEPOSIT_RATIO = 0.2 (20%) at
|
|
25
|
+
// xmr-atomic-swap/core/swap-env/src/config.rs:226. The Rust ASB allows
|
|
26
|
+
// makers to configure anti_spam_deposit_ratio anywhere in [0, 0.2]; if the
|
|
27
|
+
// SDK cap were tighter (e.g. 0.1) we'd reject swaps from any maker
|
|
28
|
+
// running at the Rust-permitted maximum. 2_000 bps == 20%.
|
|
29
|
+
export const DEFAULT_AMNESTY_POLICY = { maxRatioBps: 2_000 };
|
|
30
|
+
export const DEFAULT_DUST_POLICY = {
|
|
31
|
+
p2wpkhDustSats: 294n,
|
|
32
|
+
p2wshDustSats: 330n,
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAC/B,IAAI,GAAG,mBAAmB,CAAC;IACpC,IAAI,CAAY;IACzB,YAAY,IAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAsBD,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,oBAAoB,EAAE,EAAE;IACxB,eAAe,EAAE,IAAI;CACb,CAAC;AAEX,yEAAyE;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,mEAAmE;AACnE,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAkB,EAAE,WAAW,EAAE,KAAK,EAAW,CAAC;AAErF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACX,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AtomicSwapVerification, VerificationResult } from '../types/index.js';
|
|
2
|
+
import { type ProtocolContext, type VerifyParams } from './shared.js';
|
|
3
|
+
/**
|
|
4
|
+
* Verify an atomic-swap deposit address — script type, refund address
|
|
5
|
+
* binding, timelock range, and (if supplied) sidecar-claimed lock address
|
|
6
|
+
* consistency.
|
|
7
|
+
*/
|
|
8
|
+
export declare function verifyAtomicSwap(v: AtomicSwapVerification, params: VerifyParams, protocol?: ProtocolContext): VerificationResult;
|
|
9
|
+
//# sourceMappingURL=atomic-swap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-swap.d.ts","sourceRoot":"","sources":["../../src/verification/atomic-swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,sBAAsB,EACzB,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,eAAe,GACzB,kBAAkB,CA6BpB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ATOMICSWAP_TIMELOCK_MAX_BLOCKS, ATOMICSWAP_TIMELOCK_MIN_BLOCKS, } from './constants.js';
|
|
2
|
+
import { check, resultOf } from './shared.js';
|
|
3
|
+
/**
|
|
4
|
+
* Verify an atomic-swap deposit address — script type, refund address
|
|
5
|
+
* binding, timelock range, and (if supplied) sidecar-claimed lock address
|
|
6
|
+
* consistency.
|
|
7
|
+
*/
|
|
8
|
+
export function verifyAtomicSwap(v, params, protocol) {
|
|
9
|
+
const checks = [];
|
|
10
|
+
checks.push(check('P2WSH deposit type', v.deposit_type === 'P2WSH', `Type: ${v.deposit_type}`));
|
|
11
|
+
const refundOk = v.refund_address === params.refundAddress;
|
|
12
|
+
checks.push(check('Refund address in script', refundOk, refundOk ? 'Refund address matches' : 'Refund address mismatch'));
|
|
13
|
+
const timelockOk = v.timelock_blocks >= ATOMICSWAP_TIMELOCK_MIN_BLOCKS &&
|
|
14
|
+
v.timelock_blocks <= ATOMICSWAP_TIMELOCK_MAX_BLOCKS;
|
|
15
|
+
checks.push(check('Timelock range', timelockOk, `${v.timelock_blocks} blocks (~${v.timelock_hours}h)`));
|
|
16
|
+
if (protocol?.lock_address) {
|
|
17
|
+
const lockOk = v.lock_address === protocol.lock_address;
|
|
18
|
+
checks.push(check('Lock address match', lockOk, lockOk ? 'Consistent' : 'Mismatch'));
|
|
19
|
+
}
|
|
20
|
+
return resultOf('atomicswap', checks);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=atomic-swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-swap.js","sourceRoot":"","sources":["../../src/verification/atomic-swap.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAA2C,MAAM,aAAa,CAAC;AAEvF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAyB,EACzB,MAAoB,EACpB,QAA0B;IAE1B,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,YAAY,KAAK,OAAO,EAAE,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CACnF,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,aAAa,CAAC;IAC3D,MAAM,CAAC,IAAI,CACT,KAAK,CACH,0BAA0B,EAC1B,QAAQ,EACR,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAChE,CACF,CAAC;IAEF,MAAM,UAAU,GACd,CAAC,CAAC,eAAe,IAAI,8BAA8B;QACnD,CAAC,CAAC,eAAe,IAAI,8BAA8B,CAAC;IACtD,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,eAAe,aAAa,CAAC,CAAC,cAAc,IAAI,CAAC,CAC3F,CAAC;IAEF,IAAI,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-owned Chainflip verification endpoints. Hardcoded per network so the
|
|
3
|
+
* SDK never trusts a server-supplied `verification.status_url`. The verifier
|
|
4
|
+
* URL is a property of the SDK build, not of any swap response.
|
|
5
|
+
*
|
|
6
|
+
* Two distinct verification modes per network:
|
|
7
|
+
*
|
|
8
|
+
* - `'rest'` — single GET to Chainflip's hosted broker REST at
|
|
9
|
+
* `${statusUrl}/<channelId>`. Used for mainnet and
|
|
10
|
+
* testnet (testnet flag governs atomicswap only;
|
|
11
|
+
* every other provider, including chainflip, runs on
|
|
12
|
+
* the same mainnet infrastructure).
|
|
13
|
+
* - `'jsonrpc'` — POST `cf_deposit_channel_info` to the localnet
|
|
14
|
+
* private chainflip-broker. Used for regtest, where
|
|
15
|
+
* the system-tests stack runs its own chainflip-node
|
|
16
|
+
* exposing the legacy state-chain RPC method that the
|
|
17
|
+
* hosted public broker does not.
|
|
18
|
+
*
|
|
19
|
+
* Single-source on REST: the only browser-reachable mainnet state-chain
|
|
20
|
+
* RPC node we found (`mainnet-archive.chainflip.io`) does not expose a
|
|
21
|
+
* single-channel lookup method — only "all open channels", which is
|
|
22
|
+
* impractically large to fetch + filter on every swap. The hosted
|
|
23
|
+
* broker is Chainflip's own infrastructure and shares the same trust
|
|
24
|
+
* assumption a Chainflip-hosted UI makes; non-custodial guarantees are
|
|
25
|
+
* unaffected because the broker cannot move user funds.
|
|
26
|
+
*
|
|
27
|
+
* Returns `undefined` for any network without a configured verifier — the
|
|
28
|
+
* SDK fails closed in that case (no fallback to server-supplied URLs).
|
|
29
|
+
*/
|
|
30
|
+
export type ChainflipNetwork = 'mainnet' | 'testnet' | 'regtest';
|
|
31
|
+
export type ChainflipVerificationEndpoints = {
|
|
32
|
+
/** Hosted broker REST. SDK appends `/<channelId>` to `statusUrl`. */
|
|
33
|
+
readonly mode: 'rest';
|
|
34
|
+
readonly statusUrl: string;
|
|
35
|
+
} | {
|
|
36
|
+
/**
|
|
37
|
+
* Localnet private chainflip-broker that exposes the legacy
|
|
38
|
+
* `cf_deposit_channel_info` state-chain RPC. POST a JSON-RPC body
|
|
39
|
+
* to `rpcUrl`.
|
|
40
|
+
*/
|
|
41
|
+
readonly mode: 'jsonrpc';
|
|
42
|
+
readonly rpcUrl: string;
|
|
43
|
+
};
|
|
44
|
+
export declare const CHAINFLIP_VERIFICATION_NETWORKS: Readonly<Partial<Record<ChainflipNetwork, ChainflipVerificationEndpoints>>>;
|
|
45
|
+
export declare function chainflipEndpointsForNetwork(network: ChainflipNetwork): ChainflipVerificationEndpoints | undefined;
|
|
46
|
+
//# sourceMappingURL=chainflip-networks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainflip-networks.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,MAAM,8BAA8B,GACtC;IACE,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAUN,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC,CAclE,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GACxB,8BAA8B,GAAG,SAAS,CAE5C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const DEFAULT_REGTEST_VERIFIER_URL = 'http://127.0.0.1:9099';
|
|
2
|
+
// Chainflip's mainnet hosted broker REST. The `/v2/swaps/<channelId>` path
|
|
3
|
+
// is the documented public lookup. Mirror in any tooling that calls the
|
|
4
|
+
// same endpoint (`apps/crypto-server/src/swap/services/swap.constants.ts:28`
|
|
5
|
+
// holds the bare host as `CHAINFLIP_BACKEND_URL`).
|
|
6
|
+
const CHAINFLIP_MAINNET_STATUS = 'https://chainflip-swap.chainflip.io/v2/swaps';
|
|
7
|
+
export const CHAINFLIP_VERIFICATION_NETWORKS = {
|
|
8
|
+
mainnet: {
|
|
9
|
+
mode: 'rest',
|
|
10
|
+
statusUrl: CHAINFLIP_MAINNET_STATUS,
|
|
11
|
+
},
|
|
12
|
+
testnet: {
|
|
13
|
+
mode: 'rest',
|
|
14
|
+
statusUrl: CHAINFLIP_MAINNET_STATUS,
|
|
15
|
+
},
|
|
16
|
+
regtest: {
|
|
17
|
+
mode: 'jsonrpc',
|
|
18
|
+
rpcUrl: DEFAULT_REGTEST_VERIFIER_URL,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export function chainflipEndpointsForNetwork(network) {
|
|
22
|
+
return CHAINFLIP_VERIFICATION_NETWORKS[network];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=chainflip-networks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainflip-networks.js","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AA+CA,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAE7D,2EAA2E;AAC3E,wEAAwE;AACxE,6EAA6E;AAC7E,mDAAmD;AACnD,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEhF,MAAM,CAAC,MAAM,+BAA+B,GAExC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,wBAAwB;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,wBAAwB;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,4BAA4B;KACrC;CACF,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,OAAyB;IAEzB,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ChainflipVerification, VerificationResult } from '../types/index.js';
|
|
2
|
+
import { type VerifyParams } from './shared.js';
|
|
3
|
+
import { type ChainflipNetwork, type ChainflipVerificationEndpoints } from './chainflip-networks.js';
|
|
4
|
+
/**
|
|
5
|
+
* Verify a Chainflip deposit address by reading the SDK-owned broker REST
|
|
6
|
+
* endpoint and confirming the channel binding matches the user's expected
|
|
7
|
+
* destination. The verifier URL comes from the SDK's hardcoded per-network
|
|
8
|
+
* registry (`chainflip-networks.ts`) — `v.status_url` from the server is
|
|
9
|
+
* intentionally ignored.
|
|
10
|
+
*
|
|
11
|
+
* Single-source design rationale: the only browser-reachable mainnet
|
|
12
|
+
* state-chain RPC node (`mainnet-archive.chainflip.io`) does not expose a
|
|
13
|
+
* single-channel lookup method, so a true two-source cross-check isn't
|
|
14
|
+
* feasible without proxying or fetching the entire open-channel set.
|
|
15
|
+
* Trust posture: the broker is Chainflip's own infrastructure (same
|
|
16
|
+
* trust assumption a Chainflip-hosted UI makes); a misreport cannot move
|
|
17
|
+
* funds because the user's wallet still holds them.
|
|
18
|
+
*
|
|
19
|
+
* Fails closed when the network has no configured verifier endpoint.
|
|
20
|
+
*/
|
|
21
|
+
export declare function verifyChainflip(depositAddress: string, v: ChainflipVerification, params: VerifyParams, fetchFn: typeof globalThis.fetch, network: ChainflipNetwork, signal?: AbortSignal): Promise<VerificationResult>;
|
|
22
|
+
export interface VerifyChainflipChannelInput {
|
|
23
|
+
readonly channelId: string;
|
|
24
|
+
/**
|
|
25
|
+
* Per-network endpoint config. Discriminated on `mode`:
|
|
26
|
+
* - `'rest'`: GET `${statusUrl}/<channelId>` against the hosted
|
|
27
|
+
* broker (mainnet/testnet).
|
|
28
|
+
* - `'jsonrpc'`: POST `cf_deposit_channel_info` against a localnet
|
|
29
|
+
* private chainflip-broker (regtest only).
|
|
30
|
+
*/
|
|
31
|
+
readonly endpoints: ChainflipVerificationEndpoints;
|
|
32
|
+
readonly expected: {
|
|
33
|
+
readonly destAddress: string;
|
|
34
|
+
readonly refundAddress?: string;
|
|
35
|
+
readonly srcChain: string;
|
|
36
|
+
readonly destChain: string;
|
|
37
|
+
readonly destAsset: string;
|
|
38
|
+
};
|
|
39
|
+
readonly depositAmountSats?: string;
|
|
40
|
+
readonly fetchFn: typeof globalThis.fetch;
|
|
41
|
+
readonly timeoutMs?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Optional external abort signal. When this fires the retry loop bails
|
|
44
|
+
* immediately instead of running through its full
|
|
45
|
+
* CHAINFLIP_REST_RETRY_TOTAL_MS budget.
|
|
46
|
+
*/
|
|
47
|
+
readonly signal?: AbortSignal;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read a Chainflip deposit channel from the appropriate verifier and
|
|
51
|
+
* confirm it binds to the caller's expected destination/refund address.
|
|
52
|
+
*
|
|
53
|
+
* @throws {VerificationError} `E_CHAINFLIP_CHANNEL_MISBINDING` when the
|
|
54
|
+
* broker disagrees with the caller's expected destination/refund.
|
|
55
|
+
* @throws {VerificationError} `E_CHAINFLIP_CHANNEL_EXPIRING` when the
|
|
56
|
+
* channel expires within the safety margin.
|
|
57
|
+
* @throws {VerificationError} `E_CHAINFLIP_AMOUNT_BELOW_MIN` /
|
|
58
|
+
* `E_CHAINFLIP_AMOUNT_ABOVE_MAX` when `depositAmountSats` is out of band.
|
|
59
|
+
*/
|
|
60
|
+
export declare function verifyChainflipChannel(input: VerifyChainflipChannelInput): Promise<void>;
|
|
61
|
+
//# sourceMappingURL=chainflip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainflip.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAWjF,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,8BAA8B,EACpC,MAAM,yBAAyB,CAAC;AAIjC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,EACtB,CAAC,EAAE,qBAAqB,EACxB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,OAAO,EAAE,gBAAgB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAkD7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|