xpi-ts 0.2.22 → 0.2.24
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/dist/cjs/lib/bitcore/crypto/point.js +2 -2
- package/dist/cjs/lib/bitcore/index.js +162 -162
- package/dist/esm/lib/bitcore/crypto/point.js +2 -2
- package/dist/esm/lib/bitcore/index.js +42 -42
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/address.d.ts +116 -0
- package/dist/types/lib/bitcore/address.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/block.d.ts +214 -0
- package/dist/types/lib/bitcore/block/block.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/blockheader.d.ts +220 -0
- package/dist/types/lib/bitcore/block/blockheader.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/merkleblock.d.ts +206 -0
- package/dist/types/lib/bitcore/block/merkleblock.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/bn.d.ts +224 -0
- package/dist/types/lib/bitcore/crypto/bn.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/ecdsa.d.ts +122 -0
- package/dist/types/lib/bitcore/crypto/ecdsa.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/hash.d.ts +56 -0
- package/dist/types/lib/bitcore/crypto/hash.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/index.d.ts +4 -0
- package/dist/types/lib/bitcore/crypto/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/musig2.d.ts +282 -0
- package/dist/types/lib/bitcore/crypto/musig2.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/point.d.ts +87 -0
- package/dist/types/lib/bitcore/crypto/point.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/random.d.ts +48 -0
- package/dist/types/lib/bitcore/crypto/random.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/schnorr.d.ts +203 -0
- package/dist/types/lib/bitcore/crypto/schnorr.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/signature.d.ts +452 -0
- package/dist/types/lib/bitcore/crypto/signature.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/sigtype.d.ts +46 -0
- package/dist/types/lib/bitcore/crypto/sigtype.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/base58.d.ts +68 -0
- package/dist/types/lib/bitcore/encoding/base58.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/base58check.d.ts +58 -0
- package/dist/types/lib/bitcore/encoding/base58check.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/bufferreader.d.ts +112 -0
- package/dist/types/lib/bitcore/encoding/bufferreader.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/bufferwriter.d.ts +144 -0
- package/dist/types/lib/bitcore/encoding/bufferwriter.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/varint.d.ts +86 -0
- package/dist/types/lib/bitcore/encoding/varint.d.ts.map +1 -1
- package/dist/types/lib/bitcore/errors.d.ts +4 -0
- package/dist/types/lib/bitcore/errors.d.ts.map +1 -1
- package/dist/types/lib/bitcore/hdprivatekey.d.ts +59 -0
- package/dist/types/lib/bitcore/hdprivatekey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/hdpublickey.d.ts +145 -0
- package/dist/types/lib/bitcore/hdpublickey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/index.d.ts +58 -54
- package/dist/types/lib/bitcore/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/message.d.ts +63 -0
- package/dist/types/lib/bitcore/message.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/errors.d.ts +4 -0
- package/dist/types/lib/bitcore/mnemonic/errors.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/index.d.ts +4 -0
- package/dist/types/lib/bitcore/mnemonic/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/mnemonic.d.ts +106 -0
- package/dist/types/lib/bitcore/mnemonic/mnemonic.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/pbkdf2.d.ts +13 -0
- package/dist/types/lib/bitcore/mnemonic/pbkdf2.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/words/english.d.ts +4 -0
- package/dist/types/lib/bitcore/mnemonic/words/english.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/words/french.d.ts +5 -0
- package/dist/types/lib/bitcore/mnemonic/words/french.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/words/index.d.ts +4 -0
- package/dist/types/lib/bitcore/mnemonic/words/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/musig2/index.d.ts +14 -0
- package/dist/types/lib/bitcore/musig2/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/musig2/session.d.ts +254 -0
- package/dist/types/lib/bitcore/musig2/session.d.ts.map +1 -1
- package/dist/types/lib/bitcore/musig2/signer.d.ts +212 -0
- package/dist/types/lib/bitcore/musig2/signer.d.ts.map +1 -1
- package/dist/types/lib/bitcore/networks.d.ts +17 -0
- package/dist/types/lib/bitcore/networks.d.ts.map +1 -1
- package/dist/types/lib/bitcore/opcode.d.ts +151 -0
- package/dist/types/lib/bitcore/opcode.d.ts.map +1 -1
- package/dist/types/lib/bitcore/privatekey.d.ts +80 -0
- package/dist/types/lib/bitcore/privatekey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/publickey.d.ts +195 -0
- package/dist/types/lib/bitcore/publickey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/chunk.d.ts +51 -0
- package/dist/types/lib/bitcore/script/chunk.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/interpreter/condition-stack.d.ts +60 -0
- package/dist/types/lib/bitcore/script/interpreter/condition-stack.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/interpreter/index.d.ts +23 -0
- package/dist/types/lib/bitcore/script/interpreter/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/interpreter/interpreter.d.ts +86 -0
- package/dist/types/lib/bitcore/script/interpreter/interpreter.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/interpreter/script-num.d.ts +115 -0
- package/dist/types/lib/bitcore/script/interpreter/script-num.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/interpreter/types.d.ts +119 -0
- package/dist/types/lib/bitcore/script/interpreter/types.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script/taproot.d.ts +297 -0
- package/dist/types/lib/bitcore/script/taproot.d.ts.map +1 -1
- package/dist/types/lib/bitcore/script.d.ts +510 -0
- package/dist/types/lib/bitcore/script.d.ts.map +1 -1
- package/dist/types/lib/bitcore/taproot/musig2.d.ts +153 -0
- package/dist/types/lib/bitcore/taproot/musig2.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input/multisig.d.ts +8 -0
- package/dist/types/lib/bitcore/transaction/input/multisig.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input/multisigscripthash.d.ts +8 -0
- package/dist/types/lib/bitcore/transaction/input/multisigscripthash.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input/publickey.d.ts +8 -0
- package/dist/types/lib/bitcore/transaction/input/publickey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input/publickeyhash.d.ts +14 -0
- package/dist/types/lib/bitcore/transaction/input/publickeyhash.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input/taproot.d.ts +22 -0
- package/dist/types/lib/bitcore/transaction/input/taproot.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input.d.ts +418 -0
- package/dist/types/lib/bitcore/transaction/input.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/outpoint.d.ts +110 -0
- package/dist/types/lib/bitcore/transaction/outpoint.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/output.d.ts +83 -0
- package/dist/types/lib/bitcore/transaction/output.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/sighash.d.ts +69 -0
- package/dist/types/lib/bitcore/transaction/sighash.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/signature.d.ts +98 -0
- package/dist/types/lib/bitcore/transaction/signature.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/transaction.d.ts +379 -0
- package/dist/types/lib/bitcore/transaction/transaction.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/unspentoutput.d.ts +61 -0
- package/dist/types/lib/bitcore/transaction/unspentoutput.d.ts.map +1 -1
- package/dist/types/lib/bitcore/unit.d.ts +140 -0
- package/dist/types/lib/bitcore/unit.d.ts.map +1 -1
- package/dist/types/lib/bitcore/uri.d.ts +34 -0
- package/dist/types/lib/bitcore/uri.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/base32.d.ts +55 -0
- package/dist/types/lib/bitcore/util/base32.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/bits.d.ts +76 -0
- package/dist/types/lib/bitcore/util/bits.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/buffer.d.ts +135 -0
- package/dist/types/lib/bitcore/util/buffer.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/convertBits.d.ts +15 -0
- package/dist/types/lib/bitcore/util/convertBits.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/js.d.ts +19 -0
- package/dist/types/lib/bitcore/util/js.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/merkle.d.ts +85 -0
- package/dist/types/lib/bitcore/util/merkle.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/preconditions.d.ts +29 -0
- package/dist/types/lib/bitcore/util/preconditions.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util.d.ts +7 -0
- package/dist/types/lib/bitcore/util.d.ts.map +1 -1
- package/dist/types/lib/bitcore/xaddress.d.ts +117 -0
- package/dist/types/lib/bitcore/xaddress.d.ts.map +1 -1
- package/dist/types/lib/lokad.d.ts +292 -0
- package/dist/types/lib/lokad.d.ts.map +1 -1
- package/dist/types/lib/nft.d.ts +434 -0
- package/dist/types/lib/nft.d.ts.map +1 -1
- package/dist/types/lib/rank/api.d.ts +13 -0
- package/dist/types/lib/rank/api.d.ts.map +1 -1
- package/dist/types/lib/rank/index.d.ts +153 -0
- package/dist/types/lib/rank/index.d.ts.map +1 -1
- package/dist/types/lib/rank/opcode.d.ts +6 -2
- package/dist/types/lib/rank/opcode.d.ts.map +1 -1
- package/dist/types/lib/rank/script.d.ts +10 -0
- package/dist/types/lib/rank/script.d.ts.map +1 -1
- package/dist/types/lib/rank/transaction.d.ts +11 -0
- package/dist/types/lib/rank/transaction.d.ts.map +1 -1
- package/dist/types/lib/rpc.d.ts +176 -0
- package/dist/types/lib/rpc.d.ts.map +1 -1
- package/dist/types/utils/constants.d.ts +27 -0
- package/dist/types/utils/constants.d.ts.map +1 -1
- package/dist/types/utils/env.d.ts +15 -0
- package/dist/types/utils/env.d.ts.map +1 -1
- package/dist/types/utils/string.d.ts +57 -0
- package/dist/types/utils/string.d.ts.map +1 -1
- package/dist/types/utils/wallet.d.ts +43 -1
- package/dist/types/utils/wallet.d.ts.map +1 -1
- package/package.json +1 -1
- package/tsconfig.types.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/mnemonic/mnemonic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/mnemonic/mnemonic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAK1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAYrC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AAE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,QAAQ;IACnB,SAAgB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClC,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE;IAuDrD,MAAM,CAAC,KAAK;;;MAAQ;IAEpB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO;IA4B9D;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO;IASxE;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAc9D;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAUnC;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ;IAc5D;;;;;;;;OAQG;IACH,cAAc,CACZ,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,GAC9B,YAAY;IAKf;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAKzD;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IA0BrE;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAiBjD;AAED,eAAe,QAAQ,CAAA"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PBKDF2 implementation for mnemonic seed generation
|
|
3
|
+
* Migrated from @abcpros/bitcore-mnemonic with ESM support and TypeScript
|
|
4
|
+
*
|
|
5
|
+
* Uses @noble/hashes for browser compatibility
|
|
6
|
+
*/
|
|
1
7
|
import type { Buffer } from 'buffer/';
|
|
8
|
+
/**
|
|
9
|
+
* PBKDF2 implementation using SHA512
|
|
10
|
+
* Uses @noble/hashes for browser compatibility
|
|
11
|
+
*
|
|
12
|
+
* Credit to: https://github.com/stayradiated/pbkdf2-sha512
|
|
13
|
+
* Copyright (c) 2014, JP Richardson Copyright (c) 2010-2011 Intalio Pte, All Rights Reserved
|
|
14
|
+
*/
|
|
2
15
|
export declare function pbkdf2(key: string | Buffer, salt: string | Buffer, iterations: number, dkLen: number): Buffer;
|
|
3
16
|
//# sourceMappingURL=pbkdf2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/mnemonic/pbkdf2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/mnemonic/pbkdf2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CA+BR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"english.d.ts","sourceRoot":"","sources":["../../../../../../lib/bitcore/mnemonic/words/english.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"english.d.ts","sourceRoot":"","sources":["../../../../../../lib/bitcore/mnemonic/words/english.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,OAAO,UAigEnB,CAAA"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* French word list for BIP39 mnemonic generation
|
|
3
|
+
* Source: https://github.com/bitcoin/bips/blob/master/bip-0039/french.txt
|
|
4
|
+
* Credits: @Kirvx @NicolasDorier @ecdsa @EricLarch
|
|
5
|
+
*/
|
|
1
6
|
export declare const french: string[];
|
|
2
7
|
//# sourceMappingURL=french.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"french.d.ts","sourceRoot":"","sources":["../../../../../../lib/bitcore/mnemonic/words/french.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"french.d.ts","sourceRoot":"","sources":["../../../../../../lib/bitcore/mnemonic/words/french.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,MAAM,UAigElB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../lib/bitcore/mnemonic/words/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../lib/bitcore/mnemonic/words/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,KAAK;;;CAQjB,CAAA"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 The Lotusia Stewardship
|
|
3
|
+
* Github: https://github.com/LotusiaStewardship
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* MuSig2 High-Level API
|
|
8
|
+
*
|
|
9
|
+
* This module provides simplified, developer-friendly wrappers for common
|
|
10
|
+
* MuSig2 operations, making it easier for new developers to implement
|
|
11
|
+
* multi-signature functionality.
|
|
12
|
+
*
|
|
13
|
+
* @module MuSig2
|
|
14
|
+
*/
|
|
1
15
|
export { MuSig2Signer, createMuSig2Signer, type MuSig2SignerConfig, type MuSig2PrepareResult, type MuSig2SignResult, type MuSig2TaprootSignResult, } from './signer.js';
|
|
2
16
|
export { MuSigSessionManager, MuSigSessionPhase, type MuSigSession, } from './session.js';
|
|
3
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/musig2/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/musig2/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA"}
|
|
@@ -1,57 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 The Lotusia Stewardship
|
|
3
|
+
* Github: https://github.com/LotusiaStewardship
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* MuSig2 Session Management
|
|
8
|
+
*
|
|
9
|
+
* Provides stateful session management for multi-party MuSig2 signing.
|
|
10
|
+
* Handles nonce exchange, partial signature collection, and finalization.
|
|
11
|
+
*
|
|
12
|
+
* This is a general-purpose session manager that can be used for any
|
|
13
|
+
* MuSig2 signing scenario, not just Taproot transactions.
|
|
14
|
+
*
|
|
15
|
+
* @module MuSig2Session
|
|
16
|
+
*/
|
|
1
17
|
import { PublicKey } from '../publickey';
|
|
2
18
|
import { PrivateKey } from '../privatekey';
|
|
3
19
|
import { Point, BN, Signature } from '../crypto/index';
|
|
4
20
|
import { type MuSig2KeyAggContext, type MuSig2Nonce, type MuSig2AggregatedNonce } from '../crypto/musig2';
|
|
5
21
|
import type { Buffer } from 'buffer/';
|
|
22
|
+
/**
|
|
23
|
+
* Session phases in the MuSig2 protocol
|
|
24
|
+
*/
|
|
6
25
|
export declare enum MuSigSessionPhase {
|
|
26
|
+
/** Initial state - session created but not started */
|
|
7
27
|
INIT = "init",
|
|
28
|
+
/** Round 1 - collecting public nonces from all signers */
|
|
8
29
|
NONCE_EXCHANGE = "nonce-exchange",
|
|
30
|
+
/** Round 2 - collecting partial signatures from all signers */
|
|
9
31
|
PARTIAL_SIG_EXCHANGE = "partial-sig-exchange",
|
|
32
|
+
/** Final state - signature has been aggregated */
|
|
10
33
|
COMPLETE = "complete",
|
|
34
|
+
/** Error state - session aborted due to validation failure */
|
|
11
35
|
ABORTED = "aborted"
|
|
12
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Result type for session manager operations
|
|
39
|
+
* Enables clean interface between session manager and P2P coordinator
|
|
40
|
+
*/
|
|
13
41
|
export interface SessionManagerResult {
|
|
42
|
+
/** Next phase to transition to (if any) */
|
|
14
43
|
shouldTransitionTo?: MuSigSessionPhase;
|
|
44
|
+
/** Whether nonces should be revealed to other participants */
|
|
15
45
|
shouldRevealNonces?: boolean;
|
|
46
|
+
/** Nonces to broadcast (if revealing) */
|
|
16
47
|
broadcastNonces?: [Point, Point];
|
|
48
|
+
/** Whether partial signature should be created */
|
|
17
49
|
shouldCreatePartialSig?: boolean;
|
|
50
|
+
/** Whether partial signature should be broadcast */
|
|
18
51
|
shouldBroadcastPartialSig?: boolean;
|
|
52
|
+
/** Partial signature to broadcast */
|
|
19
53
|
broadcastPartialSig?: BN;
|
|
54
|
+
/** Whether signature should be finalized */
|
|
20
55
|
shouldFinalize?: boolean;
|
|
56
|
+
/** Final aggregated signature */
|
|
21
57
|
finalSignature?: Signature;
|
|
58
|
+
/** Error message if operation failed */
|
|
22
59
|
error?: string;
|
|
23
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* MuSig2 Signing Session
|
|
63
|
+
*
|
|
64
|
+
* Represents a single multi-party signing session with all necessary state.
|
|
65
|
+
*/
|
|
24
66
|
export interface MuSigSession {
|
|
67
|
+
/** Unique session identifier */
|
|
25
68
|
sessionId: string;
|
|
69
|
+
/** All participating signers' public keys (in order) */
|
|
26
70
|
signers: PublicKey[];
|
|
71
|
+
/** Index of this signer in the signers array */
|
|
27
72
|
myIndex: number;
|
|
73
|
+
/** Key aggregation context (computed once) */
|
|
28
74
|
keyAggContext: MuSig2KeyAggContext;
|
|
75
|
+
/** Message to be signed */
|
|
29
76
|
message: Buffer;
|
|
77
|
+
/** Optional: Session metadata */
|
|
30
78
|
metadata?: Record<string, unknown>;
|
|
79
|
+
/** This signer's secret nonce (NEVER share!) */
|
|
31
80
|
mySecretNonce?: MuSig2Nonce;
|
|
81
|
+
/** This signer's public nonce */
|
|
32
82
|
myPublicNonce?: [Point, Point];
|
|
83
|
+
/** Received public nonces from other signers (index -> nonce) */
|
|
33
84
|
receivedPublicNonces: Map<number, [Point, Point]>;
|
|
85
|
+
/** Aggregated nonce (computed when all public nonces received) */
|
|
34
86
|
aggregatedNonce?: MuSig2AggregatedNonce;
|
|
87
|
+
/** This signer's partial signature */
|
|
35
88
|
myPartialSig?: BN;
|
|
89
|
+
/** Received partial signatures from other signers (index -> sig) */
|
|
36
90
|
receivedPartialSigs: Map<number, BN>;
|
|
91
|
+
/** Final aggregated signature (if complete) */
|
|
37
92
|
finalSignature?: Signature;
|
|
93
|
+
/** Current phase of the session */
|
|
38
94
|
phase: MuSigSessionPhase;
|
|
95
|
+
/** Creation timestamp */
|
|
39
96
|
createdAt: number;
|
|
97
|
+
/** Last updated timestamp */
|
|
40
98
|
updatedAt: number;
|
|
99
|
+
/** Optional: Abort reason if phase is ABORTED */
|
|
41
100
|
abortReason?: string;
|
|
101
|
+
/** Election method used for coordinator selection */
|
|
42
102
|
electionMethod?: string;
|
|
103
|
+
/** Index of elected coordinator in sorted signers array */
|
|
43
104
|
coordinatorIndex?: number;
|
|
105
|
+
/** Election proof hash for verification */
|
|
44
106
|
electionProof?: string;
|
|
107
|
+
/** Backup coordinator priority list */
|
|
45
108
|
backupCoordinators?: number[];
|
|
46
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* MuSig2 Session Manager
|
|
112
|
+
*
|
|
113
|
+
* Manages the lifecycle of MuSig2 signing sessions including:
|
|
114
|
+
* - Session creation and initialization
|
|
115
|
+
* - Nonce generation and exchange
|
|
116
|
+
* - Partial signature creation and collection
|
|
117
|
+
* - Signature aggregation and finalization
|
|
118
|
+
* - Validation and error handling
|
|
119
|
+
*/
|
|
47
120
|
export declare class MuSigSessionManager {
|
|
121
|
+
/**
|
|
122
|
+
* Create a new MuSig2 signing session
|
|
123
|
+
*
|
|
124
|
+
* @param signers - All participating signers' public keys (in order)
|
|
125
|
+
* @param myPrivateKey - This signer's private key
|
|
126
|
+
* @param message - Message to be signed
|
|
127
|
+
* @param metadata - Optional session metadata
|
|
128
|
+
* @returns Initialized session
|
|
129
|
+
* @throws Error if signers array is empty or doesn't contain myPrivateKey's public key
|
|
130
|
+
*/
|
|
48
131
|
createSession(signers: PublicKey[], myPrivateKey: PrivateKey, message: Buffer, metadata?: Record<string, unknown>): MuSigSession;
|
|
132
|
+
/**
|
|
133
|
+
* Generate and store public nonces for this signer
|
|
134
|
+
*
|
|
135
|
+
* This begins Round 1 of the MuSig2 protocol. The returned public nonces
|
|
136
|
+
* must be shared with all other signers.
|
|
137
|
+
*
|
|
138
|
+
* 🔒 PRODUCTION SECURITY: This method automatically adds 32 bytes of random
|
|
139
|
+
* entropy to nonce generation for defense-in-depth. The underlying nonce
|
|
140
|
+
* generation uses RFC6979 deterministic generation, and this random layer
|
|
141
|
+
* provides additional protection against implementation bugs or hardware failures.
|
|
142
|
+
*
|
|
143
|
+
* If you need deterministic nonces (e.g., for testing with known vectors),
|
|
144
|
+
* pass BufferUtil.alloc(32) as extraInput to disable the random layer.
|
|
145
|
+
*
|
|
146
|
+
* WARNING: Do not call this multiple times for the same session!
|
|
147
|
+
* Nonce reuse reveals the private key!
|
|
148
|
+
*
|
|
149
|
+
* @param session - The signing session
|
|
150
|
+
* @param privateKey - This signer's private key
|
|
151
|
+
* @param extraInput - Optional extra randomness. If not provided, 32 random bytes are automatically added for production security.
|
|
152
|
+
* @returns Public nonces to share with other signers
|
|
153
|
+
* @throws Error if session is not in INIT phase or nonces already generated
|
|
154
|
+
*
|
|
155
|
+
* @example Production usage (automatic randomness)
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const nonces = manager.generateNonces(session, privateKey)
|
|
158
|
+
* // Automatically includes 32 random bytes for security
|
|
159
|
+
* ```
|
|
160
|
+
*
|
|
161
|
+
* @example Testing with deterministic nonces
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const nonces = manager.generateNonces(session, privateKey, BufferUtil.alloc(32))
|
|
164
|
+
* // Uses only RFC6979 deterministic generation (reproducible)
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
49
167
|
generateNonces(session: MuSigSession, privateKey: PrivateKey, extraInput?: Buffer): [Point, Point];
|
|
168
|
+
/**
|
|
169
|
+
* Receive and validate a public nonce from another signer
|
|
170
|
+
*
|
|
171
|
+
* @param session - The signing session
|
|
172
|
+
* @param signerIndex - Index of the signer who sent this nonce
|
|
173
|
+
* @param publicNonce - The public nonce to receive
|
|
174
|
+
* @throws Error if validation fails or duplicate nonce received
|
|
175
|
+
*/
|
|
50
176
|
receiveNonces(session: MuSigSession, signerIndex: number, publicNonces: [Point, Point]): void;
|
|
177
|
+
/**
|
|
178
|
+
* Create this signer's partial signature
|
|
179
|
+
*
|
|
180
|
+
* This begins Round 2 of the MuSig2 protocol. Can only be called after
|
|
181
|
+
* all nonces have been collected and aggregated.
|
|
182
|
+
*
|
|
183
|
+
* @param session - The signing session
|
|
184
|
+
* @param privateKey - This signer's private key
|
|
185
|
+
* @returns Partial signature to share with other signers
|
|
186
|
+
* @throws Error if not ready to sign
|
|
187
|
+
*/
|
|
51
188
|
createPartialSignature(session: MuSigSession, privateKey: PrivateKey): BN;
|
|
189
|
+
/**
|
|
190
|
+
* Receive and verify a partial signature from another signer
|
|
191
|
+
*
|
|
192
|
+
* @param session - The signing session
|
|
193
|
+
* @param signerIndex - Index of the signer who sent this signature
|
|
194
|
+
* @param partialSig - The partial signature to receive
|
|
195
|
+
* @throws Error if validation fails or duplicate signature received
|
|
196
|
+
*/
|
|
52
197
|
receivePartialSignature(session: MuSigSession, signerIndex: number, partialSig: BN): void;
|
|
198
|
+
/**
|
|
199
|
+
* Get the final aggregated signature
|
|
200
|
+
*
|
|
201
|
+
* Can only be called after all partial signatures have been collected.
|
|
202
|
+
*
|
|
203
|
+
* @param session - The signing session
|
|
204
|
+
* @returns The final Schnorr signature
|
|
205
|
+
* @throws Error if signature not yet finalized
|
|
206
|
+
*/
|
|
53
207
|
getFinalSignature(session: MuSigSession): Signature;
|
|
208
|
+
/**
|
|
209
|
+
* Abort a session with an error reason
|
|
210
|
+
*
|
|
211
|
+
* @param session - The signing session
|
|
212
|
+
* @param reason - Reason for abortion
|
|
213
|
+
*/
|
|
54
214
|
abortSession(session: MuSigSession, reason: string): void;
|
|
215
|
+
/**
|
|
216
|
+
* Get session status summary
|
|
217
|
+
*
|
|
218
|
+
* @param session - The signing session
|
|
219
|
+
* @returns Human-readable status information
|
|
220
|
+
*/
|
|
55
221
|
getSessionStatus(session: MuSigSession): {
|
|
56
222
|
phase: MuSigSessionPhase;
|
|
57
223
|
noncesCollected: number;
|
|
@@ -62,19 +228,107 @@ export declare class MuSigSessionManager {
|
|
|
62
228
|
isAborted: boolean;
|
|
63
229
|
abortReason?: string;
|
|
64
230
|
};
|
|
231
|
+
/**
|
|
232
|
+
* Generate a unique session ID with entropy
|
|
233
|
+
*
|
|
234
|
+
* Session IDs now include:
|
|
235
|
+
* - All signer public keys (sorted)
|
|
236
|
+
* - Message being signed
|
|
237
|
+
* - Creation timestamp
|
|
238
|
+
* - Random entropy (16 bytes)
|
|
239
|
+
*
|
|
240
|
+
* This prevents session ID collisions when signing the same message
|
|
241
|
+
* with the same signers multiple times.
|
|
242
|
+
*
|
|
243
|
+
* @param signers - Sorted list of signer public keys
|
|
244
|
+
* @param message - Message to be signed
|
|
245
|
+
* @param createdAt - Creation timestamp (defaults to Date.now())
|
|
246
|
+
* @param entropy - Random entropy (defaults to 16 random bytes)
|
|
247
|
+
* @returns Unique session ID (32 hex characters)
|
|
248
|
+
*/
|
|
65
249
|
private _generateSessionId;
|
|
250
|
+
/**
|
|
251
|
+
* Regenerate session ID with new entropy
|
|
252
|
+
*
|
|
253
|
+
* Used when a session ID collision is detected.
|
|
254
|
+
*
|
|
255
|
+
* @param session - The session to regenerate ID for
|
|
256
|
+
* @returns New unique session ID
|
|
257
|
+
*/
|
|
66
258
|
regenerateSessionId(session: MuSigSession): string;
|
|
259
|
+
/**
|
|
260
|
+
* TESTING ONLY: Manually transition session phase
|
|
261
|
+
*
|
|
262
|
+
* This method is only for testing purposes to simulate phase transitions
|
|
263
|
+
* that would normally be handled by the P2P coordinator's state machine.
|
|
264
|
+
*
|
|
265
|
+
* @param session - The session to transition
|
|
266
|
+
* @param newPhase - The new phase to transition to
|
|
267
|
+
* @internal
|
|
268
|
+
*/
|
|
67
269
|
_transitionPhaseForTesting(session: MuSigSession, newPhase: MuSigSessionPhase): void;
|
|
270
|
+
/**
|
|
271
|
+
* Aggregate all received nonces
|
|
272
|
+
*/
|
|
68
273
|
private _aggregateNonces;
|
|
274
|
+
/**
|
|
275
|
+
* Finalize the signature
|
|
276
|
+
*/
|
|
69
277
|
private _finalizeSignature;
|
|
278
|
+
/**
|
|
279
|
+
* Clear secret nonce from memory
|
|
280
|
+
*/
|
|
70
281
|
private _clearSecretNonce;
|
|
282
|
+
/**
|
|
283
|
+
* Abort the session
|
|
284
|
+
*/
|
|
71
285
|
private _abortSession;
|
|
286
|
+
/**
|
|
287
|
+
* Check if all nonces received from other signers (PUBLIC)
|
|
288
|
+
* Used by P2P coordinator to check completion status
|
|
289
|
+
*/
|
|
72
290
|
hasAllNonces(session: MuSigSession): boolean;
|
|
291
|
+
/**
|
|
292
|
+
* Check if all partial signatures received from other signers (PUBLIC)
|
|
293
|
+
* Used by P2P coordinator to check completion status
|
|
294
|
+
*/
|
|
73
295
|
hasAllPartialSignatures(session: MuSigSession): boolean;
|
|
296
|
+
/**
|
|
297
|
+
* Check if local participant is coordinator
|
|
298
|
+
*/
|
|
74
299
|
isCoordinator(session: MuSigSession): boolean;
|
|
300
|
+
/**
|
|
301
|
+
* Validate MuSig2 BIP327 compliance
|
|
302
|
+
* Ensures the session follows BIP327 specification requirements
|
|
303
|
+
*
|
|
304
|
+
* @param session - The signing session
|
|
305
|
+
* @throws Error if session violates BIP327 requirements
|
|
306
|
+
*/
|
|
75
307
|
validateBIP327Compliance(session: MuSigSession): void;
|
|
308
|
+
/**
|
|
309
|
+
* Check if keys are sorted lexicographically
|
|
310
|
+
* BIP327 requires deterministic key ordering
|
|
311
|
+
*
|
|
312
|
+
* @param signers - Array of public keys
|
|
313
|
+
* @returns True if keys are sorted
|
|
314
|
+
*/
|
|
76
315
|
private areKeysSorted;
|
|
316
|
+
/**
|
|
317
|
+
* Validate MuSig2 round progression
|
|
318
|
+
* Ensures phase transitions follow BIP327 protocol
|
|
319
|
+
*
|
|
320
|
+
* @param session - The signing session
|
|
321
|
+
* @throws Error if phase transition is invalid
|
|
322
|
+
*/
|
|
77
323
|
private validateMuSig2Rounds;
|
|
324
|
+
/**
|
|
325
|
+
* Initiate Round 1 of MuSig2 protocol (DIRECT NONCE EXCHANGE)
|
|
326
|
+
* Validates protocol compliance and prepares for nonce exchange
|
|
327
|
+
*
|
|
328
|
+
* @param session - The signing session
|
|
329
|
+
* @param privateKey - This signer's private key
|
|
330
|
+
* @returns Session manager result with nonce generation instructions
|
|
331
|
+
*/
|
|
78
332
|
initiateRound1(session: MuSigSession, privateKey: PrivateKey): SessionManagerResult;
|
|
79
333
|
}
|
|
80
334
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/musig2/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/musig2/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAA;AAIzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,sDAAsD;IACtD,IAAI,SAAS;IACb,0DAA0D;IAC1D,cAAc,mBAAmB;IACjC,+DAA+D;IAC/D,oBAAoB,yBAAyB;IAC7C,kDAAkD;IAClD,QAAQ,aAAa;IACrB,8DAA8D;IAC9D,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,iBAAiB,CAAA;IACtC,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,yCAAyC;IACzC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChC,kDAAkD;IAClD,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,oDAAoD;IACpD,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,EAAE,CAAA;IACxB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iCAAiC;IACjC,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IAEjB,wDAAwD;IACxD,OAAO,EAAE,SAAS,EAAE,CAAA;IAEpB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAA;IAEf,8CAA8C;IAC9C,aAAa,EAAE,mBAAmB,CAAA;IAElC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAA;IAEf,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAGlC,gDAAgD;IAChD,aAAa,CAAC,EAAE,WAAW,CAAA;IAE3B,iCAAiC;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAE9B,iEAAiE;IACjE,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAGjD,kEAAkE;IAClE,eAAe,CAAC,EAAE,qBAAqB,CAAA;IAEvC,sCAAsC;IACtC,YAAY,CAAC,EAAE,EAAE,CAAA;IAEjB,oEAAoE;IACpE,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAGpC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,SAAS,CAAA;IAE1B,mCAAmC;IACnC,KAAK,EAAE,iBAAiB,CAAA;IAExB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IAEjB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IAEjB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;OASG;IACH,aAAa,CACX,OAAO,EAAE,SAAS,EAAE,EACpB,YAAY,EAAE,UAAU,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,YAAY;IAgDf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,cAAc,CACZ,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,KAAK,EAAE,KAAK,CAAC;IA4CjB;;;;;;;OAOG;IACH,aAAa,CACX,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAC3B,IAAI;IAgDP;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE;IA+CzE;;;;;;;OAOG;IACH,uBAAuB,CACrB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,EAAE,GACb,IAAI;IAyFP;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS;IAcnD;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzD;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG;QACvC,KAAK,EAAE,iBAAiB,CAAA;QACxB,eAAe,EAAE,MAAM,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;QACnB,oBAAoB,EAAE,MAAM,CAAA;QAC5B,gBAAgB,EAAE,MAAM,CAAA;QACxB,UAAU,EAAE,OAAO,CAAA;QACnB,SAAS,EAAE,OAAO,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB;IAuBD;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;;;;;OAOG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IASlD;;;;;;;;;OASG;IACH,0BAA0B,CACxB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,IAAI;IAKP;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAM5C;;;OAGG;IACH,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAMvD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAS7C;;;;;;OAMG;IACH,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAiBrD;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAarB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAkD5B;;;;;;;OAOG;IACH,cAAc,CACZ,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,GACrB,oBAAoB;CAwBxB"}
|