@miradexio/client 0.1.0 → 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 +10 -13
- 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 -5
- 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
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recovery snapshot for a single atomic swap.
|
|
3
|
-
*
|
|
4
|
-
* Pairs with the keystore to let a recovery binary (eigenwallet swap CLI or
|
|
5
|
-
* Tauri GUI) drive a stuck swap to a terminal state. The snapshot is written
|
|
6
|
-
* exactly once per swap, between receiving Alice's encsig in /presigs and
|
|
7
|
-
* posting the signed PSBT to /fund — so it's guaranteed to exist before any
|
|
8
|
-
* on-chain commitment.
|
|
9
|
-
*
|
|
10
|
-
* The snapshot contains only PUBLIC protocol material; private keys live in
|
|
11
|
-
* the keystore. Together they are necessary and sufficient.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Bumped to 2 when Alice's `tx_cancel_sig` was added to
|
|
15
|
-
* `ProtocolParamsSnapshot`. Recovery binaries that need the autonomous-cancel
|
|
16
|
-
* field MUST refuse v1 snapshots; tools that only consume the always-present
|
|
17
|
-
* fields can keep accepting v1.
|
|
18
|
-
*/
|
|
19
1
|
export declare const SNAPSHOT_VERSION: 2;
|
|
20
2
|
export type ProtocolSnapshotPhase = 'funded-with-encsigs';
|
|
21
3
|
export interface ProtocolSnapshot {
|
|
@@ -57,13 +39,6 @@ export interface ProtocolParamsSnapshot {
|
|
|
57
39
|
readonly xmr_amount_pico: string;
|
|
58
40
|
readonly tx_full_refund_encsig: string | null;
|
|
59
41
|
readonly tx_partial_refund_encsig: string | null;
|
|
60
|
-
/**
|
|
61
|
-
* Alice's plain ECDSA pre-sig on TxCancel (Message3). Persisted so a
|
|
62
|
-
* future autonomous-cancel binary can construct + broadcast TxCancel
|
|
63
|
-
* without the sidecar. Null when the sidecar version in front of this
|
|
64
|
-
* client did not surface it; in that case recovery still works through
|
|
65
|
-
* the sidecar-published cancel path. V-16 enabling-work.
|
|
66
|
-
*/
|
|
67
42
|
readonly tx_cancel_sig: string | null;
|
|
68
43
|
}
|
|
69
44
|
export interface LockTxSnapshot {
|
|
@@ -100,11 +75,6 @@ export interface BuildProtocolSnapshotInput {
|
|
|
100
75
|
readonly phaseMarker?: ProtocolSnapshotPhase;
|
|
101
76
|
}
|
|
102
77
|
export declare function buildProtocolSnapshot(input: BuildProtocolSnapshotInput): ProtocolSnapshot;
|
|
103
|
-
/**
|
|
104
|
-
* Reproducible serialization with sorted keys. The recovery tool can compute
|
|
105
|
-
* the same digest from the snapshot (minus the digest field) and reject
|
|
106
|
-
* tampered or corrupted files.
|
|
107
|
-
*/
|
|
108
78
|
export declare function canonicalSerialize(obj: unknown): string;
|
|
109
79
|
export declare function computeSnapshotDigest(snapshotBody: unknown): string;
|
|
110
80
|
export declare function verifySnapshotIntegrity(snapshot: ProtocolSnapshot): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/snapshot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* Tauri GUI) drive a stuck swap to a terminal state. The snapshot is written
|
|
6
|
-
* exactly once per swap, between receiving Alice's encsig in /presigs and
|
|
7
|
-
* posting the signed PSBT to /fund — so it's guaranteed to exist before any
|
|
8
|
-
* on-chain commitment.
|
|
9
|
-
*
|
|
10
|
-
* The snapshot contains only PUBLIC protocol material; private keys live in
|
|
11
|
-
* the keystore. Together they are necessary and sufficient.
|
|
12
|
-
*/
|
|
1
|
+
// Recovery snapshot. Pairs with the keystore so an external recovery binary
|
|
2
|
+
// (eigenwallet CLI / Tauri GUI) can drive a stuck swap to terminal. Written
|
|
3
|
+
// exactly once between /presigs and /fund, before any on-chain commitment.
|
|
4
|
+
// Public material only; private keys stay in the keystore.
|
|
13
5
|
import { sha256 } from '@noble/hashes/sha2.js';
|
|
14
6
|
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* `ProtocolParamsSnapshot`. Recovery binaries that need the autonomous-cancel
|
|
18
|
-
* field MUST refuse v1 snapshots; tools that only consume the always-present
|
|
19
|
-
* fields can keep accepting v1.
|
|
20
|
-
*/
|
|
7
|
+
// v2 added tx_cancel_sig to ProtocolParamsSnapshot. Recovery binaries that
|
|
8
|
+
// need autonomous-cancel must refuse v1; everything else can still load v1.
|
|
21
9
|
export const SNAPSHOT_VERSION = 2;
|
|
22
10
|
export function buildProtocolSnapshot(input) {
|
|
23
11
|
const body = {
|
|
@@ -38,11 +26,8 @@ export function buildProtocolSnapshot(input) {
|
|
|
38
26
|
const digest = computeSnapshotDigest(body);
|
|
39
27
|
return { ...body, digest };
|
|
40
28
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* the same digest from the snapshot (minus the digest field) and reject
|
|
44
|
-
* tampered or corrupted files.
|
|
45
|
-
*/
|
|
29
|
+
// Sorted-keys serialise so a recovery tool can recompute the digest and
|
|
30
|
+
// reject tampered or corrupted files.
|
|
46
31
|
export function canonicalSerialize(obj) {
|
|
47
32
|
return JSON.stringify(sortKeysDeep(obj));
|
|
48
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/atomic-swap/snapshot.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/atomic-swap/snapshot.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,2DAA2D;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAwF3C,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,IAAI,GAAG;QACX,eAAe,EAAE,gBAAgB;QACjC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,UAAU,EAAE,gBAAyB;QACrC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,qBAAqB;QACvD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IACF,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,wEAAwE;AACxE,sCAAsC;AACtC,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7D,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAU,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAqB;IACzD,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAA0B;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IACrC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAChD,CAAC"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
import { type SubmitEncsigParams } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Poll until the server signals `submit_encsig`, then compute the TxRedeem
|
|
4
|
-
* adaptor signature from the supplied signed PSBT and submit it.
|
|
5
|
-
*
|
|
6
|
-
* @internal Exposed for standalone experimentation. Production consumers
|
|
7
|
-
* should use `MiradexEngine` / `AtomicFlow`.
|
|
8
|
-
*/
|
|
9
2
|
export declare function submitEncsigWhenReady(options: SubmitEncsigParams): Promise<void>;
|
|
10
3
|
//# sourceMappingURL=submit-encsig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-encsig.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/submit-encsig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"submit-encsig.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/submit-encsig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAMzE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDtF"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Standalone submit_encsig helper for external consumers. Internal drivers
|
|
3
|
-
* handle this inline inside `driveSwapToCompletion`.
|
|
4
|
-
*/
|
|
1
|
+
// Standalone submit_encsig helper. driveSwapToCompletion does this inline.
|
|
5
2
|
import { TERMINAL_STATUSES, ProtocolError } from '../types/index.js';
|
|
6
3
|
import { computeRedeemDigest } from './presign.js';
|
|
7
4
|
import { encsignDigest } from '../lib/crypto/wasm.js';
|
|
@@ -9,13 +6,7 @@ import { delay } from '../lib/delay.js';
|
|
|
9
6
|
import { SwapCancelledError } from './types.js';
|
|
10
7
|
const TIMEOUT_MS = 3_600_000;
|
|
11
8
|
const POLL_MS = 10_000;
|
|
12
|
-
|
|
13
|
-
* Poll until the server signals `submit_encsig`, then compute the TxRedeem
|
|
14
|
-
* adaptor signature from the supplied signed PSBT and submit it.
|
|
15
|
-
*
|
|
16
|
-
* @internal Exposed for standalone experimentation. Production consumers
|
|
17
|
-
* should use `MiradexEngine` / `AtomicFlow`.
|
|
18
|
-
*/
|
|
9
|
+
// @internal Production consumers should use MiradexEngine / AtomicFlow.
|
|
19
10
|
export async function submitEncsigWhenReady(options) {
|
|
20
11
|
const { api, swapId, keys, signedPsbtBase64, network, onProgress, signal } = options;
|
|
21
12
|
const deadline = Date.now() + TIMEOUT_MS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-encsig.js","sourceRoot":"","sources":["../../src/atomic-swap/submit-encsig.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"submit-encsig.js","sourceRoot":"","sources":["../../src/atomic-swap/submit-encsig.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAA2B,MAAM,YAAY,CAAC;AAEzE,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA2B;IACrE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IAEzC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO;QAEjD,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC;QAE/C,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,EAAE,CAAC,CAAC;YAEzF,MAAM,cAAc,GAClB,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,aAAa,CACrB,2BAA2B,EAC3B,+DAA+D,CAChE,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,mBAAmB,CAAC;gBACvC,gBAAgB;gBAChB,cAAc;gBACd,OAAO,EAAE,IAAI,CAAC,CAAC;gBACf,OAAO;aACR,CAAC,CAAC;YACH,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAEvF,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1F,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC9B,IAAI,EAAE,eAAe;gBACrB,gBAAgB,EAAE,cAAc;aACjC,CAAC,CAAC;YAEH,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,EAAE,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QAED,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,OAAO;YAAE,OAAO;QAEzF,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,aAAa,CACrB,iBAAiB,EACjB,4CAA4C,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared types and error classes for the BTC↔XMR atomic-swap driver.
|
|
3
|
-
*/
|
|
4
1
|
import type { Logger } from '../interfaces/logger.js';
|
|
5
2
|
import type { ApiClient } from '../api/index.js';
|
|
6
3
|
import type { VerificationResult, ClientKeys } from '../types/index.js';
|
|
@@ -9,24 +6,6 @@ import type { SwapKeystore } from '../lib/keystore.js';
|
|
|
9
6
|
import type { DetectedDeposit } from '../lib/bitcoin/deposit-watcher.js';
|
|
10
7
|
import type { BlockchainDataProvider } from '../interfaces/blockchain.js';
|
|
11
8
|
export type AtomicSwapStage = 'keygen' | 'keystore_saved' | 'awaiting_deposit' | 'deposit_detected' | 'creating_swap' | 'signing_psbt' | 'funding' | 'submit_encsig' | 'verifying_xmr' | 'confirming' | 'sweeping' | 'complete' | 'cancelled' | 'error' | 'initializing' | 'pending' | 'awaiting_funding' | 'deposited' | 'swapping' | 'sending' | 'completed' | 'failed' | 'refunded' | 'cancelling' | 'withheld' | 'expired' | 'punished' | `unknown:${string}`;
|
|
12
|
-
/**
|
|
13
|
-
* Progress callback payload. Every stage populates `message`; per-stage
|
|
14
|
-
* fields:
|
|
15
|
-
*
|
|
16
|
-
* - `keygen` / `cancelled` / `error` — message only (plus swapId on error).
|
|
17
|
-
* - `keystore_saved` — `keystoreId`, `depositAddress`.
|
|
18
|
-
* - `awaiting_deposit` — `depositAddress`, `depositAmount`, `qr?`, `expectedOutput?`.
|
|
19
|
-
* - `deposit_detected` — `depositAddress`.
|
|
20
|
-
* - `creating_swap` — `swapId?`, `swapNumber?`, `expectedOutput?`.
|
|
21
|
-
* - `signing_psbt` — `swapId`, `verification?`.
|
|
22
|
-
* - `funding` / `submit_encsig` / `verifying_xmr` / `confirming` / `sweeping` — `swapId`.
|
|
23
|
-
* - `complete` — `swapId`, `txHash`.
|
|
24
|
-
* - `error` — `swapId?`, `errorCode?`.
|
|
25
|
-
*
|
|
26
|
-
* This remains a single readonly shape rather than a discriminated union to
|
|
27
|
-
* preserve call-site compatibility; consumers narrow by inspecting `stage`.
|
|
28
|
-
* Exhaustive-switch UIs can type-guard by stage + presence of the expected field.
|
|
29
|
-
*/
|
|
30
9
|
export interface AtomicSwapProgress {
|
|
31
10
|
readonly stage: AtomicSwapStage;
|
|
32
11
|
readonly message: string;
|
|
@@ -48,12 +27,6 @@ export interface AtomicSwapCallbacks {
|
|
|
48
27
|
readonly onDepositRequired: (address: string, amount: string, qr?: string) => void;
|
|
49
28
|
readonly saveKeystore: (id: string, json: string) => Promise<void>;
|
|
50
29
|
readonly loadKeystore: (id: string) => Promise<string | null>;
|
|
51
|
-
/**
|
|
52
|
-
* Persist the recovery snapshot for a swap. Called once per swap, AFTER the
|
|
53
|
-
* client has received Alice's encsig from /presigs and BEFORE it broadcasts
|
|
54
|
-
* via /fund. The snapshot pairs with the keystore to enable cross-binary
|
|
55
|
-
* recovery (e.g. via the eigenwallet swap CLI). Optional for back-compat.
|
|
56
|
-
*/
|
|
57
30
|
readonly saveProtocolSnapshot?: (swapId: string, snapshotJson: string) => Promise<void>;
|
|
58
31
|
readonly loadProtocolSnapshot?: (swapId: string) => Promise<string | null>;
|
|
59
32
|
}
|
|
@@ -65,11 +38,6 @@ export interface AtomicSwapParams {
|
|
|
65
38
|
readonly blockchain?: BlockchainDataProvider;
|
|
66
39
|
readonly logger?: Logger;
|
|
67
40
|
readonly monerodNodes?: readonly string[];
|
|
68
|
-
/**
|
|
69
|
-
* Pin a specific maker by `variantId` (as returned in `/quotes`) — e.g.
|
|
70
|
-
* `maker-K4ZK7eSx`. When omitted the server picks the highest-scored
|
|
71
|
-
* maker. Useful for load-distribution tests with multiple makers.
|
|
72
|
-
*/
|
|
73
41
|
readonly variantId?: string;
|
|
74
42
|
}
|
|
75
43
|
export interface AtomicSwapHandle {
|
|
@@ -92,11 +60,6 @@ export interface ResumeAtomicSwapParams {
|
|
|
92
60
|
readonly logger?: Logger;
|
|
93
61
|
readonly existingSwapId?: string;
|
|
94
62
|
readonly monerodNodes?: readonly string[];
|
|
95
|
-
/**
|
|
96
|
-
* Forwarded to `createSwap` when this resume call is creating a new swap
|
|
97
|
-
* (no `existingSwapId`). Pins a specific atomicswap maker. Ignored when
|
|
98
|
-
* `existingSwapId` is set because the maker was already chosen.
|
|
99
|
-
*/
|
|
100
63
|
readonly variantId?: string;
|
|
101
64
|
}
|
|
102
65
|
export interface ResumeAtomicSwapOptions {
|
|
@@ -105,12 +68,6 @@ export interface ResumeAtomicSwapOptions {
|
|
|
105
68
|
readonly onProgress: ProgressCallback;
|
|
106
69
|
readonly signal?: AbortSignal;
|
|
107
70
|
readonly fetchFn?: typeof globalThis.fetch;
|
|
108
|
-
/**
|
|
109
|
-
* Optional snapshot persistence for resumed swaps. Normally the snapshot
|
|
110
|
-
* is written during the original run (between /presigs and /fund); the
|
|
111
|
-
* resume path writes a snapshot only if one hasn't been captured yet and
|
|
112
|
-
* the swap is still pre-fund.
|
|
113
|
-
*/
|
|
114
71
|
readonly saveProtocolSnapshot?: (swapId: string, snapshotJson: string) => Promise<void>;
|
|
115
72
|
readonly loadProtocolSnapshot?: (swapId: string) => Promise<string | null>;
|
|
116
73
|
}
|
|
@@ -134,26 +91,16 @@ export interface DriveSwapOptions {
|
|
|
134
91
|
readonly onProgress: ProgressCallback;
|
|
135
92
|
readonly signal?: AbortSignal;
|
|
136
93
|
readonly logger: Logger;
|
|
137
|
-
/**
|
|
138
|
-
* Blockchain data provider used by the resume path to fetch the raw
|
|
139
|
-
* TxLock hex when recomputing the redeem digest locally. Required by
|
|
140
|
-
* resumed swaps; the fresh-fund path never reads from it.
|
|
141
|
-
*/
|
|
142
94
|
readonly blockchain?: BlockchainDataProvider;
|
|
143
|
-
/**
|
|
144
|
-
* Optional snapshot persistence. When supplied, the driver writes a
|
|
145
|
-
* snapshot pairing with the keystore between /presigs and /fund — before
|
|
146
|
-
* any on-chain commitment.
|
|
147
|
-
*/
|
|
148
95
|
readonly saveProtocolSnapshot?: (swapId: string, snapshotJson: string) => Promise<void>;
|
|
149
96
|
readonly loadProtocolSnapshot?: (swapId: string) => Promise<string | null>;
|
|
150
97
|
/** Maker peer-id captured at swap-creation time, for the snapshot. */
|
|
151
98
|
readonly makerPeerId?: string;
|
|
152
99
|
/** Maker multiaddrs captured at swap-creation time, for the snapshot. */
|
|
153
100
|
readonly makerMultiaddrs?: ReadonlyArray<string>;
|
|
154
|
-
/**
|
|
101
|
+
/** Package version stamped into the snapshot for diagnostics. */
|
|
155
102
|
readonly clientVersion?: string;
|
|
156
|
-
/**
|
|
103
|
+
/** Override for Monero RPC nodes. Defaults to DEFAULT_NODES[network].monero. */
|
|
157
104
|
readonly monerodNodes?: readonly string[];
|
|
158
105
|
}
|
|
159
106
|
export interface FundingProofEntry {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// to preserve the historical import path.
|
|
1
|
+
// Lives in lib/errors.ts to keep retry.ts free of an api/index.js cycle;
|
|
2
|
+
// re-exported here so the historical import path still works.
|
|
4
3
|
export { SwapCancelledError } from '../lib/errors.js';
|
|
5
4
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/atomic-swap/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/atomic-swap/types.ts"],"names":[],"mappings":"AAqLA,yEAAyE;AACzE,8DAA8D;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* N-of-M quorum wrapper for `BlockchainDataProvider`.
|
|
3
|
-
*
|
|
4
|
-
* Wraps several underlying providers and requires `quorum`-many to agree on
|
|
5
|
-
* each read. Removes the "single malicious Electrum server" failure mode
|
|
6
|
-
* (AV-E.4). Broadcast is not quorum-gated because one honest relay is
|
|
7
|
-
* sufficient to get the tx into the network.
|
|
8
|
-
*/
|
|
9
1
|
import type { BlockchainDataProvider } from '../interfaces/blockchain.js';
|
|
10
2
|
import type { Logger } from '../interfaces/logger.js';
|
|
11
3
|
export interface QuorumProviderConfig {
|
|
@@ -14,12 +6,5 @@ export interface QuorumProviderConfig {
|
|
|
14
6
|
readonly quorum: number;
|
|
15
7
|
readonly logger?: Logger;
|
|
16
8
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Build a quorum provider from a set of underlying providers.
|
|
19
|
-
*
|
|
20
|
-
* @throws {VerificationError} `E_QUORUM_IMPOSSIBLE` if `providers.length < quorum`.
|
|
21
|
-
* @throws {VerificationError} `E_QUORUM_DISAGREE` (from method calls) when
|
|
22
|
-
* fewer than `quorum` providers agree on a value.
|
|
23
|
-
*/
|
|
24
9
|
export declare function createQuorumProvider(config: QuorumProviderConfig): BlockchainDataProvider;
|
|
25
10
|
//# sourceMappingURL=quorum-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quorum-provider.d.ts","sourceRoot":"","sources":["../../src/blockchain/quorum-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quorum-provider.d.ts","sourceRoot":"","sources":["../../src/blockchain/quorum-provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sBAAsB,EAGvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC1D,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,CAwDzF"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
+
// AV-E.4: N-of-M quorum BlockchainDataProvider. Reads require >=quorum
|
|
2
|
+
// underlying providers to agree. Broadcast is not gated — one honest relay
|
|
3
|
+
// is enough to reach the network.
|
|
1
4
|
import { noopLogger } from '../interfaces/logger.js';
|
|
2
5
|
import { VerificationError } from '../types/index.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* @throws {VerificationError} `E_QUORUM_IMPOSSIBLE` if `providers.length < quorum`.
|
|
7
|
-
* @throws {VerificationError} `E_QUORUM_DISAGREE` (from method calls) when
|
|
8
|
-
* fewer than `quorum` providers agree on a value.
|
|
9
|
-
*/
|
|
6
|
+
// Throws E_QUORUM_IMPOSSIBLE when providers < quorum;
|
|
7
|
+
// method calls throw E_QUORUM_DISAGREE when too few agree.
|
|
10
8
|
export function createQuorumProvider(config) {
|
|
11
9
|
if (config.providers.length < config.quorum) {
|
|
12
10
|
throw new VerificationError('E_QUORUM_IMPOSSIBLE', `need ${String(config.quorum)} providers but only ${String(config.providers.length)} supplied`);
|
|
@@ -78,8 +76,8 @@ function pickQuorumNumber(settled, quorum, log, label) {
|
|
|
78
76
|
log.warn({ label, fulfilled: values.length }, 'quorum-number too few responses');
|
|
79
77
|
throw new VerificationError('E_QUORUM_DISAGREE', `${label}: only ${String(values.length)} providers responded, need ${String(quorum)}`);
|
|
80
78
|
}
|
|
81
|
-
// Accept the median if
|
|
82
|
-
//
|
|
79
|
+
// Accept the median if >=quorum values are within +/-1 of it; handles
|
|
80
|
+
// normal block-height propagation lag.
|
|
83
81
|
const sorted = [...values].sort((a, b) => a - b);
|
|
84
82
|
const median = sorted[Math.floor(sorted.length / 2)] ?? 0;
|
|
85
83
|
const agreeing = values.filter((v) => Math.abs(v - median) <= 1).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quorum-provider.js","sourceRoot":"","sources":["../../src/blockchain/quorum-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quorum-provider.js","sourceRoot":"","sources":["../../src/blockchain/quorum-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
export interface CooperativeRedeemInput {
|
|
2
|
-
/** Alice's on-chain ECDSA signature over TxRedeem
|
|
2
|
+
/** Alice's on-chain ECDSA signature over TxRedeem, 64B hex. */
|
|
3
3
|
readonly aliceSigA: string;
|
|
4
|
-
/**
|
|
4
|
+
/** Adaptor (encrypted) signature Bob released, hex. */
|
|
5
5
|
readonly bobEncsig: string;
|
|
6
|
-
/** Alice's compressed secp256k1 adaptor
|
|
6
|
+
/** Alice's compressed secp256k1 adaptor pubkey, 33B hex. */
|
|
7
7
|
readonly S_a_bitcoin: string;
|
|
8
|
-
/** Alice's ed25519 public spend key
|
|
8
|
+
/** Alice's ed25519 public spend key, 32B hex. */
|
|
9
9
|
readonly S_a_monero: string;
|
|
10
|
-
/**
|
|
10
|
+
/** s_a scalar Alice returned, 32B hex. */
|
|
11
11
|
readonly claimedSA: string;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Validate a cooperatively-returned `s_a`.
|
|
15
|
-
*
|
|
16
|
-
* @returns `claimedSA` on success (so callers can pipe it forward).
|
|
17
|
-
* @throws {VerificationError} `E_COOP_SA_ADAPTOR_MISMATCH` when the recovered
|
|
18
|
-
* scalar differs from `claimedSA`.
|
|
19
|
-
* @throws {VerificationError} `E_COOP_SA_PUBKEY_MISMATCH` when
|
|
20
|
-
* `claimedSA * G != S_a_monero`.
|
|
21
|
-
*/
|
|
22
13
|
export declare function validateCooperativeRedeem(input: CooperativeRedeemInput): string;
|
|
23
14
|
//# sourceMappingURL=cooperative-redeem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cooperative-redeem.d.ts","sourceRoot":"","sources":["../src/cooperative-redeem.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cooperative-redeem.d.ts","sourceRoot":"","sources":["../src/cooperative-redeem.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAKD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAkB/E"}
|
|
@@ -1,29 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cooperative-redeem validation.
|
|
3
|
-
*
|
|
4
|
-
* After a punish round, Alice may hand back `s_a` out-of-band so Bob can still
|
|
5
|
-
* sweep. Before Bob uses that scalar he must verify it two ways: (1) it
|
|
6
|
-
* satisfies the adaptor-recovery target derived from Alice's on-chain
|
|
7
|
-
* signature + the encsig Bob released, and (2) `s_a * G == S_a_monero`.
|
|
8
|
-
*
|
|
9
|
-
* @security Closes AV-A.17 — protects against a returned `s_a` that is
|
|
10
|
-
* unrelated to the adaptor target or to Alice's S_a_monero.
|
|
11
|
-
*/
|
|
12
1
|
import { Point } from '@noble/ed25519';
|
|
13
2
|
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
14
3
|
import { VerificationError } from './types/index.js';
|
|
15
4
|
import { recoverAdaptorScalar } from './lib/crypto/wasm.js';
|
|
16
5
|
import { bytesToBigInt, hexToBytes } from './lib/crypto/scalars.js';
|
|
17
6
|
import { constantTimeEqualHex } from './lib/crypto/bytes.js';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
* @returns `claimedSA` on success (so callers can pipe it forward).
|
|
22
|
-
* @throws {VerificationError} `E_COOP_SA_ADAPTOR_MISMATCH` when the recovered
|
|
23
|
-
* scalar differs from `claimedSA`.
|
|
24
|
-
* @throws {VerificationError} `E_COOP_SA_PUBKEY_MISMATCH` when
|
|
25
|
-
* `claimedSA * G != S_a_monero`.
|
|
26
|
-
*/
|
|
7
|
+
// Returns claimedSA so callers can pipe it forward.
|
|
8
|
+
// Throws E_COOP_SA_ADAPTOR_MISMATCH on adaptor recovery mismatch,
|
|
9
|
+
// E_COOP_SA_PUBKEY_MISMATCH if claimedSA * G != S_a_monero.
|
|
27
10
|
export function validateCooperativeRedeem(input) {
|
|
28
11
|
const recovered = recoverAdaptorScalar(input.aliceSigA, input.bobEncsig, input.S_a_bitcoin);
|
|
29
12
|
if (!constantTimeEqualHex(recovered, input.claimedSA)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cooperative-redeem.js","sourceRoot":"","sources":["../src/cooperative-redeem.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cooperative-redeem.js","sourceRoot":"","sources":["../src/cooperative-redeem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAiB7D,oDAAoD;AACpD,kEAAkE;AAClE,4DAA4D;AAC5D,MAAM,UAAU,yBAAyB,CAAC,KAA6B;IACrE,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5F,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,iBAAiB,CACzB,4BAA4B,EAC5B,wDAAwD,CACzD,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,iBAAiB,CACzB,2BAA2B,EAC3B,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,SAAS,CAAC;AACzB,CAAC"}
|
|
@@ -1,28 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal interface for querying Bitcoin blockchain data.
|
|
3
|
-
*
|
|
4
|
-
* Node.js: Implemented via ElectrumClient (TCP/TLS JSON-RPC).
|
|
5
|
-
* Browser: Implemented via mempool.space REST API (HTTP fetch).
|
|
6
|
-
*
|
|
7
|
-
* The engine's zero-trust TxCancel verification uses this interface
|
|
8
|
-
* instead of ElectrumClient directly, making it platform-agnostic.
|
|
9
|
-
*/
|
|
10
1
|
export interface BlockchainQuerier {
|
|
11
|
-
/**
|
|
12
|
-
* Get all transactions involving an address.
|
|
13
|
-
* Returns both confirmed and mempool transactions.
|
|
14
|
-
*/
|
|
15
2
|
getAddressTransactions(address: string, network: 'mainnet' | 'testnet' | 'regtest'): Promise<readonly TxSummary[]>;
|
|
16
|
-
/**
|
|
17
|
-
* Get raw transaction hex by txid.
|
|
18
|
-
* Used for independent verification — we fetch the tx ourselves
|
|
19
|
-
* rather than trusting the server's hex.
|
|
20
|
-
*/
|
|
21
3
|
getRawTransaction(txid: string): Promise<string | null>;
|
|
22
|
-
/**
|
|
23
|
-
* Get the block height at which a transaction was confirmed.
|
|
24
|
-
* Returns 0 if in mempool, -1 if not found.
|
|
25
|
-
*/
|
|
26
4
|
getTransactionHeight(txid: string): Promise<number>;
|
|
27
5
|
}
|
|
28
6
|
export interface TxSummary {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockchain-querier.d.ts","sourceRoot":"","sources":["../../src/engine/blockchain-querier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blockchain-querier.d.ts","sourceRoot":"","sources":["../../src/engine/blockchain-querier.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAEhC,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GACzC,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IAGjC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAGxD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C"}
|
|
@@ -2,14 +2,6 @@ import type { SwapFlowState } from './flows/swap-flow-state.js';
|
|
|
2
2
|
import type { AtomicFlowState } from './flows/atomic-flow-state.js';
|
|
3
3
|
export type { FlowContext, PopulatedFlowContext, VerifiedFlowContext, FlowContextExtra, FlowContextExtraType, FlowContextValidationError, FlowContextResult, } from './flow-context.js';
|
|
4
4
|
export { createFlowContext, mergeFlowContext, validateBase, validatePopulated, validateVerified, FlowContextBaseSchema, PopulatedFlowContextSchema, VerifiedFlowContextSchema, FlowContextExtraSchema, VerificationResultSchema, VerificationCheckSchema, } from './flow-context.js';
|
|
5
|
-
/**
|
|
6
|
-
* Complete engine state. Emitted on every transition.
|
|
7
|
-
*
|
|
8
|
-
* Per-engine architecture: each engine drives at most one swap, so the only
|
|
9
|
-
* meaningful state branches are `swap` (provider swaps) and `atomic`
|
|
10
|
-
* (BTC↔XMR atomic swaps). Cross-flow concerns (token list, history, quotes,
|
|
11
|
-
* providers, connection status) live outside the engine entirely.
|
|
12
|
-
*/
|
|
13
5
|
export interface EngineState {
|
|
14
6
|
readonly activeFlow: ActiveFlow;
|
|
15
7
|
readonly swap: SwapFlowState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-state.d.ts","sourceRoot":"","sources":["../../src/engine/engine-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-state.d.ts","sourceRoot":"","sources":["../../src/engine/engine-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAM3B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,GACP,WAAW,GACX,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEX,wBAAgB,wBAAwB,IAAI,WAAW,CAMtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-state.js","sourceRoot":"","sources":["../../src/engine/engine-state.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-state.js","sourceRoot":"","sources":["../../src/engine/engine-state.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AA2B3B,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zod-enforced FlowContext schemas.
|
|
3
|
-
*
|
|
4
|
-
* Three strictness levels:
|
|
5
|
-
* FlowContext — base, nullable fields (early phases: keygen, creating-swap)
|
|
6
|
-
* PopulatedFlowContext — snapshot-critical fields non-empty (awaiting-deposit, deposit-detected)
|
|
7
|
-
* VerifiedFlowContext — populated + verification non-null (signing, funding, confirming, swapping)
|
|
8
|
-
*
|
|
9
|
-
* Types are inferred from schemas — one source of truth, zero drift.
|
|
10
|
-
* Validation uses safeParse — never throws, returns structured errors.
|
|
11
|
-
*/
|
|
12
1
|
import { z } from 'zod';
|
|
13
2
|
declare const VerificationCheckSchema: z.ZodObject<{
|
|
14
3
|
name: z.ZodString;
|
|
@@ -480,15 +469,6 @@ export type FlowContextResult<T> = {
|
|
|
480
469
|
export declare function validateBase(ctx: unknown, phase: string): FlowContextResult<FlowContext>;
|
|
481
470
|
export declare function validatePopulated(ctx: unknown, phase: string): FlowContextResult<PopulatedFlowContext>;
|
|
482
471
|
export declare function validateVerified(ctx: unknown, phase: string): FlowContextResult<VerifiedFlowContext>;
|
|
483
|
-
/**
|
|
484
|
-
* Create a new FlowContext with defaults, overriding with provided values.
|
|
485
|
-
* Null values in partial are applied (they mean "not yet known").
|
|
486
|
-
*/
|
|
487
472
|
export declare function createFlowContext(partial: Partial<FlowContext>): FlowContext;
|
|
488
|
-
/**
|
|
489
|
-
* Merge an update into an existing FlowContext.
|
|
490
|
-
* Only non-undefined keys in partial overwrite. Null IS a valid value
|
|
491
|
-
* (it means "reset to unknown").
|
|
492
|
-
*/
|
|
493
473
|
export declare function mergeFlowContext(current: FlowContext, partial: Partial<FlowContext>): FlowContext;
|
|
494
474
|
//# sourceMappingURL=flow-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-context.d.ts","sourceRoot":"","sources":["../../src/engine/flow-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flow-context.d.ts","sourceRoot":"","sources":["../../src/engine/flow-context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;EAI3B,CAAC;AAEH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK5B,CAAC;AAIH,QAAA,MAAM,sBAAsB;;;;;;;;;EAG1B,CAAC;AAGH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzB,CAAC;AAGH,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW9B,CAAC;AAGH,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACvC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAA;CAAE,CAAC;AAkBvE,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,WAAW,CAAC,CAIhC;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,oBAAoB,CAAC,CAIzC;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,mBAAmB,CAAC,CAIxC;AAyBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAE5E;AAGD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,WAAW,CAEb"}
|