@miradexio/client 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -292
- package/dist/address/base58.d.ts.map +1 -1
- package/dist/address/base58.js +1 -2
- package/dist/address/base58.js.map +1 -1
- package/dist/address/bech32.d.ts +0 -8
- package/dist/address/bech32.d.ts.map +1 -1
- package/dist/address/bech32.js +3 -9
- package/dist/address/bech32.js.map +1 -1
- package/dist/address/evm.d.ts.map +1 -1
- package/dist/address/evm.js +1 -2
- package/dist/address/evm.js.map +1 -1
- package/dist/address/index.d.ts +0 -6
- package/dist/address/index.d.ts.map +1 -1
- package/dist/address/index.js +6 -9
- package/dist/address/index.js.map +1 -1
- package/dist/address/monero.d.ts +0 -10
- package/dist/address/monero.d.ts.map +1 -1
- package/dist/address/monero.js +4 -10
- package/dist/address/monero.js.map +1 -1
- package/dist/address/polkadot.d.ts +0 -5
- package/dist/address/polkadot.d.ts.map +1 -1
- package/dist/address/polkadot.js +2 -6
- package/dist/address/polkadot.js.map +1 -1
- package/dist/address/ton.d.ts +0 -6
- package/dist/address/ton.d.ts.map +1 -1
- package/dist/address/ton.js +3 -8
- package/dist/address/ton.js.map +1 -1
- package/dist/api/index.d.ts +0 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +18 -37
- package/dist/api/index.js.map +1 -1
- package/dist/atomic-swap/drive.d.ts +0 -13
- package/dist/atomic-swap/drive.d.ts.map +1 -1
- package/dist/atomic-swap/drive.js +66 -111
- package/dist/atomic-swap/drive.js.map +1 -1
- package/dist/atomic-swap/extract.d.ts +0 -23
- package/dist/atomic-swap/extract.d.ts.map +1 -1
- package/dist/atomic-swap/extract.js +6 -16
- package/dist/atomic-swap/extract.js.map +1 -1
- package/dist/atomic-swap/index.d.ts +0 -7
- package/dist/atomic-swap/index.d.ts.map +1 -1
- package/dist/atomic-swap/index.js +1 -7
- package/dist/atomic-swap/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.js +5 -20
- package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.d.ts +0 -13
- package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.js +30 -56
- package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
- package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
- package/dist/atomic-swap/presign.d.ts +0 -63
- package/dist/atomic-swap/presign.d.ts.map +1 -1
- package/dist/atomic-swap/presign.js +30 -90
- package/dist/atomic-swap/presign.js.map +1 -1
- package/dist/atomic-swap/refund.d.ts +0 -18
- package/dist/atomic-swap/refund.d.ts.map +1 -1
- package/dist/atomic-swap/refund.js +16 -32
- package/dist/atomic-swap/refund.js.map +1 -1
- package/dist/atomic-swap/run.d.ts +0 -17
- package/dist/atomic-swap/run.d.ts.map +1 -1
- package/dist/atomic-swap/run.js +11 -25
- package/dist/atomic-swap/run.js.map +1 -1
- package/dist/atomic-swap/snapshot.d.ts +0 -30
- package/dist/atomic-swap/snapshot.d.ts.map +1 -1
- package/dist/atomic-swap/snapshot.js +8 -23
- package/dist/atomic-swap/snapshot.js.map +1 -1
- package/dist/atomic-swap/submit-encsig.d.ts +0 -7
- package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
- package/dist/atomic-swap/submit-encsig.js +2 -11
- package/dist/atomic-swap/submit-encsig.js.map +1 -1
- package/dist/atomic-swap/types.d.ts +2 -55
- package/dist/atomic-swap/types.d.ts.map +1 -1
- package/dist/atomic-swap/types.js +2 -3
- package/dist/atomic-swap/types.js.map +1 -1
- package/dist/blockchain/quorum-provider.d.ts +0 -15
- package/dist/blockchain/quorum-provider.d.ts.map +1 -1
- package/dist/blockchain/quorum-provider.js +7 -9
- package/dist/blockchain/quorum-provider.js.map +1 -1
- package/dist/cooperative-redeem.d.ts +5 -14
- package/dist/cooperative-redeem.d.ts.map +1 -1
- package/dist/cooperative-redeem.js +3 -20
- package/dist/cooperative-redeem.js.map +1 -1
- package/dist/engine/blockchain-querier.d.ts +0 -22
- package/dist/engine/blockchain-querier.d.ts.map +1 -1
- package/dist/engine/engine-state.d.ts +0 -8
- package/dist/engine/engine-state.d.ts.map +1 -1
- package/dist/engine/engine-state.js.map +1 -1
- package/dist/engine/flow-context.d.ts +0 -20
- package/dist/engine/flow-context.d.ts.map +1 -1
- package/dist/engine/flow-context.js +17 -41
- package/dist/engine/flow-context.js.map +1 -1
- package/dist/engine/flows/atomic-flow.d.ts +0 -28
- package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
- package/dist/engine/flows/atomic-flow.js +64 -121
- package/dist/engine/flows/atomic-flow.js.map +1 -1
- package/dist/engine/flows/swap-flow.d.ts +0 -19
- package/dist/engine/flows/swap-flow.d.ts.map +1 -1
- package/dist/engine/flows/swap-flow.js +41 -83
- package/dist/engine/flows/swap-flow.js.map +1 -1
- package/dist/engine/miradex-engine.d.ts +1 -62
- package/dist/engine/miradex-engine.d.ts.map +1 -1
- package/dist/engine/miradex-engine.js +18 -50
- package/dist/engine/miradex-engine.js.map +1 -1
- package/dist/engine/pipeline.d.ts +0 -11
- package/dist/engine/pipeline.d.ts.map +1 -1
- package/dist/engine/pipeline.js +9 -21
- package/dist/engine/pipeline.js.map +1 -1
- package/dist/engine/platform.d.ts +0 -160
- package/dist/engine/platform.d.ts.map +1 -1
- package/dist/engine/platform.js +2 -0
- package/dist/engine/platform.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -11
- package/dist/index.js.map +1 -1
- package/dist/interfaces/blockchain.d.ts +1 -13
- package/dist/interfaces/blockchain.d.ts.map +1 -1
- package/dist/interfaces/blockchain.js +1 -0
- package/dist/interfaces/blockchain.js.map +1 -1
- package/dist/interfaces/logger.d.ts +0 -6
- package/dist/interfaces/logger.d.ts.map +1 -1
- package/dist/interfaces/logger.js.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
- package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.js +7 -31
- package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
- package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
- package/dist/lib/bitcoin/script-hash.js +2 -6
- package/dist/lib/bitcoin/script-hash.js.map +1 -1
- package/dist/lib/bitcoin/sweep.d.ts +0 -30
- package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
- package/dist/lib/bitcoin/sweep.js +11 -40
- package/dist/lib/bitcoin/sweep.js.map +1 -1
- package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
- package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
- package/dist/lib/bitcoin/tx-verify.js +20 -61
- package/dist/lib/bitcoin/tx-verify.js.map +1 -1
- package/dist/lib/bitcoin/wallet.d.ts +0 -38
- package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
- package/dist/lib/bitcoin/wallet.js +13 -38
- package/dist/lib/bitcoin/wallet.js.map +1 -1
- package/dist/lib/crypto/bytes.d.ts +0 -14
- package/dist/lib/crypto/bytes.d.ts.map +1 -1
- package/dist/lib/crypto/bytes.js +5 -14
- package/dist/lib/crypto/bytes.js.map +1 -1
- package/dist/lib/crypto/errors.d.ts +0 -5
- package/dist/lib/crypto/errors.d.ts.map +1 -1
- package/dist/lib/crypto/errors.js +2 -5
- package/dist/lib/crypto/errors.js.map +1 -1
- package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
- package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
- package/dist/lib/crypto/libp2p-identity.js +16 -28
- package/dist/lib/crypto/libp2p-identity.js.map +1 -1
- package/dist/lib/crypto/mnemonic.d.ts +0 -9
- package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
- package/dist/lib/crypto/mnemonic.js +11 -27
- package/dist/lib/crypto/mnemonic.js.map +1 -1
- package/dist/lib/crypto/platform.d.ts +0 -6
- package/dist/lib/crypto/platform.d.ts.map +1 -1
- package/dist/lib/crypto/platform.js +2 -6
- package/dist/lib/crypto/platform.js.map +1 -1
- package/dist/lib/crypto/scalars.d.ts +0 -23
- package/dist/lib/crypto/scalars.d.ts.map +1 -1
- package/dist/lib/crypto/scalars.js +10 -23
- package/dist/lib/crypto/scalars.js.map +1 -1
- package/dist/lib/crypto/types.d.ts +0 -4
- package/dist/lib/crypto/types.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.d.ts +0 -23
- package/dist/lib/crypto/wasm.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.js +9 -16
- package/dist/lib/crypto/wasm.js.map +1 -1
- package/dist/lib/default-config.d.ts +1 -59
- package/dist/lib/default-config.d.ts.map +1 -1
- package/dist/lib/default-config.js +22 -61
- package/dist/lib/default-config.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -54
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +12 -35
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/keystore.d.ts +0 -24
- package/dist/lib/keystore.d.ts.map +1 -1
- package/dist/lib/keystore.js +3 -10
- package/dist/lib/keystore.js.map +1 -1
- package/dist/lib/monero/output-scanner.d.ts +0 -18
- package/dist/lib/monero/output-scanner.d.ts.map +1 -1
- package/dist/lib/monero/output-scanner.js +17 -40
- package/dist/lib/monero/output-scanner.js.map +1 -1
- package/dist/lib/monero/rpc.d.ts +0 -64
- package/dist/lib/monero/rpc.d.ts.map +1 -1
- package/dist/lib/monero/rpc.js +17 -59
- package/dist/lib/monero/rpc.js.map +1 -1
- package/dist/lib/monero/verify-lock.d.ts +0 -12
- package/dist/lib/monero/verify-lock.d.ts.map +1 -1
- package/dist/lib/monero/verify-lock.js +9 -24
- package/dist/lib/monero/verify-lock.js.map +1 -1
- package/dist/lib/monero/verify-sweep.d.ts +0 -20
- package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
- package/dist/lib/monero/verify-sweep.js +7 -25
- package/dist/lib/monero/verify-sweep.js.map +1 -1
- package/dist/lib/pow-solver.d.ts.map +1 -1
- package/dist/lib/pow-solver.js +3 -8
- package/dist/lib/pow-solver.js.map +1 -1
- package/dist/lib/retry.d.ts +7 -64
- package/dist/lib/retry.d.ts.map +1 -1
- package/dist/lib/retry.js +13 -13
- package/dist/lib/retry.js.map +1 -1
- package/dist/portable.d.ts.map +1 -1
- package/dist/portable.js +3 -4
- package/dist/portable.js.map +1 -1
- package/dist/quote-binding.d.ts +0 -13
- package/dist/quote-binding.d.ts.map +1 -1
- package/dist/quote-binding.js +3 -18
- package/dist/quote-binding.js.map +1 -1
- package/dist/swap-executor.d.ts +1 -5
- package/dist/swap-executor.d.ts.map +1 -1
- package/dist/swap-executor.js +1 -1
- package/dist/swap-executor.js.map +1 -1
- package/dist/types/api.d.ts +0 -6
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +6 -9
- package/dist/types/api.js.map +1 -1
- package/dist/types/errors.d.ts +0 -7
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +2 -7
- package/dist/types/errors.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/keys.d.ts +0 -15
- package/dist/types/keys.d.ts.map +1 -1
- package/dist/types/protocol.d.ts +0 -51
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +3 -8
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/status.js +9 -14
- package/dist/types/status.js.map +1 -1
- package/dist/types/verification.d.ts +0 -10
- package/dist/types/verification.d.ts.map +1 -1
- package/dist/types/verification.js +7 -15
- package/dist/types/verification.js.map +1 -1
- package/dist/verification/chainflip-networks.d.ts +2 -35
- package/dist/verification/chainflip-networks.d.ts.map +1 -1
- package/dist/verification/chainflip-networks.js +12 -4
- package/dist/verification/chainflip-networks.js.map +1 -1
- package/dist/verification/chainflip.d.ts +0 -40
- package/dist/verification/chainflip.d.ts.map +1 -1
- package/dist/verification/chainflip.js +49 -129
- package/dist/verification/chainflip.js.map +1 -1
- package/dist/verification/constants.d.ts +0 -40
- package/dist/verification/constants.d.ts.map +1 -1
- package/dist/verification/constants.js +14 -40
- package/dist/verification/constants.js.map +1 -1
- package/dist/verification/index.d.ts +0 -26
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +8 -12
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/memo.d.ts +0 -15
- package/dist/verification/memo.d.ts.map +1 -1
- package/dist/verification/memo.js +9 -27
- package/dist/verification/memo.js.map +1 -1
- package/dist/verification/near-intents.d.ts +0 -63
- package/dist/verification/near-intents.d.ts.map +1 -1
- package/dist/verification/near-intents.js +25 -67
- package/dist/verification/near-intents.js.map +1 -1
- package/dist/verification/rate-oracle.d.ts +0 -22
- package/dist/verification/rate-oracle.d.ts.map +1 -1
- package/dist/verification/rate-oracle.js +6 -11
- package/dist/verification/rate-oracle.js.map +1 -1
- package/dist/verification/thorchain-networks.d.ts +0 -27
- package/dist/verification/thorchain-networks.d.ts.map +1 -1
- package/dist/verification/thorchain-networks.js +13 -15
- package/dist/verification/thorchain-networks.js.map +1 -1
- package/dist/verification/thorchain.d.ts +0 -30
- package/dist/verification/thorchain.d.ts.map +1 -1
- package/dist/verification/thorchain.js +24 -47
- package/dist/verification/thorchain.js.map +1 -1
- package/dist/wasm-pins.d.ts +3 -3
- package/dist/wasm-pins.js +1 -1
- package/dist/wire/near-intents.zod.d.ts +0 -27
- package/dist/wire/near-intents.zod.d.ts.map +1 -1
- package/dist/wire/near-intents.zod.js +15 -23
- package/dist/wire/near-intents.zod.js.map +1 -1
- package/dist/wire/server/action.zod.d.ts +0 -10
- package/dist/wire/server/action.zod.d.ts.map +1 -1
- package/dist/wire/server/action.zod.js +8 -14
- package/dist/wire/server/action.zod.js.map +1 -1
- package/dist/wire/server/common.zod.d.ts +0 -13
- package/dist/wire/server/common.zod.d.ts.map +1 -1
- package/dist/wire/server/common.zod.js +6 -14
- package/dist/wire/server/common.zod.js.map +1 -1
- package/dist/wire/server/swap.zod.d.ts +0 -42
- package/dist/wire/server/swap.zod.d.ts.map +1 -1
- package/dist/wire/server/swap.zod.js +12 -26
- package/dist/wire/server/swap.zod.js.map +1 -1
- package/dist/wire/thorchain.zod.d.ts +0 -8
- package/dist/wire/thorchain.zod.d.ts.map +1 -1
- package/dist/wire/thorchain.zod.js +3 -8
- package/dist/wire/thorchain.zod.js.map +1 -1
- package/package.json +4 -4
- package/wasm/miradex-rust/README.md +3 -4
- package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
- package/wasm/miradex-rust/miradex_rust.js +4 -6
- package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
package/dist/types/status.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
// Terminal-status
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
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.
|
|
1
|
+
// Terminal-status literals + set for client-side reducers. SwapStatus and
|
|
2
|
+
// related wire types live in src/wire/server/swap.zod.ts as zod-inferred
|
|
3
|
+
// types; import them through the package barrel.
|
|
4
|
+
// Set<string> because SwapStatus has a forward-compat `unknown:${string}` tail.
|
|
8
5
|
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// to
|
|
13
|
-
//
|
|
14
|
-
// an XMR sweep that lands the row in `completed`. Treating `punished` as
|
|
15
|
-
// terminal would make the driver bail mid-recovery.
|
|
6
|
+
// 'punished' is deliberately NOT terminal: when Alice broadcasts TxPunish
|
|
7
|
+
// (Bob missed the refund window) the sidecar runs
|
|
8
|
+
// cooperative_xmr_redeem_after_punish, recovers s_a, and flips
|
|
9
|
+
// requiredAction to 'sweep'. The driver finishes via XMR sweep into
|
|
10
|
+
// 'completed'. Marking 'punished' terminal would bail mid-recovery.
|
|
16
11
|
export const TERMINAL_STATUSES = new Set([
|
|
17
12
|
'completed',
|
|
18
13
|
'failed',
|
package/dist/types/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/types/status.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/types/status.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yEAAyE;AACzE,iDAAiD;AASjD,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,kDAAkD;AAClD,+DAA+D;AAC/D,oEAAoE;AACpE,oEAAoE;AACpE,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAS;IACpE,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;CACV,CAAC,CAAC"}
|
|
@@ -10,16 +10,6 @@ export interface VerificationResult {
|
|
|
10
10
|
readonly checks: readonly VerificationCheck[];
|
|
11
11
|
readonly timestamp: number;
|
|
12
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
13
|
import { MiradexError } from '../lib/errors.js';
|
|
24
14
|
export declare class VerificationError extends MiradexError {
|
|
25
15
|
readonly name = "VerificationError";
|
|
@@ -1 +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;
|
|
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;AAMD,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;AAMX,eAAO,MAAM,sBAAsB,EAAE,aAA+C,CAAC;AAErF,eAAO,MAAM,mBAAmB,EAAE,UAGxB,CAAC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
*/
|
|
1
|
+
// Independent crypto / safety check failure. Always carries a stable
|
|
2
|
+
// ERROR_CODES code; consumers switch on it for UX. Category 'verification'
|
|
3
|
+
// so withRetry fails immediately (re-running won't fix a broken invariant).
|
|
11
4
|
import { MiradexError } from '../lib/errors.js';
|
|
12
5
|
export class VerificationError extends MiradexError {
|
|
13
6
|
name = 'VerificationError';
|
|
@@ -21,11 +14,10 @@ export const DEFAULT_FEE_POLICY = {
|
|
|
21
14
|
minRelaySatsPerVbyte: 1n,
|
|
22
15
|
maxSatsPerVbyte: 500n,
|
|
23
16
|
};
|
|
24
|
-
// Mirrors
|
|
25
|
-
// xmr-atomic-swap/core/swap-env/src/config.rs:226.
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// running at the Rust-permitted maximum. 2_000 bps == 20%.
|
|
17
|
+
// Mirrors Rust MAX_ANTI_SPAM_DEPOSIT_RATIO = 0.2 (20%) at
|
|
18
|
+
// xmr-atomic-swap/core/swap-env/src/config.rs:226. ASB makers may configure
|
|
19
|
+
// anti_spam_deposit_ratio anywhere in [0, 0.2]; a tighter SDK cap would
|
|
20
|
+
// reject swaps from makers running at the Rust-permitted max. 2_000 bps = 20%.
|
|
29
21
|
export const DEFAULT_AMNESTY_POLICY = { maxRatioBps: 2_000 };
|
|
30
22
|
export const DEFAULT_DUST_POLICY = {
|
|
31
23
|
p2wpkhDustSats: 294n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAeA
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAeA,qEAAqE;AACrE,2EAA2E;AAC3E,4EAA4E;AAE5E,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,0DAA0D;AAC1D,4EAA4E;AAC5E,wEAAwE;AACxE,+EAA+E;AAC/E,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"}
|
|
@@ -1,43 +1,10 @@
|
|
|
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
1
|
export type ChainflipNetwork = 'mainnet' | 'testnet' | 'regtest';
|
|
31
2
|
export type ChainflipVerificationEndpoints = {
|
|
32
|
-
/** Hosted broker REST. SDK appends
|
|
3
|
+
/** Hosted broker REST. SDK appends /<channelId> to statusUrl. */
|
|
33
4
|
readonly mode: 'rest';
|
|
34
5
|
readonly statusUrl: string;
|
|
35
6
|
} | {
|
|
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
|
-
*/
|
|
7
|
+
/** Regtest localnet broker exposing legacy cf_deposit_channel_info RPC. */
|
|
41
8
|
readonly mode: 'jsonrpc';
|
|
42
9
|
readonly rpcUrl: string;
|
|
43
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainflip-networks.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chainflip-networks.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,MAAM,8BAA8B,GACtC;IACE,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AASN,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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
// Hardcoded per network so the SDK never trusts a server-supplied
|
|
2
|
+
// verification.status_url. Modes:
|
|
3
|
+
// rest - GET ${statusUrl}/<channelId> at the hosted broker
|
|
4
|
+
// (mainnet/testnet; the testnet flag only governs atomicswap)
|
|
5
|
+
// jsonrpc - POST cf_deposit_channel_info at the regtest localnet broker
|
|
6
|
+
// Single-source on REST is unavoidable: the public mainnet state-chain RPC
|
|
7
|
+
// (mainnet-archive.chainflip.io) only exposes "all open channels", not
|
|
8
|
+
// per-channel lookup. Returns undefined for unconfigured networks — SDK
|
|
9
|
+
// fails closed.
|
|
1
10
|
const DEFAULT_REGTEST_VERIFIER_URL = 'http://127.0.0.1:9099';
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
// holds the bare host as `CHAINFLIP_BACKEND_URL`).
|
|
11
|
+
// /v2/swaps/<channelId> is the documented public lookup. The bare host is
|
|
12
|
+
// also configured as CHAINFLIP_BACKEND_URL in
|
|
13
|
+
// apps/crypto-server/src/swap/services/swap.constants.ts:28.
|
|
6
14
|
const CHAINFLIP_MAINNET_STATUS = 'https://chainflip-swap.chainflip.io/v2/swaps';
|
|
7
15
|
export const CHAINFLIP_VERIFICATION_NETWORKS = {
|
|
8
16
|
mainnet: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainflip-networks.js","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chainflip-networks.js","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,kCAAkC;AAClC,iEAAiE;AACjE,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,uEAAuE;AACvE,wEAAwE;AACxE,gBAAgB;AAgBhB,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAE7D,0EAA0E;AAC1E,8CAA8C;AAC9C,6DAA6D;AAC7D,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"}
|
|
@@ -1,33 +1,9 @@
|
|
|
1
1
|
import type { ChainflipVerification, VerificationResult } from '../types/index.js';
|
|
2
2
|
import { type VerifyParams } from './shared.js';
|
|
3
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
4
|
export declare function verifyChainflip(depositAddress: string, v: ChainflipVerification, params: VerifyParams, fetchFn: typeof globalThis.fetch, network: ChainflipNetwork, signal?: AbortSignal): Promise<VerificationResult>;
|
|
22
5
|
export interface VerifyChainflipChannelInput {
|
|
23
6
|
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
7
|
readonly endpoints: ChainflipVerificationEndpoints;
|
|
32
8
|
readonly expected: {
|
|
33
9
|
readonly destAddress: string;
|
|
@@ -39,23 +15,7 @@ export interface VerifyChainflipChannelInput {
|
|
|
39
15
|
readonly depositAmountSats?: string;
|
|
40
16
|
readonly fetchFn: typeof globalThis.fetch;
|
|
41
17
|
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
18
|
readonly signal?: AbortSignal;
|
|
48
19
|
}
|
|
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
20
|
export declare function verifyChainflipChannel(input: VerifyChainflipChannelInput): Promise<void>;
|
|
61
21
|
//# sourceMappingURL=chainflip.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAUjC,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;IAI3B,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;IAG5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAKD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -4,23 +4,12 @@ import { VerificationError } from '../types/index.js';
|
|
|
4
4
|
import { ChainflipDepositChannelSchema, } from '../wire/chainflip.zod.js';
|
|
5
5
|
import { chainflipEndpointsForNetwork, } from './chainflip-networks.js';
|
|
6
6
|
const CHANNEL_SAFETY_MARGIN_MS = 90 * 60 * 1000;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
* Single-source design rationale: the only browser-reachable mainnet
|
|
15
|
-
* state-chain RPC node (`mainnet-archive.chainflip.io`) does not expose a
|
|
16
|
-
* single-channel lookup method, so a true two-source cross-check isn't
|
|
17
|
-
* feasible without proxying or fetching the entire open-channel set.
|
|
18
|
-
* Trust posture: the broker is Chainflip's own infrastructure (same
|
|
19
|
-
* trust assumption a Chainflip-hosted UI makes); a misreport cannot move
|
|
20
|
-
* funds because the user's wallet still holds them.
|
|
21
|
-
*
|
|
22
|
-
* Fails closed when the network has no configured verifier endpoint.
|
|
23
|
-
*/
|
|
7
|
+
// Reads the SDK-owned broker REST endpoint (hardcoded per network in
|
|
8
|
+
// chainflip-networks.ts; v.status_url from the server is ignored).
|
|
9
|
+
// Single-source by necessity: the only browser-reachable mainnet
|
|
10
|
+
// state-chain RPC has no per-channel lookup. Trust posture: the broker is
|
|
11
|
+
// Chainflip's own infra; a misreport can't move funds because the user's
|
|
12
|
+
// wallet still holds them. Fails closed when no verifier is configured.
|
|
24
13
|
export async function verifyChainflip(depositAddress, v, params, fetchFn, network, signal) {
|
|
25
14
|
const endpoints = chainflipEndpointsForNetwork(network);
|
|
26
15
|
if (!endpoints) {
|
|
@@ -57,17 +46,9 @@ export async function verifyChainflip(depositAddress, v, params, fetchFn, networ
|
|
|
57
46
|
}
|
|
58
47
|
return resultOf('chainflip', checks);
|
|
59
48
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
*
|
|
64
|
-
* @throws {VerificationError} `E_CHAINFLIP_CHANNEL_MISBINDING` when the
|
|
65
|
-
* broker disagrees with the caller's expected destination/refund.
|
|
66
|
-
* @throws {VerificationError} `E_CHAINFLIP_CHANNEL_EXPIRING` when the
|
|
67
|
-
* channel expires within the safety margin.
|
|
68
|
-
* @throws {VerificationError} `E_CHAINFLIP_AMOUNT_BELOW_MIN` /
|
|
69
|
-
* `E_CHAINFLIP_AMOUNT_ABOVE_MAX` when `depositAmountSats` is out of band.
|
|
70
|
-
*/
|
|
49
|
+
// Throws E_CHAINFLIP_CHANNEL_MISBINDING on dest/refund mismatch,
|
|
50
|
+
// E_CHAINFLIP_CHANNEL_EXPIRING within the safety margin,
|
|
51
|
+
// E_CHAINFLIP_AMOUNT_BELOW_MIN / _ABOVE_MAX out of band.
|
|
71
52
|
export async function verifyChainflipChannel(input) {
|
|
72
53
|
const timeoutMs = input.timeoutMs ?? VERIFY_FETCH_TIMEOUT_MS;
|
|
73
54
|
const channel = input.endpoints.mode === 'rest'
|
|
@@ -81,21 +62,12 @@ export async function verifyChainflipChannel(input) {
|
|
|
81
62
|
requireExpiryMargin(channel.expiryTime);
|
|
82
63
|
}
|
|
83
64
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
* `destAsset`, `destAddress`, `refundAddress`) live at the wrapper top
|
|
91
|
-
* level. Localnet / older brokers still emit the flat shape with
|
|
92
|
-
* everything on the channel itself. Both are accepted: parser tries flat
|
|
93
|
-
* first, then merges nested-channel + wrapper, with the wrapper taking
|
|
94
|
-
* priority for any field the channel omits.
|
|
95
|
-
*
|
|
96
|
-
* Tolerates unknown / extra fields and unknown `state` values — Chainflip's
|
|
97
|
-
* v2 surface evolves faster than any enum we'd hardcode.
|
|
98
|
-
*/
|
|
65
|
+
// v2 hosted broker returns a status wrapper with a nested depositChannel and
|
|
66
|
+
// the binding fields (srcChain, destChain, destAsset, destAddress,
|
|
67
|
+
// refundAddress) at the wrapper top level. Localnet / older brokers still
|
|
68
|
+
// emit the flat channel shape. Try flat first, then merge nested + wrapper
|
|
69
|
+
// with wrapper winning for fields the channel omits. Tolerates unknown
|
|
70
|
+
// fields / unknown state values; v2 evolves faster than we'd hardcode.
|
|
99
71
|
function parseBrokerResponse(raw) {
|
|
100
72
|
const flat = ChainflipDepositChannelSchema.safeParse(raw);
|
|
101
73
|
if (flat.success && flat.data.srcChain && flat.data.destChain) {
|
|
@@ -110,15 +82,11 @@ function parseBrokerResponse(raw) {
|
|
|
110
82
|
throw flat.error;
|
|
111
83
|
}
|
|
112
84
|
const channel = ChainflipDepositChannelSchema.parse(nestedRaw);
|
|
113
|
-
// Hoist the binding fields
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
// historically `fillOrKillParams.refundAddress` or
|
|
119
|
-
// `refundParameters.refundAddress`, sometimes at the wrapper level
|
|
120
|
-
// and sometimes under `depositChannel`. Walk every known path before
|
|
121
|
-
// declaring it missing.
|
|
85
|
+
// Hoist the binding fields. Wrapper wins when the channel omits them
|
|
86
|
+
// (typical on v2). refundAddress lives at several nested paths depending
|
|
87
|
+
// on the Chainflip API revision (fillOrKillParams.refundAddress,
|
|
88
|
+
// refundParameters.refundAddress, top-level, under depositChannel).
|
|
89
|
+
// Walk all known paths before declaring it missing.
|
|
122
90
|
return {
|
|
123
91
|
...channel,
|
|
124
92
|
srcChain: channel.srcChain ?? readPath(wrapper, [['srcChain']]),
|
|
@@ -140,10 +108,7 @@ function parseBrokerResponse(raw) {
|
|
|
140
108
|
]),
|
|
141
109
|
};
|
|
142
110
|
}
|
|
143
|
-
|
|
144
|
-
* Walk a list of dotted paths against `obj`, returning the first string
|
|
145
|
-
* value found. Returns undefined if no path resolves to a string.
|
|
146
|
-
*/
|
|
111
|
+
// Returns the first non-empty string found at any of the listed paths.
|
|
147
112
|
function readPath(obj, paths) {
|
|
148
113
|
for (const path of paths) {
|
|
149
114
|
let cur = obj;
|
|
@@ -160,16 +125,9 @@ function readPath(obj, paths) {
|
|
|
160
125
|
return undefined;
|
|
161
126
|
}
|
|
162
127
|
async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, externalSignal) {
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
// `cache: 'no-store'` short-circuits the browser HTTP cache. Without it,
|
|
168
|
-
// a page reload re-issues the request with `If-None-Match` /
|
|
169
|
-
// `If-Modified-Since` from a previous successful fetch, the broker
|
|
170
|
-
// returns **304 Not Modified** with an empty body, and we have nothing
|
|
171
|
-
// to parse. (`res.ok` is false for 304 — only 200-299 qualify.) We need
|
|
172
|
-
// a parseable body every time, so always force a fresh round-trip.
|
|
128
|
+
// GET ${baseUrl}/${channelId}; trim trailing slash so callers can pass
|
|
129
|
+
// either form. cache:'no-store' avoids a 304 Not Modified with empty body
|
|
130
|
+
// on page reload (the conditional request would have nothing to parse).
|
|
173
131
|
const url = `${baseUrl.replace(/\/+$/, '')}/${encodeURIComponent(channelId)}`;
|
|
174
132
|
const start = Date.now();
|
|
175
133
|
let attempt = 0;
|
|
@@ -179,12 +137,9 @@ async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, ex
|
|
|
179
137
|
throw new VerificationError('E_CHAINFLIP_HTTP', 'verification aborted by caller');
|
|
180
138
|
}
|
|
181
139
|
try {
|
|
182
|
-
// `cache` is
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
// Node where it isn't supported, and exactly what we need in browsers.
|
|
186
|
-
// Combine the per-fetch timeout with the caller's abort signal so
|
|
187
|
-
// either path cancels the in-flight request.
|
|
140
|
+
// `cache` is browser-only; no-op in Node where ES2022 lib types
|
|
141
|
+
// omit it. Combined signal so either timeout or external abort
|
|
142
|
+
// cancels the in-flight request.
|
|
188
143
|
const init = {
|
|
189
144
|
signal: combineSignals(AbortSignal.timeout(timeoutMs), externalSignal),
|
|
190
145
|
cache: 'no-store',
|
|
@@ -192,40 +147,29 @@ async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, ex
|
|
|
192
147
|
const res = await fetchFn(url, init);
|
|
193
148
|
if (res.ok) {
|
|
194
149
|
const raw = await res.json();
|
|
195
|
-
//
|
|
196
|
-
// wrapper — a top-level object with `state` and a NESTED
|
|
197
|
-
// `depositChannel`. The legacy `/v0/deposit_channels/<id>` endpoint
|
|
198
|
-
// returned the channel flat; both shapes are still seen in the wild.
|
|
199
|
-
// Try the status shape first (the v2 path we actually call), unwrap
|
|
200
|
-
// its `depositChannel`, and fall back to the flat shape so the
|
|
201
|
-
// verifier survives both response styles without touching the rest
|
|
202
|
-
// of the pipeline.
|
|
150
|
+
// parseBrokerResponse handles both v2 (nested) and legacy (flat).
|
|
203
151
|
return parseBrokerResponse(raw);
|
|
204
152
|
}
|
|
205
|
-
// 304 only happens if the
|
|
206
|
-
// (older browsers, service workers, intermediary proxies).
|
|
207
|
-
//
|
|
208
|
-
// the body is empty, we cannot proceed without a fresh fetch.
|
|
209
|
-
// Falling through to the retry loop is the right move: the next
|
|
210
|
-
// attempt will be a fresh request.
|
|
153
|
+
// 304 only happens if the no-store directive is bypassed
|
|
154
|
+
// (older browsers, service workers, intermediary proxies). Body
|
|
155
|
+
// is empty, fall through to a fresh retry.
|
|
211
156
|
if (res.status === 304) {
|
|
212
157
|
lastError = new VerificationError('E_CHAINFLIP_HTTP', 'broker returned 304 — cache directive bypassed, retrying');
|
|
213
158
|
}
|
|
214
159
|
else if (res.status >= 400 && res.status < 500 && res.status !== 404) {
|
|
215
|
-
// 4xx
|
|
216
|
-
// malformed id) — retrying won't help; bail out immediately.
|
|
160
|
+
// 4xx (excluding 404) means bad path / malformed id; retrying won't help.
|
|
217
161
|
throw new VerificationError('E_CHAINFLIP_HTTP', `broker HTTP ${String(res.status)}`);
|
|
218
162
|
}
|
|
219
163
|
else {
|
|
220
164
|
// 404 (channel not yet ingested by REST) and 5xx (gateway / state
|
|
221
|
-
// chain RPC blip) are
|
|
165
|
+
// chain RPC blip) are transient — keep retrying.
|
|
222
166
|
lastError = new VerificationError('E_CHAINFLIP_HTTP', `broker HTTP ${String(res.status)}`);
|
|
223
167
|
}
|
|
224
168
|
}
|
|
225
169
|
catch (err) {
|
|
226
170
|
if (err instanceof VerificationError)
|
|
227
171
|
throw err;
|
|
228
|
-
// Network
|
|
172
|
+
// Network / timeout / zod parse — treat as transient.
|
|
229
173
|
lastError = new VerificationError('E_CHAINFLIP_HTTP', err instanceof Error ? err.message : String(err));
|
|
230
174
|
}
|
|
231
175
|
const backoffMs = CHAINFLIP_REST_RETRY_BACKOFF_MS[attempt] ??
|
|
@@ -241,23 +185,17 @@ async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, ex
|
|
|
241
185
|
}
|
|
242
186
|
throw lastError;
|
|
243
187
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
* If only one is provided, return it directly so consumers without
|
|
247
|
-
* `AbortSignal.any` support (older runtimes) still work in the common case.
|
|
248
|
-
*/
|
|
188
|
+
// Returns the timeout signal alone if no external is provided so older
|
|
189
|
+
// runtimes without AbortSignal.any still work in the common case.
|
|
249
190
|
function combineSignals(timeout, external) {
|
|
250
191
|
if (external === undefined)
|
|
251
192
|
return timeout;
|
|
252
|
-
//
|
|
253
|
-
//
|
|
193
|
+
// AbortSignal.any is in Node 20+ and all modern browsers (same baseline
|
|
194
|
+
// as AbortSignal.timeout above).
|
|
254
195
|
return AbortSignal.any([timeout, external]);
|
|
255
196
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
* external signal aborts. Intentionally does NOT throw on abort — the
|
|
259
|
-
* caller checks `signal.aborted` after the await and decides how to fail.
|
|
260
|
-
*/
|
|
197
|
+
// Resolves early on abort. Does NOT throw — caller checks signal.aborted
|
|
198
|
+
// after the await and decides how to fail.
|
|
261
199
|
function sleepAbortable(ms, signal) {
|
|
262
200
|
if (signal === undefined) {
|
|
263
201
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -280,11 +218,8 @@ function sleepAbortable(ms, signal) {
|
|
|
280
218
|
signal.addEventListener('abort', onAbort);
|
|
281
219
|
});
|
|
282
220
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
* `cf_deposit_channel_info` state-chain RPC method that the public
|
|
286
|
-
* mainnet hosted broker does not.
|
|
287
|
-
*/
|
|
221
|
+
// Regtest only: the localnet broker exposes the legacy
|
|
222
|
+
// cf_deposit_channel_info state-chain RPC that the public broker doesn't.
|
|
288
223
|
async function fetchBrokerChannelJsonRpc(rpcUrl, channelId, fetchFn, timeoutMs, externalSignal) {
|
|
289
224
|
const body = {
|
|
290
225
|
jsonrpc: '2.0',
|
|
@@ -304,25 +239,16 @@ async function fetchBrokerChannelJsonRpc(rpcUrl, channelId, fetchFn, timeoutMs,
|
|
|
304
239
|
const raw = (await res.json());
|
|
305
240
|
return ChainflipDepositChannelSchema.parse(raw.result);
|
|
306
241
|
}
|
|
307
|
-
|
|
308
|
-
* Canonicalise a chain identifier so the SDK can compare its caller-side
|
|
309
|
-
* value (the public crypto-server API emits the base name `ethereum`)
|
|
310
|
-
* against Chainflip's REST response (TitleCase like `Ethereum`). Just
|
|
311
|
-
* lowercases — the server is responsible for stripping its internal
|
|
312
|
-
* routing prefix, so we don't second-guess it here.
|
|
313
|
-
*/
|
|
242
|
+
// crypto-server emits 'ethereum'; Chainflip REST returns 'Ethereum'.
|
|
314
243
|
function canonicalChain(chain) {
|
|
315
244
|
return chain ? chain.toLowerCase() : undefined;
|
|
316
245
|
}
|
|
317
|
-
|
|
318
|
-
* callers occasionally pass mixed case. */
|
|
246
|
+
// Chainflip is uppercase but callers sometimes pass mixed case.
|
|
319
247
|
function canonicalAsset(asset) {
|
|
320
248
|
return asset ? asset.toLowerCase() : undefined;
|
|
321
249
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
* for hex addresses; Bitcoin/Polkadot/Solana addresses are case-sensitive
|
|
325
|
-
* and pass through unchanged. */
|
|
250
|
+
// Hex addresses come back in unspecified case; compare case-insensitively.
|
|
251
|
+
// Bitcoin/Polkadot/Solana are case-sensitive and pass through unchanged.
|
|
326
252
|
function canonicalAddress(addr) {
|
|
327
253
|
if (!addr)
|
|
328
254
|
return undefined;
|
|
@@ -341,15 +267,9 @@ function requireBindsExpected(channel, expected) {
|
|
|
341
267
|
if (canonicalAsset(channel.destAsset) !== canonicalAsset(expected.destAsset)) {
|
|
342
268
|
throw new VerificationError('E_CHAINFLIP_CHANNEL_MISBINDING', `channel destAsset ${String(channel.destAsset)} != expected ${expected.destAsset}`);
|
|
343
269
|
}
|
|
344
|
-
//
|
|
345
|
-
//
|
|
346
|
-
//
|
|
347
|
-
// channel object carries one, we strictly require it to match — that
|
|
348
|
-
// catches a real attack where the broker rebinds the refund. When it
|
|
349
|
-
// doesn't carry one, we skip silently rather than fail the whole
|
|
350
|
-
// verification on a check we can't perform. The destination address
|
|
351
|
-
// (the path funds actually flow through on success) is the strict
|
|
352
|
-
// gate above; this one only matters on the refund-on-failure branch.
|
|
270
|
+
// Soft check: /v2/swaps/<id> doesn't always expose refundAddress. When
|
|
271
|
+
// present we strictly require a match (catches a broker rebind attack);
|
|
272
|
+
// when absent we skip rather than fail on a check we can't perform.
|
|
353
273
|
if (expected.refundAddress !== undefined &&
|
|
354
274
|
channel.refundAddress !== undefined &&
|
|
355
275
|
canonicalAddress(channel.refundAddress) !== canonicalAddress(expected.refundAddress)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainflip.js","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chainflip.js","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,6BAA6B,GAE9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4BAA4B,GAG7B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,qEAAqE;AACrE,mEAAmE;AACnE,iEAAiE;AACjE,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAAsB,EACtB,CAAwB,EACxB,MAAoB,EACpB,OAAgC,EAChC,OAAyB,EACzB,MAAoB;IAEpB,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,WAAW,EAAE;YACzB,KAAK,CACH,+BAA+B,EAC/B,KAAK,EACL,qDAAqD,OAAO,GAAG,CAChE;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC,WAAW,EAAE;YACzB,KAAK,CACH,+BAA+B,EAC/B,KAAK,EACL,wDAAwD,CACzD;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,sBAAsB,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,SAAS;YACT,QAAQ,EAAE;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBACjF,QAAQ,EAAE,MAAM,CAAC,SAAS;gBAC1B,SAAS,EAAE,MAAM,CAAC,OAAO;gBACzB,SAAS,EAAE,MAAM,CAAC,OAAO;aAC1B;YACD,OAAO;YACP,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,EAAE,iCAAiC,CAAC,CAAC,CAAC;QAC1F,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CACT,KAAK,CACH,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CACnE,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAuBD,iEAAiE;AACjE,yDAAyD;AACzD,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAkC;IAElC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,uBAAuB,CAAC;IAC7D,MAAM,OAAO,GACX,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;QAC7B,CAAC,CAAC,MAAM,sBAAsB,CAC1B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,SAAS,EACT,KAAK,CAAC,MAAM,CACb;QACH,CAAC,CAAC,MAAM,yBAAyB,CAC7B,KAAK,CAAC,SAAS,CAAC,MAAM,EACtB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,SAAS,EACT,KAAK,CAAC,MAAM,CACb,CAAC;IACR,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC1C,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,mEAAmE;AACnE,0EAA0E;AAC1E,2EAA2E;AAC3E,uEAAuE;AACvE,uEAAuE;AACvE,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,IAAI,GAAG,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,GAA8B,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,6BAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE/D,qEAAqE;IACrE,yEAAyE;IACzE,iEAAiE;IACjE,oEAAoE;IACpE,oDAAoD;IACpD,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACxE,aAAa,EACX,OAAO,CAAC,aAAa;YACrB,QAAQ,CAAC,OAAO,EAAE;gBAChB,CAAC,eAAe,CAAC;gBACjB,CAAC,kBAAkB,EAAE,eAAe,CAAC;gBACrC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;gBACtC,CAAC,kBAAkB,EAAE,eAAe,CAAC;gBACrC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;gBACtC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC;gBACvD,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;gBACxD,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC;gBACvD,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;aACzD,CAAC;KACL,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,SAAS,QAAQ,CACf,GAA4B,EAC5B,KAAqC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAY,GAAG,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC5C,GAAG,GAAG,SAAS,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAe,EACf,SAAiB,EACjB,OAAgC,EAChC,SAAiB,EACjB,cAA4B;IAE5B,uEAAuE;IACvE,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAsB,IAAI,iBAAiB,CACtD,kBAAkB,EAClB,kCAAkC,CACnC,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,6BAA6B,EAAE,CAAC;QAC1D,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,gCAAgC,CACjC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,gEAAgE;YAChE,+DAA+D;YAC/D,iCAAiC;YACjC,MAAM,IAAI,GAAkD;gBAC1D,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;gBACtE,KAAK,EAAE,UAAU;aAClB,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC7B,kEAAkE;gBAClE,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,yDAAyD;YACzD,gEAAgE;YAChE,2CAA2C;YAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,SAAS,GAAG,IAAI,iBAAiB,CAC/B,kBAAkB,EAClB,0DAA0D,CAC3D,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvE,0EAA0E;gBAC1E,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,eAAe,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACpC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,kEAAkE;gBAClE,iDAAiD;gBACjD,SAAS,GAAG,IAAI,iBAAiB,CAC/B,kBAAkB,EAClB,eAAe,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB;gBAAE,MAAM,GAAG,CAAC;YAChD,sDAAsD;YACtD,SAAS,GAAG,IAAI,iBAAiB,CAC/B,kBAAkB,EAClB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GACb,+BAA+B,CAAC,OAAO,CAAC;YACxC,+BAA+B,CAAC,+BAA+B,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E,MAAM,CAAC;QACT,OAAO,IAAI,CAAC,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,IAAI,6BAA6B;YAAE,MAAM;QAC3E,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,gCAAgC,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED,uEAAuE;AACvE,kEAAkE;AAClE,SAAS,cAAc,CACrB,OAAoB,EACpB,QAAsB;IAEtB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC3C,wEAAwE;IACxE,iCAAiC;IACjC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,yEAAyE;AACzE,2CAA2C;AAC3C,SAAS,cAAc,CAAC,EAAU,EAAE,MAAoB;IACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uDAAuD;AACvD,0EAA0E;AAC1E,KAAK,UAAU,yBAAyB,CACtC,MAAc,EACd,SAAiB,EACjB,OAAgC,EAChC,SAAiB,EACjB,cAA4B;IAE5B,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;KAClC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;KACvE,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,oBAAoB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;IACvD,OAAO,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,qEAAqE;AACrE,SAAS,cAAc,CAAC,KAAyB;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,gEAAgE;AAChE,SAAS,cAAc,CAAC,KAAyB;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,2EAA2E;AAC3E,yEAAyE;AACzE,SAAS,gBAAgB,CAAC,IAAwB;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAgC,EAChC,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,uBAAuB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,QAAQ,CAAC,WAAW,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,qBAAqB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,qBAAqB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,IACE,QAAQ,CAAC,aAAa,KAAK,SAAS;QACpC,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,EACpF,CAAC;QACD,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,yBAAyB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,QAAQ,CAAC,aAAa,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC,EAAE,UAAkB;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,EAC9B,WAAW,MAAM,CAAC,QAAQ,EAAE,sBAAsB,OAAO,CAAC,YAAY,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,EAC9B,WAAW,MAAM,CAAC,QAAQ,EAAE,sBAAsB,OAAO,CAAC,YAAY,EAAE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IAChD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO;IACnC,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxC,IAAI,SAAS,GAAG,wBAAwB,EAAE,CAAC;QACzC,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,EAC9B,sBAAsB,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CACrF,CAAC;IACJ,CAAC;AACH,CAAC"}
|