@bitgo/sdk-core 38.15.0 → 38.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +3 -1
  2. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
  3. package/dist/src/account-lib/util/ed25519KeyDeriver.js +4 -2
  4. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +7 -1
  5. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  6. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  7. package/dist/src/bitgo/defi/defiVault.d.ts +7 -7
  8. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
  9. package/dist/src/bitgo/defi/defiVault.js +10 -10
  10. package/dist/src/bitgo/defi/iDefiVault.d.ts +7 -2
  11. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
  12. package/dist/src/bitgo/defi/iDefiVault.js +1 -1
  13. package/dist/src/bitgo/environments.js +3 -3
  14. package/dist/src/bitgo/keychain/iKeychains.d.ts +4 -0
  15. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  16. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  17. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  18. package/dist/src/bitgo/keychain/keychains.js +15 -15
  19. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +24 -81
  20. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -1
  21. package/dist/src/bitgo/safe/derivableEd25519Pub.js +117 -147
  22. package/dist/src/bitgo/safe/iSafe.d.ts +5 -2
  23. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
  24. package/dist/src/bitgo/safe/iSafe.js +1 -1
  25. package/dist/src/bitgo/safe/safe.d.ts +14 -7
  26. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  27. package/dist/src/bitgo/safe/safe.js +108 -30
  28. package/dist/src/bitgo/safe/safeDerivation.d.ts +13 -0
  29. package/dist/src/bitgo/safe/safeDerivation.d.ts.map +1 -1
  30. package/dist/src/bitgo/safe/safeDerivation.js +30 -1
  31. package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
  32. package/dist/src/bitgo/safe/safes.js +10 -8
  33. package/dist/src/bitgo/staking/iStakingWallet.d.ts +13 -5
  34. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  35. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  36. package/dist/src/bitgo/staking/stakingWallet.d.ts +2 -2
  37. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  38. package/dist/src/bitgo/staking/stakingWallet.js +14 -1
  39. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +4 -1
  40. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  41. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +18 -6
  42. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +9 -1
  43. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -1
  44. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +24 -3
  45. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +50 -1
  46. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -1
  47. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +154 -4
  48. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +3 -0
  49. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -1
  50. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +1 -1
  51. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
  52. package/dist/src/bitgo/utils/tss/recipientUtils.js +9 -1
  53. package/dist/src/bitgo/wallet/BuildParams.d.ts +8 -0
  54. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  55. package/dist/src/bitgo/wallet/BuildParams.js +6 -1
  56. package/dist/src/bitgo/wallet/iWallet.d.ts +5 -1
  57. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  58. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  59. package/dist/test/unit/bitgo/defi/defiVault.js +102 -1
  60. package/dist/test/unit/bitgo/keychain/keychains.js +40 -29
  61. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +72 -76
  62. package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +50 -175
  63. package/dist/test/unit/bitgo/safe/safe.js +122 -23
  64. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts +2 -0
  65. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts.map +1 -0
  66. package/dist/test/unit/bitgo/safe/safeDerivation.js +71 -0
  67. package/dist/test/unit/bitgo/safe/safes.js +23 -11
  68. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +29 -1
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/package.json +5 -5
@@ -1,204 +1,174 @@
1
1
  "use strict";
2
2
  /**
3
- * @prettier
3
+ * Ed25519 safe-root public derivation material and Stellar user-key codecs.
4
4
  *
5
- * @experimental Encode/decode helpers for the *derivable* form of a safe slot-④
6
- * (`ed25519Multisig`) root public key.
7
- *
8
- * Wallet Safes v1 soft-derives the backup and BitGo co-signer keys of every minted wallet from the
9
- * safe's root public keys, and soft derivation needs a chain code. The secp256k1 slot gets one for
10
- * free (a BIP32 xpub is `point || chaincode`); a bare Stellar StrKey `G…` has nowhere to put one.
11
- * Per TDD Part II-3 §1.3 we therefore concatenate the chain code onto `pub` rather than introduce a
12
- * new field — the same shape BitGo already uses for the MPC slots, whose `commonKeychain` is
13
- * `pub || chaincode`.
14
- *
15
- * pub = <StrKey ed25519 public key> || <chainCode, 52 base32 chars>
16
- * exactly 56 chars, 'G…' exactly 52 chars
17
- * total length exactly 108
18
- *
19
- * Both halves use the SAME encoding — RFC 4648 base32 over the alphabet StrKey itself uses — so the
20
- * composite is one uniform string rather than a base32 pub with a hex tail bolted on.
21
- *
22
- * StrKey ed25519 public keys are always exactly 56 characters, so the split is a fixed offset. That
23
- * offset is a CROSS-REPO contract shared with wallet-platform, `modules/key-card` and WRW; four
24
- * independent implementations drifting produces unrecoverable wallets. Every call site — here and in
25
- * the other repos — MUST go through these helpers rather than slicing inline.
5
+ * Safe backup and BitGo roots store raw public key (32 bytes) || raw chain code (32 bytes),
6
+ * encoded together as canonical unpadded RFC 4648 base32. Coin-specific public-key encodings are
7
+ * applied only to derived wallet children.
26
8
  */
27
9
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.DERIVABLE_ED25519_PUB_LENGTH = exports.DERIVABLE_ED25519_CHAIN_CODE_LENGTH = exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES = exports.DERIVABLE_ED25519_PUB_SPLIT_OFFSET = void 0;
29
- exports.isValidEd25519StrKeyPublicKey = isValidEd25519StrKeyPublicKey;
30
- exports.isValidEd25519ChainCode = isValidEd25519ChainCode;
31
- exports.generateEd25519ChainCodeBase32 = generateEd25519ChainCodeBase32;
10
+ exports.DERIVABLE_ED25519_PUB_LENGTH = exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES = exports.DERIVABLE_ED25519_PUBLIC_KEY_BYTES = void 0;
11
+ exports.isDerivableEd25519Pub = isDerivableEd25519Pub;
12
+ exports.assertDerivableEd25519Pub = assertDerivableEd25519Pub;
32
13
  exports.encodeDerivableEd25519Pub = encodeDerivableEd25519Pub;
33
14
  exports.decodeDerivableEd25519Pub = decodeDerivableEd25519Pub;
34
- exports.isDerivableEd25519Pub = isDerivableEd25519Pub;
15
+ exports.generateEd25519ChainCode = generateEd25519ChainCode;
16
+ exports.decodeEd25519StrKeyPublicKey = decodeEd25519StrKeyPublicKey;
17
+ exports.isValidEd25519StrKeyPublicKey = isValidEd25519StrKeyPublicKey;
18
+ exports.decodeEd25519StrKeySecretSeed = decodeEd25519StrKeySecretSeed;
19
+ exports.encodeEd25519StrKeyPublicKey = encodeEd25519StrKeyPublicKey;
20
+ exports.isChecksumValidStrKeyEd25519Pub = isChecksumValidStrKeyEd25519Pub;
21
+ exports.softDeriveChildPubEd25519 = softDeriveChildPubEd25519;
35
22
  const crypto_1 = require("crypto");
36
- /**
37
- * The fixed character offset at which a composite slot-④ pub splits into (StrKey pub, chain code).
38
- * Stellar StrKey ed25519 public keys are a fixed 56 characters, so no length prefix or separator is
39
- * needed.
40
- *
41
- * MUST stay identical to the corresponding constant in wallet-platform, `modules/key-card` and WRW:
42
- * a divergent offset splits the pub in the wrong place and derives co-signer keys nobody else can
43
- * reproduce, permanently bricking the wallets minted with it.
44
- */
45
- exports.DERIVABLE_ED25519_PUB_SPLIT_OFFSET = 56;
46
- /** Raw length of a chain code before encoding. */
23
+ const account_lib_1 = require("../../account-lib");
24
+ exports.DERIVABLE_ED25519_PUBLIC_KEY_BYTES = 32;
47
25
  exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES = 32;
48
- /** Length of the base32-encoded chain code half: ceil(32 bytes * 8 / 5) = 52 characters. */
49
- exports.DERIVABLE_ED25519_CHAIN_CODE_LENGTH = 52;
50
- /** Total length of a well-formed composite pub. */
51
- exports.DERIVABLE_ED25519_PUB_LENGTH = exports.DERIVABLE_ED25519_PUB_SPLIT_OFFSET + exports.DERIVABLE_ED25519_CHAIN_CODE_LENGTH;
52
- /**
53
- * Chain codes are serialized as unpadded RFC 4648 base32, the same encoding and alphabet StrKey
54
- * uses, so the composite pub is base32 end to end.
55
- *
56
- * The alphabet is uppercase-only and lowercase is rejected rather than normalized: accepting both
57
- * casings would make the composite non-canonical, so the same key could be stored under two
58
- * distinct strings and equality against a previously-persisted pub would spuriously fail.
59
- */
60
- const CHAIN_CODE_REGEX = /^[A-Z2-7]{52}$/;
61
- /** StrKey version byte for an ed25519 public key (`G…`). */
62
- const STRKEY_VERSION_BYTE_ED25519_PUBLIC_KEY = 6 << 3;
63
- /** Decoded StrKey payload: 1 version byte + 32-byte key + 2-byte checksum. */
64
- const STRKEY_DECODED_LENGTH = 35;
26
+ exports.DERIVABLE_ED25519_PUB_LENGTH = 103;
65
27
  const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
66
- const STRKEY_ED25519_PUBLIC_KEY_REGEX = /^G[A-Z2-7]{55}$/;
67
- /**
68
- * Decode an unpadded RFC 4648 base32 string. Callers guarantee the input already matched one of the
69
- * alphabet regexes below. Any bits left over past the last whole byte are dropped, so a decode alone
70
- * does NOT prove the input was canonical — see {@link isValidEd25519ChainCode}, which re-encodes.
71
- */
28
+ const BASE32_ROOT_REGEX = /^[A-Z2-7]{103}$/;
29
+ const STRKEY_PUBLIC_KEY_REGEX = /^G[A-Z2-7]{55}$/;
30
+ const STRKEY_SECRET_SEED_REGEX = /^S[A-Z2-7]{55}$/;
31
+ const STRKEY_VERSION_PUBLIC_KEY = 6 << 3;
32
+ const STRKEY_VERSION_SECRET_SEED = 18 << 3;
33
+ const STRKEY_DECODED_BYTES = 35;
72
34
  function base32Decode(input) {
73
- const out = Buffer.alloc(Math.floor((input.length * 5) / 8));
35
+ const output = Buffer.alloc(Math.floor((input.length * 5) / 8));
74
36
  let bits = 0;
75
37
  let value = 0;
76
- let index = 0;
38
+ let offset = 0;
77
39
  for (const char of input) {
78
40
  value = (value << 5) | BASE32_ALPHABET.indexOf(char);
79
41
  bits += 5;
80
42
  if (bits >= 8) {
81
43
  bits -= 8;
82
- out[index++] = (value >>> bits) & 0xff;
44
+ output[offset++] = (value >>> bits) & 0xff;
83
45
  }
84
46
  }
85
- return out;
47
+ return output;
86
48
  }
87
- /** Encode to unpadded RFC 4648 base32. Trailing bits of the final character are zero-filled. */
88
49
  function base32Encode(data) {
89
50
  let bits = 0;
90
51
  let value = 0;
91
- let out = '';
52
+ let output = '';
92
53
  for (const byte of data) {
93
54
  value = (value << 8) | byte;
94
55
  bits += 8;
95
56
  while (bits >= 5) {
96
57
  bits -= 5;
97
- out += BASE32_ALPHABET[(value >>> bits) & 0x1f];
58
+ output += BASE32_ALPHABET[(value >>> bits) & 0x1f];
98
59
  }
99
60
  }
100
61
  if (bits > 0) {
101
- out += BASE32_ALPHABET[(value << (5 - bits)) & 0x1f];
62
+ output += BASE32_ALPHABET[(value << (5 - bits)) & 0x1f];
102
63
  }
103
- return out;
64
+ return output;
104
65
  }
105
- /** CRC16-XModem, the checksum Stellar StrKey appends (little-endian) to the versioned payload. */
106
66
  function crc16Xmodem(data) {
107
- let crc = 0x0000;
67
+ let crc = 0;
108
68
  for (const byte of data) {
109
- let code = (crc >>> 8) & 0xff;
110
- code ^= byte;
111
- code ^= code >>> 4;
112
- crc = ((crc << 8) & 0xffff) ^ ((code << 12) & 0xffff) ^ ((code << 5) & 0xffff) ^ code;
69
+ crc ^= byte << 8;
70
+ for (let bit = 0; bit < 8; bit++) {
71
+ crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;
72
+ }
113
73
  }
114
- return crc & 0xffff;
74
+ return crc;
115
75
  }
116
- /**
117
- * Returns true iff `pub` is a valid Stellar StrKey ed25519 public key.
118
- *
119
- * Implemented here rather than pulled from `stellar-sdk` because `sdk-core` must not depend on a
120
- * coin module. The pub half is validated by CHECKSUM, not merely by length and alphabet — a
121
- * 56-character `G…` string with a corrupted body is rejected.
122
- */
123
- function isValidEd25519StrKeyPublicKey(pub) {
124
- if (!STRKEY_ED25519_PUBLIC_KEY_REGEX.test(pub)) {
125
- return false;
126
- }
127
- const decoded = base32Decode(pub);
128
- if (decoded.length !== STRKEY_DECODED_LENGTH || decoded[0] !== STRKEY_VERSION_BYTE_ED25519_PUBLIC_KEY) {
129
- return false;
76
+ function decodeStrKey(value, version, label) {
77
+ const decoded = base32Decode(value);
78
+ if (decoded.length !== STRKEY_DECODED_BYTES ||
79
+ decoded[0] !== version ||
80
+ base32Encode(decoded) !== value ||
81
+ crc16Xmodem(decoded.subarray(0, STRKEY_DECODED_BYTES - 2)) !== decoded.readUInt16LE(STRKEY_DECODED_BYTES - 2)) {
82
+ throw new Error(`Invalid ed25519 StrKey ${label}`);
130
83
  }
131
- return (crc16Xmodem(decoded.subarray(0, STRKEY_DECODED_LENGTH - 2)) === decoded.readUInt16LE(STRKEY_DECODED_LENGTH - 2));
84
+ return decoded.subarray(1, 33);
132
85
  }
133
- /**
134
- * Returns true iff `chainCode` is the canonical base32 encoding of exactly 32 bytes.
135
- *
136
- * The length check alone is not sufficient. 52 base32 characters carry 260 bits but a chain code is
137
- * only 256, so the final character has 4 unused low bits — 16 distinct strings decode to the same 32
138
- * bytes. Only the one whose trailing bits are zero is accepted, which the re-encode enforces. Were
139
- * non-canonical spellings allowed, one key could be persisted under several different composite pubs
140
- * and equality against a stored pub would spuriously fail.
141
- */
142
- function isValidEd25519ChainCode(chainCode) {
143
- if (!CHAIN_CODE_REGEX.test(chainCode)) {
144
- return false;
145
- }
146
- return base32Encode(base32Decode(chainCode)) === chainCode;
86
+ /** Returns true for canonical base32-encoded 64-byte public derivation material. */
87
+ function isDerivableEd25519Pub(pub) {
88
+ return BASE32_ROOT_REGEX.test(pub) && base32Encode(base32Decode(pub)) === pub;
147
89
  }
148
- /**
149
- * Mint a fresh chain code for a derivable slot-④ root, base32-encoded.
150
- *
151
- * The chain code is independent randomness (TDD Part II-3 D1) — it is NOT derived from the seed, so
152
- * it can be generated wherever the composite pub is assembled. Encoding 32 bytes always yields the
153
- * canonical form, so the result satisfies {@link isValidEd25519ChainCode} by construction.
154
- */
155
- function generateEd25519ChainCodeBase32() {
156
- return base32Encode((0, crypto_1.randomBytes)(exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES));
90
+ /** Throws unless the value is canonical base32-encoded 64-byte root material. */
91
+ function assertDerivableEd25519Pub(pub) {
92
+ if (!isDerivableEd25519Pub(pub)) {
93
+ throw new Error('Invalid derivable ed25519 pub: expected 64 bytes of canonical base32');
94
+ }
157
95
  }
158
- /**
159
- * Compose a derivable slot-④ root pub from its two halves.
160
- *
161
- * Throws when either half is malformed: silently emitting a composite whose halves do not round-trip
162
- * would persist a root pub from which no correct co-signer key can ever be derived.
163
- */
96
+ /** Compose raw public-key and chain-code bytes into one base32 root value. */
164
97
  function encodeDerivableEd25519Pub(pub, chainCode) {
165
- if (!isValidEd25519StrKeyPublicKey(pub)) {
166
- throw new Error('Invalid derivable ed25519 pub: pub half is not a valid ed25519 public key');
167
- }
168
- if (!isValidEd25519ChainCode(chainCode)) {
169
- throw new Error('Invalid derivable ed25519 pub: chainCode must be 52 canonical base32 characters');
98
+ if (pub.length !== exports.DERIVABLE_ED25519_PUBLIC_KEY_BYTES || chainCode.length !== exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES) {
99
+ throw new Error('Invalid derivable ed25519 pub: expected 32-byte public key and chain code buffers');
170
100
  }
171
- return `${pub}${chainCode}`;
101
+ return base32Encode(Buffer.concat([pub, chainCode]));
172
102
  }
173
- /**
174
- * Split a composite slot-④ root pub back into its two halves.
175
- *
176
- * Throws unless the input is EXACTLY the composite form. A lenient decode that accepted a bare
177
- * 56-character pub would hand callers an empty chain code and derive every co-signer from the same
178
- * (zero-length) entropy.
179
- */
103
+ /** Decode a base32 root into raw public-key and chain-code buffers. */
180
104
  function decodeDerivableEd25519Pub(composite) {
181
- if (composite.length !== exports.DERIVABLE_ED25519_PUB_LENGTH) {
182
- throw new Error(`Invalid derivable ed25519 pub: expected ${exports.DERIVABLE_ED25519_PUB_LENGTH} characters, got ${composite.length}`);
105
+ assertDerivableEd25519Pub(composite);
106
+ const decoded = base32Decode(composite);
107
+ return {
108
+ pub: decoded.subarray(0, exports.DERIVABLE_ED25519_PUBLIC_KEY_BYTES),
109
+ chainCode: decoded.subarray(exports.DERIVABLE_ED25519_PUBLIC_KEY_BYTES),
110
+ };
111
+ }
112
+ /** Generate a fresh raw 32-byte chain code for root composition. */
113
+ function generateEd25519ChainCode() {
114
+ return (0, crypto_1.randomBytes)(exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES);
115
+ }
116
+ function decodeEd25519StrKeyPublicKey(pub) {
117
+ if (!STRKEY_PUBLIC_KEY_REGEX.test(pub)) {
118
+ throw new Error('Invalid ed25519 StrKey public key');
183
119
  }
184
- const pub = composite.slice(0, exports.DERIVABLE_ED25519_PUB_SPLIT_OFFSET);
185
- const chainCode = composite.slice(exports.DERIVABLE_ED25519_PUB_SPLIT_OFFSET);
186
- if (!isValidEd25519StrKeyPublicKey(pub)) {
187
- throw new Error('Invalid derivable ed25519 pub: pub half is not a valid ed25519 public key');
120
+ return decodeStrKey(pub, STRKEY_VERSION_PUBLIC_KEY, 'public key');
121
+ }
122
+ function isValidEd25519StrKeyPublicKey(pub) {
123
+ try {
124
+ decodeEd25519StrKeyPublicKey(pub);
125
+ return true;
126
+ }
127
+ catch {
128
+ return false;
188
129
  }
189
- if (!isValidEd25519ChainCode(chainCode)) {
190
- throw new Error('Invalid derivable ed25519 pub: chainCode must be 52 canonical base32 characters');
130
+ }
131
+ function decodeEd25519StrKeySecretSeed(seed) {
132
+ if (!STRKEY_SECRET_SEED_REGEX.test(seed)) {
133
+ throw new Error('Invalid ed25519 StrKey secret seed');
134
+ }
135
+ return decodeStrKey(seed, STRKEY_VERSION_SECRET_SEED, 'secret seed');
136
+ }
137
+ function encodeEd25519StrKeyPublicKey(rawPub) {
138
+ if (rawPub.length !== exports.DERIVABLE_ED25519_PUBLIC_KEY_BYTES) {
139
+ throw new Error('ed25519 public key must be 32 bytes');
191
140
  }
192
- return { pub, chainCode };
141
+ const payload = Buffer.concat([Buffer.from([STRKEY_VERSION_PUBLIC_KEY]), rawPub]);
142
+ const checksum = Buffer.alloc(2);
143
+ checksum.writeUInt16LE(crc16Xmodem(payload), 0);
144
+ return base32Encode(Buffer.concat([payload, checksum]));
193
145
  }
194
- /** Returns true iff `composite` is a well-formed derivable slot-④ root pub. */
195
- function isDerivableEd25519Pub(composite) {
146
+ function isChecksumValidStrKeyEd25519Pub(pub) {
196
147
  try {
197
- decodeDerivableEd25519Pub(composite);
148
+ decodeEd25519StrKeyPublicKey(pub);
198
149
  return true;
199
150
  }
200
151
  catch {
201
152
  return false;
202
153
  }
203
154
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZhYmxlRWQyNTUxOVB1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zYWZlL2Rlcml2YWJsZUVkMjU1MTlQdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7OztBQXNHSCxzRUFXQztBQVdELDBEQUtDO0FBU0Qsd0VBRUM7QUFRRCw4REFRQztBQVNELDhEQWVDO0FBR0Qsc0RBT0M7QUE1TEQsbUNBQXFDO0FBRXJDOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFFckQsa0RBQWtEO0FBQ3JDLFFBQUEsa0NBQWtDLEdBQUcsRUFBRSxDQUFDO0FBRXJELDRGQUE0RjtBQUMvRSxRQUFBLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQztBQUV0RCxtREFBbUQ7QUFDdEMsUUFBQSw0QkFBNEIsR0FBRywwQ0FBa0MsR0FBRywyQ0FBbUMsQ0FBQztBQUVySDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUUxQyw0REFBNEQ7QUFDNUQsTUFBTSxzQ0FBc0MsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXRELDhFQUE4RTtBQUM5RSxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUVqQyxNQUFNLGVBQWUsR0FBRyxrQ0FBa0MsQ0FBQztBQUMzRCxNQUFNLCtCQUErQixHQUFHLGlCQUFpQixDQUFDO0FBRTFEOzs7O0dBSUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLEtBQUssR0FBRyxD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QyxDQUFDO0lBQ25FLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsMENBQWtDLENBQUMsQ0FBQztJQUN0RSxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUZBQWlGLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLFNBQWdCLHFCQUFxQixDQUFDLFNBQWlCO0lBQ3JELElBQUksQ0FBQztRQUNILHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgRW5jb2RlL2RlY29kZSBoZWxwZXJzIGZvciB0aGUgKmRlcml2YWJsZSogZm9ybSBvZiBhIHNhZmUgc2xvdC3ikaNcbiAqIChgZWQyNTUxOU11bHRpc2lnYCkgcm9vdCBwdWJsaWMga2V5LlxuICpcbiAqIFdhbGxldCBTYWZlcyB2MSBzb2Z0LWRlcml2ZXMgdGhlIGJhY2t1cCBhbmQgQml0R28gY28tc2lnbmVyIGtleXMgb2YgZXZlcnkgbWludGVkIHdhbGxldCBmcm9tIHRoZVxuICogc2FmZSdzIHJvb3QgcHVibGljIGtleXMsIGFuZCBzb2Z0IGRlcml2YXRpb24gbmVlZHMgYSBjaGFpbiBjb2RlLiBUaGUgc2VjcDI1NmsxIHNsb3QgZ2V0cyBvbmUgZm9yXG4gKiBmcmVlIChhIEJJUDMyIHhwdWIgaXMgYHBvaW50IHx8IGNoYWluY29kZWApOyBhIGJhcmUgU3RlbGxhciBTdHJLZXkgYEfigKZgIGhhcyBub3doZXJlIHRvIHB1dCBvbmUuXG4gKiBQZXIgVEREIFBhcnQgSUktMyDCpzEuMyB3ZSB0aGVyZWZvcmUgY29uY2F0ZW5hdGUgdGhlIGNoYWluIGNvZGUgb250byBgcHViYCByYXRoZXIgdGhhbiBpbnRyb2R1Y2UgYVxuICogbmV3IGZpZWxkIOKAlCB0aGUgc2FtZSBzaGFwZSBCaXRHbyBhbHJlYWR5IHVzZXMgZm9yIHRoZSBNUEMgc2xvdHMsIHdob3NlIGBjb21tb25LZXljaGFpbmAgaXNcbiAqIGBwdWIgfHwgY2hhaW5jb2RlYC5cbiAqXG4gKiAgIHB1YiA9IDxTdHJLZXkgZWQyNTUxOSBwdWJsaWMga2V5PiB8fCA8Y2hhaW5Db2RlLCA1MiBiYXNlMzIgY2hhcnM+XG4gKiAgICAgICAgICBleGFjdGx5IDU2IGNoYXJzLCAnR+KApicgICAgICAgICBleGFjdGx5IDUyIGNoYXJzXG4gKiAgIHRvdGFsIGxlbmd0aCBleGFjdGx5IDEwOFxuICpcbiAqIEJvdGggaGFsdmVzIHVzZSB0aGUgU0FNRSBlbmNvZGluZyDigJQgUkZDIDQ2NDggYmFzZTMyIG92ZXIgdGhlIGFscGhhYmV0IFN0cktleSBpdHNlbGYgdXNlcyDigJQgc28gdGhlXG4gKiBjb21wb3NpdGUgaXMgb25lIHVuaWZvcm0gc3RyaW5nIHJhdGhlciB0aGFuIGEgYmFzZTMyIHB1YiB3aXRoIGEgaGV4IHRhaWwgYm9sdGVkIG9uLlxuICpcbiAqIFN0cktleSBlZDI1NTE5IHB1YmxpYyBrZXlzIGFyZSBhbHdheXMgZXhhY3RseSA1NiBjaGFyYWN0ZXJzLCBzbyB0aGUgc3BsaXQgaXMgYSBmaXhlZCBvZmZzZXQuIFRoYXRcbiAqIG9mZnNldCBpcyBhIENST1NTLVJFUE8gY29udHJhY3Qgc2hhcmVkIHdpdGggd2FsbGV0LXBsYXRmb3JtLCBgbW9kdWxlcy9rZXktY2FyZGAgYW5kIFdSVzsgZm91clxuICogaW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zIGRyaWZ0aW5nIHByb2R1Y2VzIHVucmVjb3ZlcmFibGUgd2FsbGV0cy4gRXZlcnkgY2FsbCBzaXRlIOKAlCBoZXJlIGFuZCBpblxuICogdGhlIG90aGVyIHJlcG9zIOKAlCBNVVNUIGdvIHRocm91Z2ggdGhlc2UgaGVscGVycyByYXRoZXIgdGhhbiBzbGljaW5nIGlubGluZS5cbiAqL1xuXG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKlxuICogVGhlIGZpeGVkIGNoYXJhY3RlciBvZmZzZXQgYXQgd2hpY2ggYSBjb21wb3NpdGUgc2xvdC3ikaMgcHViIHNwbGl0cyBpbnRvIChTdHJLZXkgcHViLCBjaGFpbiBjb2RlKS5cbiAqIFN0ZWxsYXIgU3RyS2V5IGVkMjU1MTkgcHVibGljIGtleXMgYXJlIGEgZml4ZWQgNTYgY2hhcmFjdGVycywgc28gbm8gbGVuZ3RoIHByZWZpeCBvciBzZXBhcmF0b3IgaXNcbiAqIG5lZWRlZC5cbiAqXG4gKiBNVVNUIHN0YXkgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNvbnN0YW50IGluIHdhbGxldC1wbGF0Zm9ybSwgYG1vZHVsZXMva2V5LWNhcmRgIGFuZCBXUlc6XG4gKiBhIGRpdmVyZ2VudCBvZmZzZXQgc3BsaXRzIHRoZSBwdWIgaW4gdGhlIHdyb25nIHBsYWNlIGFuZCBkZXJpdmVzIGNvLXNpZ25lciBrZXlzIG5vYm9keSBlbHNlIGNhblxuICogcmVwcm9kdWNlLCBwZXJtYW5lbnRseSBicmlja2luZyB0aGUgd2FsbGV0cyBtaW50ZWQgd2l0aCBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFUklWQUJMRV9FRDI1NTE5X1BVQl9TUExJVF9PRkZTRVQgPSA1NjtcblxuLyoqIFJhdyBsZW5ndGggb2YgYSBjaGFpbiBjb2RlIGJlZm9yZSBlbmNvZGluZy4gKi9cbmV4cG9ydCBjb25zdCBERVJJVkFCTEVfRUQyNTUxOV9DSEFJTl9DT0RFX0JZVEVTID0gMzI7XG5cbi8qKiBMZW5ndGggb2YgdGhlIGJhc2UzMi1lbmNvZGVkIGNoYWluIGNvZGUgaGFsZjogY2VpbCgzMiBieXRlcyAqIDggLyA1KSA9IDUyIGNoYXJhY3RlcnMuICovXG5leHBvcnQgY29uc3QgREVSSVZBQkxFX0VEMjU1MTlfQ0hBSU5fQ09ERV9MRU5HVEggPSA1MjtcblxuLyoqIFRvdGFsIGxlbmd0aCBvZiBhIHdlbGwtZm9ybWVkIGNvbXBvc2l0ZSBwdWIuICovXG5leHBvcnQgY29uc3QgREVSSVZBQkxFX0VEMjU1MTlfUFVCX0xFTkdUSCA9IERFUklWQUJMRV9FRDI1NTE5X1BVQl9TUExJVF9PRkZTRVQgKyBERVJJVkFCTEVfRUQyNTUxOV9DSEFJTl9DT0RFX0xFTkdUSDtcblxuLyoqXG4gKiBDaGFpbiBjb2RlcyBhcmUgc2VyaWFsaXplZCBhcyB1bnBhZGRlZCBSRkMgNDY0OCBiYXNlMzIsIHRoZSBzYW1lIGVuY29kaW5nIGFuZCBhbHBoYWJldCBTdHJLZXlcbiAqIHVzZXMsIHNvIHRoZSBjb21wb3NpdGUgcHViIGlzIGJhc2UzMiBlbmQgdG8gZW5kLlxuICpcbiAqIFRoZSBhbHBoYWJldCBpcyB1cHBlcmNhc2Utb25seSBhbmQgbG93ZXJjYXNlIGlzIHJlamVjdGVkIHJhdGhlciB0aGFuIG5vcm1hbGl6ZWQ6IGFjY2VwdGluZyBib3RoXG4gKiBjYXNpbmdzIHdvdWxkIG1ha2UgdGhlIGNvbXBvc2l0ZSBub24tY2Fub25pY2FsLCBzbyB0aGUgc2FtZSBrZXkgY291bGQgYmUgc3RvcmVkIHVuZGVyIHR3b1xuICogZGlzdGluY3Qgc3RyaW5ncyBhbmQgZXF1YWxpdHkgYWdhaW5zdCBhIHByZXZpb3VzbHktcGVyc2lzdGVkIHB1YiB3b3VsZCBzcHVyaW91c2x5IGZhaWwuXG4gKi9cbmNvbnN0IENIQUlOX0NPREVfUkVHRVggPSAvXltBLVoyLTddezUyfSQvO1xuXG4vKiogU3RyS2V5IHZlcnNpb24gYnl0ZSBmb3IgYW4gZWQyNTUxOSBwdWJsaWMga2V5IChgR+KApmApLiAqL1xuY29uc3QgU1RSS0VZX1ZFUlNJT05fQllURV9FRDI1NTE5X1BVQkxJQ19LRVkgPSA2IDw8IDM7XG5cbi8qKiBEZWNvZGVkIFN0cktleSBwYXlsb2FkOiAxIHZlcnNpb24gYnl0ZSArIDMyLWJ5dGUga2V5ICsgMi1ieXRlIGNoZWNrc3VtLiAqL1xuY29uc3QgU1RSS0VZX0RFQ09ERURfTEVOR1RIID0gMzU7XG5cbmNvbnN0IEJBU0UzMl9BTFBIQUJFVCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2Nyc7XG5jb25zdCBTVFJLRVlfRUQyNTUxOV9QVUJMSUNfS0VZX1JFR0VYID0gL15HW0EtWjItN117NTV9JC87XG5cbi8qKlxuICogRGVjb2RlIGFuIHVucGFkZGVkIFJGQyA0NjQ4IGJhc2UzMiBzdHJpbmcuIENhbGxlcnMgZ3VhcmFudGVlIHRoZSBpbnB1dCBhbHJlYWR5IG1hdGNoZWQgb25lIG9mIHRoZVxuICogYWxwaGFiZXQgcmVnZXhlcyBiZWxvdy4gQW55IGJpdHMgbGVmdCBvdmVyIHBhc3QgdGhlIGxhc3Qgd2hvbGUgYnl0ZSBhcmUgZHJvcHBlZCwgc28gYSBkZWNvZGUgYWxvbmVcbiAqIGRvZXMgTk9UIHByb3ZlIHRoZSBpbnB1dCB3YXMgY2Fub25pY2FsIOKAlCBzZWUge0BsaW5rIGlzVmFsaWRFZDI1NTE5Q2hhaW5Db2RlfSwgd2hpY2ggcmUtZW5jb2Rlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZTMyRGVjb2RlKGlucHV0OiBzdHJpbmcpOiBCdWZmZXIge1xuICBjb25zdCBvdXQgPSBCdWZmZXIuYWxsb2MoTWF0aC5mbG9vcigoaW5wdXQubGVuZ3RoICogNSkgLyA4KSk7XG4gIGxldCBiaXRzID0gMDtcbiAgbGV0IHZhbHVlID0gMDtcbiAgbGV0IGluZGV4ID0gMDtcbiAgZm9yIChjb25zdCBjaGFyIG9mIGlucHV0KSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgNSkgfCBCQVNFMzJfQUxQSEFCRVQuaW5kZXhPZihjaGFyKTtcbiAgICBiaXRzICs9IDU7XG4gICAgaWYgKGJpdHMgPj0gOCkge1xuICAgICAgYml0cyAtPSA4O1xuICAgICAgb3V0W2luZGV4KytdID0gKHZhbHVlID4+PiBiaXRzKSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBFbmNvZGUgdG8gdW5wYWRkZWQgUkZDIDQ2NDggYmFzZTMyLiBUcmFpbGluZyBiaXRzIG9mIHRoZSBmaW5hbCBjaGFyYWN0ZXIgYXJlIHplcm8tZmlsbGVkLiAqL1xuZnVuY3Rpb24gYmFzZTMyRW5jb2RlKGRhdGE6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGxldCBiaXRzID0gMDtcbiAgbGV0IHZhbHVlID0gMDtcbiAgbGV0IG91dCA9ICcnO1xuICBmb3IgKGNvbnN0IGJ5dGUgb2YgZGF0YSkge1xuICAgIHZhbHVlID0gKHZhbHVlIDw8IDgpIHwgYnl0ZTtcbiAgICBiaXRzICs9IDg7XG4gICAgd2hpbGUgKGJpdHMgPj0gNSkge1xuICAgICAgYml0cyAtPSA1O1xuICAgICAgb3V0ICs9IEJBU0UzMl9BTFBIQUJFVFsodmFsdWUgPj4+IGJpdHMpICYgMHgxZl07XG4gICAgfVxuICB9XG4gIGlmIChiaXRzID4gMCkge1xuICAgIG91dCArPSBCQVNFMzJfQUxQSEFCRVRbKHZhbHVlIDw8ICg1IC0gYml0cykpICYgMHgxZl07XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIENSQzE2LVhNb2RlbSwgdGhlIGNoZWNrc3VtIFN0ZWxsYXIgU3RyS2V5IGFwcGVuZHMgKGxpdHRsZS1lbmRpYW4pIHRvIHRoZSB2ZXJzaW9uZWQgcGF5bG9hZC4gKi9cbmZ1bmN0aW9uIGNyYzE2WG1vZGVtKGRhdGE6IEJ1ZmZlcik6IG51bWJlciB7XG4gIGxldCBjcmMgPSAweDAwMDA7XG4gIGZvciAoY29uc3QgYnl0ZSBvZiBkYXRhKSB7XG4gICAgbGV0IGNvZGUgPSAoY3JjID4+PiA4KSAmIDB4ZmY7XG4gICAgY29kZSBePSBieXRlO1xuICAgIGNvZGUgXj0gY29kZSA+Pj4gNDtcbiAgICBjcmMgPSAoKGNyYyA8PCA4KSAmIDB4ZmZmZikgXiAoKGNvZGUgPDwgMTIpICYgMHhmZmZmKSBeICgoY29kZSA8PCA1KSAmIDB4ZmZmZikgXiBjb2RlO1xuICB9XG4gIHJldHVybiBjcmMgJiAweGZmZmY7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmZiBgcHViYCBpcyBhIHZhbGlkIFN0ZWxsYXIgU3RyS2V5IGVkMjU1MTkgcHVibGljIGtleS5cbiAqXG4gKiBJbXBsZW1lbnRlZCBoZXJlIHJhdGhlciB0aGFuIHB1bGxlZCBmcm9tIGBzdGVsbGFyLXNka2AgYmVjYXVzZSBgc2RrLWNvcmVgIG11c3Qgbm90IGRlcGVuZCBvbiBhXG4gKiBjb2luIG1vZHVsZS4gVGhlIHB1YiBoYWxmIGlzIHZhbGlkYXRlZCBieSBDSEVDS1NVTSwgbm90IG1lcmVseSBieSBsZW5ndGggYW5kIGFscGhhYmV0IOKAlCBhXG4gKiA1Ni1jaGFyYWN0ZXIgYEfigKZgIHN0cmluZyB3aXRoIGEgY29ycnVwdGVkIGJvZHkgaXMgcmVqZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRWQyNTUxOVN0cktleVB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIVNUUktFWV9FRDI1NTE5X1BVQkxJQ19LRVlfUkVHRVgudGVzdChwdWIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGRlY29kZWQgPSBiYXNlMzJEZWNvZGUocHViKTtcbiAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSBTVFJLRVlfREVDT0RFRF9MRU5HVEggfHwgZGVjb2RlZFswXSAhPT0gU1RSS0VZX1ZFUlNJT05fQllURV9FRDI1NTE5X1BVQkxJQ19LRVkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBjcmMxNlhtb2RlbShkZWNvZGVkLnN1YmFycmF5KDAsIFNUUktFWV9ERUNPREVEX0xFTkdUSCAtIDIpKSA9PT0gZGVjb2RlZC5yZWFkVUludDE2TEUoU1RSS0VZX0RFQ09ERURfTEVOR1RIIC0gMilcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWZmIGBjaGFpbkNvZGVgIGlzIHRoZSBjYW5vbmljYWwgYmFzZTMyIGVuY29kaW5nIG9mIGV4YWN0bHkgMzIgYnl0ZXMuXG4gKlxuICogVGhlIGxlbmd0aCBjaGVjayBhbG9uZSBpcyBub3Qgc3VmZmljaWVudC4gNTIgYmFzZTMyIGNoYXJhY3RlcnMgY2FycnkgMjYwIGJpdHMgYnV0IGEgY2hhaW4gY29kZSBpc1xuICogb25seSAyNTYsIHNvIHRoZSBmaW5hbCBjaGFyYWN0ZXIgaGFzIDQgdW51c2VkIGxvdyBiaXRzIOKAlCAxNiBkaXN0aW5jdCBzdHJpbmdzIGRlY29kZSB0byB0aGUgc2FtZSAzMlxuICogYnl0ZXMuIE9ubHkgdGhlIG9uZSB3aG9zZSB0cmFpbGluZyBiaXRzIGFyZSB6ZXJvIGlzIGFjY2VwdGVkLCB3aGljaCB0aGUgcmUtZW5jb2RlIGVuZm9yY2VzLiBXZXJlXG4gKiBub24tY2Fub25pY2FsIHNwZWxsaW5ncyBhbGxvd2VkLCBvbmUga2V5IGNvdWxkIGJlIHBlcnNpc3RlZCB1bmRlciBzZXZlcmFsIGRpZmZlcmVudCBjb21wb3NpdGUgcHVic1xuICogYW5kIGVxdWFsaXR5IGFnYWluc3QgYSBzdG9yZWQgcHViIHdvdWxkIHNwdXJpb3VzbHkgZmFpbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5Q2hhaW5Db2RlKGNoYWluQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghQ0hBSU5fQ09ERV9SRUdFWC50ZXN0KGNoYWluQ29kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGJhc2UzMkVuY29kZShiYXNlMzJEZWNvZGUoY2hhaW5Db2RlKSkgPT09IGNoYWluQ29kZTtcbn1cblxuLyoqXG4gKiBNaW50IGEgZnJlc2ggY2hhaW4gY29kZSBmb3IgYSBkZXJpdmFibGUgc2xvdC3ikaMgcm9vdCwgYmFzZTMyLWVuY29kZWQuXG4gKlxuICogVGhlIGNoYWluIGNvZGUgaXMgaW5kZXBlbmRlbnQgcmFuZG9tbmVzcyAoVEREIFBhcnQgSUktMyBEMSkg4oCUIGl0IGlzIE5PVCBkZXJpdmVkIGZyb20gdGhlIHNlZWQsIHNvXG4gKiBpdCBjYW4gYmUgZ2VuZXJhdGVkIHdoZXJldmVyIHRoZSBjb21wb3NpdGUgcHViIGlzIGFzc2VtYmxlZC4gRW5jb2RpbmcgMzIgYnl0ZXMgYWx3YXlzIHlpZWxkcyB0aGVcbiAqIGNhbm9uaWNhbCBmb3JtLCBzbyB0aGUgcmVzdWx0IHNhdGlzZmllcyB7QGxpbmsgaXNWYWxpZEVkMjU1MTlDaGFpbkNvZGV9IGJ5IGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRWQyNTUxOUNoYWluQ29kZUJhc2UzMigpOiBzdHJpbmcge1xuICByZXR1cm4gYmFzZTMyRW5jb2RlKHJhbmRvbUJ5dGVzKERFUklWQUJMRV9FRDI1NTE5X0NIQUlOX0NPREVfQllURVMpKTtcbn1cblxuLyoqXG4gKiBDb21wb3NlIGEgZGVyaXZhYmxlIHNsb3Qt4pGjIHJvb3QgcHViIGZyb20gaXRzIHR3byBoYWx2ZXMuXG4gKlxuICogVGhyb3dzIHdoZW4gZWl0aGVyIGhhbGYgaXMgbWFsZm9ybWVkOiBzaWxlbnRseSBlbWl0dGluZyBhIGNvbXBvc2l0ZSB3aG9zZSBoYWx2ZXMgZG8gbm90IHJvdW5kLXRyaXBcbiAqIHdvdWxkIHBlcnNpc3QgYSByb290IHB1YiBmcm9tIHdoaWNoIG5vIGNvcnJlY3QgY28tc2lnbmVyIGtleSBjYW4gZXZlciBiZSBkZXJpdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlRGVyaXZhYmxlRWQyNTUxOVB1YihwdWI6IHN0cmluZywgY2hhaW5Db2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWlzVmFsaWRFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1YikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVyaXZhYmxlIGVkMjU1MTkgcHViOiBwdWIgaGFsZiBpcyBub3QgYSB2YWxpZCBlZDI1NTE5IHB1YmxpYyBrZXknKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRFZDI1NTE5Q2hhaW5Db2RlKGNoYWluQ29kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVyaXZhYmxlIGVkMjU1MTkgcHViOiBjaGFpbkNvZGUgbXVzdCBiZSA1MiBjYW5vbmljYWwgYmFzZTMyIGNoYXJhY3RlcnMnKTtcbiAgfVxuICByZXR1cm4gYCR7cHVifSR7Y2hhaW5Db2RlfWA7XG59XG5cbi8qKlxuICogU3BsaXQgYSBjb21wb3NpdGUgc2xvdC3ikaMgcm9vdCBwdWIgYmFjayBpbnRvIGl0cyB0d28gaGFsdmVzLlxuICpcbiAqIFRocm93cyB1bmxlc3MgdGhlIGlucHV0IGlzIEVYQUNUTFkgdGhlIGNvbXBvc2l0ZSBmb3JtLiBBIGxlbmllbnQgZGVjb2RlIHRoYXQgYWNjZXB0ZWQgYSBiYXJlXG4gKiA1Ni1jaGFyYWN0ZXIgcHViIHdvdWxkIGhhbmQgY2FsbGVycyBhbiBlbXB0eSBjaGFpbiBjb2RlIGFuZCBkZXJpdmUgZXZlcnkgY28tc2lnbmVyIGZyb20gdGhlIHNhbWVcbiAqICh6ZXJvLWxlbmd0aCkgZW50cm9weS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZURlcml2YWJsZUVkMjU1MTlQdWIoY29tcG9zaXRlOiBzdHJpbmcpOiB7IHB1Yjogc3RyaW5nOyBjaGFpbkNvZGU6IHN0cmluZyB9IHtcbiAgaWYgKGNvbXBvc2l0ZS5sZW5ndGggIT09IERFUklWQUJMRV9FRDI1NTE5X1BVQl9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBkZXJpdmFibGUgZWQyNTUxOSBwdWI6IGV4cGVjdGVkICR7REVSSVZBQkxFX0VEMjU1MTlfUFVCX0xFTkdUSH0gY2hhcmFjdGVycywgZ290ICR7Y29tcG9zaXRlLmxlbmd0aH1gXG4gICAgKTtcbiAgfVxuICBjb25zdCBwdWIgPSBjb21wb3NpdGUuc2xpY2UoMCwgREVSSVZBQkxFX0VEMjU1MTlfUFVCX1NQTElUX09GRlNFVCk7XG4gIGNvbnN0IGNoYWluQ29kZSA9IGNvbXBvc2l0ZS5zbGljZShERVJJVkFCTEVfRUQyNTUxOV9QVUJfU1BMSVRfT0ZGU0VUKTtcbiAgaWYgKCFpc1ZhbGlkRWQyNTUxOVN0cktleVB1YmxpY0tleShwdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRlcml2YWJsZSBlZDI1NTE5IHB1YjogcHViIGhhbGYgaXMgbm90IGEgdmFsaWQgZWQyNTUxOSBwdWJsaWMga2V5Jyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkRWQyNTUxOUNoYWluQ29kZShjaGFpbkNvZGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRlcml2YWJsZSBlZDI1NTE5IHB1YjogY2hhaW5Db2RlIG11c3QgYmUgNTIgY2Fub25pY2FsIGJhc2UzMiBjaGFyYWN0ZXJzJyk7XG4gIH1cbiAgcmV0dXJuIHsgcHViLCBjaGFpbkNvZGUgfTtcbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZmYgYGNvbXBvc2l0ZWAgaXMgYSB3ZWxsLWZvcm1lZCBkZXJpdmFibGUgc2xvdC3ikaMgcm9vdCBwdWIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEZXJpdmFibGVFZDI1NTE5UHViKGNvbXBvc2l0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgZGVjb2RlRGVyaXZhYmxlRWQyNTUxOVB1Yihjb21wb3NpdGUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
155
+ let eddsaPromise;
156
+ function getEddsa() {
157
+ if (!eddsaPromise) {
158
+ eddsaPromise = (async () => account_lib_1.Eddsa.initialize(await account_lib_1.Ed25519BIP32.initialize()))();
159
+ eddsaPromise.catch(() => {
160
+ eddsaPromise = undefined;
161
+ });
162
+ }
163
+ return eddsaPromise;
164
+ }
165
+ /** Soft-derive `m/<index>` and return the derived raw 32-byte public key. */
166
+ async function softDeriveChildPubEd25519(compositePub, index) {
167
+ if (!Number.isInteger(index) || index < 0 || index > 0x7fffffff) {
168
+ throw new Error(`ed25519 safe co-signer derivation index must be non-hardened, got ${index}`);
169
+ }
170
+ const { pub, chainCode } = decodeDerivableEd25519Pub(compositePub);
171
+ const eddsa = await getEddsa();
172
+ return Buffer.from(eddsa.deriveUnhardened(Buffer.concat([pub, chainCode]).toString('hex'), `m/${index}`).slice(0, 64), 'hex');
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZhYmxlRWQyNTUxOVB1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zYWZlL2Rlcml2YWJsZUVkMjU1MTlQdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBNEVILHNEQUVDO0FBR0QsOERBSUM7QUFHRCw4REFLQztBQUdELDhEQU9DO0FBR0QsNERBRUM7QUFFRCxvRUFLQztBQUVELHNFQU9DO0FBRUQsc0VBS0M7QUFFRCxvRUFRQztBQUVELDBFQU9DO0FBY0QsOERBVUM7QUE1S0QsbUNBQXFDO0FBQ3JDLG1EQUF3RDtBQUUzQyxRQUFBLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztBQUN4QyxRQUFBLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztBQUN4QyxRQUFBLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUVoRCxNQUFNLGVBQWUsR0FBRyxrQ0FBa0MsQ0FBQztBQUMzRCxNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0FBQzVDLE1BQU0sdUJBQXVCLEdBQUcsaUJBQWlCLENBQUM7QUFDbEQsTUFBTSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNLHlCQUF5QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRWhDLFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksTUFBTSxHQUFHLENB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QUFNLFFBQVEsRUFBRSxDQUFDO0lBQy9CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQ2xHLEtBQUssQ0FDTixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRWQyNTUxOSBzYWZlLXJvb3QgcHVibGljIGRlcml2YXRpb24gbWF0ZXJpYWwgYW5kIFN0ZWxsYXIgdXNlci1rZXkgY29kZWNzLlxuICpcbiAqIFNhZmUgYmFja3VwIGFuZCBCaXRHbyByb290cyBzdG9yZSByYXcgcHVibGljIGtleSAoMzIgYnl0ZXMpIHx8IHJhdyBjaGFpbiBjb2RlICgzMiBieXRlcyksXG4gKiBlbmNvZGVkIHRvZ2V0aGVyIGFzIGNhbm9uaWNhbCB1bnBhZGRlZCBSRkMgNDY0OCBiYXNlMzIuIENvaW4tc3BlY2lmaWMgcHVibGljLWtleSBlbmNvZGluZ3MgYXJlXG4gKiBhcHBsaWVkIG9ubHkgdG8gZGVyaXZlZCB3YWxsZXQgY2hpbGRyZW4uXG4gKi9cblxuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgRWQyNTUxOUJJUDMyLCBFZGRzYSB9IGZyb20gJy4uLy4uL2FjY291bnQtbGliJztcblxuZXhwb3J0IGNvbnN0IERFUklWQUJMRV9FRDI1NTE5X1BVQkxJQ19LRVlfQllURVMgPSAzMjtcbmV4cG9ydCBjb25zdCBERVJJVkFCTEVfRUQyNTUxOV9DSEFJTl9DT0RFX0JZVEVTID0gMzI7XG5leHBvcnQgY29uc3QgREVSSVZBQkxFX0VEMjU1MTlfUFVCX0xFTkdUSCA9IDEwMztcblxuY29uc3QgQkFTRTMyX0FMUEhBQkVUID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3JztcbmNvbnN0IEJBU0UzMl9ST09UX1JFR0VYID0gL15bQS1aMi03XXsxMDN9JC87XG5jb25zdCBTVFJLRVlfUFVCTElDX0tFWV9SRUdFWCA9IC9eR1tBLVoyLTddezU1fSQvO1xuY29uc3QgU1RSS0VZX1NFQ1JFVF9TRUVEX1JFR0VYID0gL15TW0EtWjItN117NTV9JC87XG5jb25zdCBTVFJLRVlfVkVSU0lPTl9QVUJMSUNfS0VZID0gNiA8PCAzO1xuY29uc3QgU1RSS0VZX1ZFUlNJT05fU0VDUkVUX1NFRUQgPSAxOCA8PCAzO1xuY29uc3QgU1RSS0VZX0RFQ09ERURfQllURVMgPSAzNTtcblxuZnVuY3Rpb24gYmFzZTMyRGVjb2RlKGlucHV0OiBzdHJpbmcpOiBCdWZmZXIge1xuICBjb25zdCBvdXRwdXQgPSBCdWZmZXIuYWxsb2MoTWF0aC5mbG9vcigoaW5wdXQubGVuZ3RoICogNSkgLyA4KSk7XG4gIGxldCBiaXRzID0gMDtcbiAgbGV0IHZhbHVlID0gMDtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGZvciAoY29uc3QgY2hhciBvZiBpbnB1dCkge1xuICAgIHZhbHVlID0gKHZhbHVlIDw8IDUpIHwgQkFTRTMyX0FMUEhBQkVULmluZGV4T2YoY2hhcik7XG4gICAgYml0cyArPSA1O1xuICAgIGlmIChiaXRzID49IDgpIHtcbiAgICAgIGJpdHMgLT0gODtcbiAgICAgIG91dHB1dFtvZmZzZXQrK10gPSAodmFsdWUgPj4+IGJpdHMpICYgMHhmZjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gYmFzZTMyRW5jb2RlKGRhdGE6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGxldCBiaXRzID0gMDtcbiAgbGV0IHZhbHVlID0gMDtcbiAgbGV0IG91dHB1dCA9ICcnO1xuICBmb3IgKGNvbnN0IGJ5dGUgb2YgZGF0YSkge1xuICAgIHZhbHVlID0gKHZhbHVlIDw8IDgpIHwgYnl0ZTtcbiAgICBiaXRzICs9IDg7XG4gICAgd2hpbGUgKGJpdHMgPj0gNSkge1xuICAgICAgYml0cyAtPSA1O1xuICAgICAgb3V0cHV0ICs9IEJBU0UzMl9BTFBIQUJFVFsodmFsdWUgPj4+IGJpdHMpICYgMHgxZl07XG4gICAgfVxuICB9XG4gIGlmIChiaXRzID4gMCkge1xuICAgIG91dHB1dCArPSBCQVNFMzJfQUxQSEFCRVRbKHZhbHVlIDw8ICg1IC0gYml0cykpICYgMHgxZl07XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gY3JjMTZYbW9kZW0oZGF0YTogQnVmZmVyKTogbnVtYmVyIHtcbiAgbGV0IGNyYyA9IDA7XG4gIGZvciAoY29uc3QgYnl0ZSBvZiBkYXRhKSB7XG4gICAgY3JjIF49IGJ5dGUgPDwgODtcbiAgICBmb3IgKGxldCBiaXQgPSAwOyBiaXQgPCA4OyBiaXQrKykge1xuICAgICAgY3JjID0gY3JjICYgMHg4MDAwID8gKChjcmMgPDwgMSkgXiAweDEwMjEpICYgMHhmZmZmIDogKGNyYyA8PCAxKSAmIDB4ZmZmZjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNyYztcbn1cblxuZnVuY3Rpb24gZGVjb2RlU3RyS2V5KHZhbHVlOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgbGFiZWw6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGNvbnN0IGRlY29kZWQgPSBiYXNlMzJEZWNvZGUodmFsdWUpO1xuICBpZiAoXG4gICAgZGVjb2RlZC5sZW5ndGggIT09IFNUUktFWV9ERUNPREVEX0JZVEVTIHx8XG4gICAgZGVjb2RlZFswXSAhPT0gdmVyc2lvbiB8fFxuICAgIGJhc2UzMkVuY29kZShkZWNvZGVkKSAhPT0gdmFsdWUgfHxcbiAgICBjcmMxNlhtb2RlbShkZWNvZGVkLnN1YmFycmF5KDAsIFNUUktFWV9ERUNPREVEX0JZVEVTIC0gMikpICE9PSBkZWNvZGVkLnJlYWRVSW50MTZMRShTVFJLRVlfREVDT0RFRF9CWVRFUyAtIDIpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlZDI1NTE5IFN0cktleSAke2xhYmVsfWApO1xuICB9XG4gIHJldHVybiBkZWNvZGVkLnN1YmFycmF5KDEsIDMzKTtcbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBmb3IgY2Fub25pY2FsIGJhc2UzMi1lbmNvZGVkIDY0LWJ5dGUgcHVibGljIGRlcml2YXRpb24gbWF0ZXJpYWwuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEZXJpdmFibGVFZDI1NTE5UHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBCQVNFMzJfUk9PVF9SRUdFWC50ZXN0KHB1YikgJiYgYmFzZTMyRW5jb2RlKGJhc2UzMkRlY29kZShwdWIpKSA9PT0gcHViO1xufVxuXG4vKiogVGhyb3dzIHVubGVzcyB0aGUgdmFsdWUgaXMgY2Fub25pY2FsIGJhc2UzMi1lbmNvZGVkIDY0LWJ5dGUgcm9vdCBtYXRlcmlhbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZXJpdmFibGVFZDI1NTE5UHViKHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghaXNEZXJpdmFibGVFZDI1NTE5UHViKHB1YikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVyaXZhYmxlIGVkMjU1MTkgcHViOiBleHBlY3RlZCA2NCBieXRlcyBvZiBjYW5vbmljYWwgYmFzZTMyJyk7XG4gIH1cbn1cblxuLyoqIENvbXBvc2UgcmF3IHB1YmxpYy1rZXkgYW5kIGNoYWluLWNvZGUgYnl0ZXMgaW50byBvbmUgYmFzZTMyIHJvb3QgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlRGVyaXZhYmxlRWQyNTUxOVB1YihwdWI6IEJ1ZmZlciwgY2hhaW5Db2RlOiBCdWZmZXIpOiBzdHJpbmcge1xuICBpZiAocHViLmxlbmd0aCAhPT0gREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUyB8fCBjaGFpbkNvZGUubGVuZ3RoICE9PSBERVJJVkFCTEVfRUQyNTUxOV9DSEFJTl9DT0RFX0JZVEVTKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRlcml2YWJsZSBlZDI1NTE5IHB1YjogZXhwZWN0ZWQgMzItYnl0ZSBwdWJsaWMga2V5IGFuZCBjaGFpbiBjb2RlIGJ1ZmZlcnMnKTtcbiAgfVxuICByZXR1cm4gYmFzZTMyRW5jb2RlKEJ1ZmZlci5jb25jYXQoW3B1YiwgY2hhaW5Db2RlXSkpO1xufVxuXG4vKiogRGVjb2RlIGEgYmFzZTMyIHJvb3QgaW50byByYXcgcHVibGljLWtleSBhbmQgY2hhaW4tY29kZSBidWZmZXJzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZURlcml2YWJsZUVkMjU1MTlQdWIoY29tcG9zaXRlOiBzdHJpbmcpOiB7IHB1YjogQnVmZmVyOyBjaGFpbkNvZGU6IEJ1ZmZlciB9IHtcbiAgYXNzZXJ0RGVyaXZhYmxlRWQyNTUxOVB1Yihjb21wb3NpdGUpO1xuICBjb25zdCBkZWNvZGVkID0gYmFzZTMyRGVjb2RlKGNvbXBvc2l0ZSk7XG4gIHJldHVybiB7XG4gICAgcHViOiBkZWNvZGVkLnN1YmFycmF5KDAsIERFUklWQUJMRV9FRDI1NTE5X1BVQkxJQ19LRVlfQllURVMpLFxuICAgIGNoYWluQ29kZTogZGVjb2RlZC5zdWJhcnJheShERVJJVkFCTEVfRUQyNTUxOV9QVUJMSUNfS0VZX0JZVEVTKSxcbiAgfTtcbn1cblxuLyoqIEdlbmVyYXRlIGEgZnJlc2ggcmF3IDMyLWJ5dGUgY2hhaW4gY29kZSBmb3Igcm9vdCBjb21wb3NpdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUVkMjU1MTlDaGFpbkNvZGUoKTogQnVmZmVyIHtcbiAgcmV0dXJuIHJhbmRvbUJ5dGVzKERFUklWQUJMRV9FRDI1NTE5X0NIQUlOX0NPREVfQllURVMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShwdWI6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGlmICghU1RSS0VZX1BVQkxJQ19LRVlfUkVHRVgudGVzdChwdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVkMjU1MTkgU3RyS2V5IHB1YmxpYyBrZXknKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlU3RyS2V5KHB1YiwgU1RSS0VZX1ZFUlNJT05fUFVCTElDX0tFWSwgJ3B1YmxpYyBrZXknKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgZGVjb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShwdWIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUVkMjU1MTlTdHJLZXlTZWNyZXRTZWVkKHNlZWQ6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGlmICghU1RSS0VZX1NFQ1JFVF9TRUVEX1JFR0VYLnRlc3Qoc2VlZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQnKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlU3RyS2V5KHNlZWQsIFNUUktFWV9WRVJTSU9OX1NFQ1JFVF9TRUVELCAnc2VjcmV0IHNlZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXkocmF3UHViOiBCdWZmZXIpOiBzdHJpbmcge1xuICBpZiAocmF3UHViLmxlbmd0aCAhPT0gREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUykge1xuICAgIHRocm93IG5ldyBFcnJvcignZWQyNTUxOSBwdWJsaWMga2V5IG11c3QgYmUgMzIgYnl0ZXMnKTtcbiAgfVxuICBjb25zdCBwYXlsb2FkID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oW1NUUktFWV9WRVJTSU9OX1BVQkxJQ19LRVldKSwgcmF3UHViXSk7XG4gIGNvbnN0IGNoZWNrc3VtID0gQnVmZmVyLmFsbG9jKDIpO1xuICBjaGVja3N1bS53cml0ZVVJbnQxNkxFKGNyYzE2WG1vZGVtKHBheWxvYWQpLCAwKTtcbiAgcmV0dXJuIGJhc2UzMkVuY29kZShCdWZmZXIuY29uY2F0KFtwYXlsb2FkLCBjaGVja3N1bV0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hlY2tzdW1WYWxpZFN0cktleUVkMjU1MTlQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1Yik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5sZXQgZWRkc2FQcm9taXNlOiBQcm9taXNlPEVkZHNhPiB8IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGdldEVkZHNhKCk6IFByb21pc2U8RWRkc2E+IHtcbiAgaWYgKCFlZGRzYVByb21pc2UpIHtcbiAgICBlZGRzYVByb21pc2UgPSAoYXN5bmMgKCkgPT4gRWRkc2EuaW5pdGlhbGl6ZShhd2FpdCBFZDI1NTE5QklQMzIuaW5pdGlhbGl6ZSgpKSkoKTtcbiAgICBlZGRzYVByb21pc2UuY2F0Y2goKCkgPT4ge1xuICAgICAgZWRkc2FQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBlZGRzYVByb21pc2U7XG59XG5cbi8qKiBTb2Z0LWRlcml2ZSBgbS88aW5kZXg+YCBhbmQgcmV0dXJuIHRoZSBkZXJpdmVkIHJhdyAzMi1ieXRlIHB1YmxpYyBrZXkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc29mdERlcml2ZUNoaWxkUHViRWQyNTUxOShjb21wb3NpdGVQdWI6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihpbmRleCkgfHwgaW5kZXggPCAwIHx8IGluZGV4ID4gMHg3ZmZmZmZmZikge1xuICAgIHRocm93IG5ldyBFcnJvcihgZWQyNTUxOSBzYWZlIGNvLXNpZ25lciBkZXJpdmF0aW9uIGluZGV4IG11c3QgYmUgbm9uLWhhcmRlbmVkLCBnb3QgJHtpbmRleH1gKTtcbiAgfVxuICBjb25zdCB7IHB1YiwgY2hhaW5Db2RlIH0gPSBkZWNvZGVEZXJpdmFibGVFZDI1NTE5UHViKGNvbXBvc2l0ZVB1Yik7XG4gIGNvbnN0IGVkZHNhID0gYXdhaXQgZ2V0RWRkc2EoKTtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKFxuICAgIGVkZHNhLmRlcml2ZVVuaGFyZGVuZWQoQnVmZmVyLmNvbmNhdChbcHViLCBjaGFpbkNvZGVdKS50b1N0cmluZygnaGV4JyksIGBtLyR7aW5kZXh9YCkuc2xpY2UoMCwgNjQpLFxuICAgICdoZXgnXG4gICk7XG59XG4iXX0=
@@ -18,7 +18,7 @@ export interface FinalizeSafeOptions {
18
18
  rootKeys: SafeRootKeys;
19
19
  }
20
20
  /**
21
- * Sharing ONE safe wallet with a non-member rides the existing wallet-share handshake (FR-13),
21
+ * Sharing ONE safe wallet with a non-member rides the existing wallet-share handshake,
22
22
  * so the result is the existing WalletShare shape.
23
23
  */
24
24
  export type WalletShareData = WalletShare;
@@ -27,7 +27,10 @@ export interface CreateSafeWalletOptions {
27
27
  label: string;
28
28
  passphrase: string;
29
29
  type?: 'hot';
30
- /** `tss` throws until MPC mint lands. Defaults to `onchain`. */
30
+ /**
31
+ * `onchain` (default) mints a secp256k1 multisig wallet; `tss` mints an MPC
32
+ * wallet by deriving child keys from the safe's MPC roots.
33
+ */
31
34
  multisigType?: 'onchain' | 'tss';
32
35
  }
33
36
  interface AddSafeMemberBase {
@@ -1 +1 @@
1
- {"version":3,"file":"iSafe.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/iSafe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iSafe.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/iSafe.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9pU2FmZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoZSBzYWZlIGNsaWVudCBzdXJmYWNlIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGNoYW5nZSAoaW5jbHVkaW5nIGJyZWFraW5nXG4gKiBjaGFuZ2VzKSBiZWZvcmUgdGhlIHB1YmxpYyByZWxlYXNlLlxuICovXG4vLyBXaXJlL2RhdGEgc2hhcGVzIGFyZSBvd25lZCBieSBAYml0Z28vcHVibGljLXR5cGVzIOKAlCBpbXBvcnQgdGhlbSB3aGVyZSBuZWVkZWQgcmF0aGVyIHRoYW5cbi8vIHJlLWV4cG9ydGluZyBmcm9tIHNkay1jb3JlLlxuaW1wb3J0IHR5cGUge1xuICBGcmVlemVTYWZlQm9keSxcbiAgU2FmZURhdGEsXG4gIFNhZmVQZXJtaXNzaW9uLFxuICBTYWZlUm9vdEtleXMsXG4gIFNhZmVTaGFyZURhdGEsXG4gIFNhZmVTaGFyZUtleWNoYWluLFxuICBTYWZlU2hhcmVTdGF0ZSxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldCwgV2FsbGV0U2hhcmUgfSBmcm9tICcuLi93YWxsZXQnO1xuXG4vKiogQGV4cGVyaW1lbnRhbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplU2FmZU9wdGlvbnMge1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBoYXNlIDMg4oCUIHRoZSBjbGllbnQgaGFuZHMgYmFjayB0aGUgMTIga2V5IGlkcyBpdCBjcmVhdGVkIGluIFBoYXNlIDIuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluYWxpemVTYWZlT3B0aW9ucyB7XG4gIHJvb3RLZXlzOiBTYWZlUm9vdEtleXM7XG59XG5cbi8qKlxuICogU2hhcmluZyBPTkUgc2FmZSB3YWxsZXQgd2l0aCBhIG5vbi1tZW1iZXIgcmlkZXMgdGhlIGV4aXN0aW5nIHdhbGxldC1zaGFyZSBoYW5kc2hha2UgKEZSLTEzKSxcbiAqIHNvIHRoZSByZXN1bHQgaXMgdGhlIGV4aXN0aW5nIFdhbGxldFNoYXJlIHNoYXBlLlxuICovXG5leHBvcnQgdHlwZSBXYWxsZXRTaGFyZURhdGEgPSBXYWxsZXRTaGFyZTtcblxuLy8gLS0tLSBwZXItc2FmZSBvcGVyYXRpb24gb3B0aW9ucyAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2FmZVdhbGxldE9wdGlvbnMge1xuICBjb2luOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgdHlwZT86ICdob3QnO1xuICAvKiogYHRzc2AgdGhyb3dzIHVudGlsIE1QQyBtaW50IGxhbmRzLiBEZWZhdWx0cyB0byBgb25jaGFpbmAuICovXG4gIG11bHRpc2lnVHlwZT86ICdvbmNoYWluJyB8ICd0c3MnO1xufVxuXG5pbnRlcmZhY2UgQWRkU2FmZU1lbWJlckJhc2Uge1xuICBwZXJtaXNzaW9uczogU2FmZVBlcm1pc3Npb25bXTtcbiAgLyoqIHJlcXVpcmVkIHdoZW4gJ3NwZW5kJyBpcyBpbmNsdWRlZCDigJQgdGhlIDQgcm9vdCB1c2VyIGtleXMgRUNESC1yZS1lbmNyeXB0ZWQgdG8gdGhlIGludml0ZWUgKi9cbiAga2V5Y2hhaW5zPzogU2FmZVNoYXJlS2V5Y2hhaW5bXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgLyoqIHdoZW4gdHJ1ZSwgc3VwcHJlc3MgdGhlIGludml0YXRpb24gZW1haWwgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgc2VudCB0byBgZW1haWxgICovXG4gIGRpc2FibGVFbWFpbD86IGJvb2xlYW47XG59XG5cbi8qKiBBZGQgYSBtZW1iZXIgYnkgZWl0aGVyIGB1c2VySWRgIG9yIGBlbWFpbGAg4oCUIGV4YWN0bHkgb25lIGlzIHJlcXVpcmVkLiAqL1xuZXhwb3J0IHR5cGUgQWRkU2FmZU1lbWJlck9wdGlvbnMgPVxuICB8IChBZGRTYWZlTWVtYmVyQmFzZSAmIHsgdXNlcklkOiBzdHJpbmc7IGVtYWlsPzogbmV2ZXIgfSlcbiAgfCAoQWRkU2FmZU1lbWJlckJhc2UgJiB7IGVtYWlsOiBzdHJpbmc7IHVzZXJJZD86IG5ldmVyIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNhZmVXYWxsZXRNZW1iZXJPcHRpb25zIHtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgLyoqIHJlcXVpcmVkIOKAlCBzaGFyaW5nIHJlLWVuY3J5cHRzIHRoZSB1c2VyIGtleSwgd2hpY2ggbmVlZHMgaGFyZGVuZWQgZGVyaXZhdGlvbiBmcm9tIHRoZSBwYXNzcGhyYXNlICovXG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFjY2VwdFNhZmVTaGFyZUFzU3BlbmRlck9wdGlvbnMgPSB7XG4gIHNhZmVTaGFyZUlkOiBzdHJpbmc7XG4gIHVzZXJQYXNzd29yZDogc3RyaW5nO1xuICBuZXdXYWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEFjY2VwdFNhZmVTaGFyZUFzTm9uU3BlbmRlck9wdGlvbnMgPSB7XG4gIHNhZmVTaGFyZUlkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQWNjZXB0U2FmZVNoYXJlT3B0aW9ucyA9IEFjY2VwdFNhZmVTaGFyZUFzU3BlbmRlck9wdGlvbnMgfCBBY2NlcHRTYWZlU2hhcmVBc05vblNwZW5kZXJPcHRpb25zO1xuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FmZSB7XG4gIGlkKCk6IHN0cmluZztcbiAgZW50ZXJwcmlzZUlkKCk6IHN0cmluZztcbiAgbGFiZWwoKTogc3RyaW5nO1xuICBzdGF0dXMoKTogU2FmZURhdGFbJ3N0YXR1cyddO1xuICB1cmwoZXh0cmE/OiBzdHJpbmcpOiBzdHJpbmc7XG4gIGNyZWF0ZVdhbGxldChwYXJhbXM6IENyZWF0ZVNhZmVXYWxsZXRPcHRpb25zKTogUHJvbWlzZTxXYWxsZXQ+O1xuICAvLyB3aG9sZS1zYWZlOiB2aWV3L2FkbWluL3NwZW5kL2RhcHA7IHNwZW5kIG9wZW5zIGEga2V5IHNoYXJlIChhbHNvIGhvdyBhIHNwZW5kZXIgc2VydmljZXMgYVxuICAvLyBzYWZlU2hhcmVSZXF1ZXN0cyBlbnRyeSBpbiBVTVMgb3JncylcbiAgYWRkTWVtYmVyKHBhcmFtczogQWRkU2FmZU1lbWJlck9wdGlvbnMpOiBQcm9taXNlPFNhZmVEYXRhPjtcbiAgLy8gc2hhcmUgT05FIHNhZmUgd2FsbGV0LCBub3QgdGhlIHdob2xlIHNhZmVcbiAgYWRkTWVtYmVyVG9XYWxsZXQocGFyYW1zOiBBZGRTYWZlV2FsbGV0TWVtYmVyT3B0aW9ucyk6IFByb21pc2U8V2FsbGV0U2hhcmVEYXRhPjtcbiAgbGlzdFNoYXJlcyhwYXJhbXM/OiB7IHN0YXRlPzogU2FmZVNoYXJlU3RhdGUgfSk6IFByb21pc2U8U2FmZVNoYXJlRGF0YVtdPjtcbiAgYWNjZXB0U2hhcmUocGFyYW1zOiBBY2NlcHRTYWZlU2hhcmVPcHRpb25zKTogUHJvbWlzZTxTYWZlU2hhcmVEYXRhPjtcbiAgZnJlZXplKHBhcmFtcz86IEZyZWV6ZVNhZmVCb2R5KTogUHJvbWlzZTxTYWZlRGF0YT47XG4gIGFyY2hpdmUoKTogUHJvbWlzZTxTYWZlRGF0YT47XG4gIHRvSlNPTigpOiBTYWZlRGF0YTtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9pU2FmZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoZSBzYWZlIGNsaWVudCBzdXJmYWNlIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGNoYW5nZSAoaW5jbHVkaW5nIGJyZWFraW5nXG4gKiBjaGFuZ2VzKSBiZWZvcmUgdGhlIHB1YmxpYyByZWxlYXNlLlxuICovXG4vLyBXaXJlL2RhdGEgc2hhcGVzIGFyZSBvd25lZCBieSBAYml0Z28vcHVibGljLXR5cGVzIOKAlCBpbXBvcnQgdGhlbSB3aGVyZSBuZWVkZWQgcmF0aGVyIHRoYW5cbi8vIHJlLWV4cG9ydGluZyBmcm9tIHNkay1jb3JlLlxuaW1wb3J0IHR5cGUge1xuICBGcmVlemVTYWZlQm9keSxcbiAgU2FmZURhdGEsXG4gIFNhZmVQZXJtaXNzaW9uLFxuICBTYWZlUm9vdEtleXMsXG4gIFNhZmVTaGFyZURhdGEsXG4gIFNhZmVTaGFyZUtleWNoYWluLFxuICBTYWZlU2hhcmVTdGF0ZSxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldCwgV2FsbGV0U2hhcmUgfSBmcm9tICcuLi93YWxsZXQnO1xuXG4vKiogQGV4cGVyaW1lbnRhbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplU2FmZU9wdGlvbnMge1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBoYXNlIDMg4oCUIHRoZSBjbGllbnQgaGFuZHMgYmFjayB0aGUgMTIga2V5IGlkcyBpdCBjcmVhdGVkIGluIFBoYXNlIDIuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluYWxpemVTYWZlT3B0aW9ucyB7XG4gIHJvb3RLZXlzOiBTYWZlUm9vdEtleXM7XG59XG5cbi8qKlxuICogU2hhcmluZyBPTkUgc2FmZSB3YWxsZXQgd2l0aCBhIG5vbi1tZW1iZXIgcmlkZXMgdGhlIGV4aXN0aW5nIHdhbGxldC1zaGFyZSBoYW5kc2hha2UsXG4gKiBzbyB0aGUgcmVzdWx0IGlzIHRoZSBleGlzdGluZyBXYWxsZXRTaGFyZSBzaGFwZS5cbiAqL1xuZXhwb3J0IHR5cGUgV2FsbGV0U2hhcmVEYXRhID0gV2FsbGV0U2hhcmU7XG5cbi8vIC0tLS0gcGVyLXNhZmUgb3BlcmF0aW9uIG9wdGlvbnMgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNhZmVXYWxsZXRPcHRpb25zIHtcbiAgY29pbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gIHR5cGU/OiAnaG90JztcbiAgLyoqXG4gICAqIGBvbmNoYWluYCAoZGVmYXVsdCkgbWludHMgYSBzZWNwMjU2azEgbXVsdGlzaWcgd2FsbGV0OyBgdHNzYCBtaW50cyBhbiBNUENcbiAgICogd2FsbGV0IGJ5IGRlcml2aW5nIGNoaWxkIGtleXMgZnJvbSB0aGUgc2FmZSdzIE1QQyByb290cy5cbiAgICovXG4gIG11bHRpc2lnVHlwZT86ICdvbmNoYWluJyB8ICd0c3MnO1xufVxuXG5pbnRlcmZhY2UgQWRkU2FmZU1lbWJlckJhc2Uge1xuICBwZXJtaXNzaW9uczogU2FmZVBlcm1pc3Npb25bXTtcbiAgLyoqIHJlcXVpcmVkIHdoZW4gJ3NwZW5kJyBpcyBpbmNsdWRlZCDigJQgdGhlIDQgcm9vdCB1c2VyIGtleXMgRUNESC1yZS1lbmNyeXB0ZWQgdG8gdGhlIGludml0ZWUgKi9cbiAga2V5Y2hhaW5zPzogU2FmZVNoYXJlS2V5Y2hhaW5bXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgLyoqIHdoZW4gdHJ1ZSwgc3VwcHJlc3MgdGhlIGludml0YXRpb24gZW1haWwgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgc2VudCB0byBgZW1haWxgICovXG4gIGRpc2FibGVFbWFpbD86IGJvb2xlYW47XG59XG5cbi8qKiBBZGQgYSBtZW1iZXIgYnkgZWl0aGVyIGB1c2VySWRgIG9yIGBlbWFpbGAg4oCUIGV4YWN0bHkgb25lIGlzIHJlcXVpcmVkLiAqL1xuZXhwb3J0IHR5cGUgQWRkU2FmZU1lbWJlck9wdGlvbnMgPVxuICB8IChBZGRTYWZlTWVtYmVyQmFzZSAmIHsgdXNlcklkOiBzdHJpbmc7IGVtYWlsPzogbmV2ZXIgfSlcbiAgfCAoQWRkU2FmZU1lbWJlckJhc2UgJiB7IGVtYWlsOiBzdHJpbmc7IHVzZXJJZD86IG5ldmVyIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNhZmVXYWxsZXRNZW1iZXJPcHRpb25zIHtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgLyoqIHJlcXVpcmVkIOKAlCBzaGFyaW5nIHJlLWVuY3J5cHRzIHRoZSB1c2VyIGtleSwgd2hpY2ggbmVlZHMgaGFyZGVuZWQgZGVyaXZhdGlvbiBmcm9tIHRoZSBwYXNzcGhyYXNlICovXG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFjY2VwdFNhZmVTaGFyZUFzU3BlbmRlck9wdGlvbnMgPSB7XG4gIHNhZmVTaGFyZUlkOiBzdHJpbmc7XG4gIHVzZXJQYXNzd29yZDogc3RyaW5nO1xuICBuZXdXYWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEFjY2VwdFNhZmVTaGFyZUFzTm9uU3BlbmRlck9wdGlvbnMgPSB7XG4gIHNhZmVTaGFyZUlkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQWNjZXB0U2FmZVNoYXJlT3B0aW9ucyA9IEFjY2VwdFNhZmVTaGFyZUFzU3BlbmRlck9wdGlvbnMgfCBBY2NlcHRTYWZlU2hhcmVBc05vblNwZW5kZXJPcHRpb25zO1xuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FmZSB7XG4gIGlkKCk6IHN0cmluZztcbiAgZW50ZXJwcmlzZUlkKCk6IHN0cmluZztcbiAgbGFiZWwoKTogc3RyaW5nO1xuICBzdGF0dXMoKTogU2FmZURhdGFbJ3N0YXR1cyddO1xuICB1cmwoZXh0cmE/OiBzdHJpbmcpOiBzdHJpbmc7XG4gIGNyZWF0ZVdhbGxldChwYXJhbXM6IENyZWF0ZVNhZmVXYWxsZXRPcHRpb25zKTogUHJvbWlzZTxXYWxsZXQ+O1xuICAvLyB3aG9sZS1zYWZlOiB2aWV3L2FkbWluL3NwZW5kL2RhcHA7IHNwZW5kIG9wZW5zIGEga2V5IHNoYXJlIChhbHNvIGhvdyBhIHNwZW5kZXIgc2VydmljZXMgYVxuICAvLyBzYWZlU2hhcmVSZXF1ZXN0cyBlbnRyeSBpbiBVTVMgb3JncylcbiAgYWRkTWVtYmVyKHBhcmFtczogQWRkU2FmZU1lbWJlck9wdGlvbnMpOiBQcm9taXNlPFNhZmVEYXRhPjtcbiAgLy8gc2hhcmUgT05FIHNhZmUgd2FsbGV0LCBub3QgdGhlIHdob2xlIHNhZmVcbiAgYWRkTWVtYmVyVG9XYWxsZXQocGFyYW1zOiBBZGRTYWZlV2FsbGV0TWVtYmVyT3B0aW9ucyk6IFByb21pc2U8V2FsbGV0U2hhcmVEYXRhPjtcbiAgbGlzdFNoYXJlcyhwYXJhbXM/OiB7IHN0YXRlPzogU2FmZVNoYXJlU3RhdGUgfSk6IFByb21pc2U8U2FmZVNoYXJlRGF0YVtdPjtcbiAgYWNjZXB0U2hhcmUocGFyYW1zOiBBY2NlcHRTYWZlU2hhcmVPcHRpb25zKTogUHJvbWlzZTxTYWZlU2hhcmVEYXRhPjtcbiAgZnJlZXplKHBhcmFtcz86IEZyZWV6ZVNhZmVCb2R5KTogUHJvbWlzZTxTYWZlRGF0YT47XG4gIGFyY2hpdmUoKTogUHJvbWlzZTxTYWZlRGF0YT47XG4gIHRvSlNPTigpOiBTYWZlRGF0YTtcbn1cbiJdfQ==
@@ -19,31 +19,38 @@ export declare class Safe implements ISafe {
19
19
  */
20
20
  url(extra?: string): string;
21
21
  /**
22
- * Mint a child wallet: peek the sequential index, hardened-derive the user child,
23
- * register it public-only, then mint. Backup and BitGo children are soft-derived on the server.
22
+ * Mint a child wallet: peek the sequential index, derive the child keys, register
23
+ * them, then mint.
24
+ *
25
+ * `onchain`: hardened-derive the user child (`m/<index>'`), register it
26
+ * public-only; backup and BitGo children are soft-derived on the server.
27
+ *
28
+ * `tss`: decrypt the user root blob, run the user/BitGo hard-derive ceremony,
29
+ * register the ordered child documents, then mint.
24
30
  */
25
31
  createWallet(params: CreateSafeWalletOptions): Promise<Wallet>;
32
+ /**
33
+ * TSS wallet mint: decrypt the user root blob, run the user/BitGo hard-derive
34
+ * ceremony, register the ordered child documents, then mint.
35
+ */
36
+ private createTssWalletInSafe;
26
37
  private fetchSafeData;
27
38
  /**
28
39
  * Add a member to the whole safe (view/admin/spend). Spend opens a key share.
29
- * Body lands in WCN-1204.
30
40
  */
31
41
  addMember(params: AddSafeMemberOptions): Promise<SafeData>;
32
42
  /**
33
- * Share ONE safe wallet with a non-member via the existing wallet-share handshake (FR-13).
34
- * Body lands in WCN-1204.
43
+ * Share ONE safe wallet with a non-member via the existing wallet-share handshake.
35
44
  */
36
45
  addMemberToWallet(params: AddSafeWalletMemberOptions): Promise<WalletShareData>;
37
46
  /**
38
47
  * List the safe key shares visible to the caller.
39
- * Body lands in WCN-1204.
40
48
  */
41
49
  listShares(params?: {
42
50
  state?: SafeShareState;
43
51
  }): Promise<SafeShareData[]>;
44
52
  /**
45
53
  * Accept a safe key share addressed to the caller.
46
- * Body lands in WCN-1204.
47
54
  */
48
55
  acceptShare(params: AcceptSafeShareOptions): Promise<SafeShareData>;
49
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safe.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAGhH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,EACL,eAAe,EAChB,MAAM,SAAS,CAAC;AA8CjB;;GAEG;AACH,qBAAa,IAAK,YAAW,KAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,SAAgB,KAAK,EAAE,QAAQ,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IAKhD,EAAE,IAAI,MAAM;IAIZ,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAI5B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;YAmEtD,aAAa;IAK3B;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhE;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,eAAe,CAAC;IAIrF;;;OAGG;IACG,UAAU,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,cAAc,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInF;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzE;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK5D;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAKlC,MAAM,IAAI,QAAQ;CAGnB"}
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safe.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAGhH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,EACL,eAAe,EAChB,MAAM,SAAS,CAAC;AA0EjB;;GAEG;AACH,qBAAa,IAAK,YAAW,KAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,SAAgB,KAAK,EAAE,QAAQ,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IAKhD,EAAE,IAAI,MAAM;IAIZ,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAI5B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiFpE;;;OAGG;YACW,qBAAqB;YA+CrB,aAAa;IAK3B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,eAAe,CAAC;IAIrF;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,cAAc,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInF;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzE;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK5D;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAKlC,MAAM,IAAI,QAAQ;CAGnB"}