@bitgo-beta/abstract-eth 1.0.2-beta.207 → 1.0.2-beta.2070

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 (175) hide show
  1. package/dist/src/abstractEthLikeCoin.d.ts +20 -9
  2. package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
  3. package/dist/src/abstractEthLikeCoin.js +46 -15
  4. package/dist/src/abstractEthLikeNewCoins.d.ts +876 -0
  5. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  6. package/dist/src/abstractEthLikeNewCoins.js +2664 -0
  7. package/dist/src/ethLikeToken.d.ts +38 -6
  8. package/dist/src/ethLikeToken.d.ts.map +1 -1
  9. package/dist/src/ethLikeToken.js +289 -10
  10. package/dist/src/index.d.ts +2 -0
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +8 -2
  13. package/dist/src/lib/constants.d.ts +4 -0
  14. package/dist/src/lib/constants.d.ts.map +1 -0
  15. package/dist/src/lib/constants.js +11 -0
  16. package/dist/src/lib/contractCall.d.ts +8 -0
  17. package/dist/src/lib/contractCall.d.ts.map +1 -0
  18. package/dist/src/lib/contractCall.js +17 -0
  19. package/dist/src/lib/decryptionDelegationBuilder.d.ts +90 -0
  20. package/dist/src/lib/decryptionDelegationBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/decryptionDelegationBuilder.js +59 -0
  22. package/dist/src/lib/iface.d.ts +137 -0
  23. package/dist/src/lib/iface.d.ts.map +1 -0
  24. package/dist/src/lib/iface.js +8 -0
  25. package/dist/src/lib/index.d.ts +19 -0
  26. package/dist/src/lib/index.d.ts.map +1 -0
  27. package/dist/src/lib/index.js +60 -0
  28. package/dist/src/lib/keyPair.d.ts +26 -0
  29. package/dist/src/lib/keyPair.d.ts.map +1 -0
  30. package/dist/src/lib/keyPair.js +65 -0
  31. package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
  32. package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
  33. package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
  34. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
  35. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
  37. package/dist/src/lib/messages/eip191/index.d.ts +3 -0
  38. package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
  39. package/dist/src/lib/messages/eip191/index.js +19 -0
  40. package/dist/src/lib/messages/eip712/eip712Message.d.ts +6 -0
  41. package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +1 -0
  42. package/dist/src/lib/messages/eip712/eip712Message.js +27 -0
  43. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +7 -0
  44. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +15 -0
  46. package/dist/src/lib/messages/eip712/index.d.ts +3 -0
  47. package/dist/src/lib/messages/eip712/index.d.ts.map +1 -0
  48. package/dist/src/lib/messages/eip712/index.js +19 -0
  49. package/dist/src/lib/messages/index.d.ts +4 -0
  50. package/dist/src/lib/messages/index.d.ts.map +1 -0
  51. package/dist/src/lib/messages/index.js +20 -0
  52. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  53. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  54. package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
  55. package/dist/src/lib/transaction.d.ts +69 -0
  56. package/dist/src/lib/transaction.d.ts.map +1 -0
  57. package/dist/src/lib/transaction.js +149 -0
  58. package/dist/src/lib/transactionBuilder.d.ts +271 -0
  59. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/transactionBuilder.js +837 -0
  61. package/dist/src/lib/transferBuilder.d.ts +76 -0
  62. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transferBuilder.js +307 -0
  64. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
  65. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
  67. package/dist/src/lib/transferBuilders/index.d.ts +5 -0
  68. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
  69. package/dist/src/lib/transferBuilders/index.js +21 -0
  70. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
  71. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
  72. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
  73. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +21 -0
  74. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
  75. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +91 -0
  76. package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts +35 -0
  77. package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts.map +1 -0
  78. package/dist/src/lib/transferBuilders/transferBuilderERC7984.js +113 -0
  79. package/dist/src/lib/types.d.ts +40 -0
  80. package/dist/src/lib/types.d.ts.map +1 -0
  81. package/dist/src/lib/types.js +140 -0
  82. package/dist/src/lib/utils.d.ts +326 -0
  83. package/dist/src/lib/utils.d.ts.map +1 -0
  84. package/dist/src/lib/utils.js +893 -0
  85. package/dist/src/lib/walletUtil.d.ts +45 -0
  86. package/dist/src/lib/walletUtil.d.ts.map +1 -0
  87. package/dist/src/lib/walletUtil.js +51 -0
  88. package/dist/src/lib/zamaUtils.d.ts +73 -0
  89. package/dist/src/lib/zamaUtils.d.ts.map +1 -0
  90. package/dist/src/lib/zamaUtils.js +159 -0
  91. package/dist/src/types.d.ts +9 -0
  92. package/dist/src/types.d.ts.map +1 -0
  93. package/dist/src/types.js +3 -0
  94. package/dist/test/index.d.ts +2 -0
  95. package/dist/test/index.d.ts.map +1 -0
  96. package/dist/test/index.js +18 -0
  97. package/dist/test/unit/coin.d.ts +8 -0
  98. package/dist/test/unit/coin.d.ts.map +1 -0
  99. package/dist/test/unit/coin.js +577 -0
  100. package/dist/test/unit/decryptionDelegationBuilder.d.ts +2 -0
  101. package/dist/test/unit/decryptionDelegationBuilder.d.ts.map +1 -0
  102. package/dist/test/unit/decryptionDelegationBuilder.js +265 -0
  103. package/dist/test/unit/index.d.ts +8 -0
  104. package/dist/test/unit/index.d.ts.map +1 -0
  105. package/dist/test/unit/index.js +24 -0
  106. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +3 -0
  107. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +1 -0
  108. package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +110 -0
  109. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +43 -0
  110. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +1 -0
  111. package/dist/test/unit/messages/abstractEthMessageTestTypes.js +3 -0
  112. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +3 -0
  113. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +1 -0
  114. package/dist/test/unit/messages/abstractEthMessagesTests.js +129 -0
  115. package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
  116. package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
  117. package/dist/test/unit/messages/eip191/eip191Message.js +15 -0
  118. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
  119. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  120. package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +16 -0
  121. package/dist/test/unit/messages/eip191/fixtures.d.ts +109 -0
  122. package/dist/test/unit/messages/eip191/fixtures.d.ts.map +1 -0
  123. package/dist/test/unit/messages/eip191/fixtures.js +63 -0
  124. package/dist/test/unit/messages/eip712/eip712Message.d.ts +2 -0
  125. package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +1 -0
  126. package/dist/test/unit/messages/eip712/eip712Message.js +15 -0
  127. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +2 -0
  128. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
  129. package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +16 -0
  130. package/dist/test/unit/messages/eip712/fixtures.d.ts +76 -0
  131. package/dist/test/unit/messages/eip712/fixtures.d.ts.map +1 -0
  132. package/dist/test/unit/messages/eip712/fixtures.js +120 -0
  133. package/dist/test/unit/messages/index.d.ts +4 -0
  134. package/dist/test/unit/messages/index.d.ts.map +1 -0
  135. package/dist/test/unit/messages/index.js +20 -0
  136. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  137. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  138. package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
  139. package/dist/test/unit/token.d.ts +2 -0
  140. package/dist/test/unit/token.d.ts.map +1 -0
  141. package/dist/test/unit/token.js +37 -0
  142. package/dist/test/unit/transaction.d.ts +3 -0
  143. package/dist/test/unit/transaction.d.ts.map +1 -0
  144. package/dist/test/unit/transaction.js +73 -0
  145. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
  146. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
  147. package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
  148. package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts +3 -0
  149. package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts.map +1 -0
  150. package/dist/test/unit/transactionBuilder/decryptionDelegation.js +161 -0
  151. package/dist/test/unit/transactionBuilder/flushNft.d.ts +2 -0
  152. package/dist/test/unit/transactionBuilder/flushNft.d.ts.map +1 -0
  153. package/dist/test/unit/transactionBuilder/flushNft.js +381 -0
  154. package/dist/test/unit/transactionBuilder/index.d.ts +6 -0
  155. package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
  156. package/dist/test/unit/transactionBuilder/index.js +22 -0
  157. package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
  158. package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
  159. package/dist/test/unit/transactionBuilder/send.js +197 -0
  160. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +11 -0
  161. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
  162. package/dist/test/unit/transactionBuilder/walletInitialization.js +137 -0
  163. package/dist/test/unit/transferBuilder.d.ts +2 -0
  164. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  165. package/dist/test/unit/transferBuilder.js +76 -0
  166. package/dist/test/unit/utils.d.ts +2 -0
  167. package/dist/test/unit/utils.d.ts.map +1 -0
  168. package/dist/test/unit/utils.js +214 -0
  169. package/dist/test/unit/zamaUtils.d.ts +2 -0
  170. package/dist/test/unit/zamaUtils.d.ts.map +1 -0
  171. package/dist/test/unit/zamaUtils.js +251 -0
  172. package/dist/tsconfig.tsbuildinfo +1 -8244
  173. package/package.json +34 -10
  174. package/.eslintignore +0 -5
  175. package/CHANGELOG.md +0 -166
@@ -0,0 +1,45 @@
1
+ export declare const sendMultisigMethodId = "0x39125215";
2
+ export declare const sendMultisigTokenMethodId = "0x0dcd7a6c";
3
+ export declare const v1CreateForwarderMethodId = "0xfb90b320";
4
+ export declare const v4CreateForwarderMethodId = "0x13b2f75c";
5
+ export declare const v1WalletInitializationFirstBytes = "0x60806040";
6
+ export declare const v1CreateWalletMethodId = "0x7117f3fa";
7
+ export declare const createForwarderMethodId = "0xa68a76cc";
8
+ export declare const walletInitializationFirstBytes = "0x60606040";
9
+ export declare const recoveryWalletInitializationFirstBytes = "0x60c06040";
10
+ export declare const flushForwarderTokensMethodId = "0x2da03409";
11
+ export declare const flushForwarderTokensMethodIdV4 = "0x3ef13367";
12
+ export declare const flushCoinsMethodId = "0x6b9f96ea";
13
+ export declare const flushERC721ForwarderTokensMethodId = "0x5a953d0a";
14
+ export declare const flushERC721ForwarderTokensMethodIdV4 = "0x159e44d7";
15
+ export declare const flushERC1155ForwarderTokensMethodId = "0xe6bd0aa4";
16
+ export declare const flushERC1155ForwarderTokensMethodIdV4 = "0x8972c17c";
17
+ export declare const ERC721SafeTransferTypeMethodId = "0xb88d4fde";
18
+ export declare const ERC721TransferFromMethodId = "0x23b872dd";
19
+ export declare const ERC1155SafeTransferTypeMethodId = "0xf242432a";
20
+ export declare const ERC1155BatchTransferTypeMethodId = "0x2eb2c2d6";
21
+ export declare const defaultForwarderVersion = 0;
22
+ export declare const defaultWalletVersion = 0;
23
+ export declare const walletSimpleConstructor: string[];
24
+ export declare const createV1WalletTypes: string[];
25
+ export declare const flushTokensTypes: string[];
26
+ export declare const flushTokensTypesv4: string[];
27
+ export declare const flushCoinsTypes: never[];
28
+ export declare const flushERC721TokensTypes: string[];
29
+ export declare const flushERC721TokensTypesv4: string[];
30
+ export declare const flushERC1155TokensTypes: string[];
31
+ export declare const flushERC1155TokensTypesv4: string[];
32
+ export declare const sendMultiSigTypes: string[];
33
+ export declare const sendMultiSigTypesFirstSigner: string[];
34
+ export declare const sendMultiSigTokenTypes: string[];
35
+ export declare const sendMultiSigTokenTypesFirstSigner: string[];
36
+ export declare const ERC721SafeTransferTypes: string[];
37
+ export declare const ERC721TransferFromTypes: string[];
38
+ export declare const ERC1155SafeTransferTypes: string[];
39
+ export declare const ERC1155BatchTransferTypes: string[];
40
+ export declare const createV1ForwarderTypes: string[];
41
+ export declare const createV4ForwarderTypes: string[];
42
+ export declare const confidentialTransferWithProofMethodId = "0x2fb74e62";
43
+ export declare const confidentialTransferNoProofMethodId = "0x5bebed7e";
44
+ export declare const confidentialTransferWithProofTypes: string[];
45
+ //# sourceMappingURL=walletUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletUtil.d.ts","sourceRoot":"","sources":["../../../src/lib/walletUtil.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,gCAAgC,eAAe,CAAC;AAC7D,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,uBAAuB,eAAe,CAAC;AACpD,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,sCAAsC,eAAe,CAAC;AACnE,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,kCAAkC,eAAe,CAAC;AAC/D,eAAO,MAAM,oCAAoC,eAAe,CAAC;AACjE,eAAO,MAAM,mCAAmC,eAAe,CAAC;AAChE,eAAO,MAAM,qCAAqC,eAAe,CAAC;AAElE,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,0BAA0B,eAAe,CAAC;AACvD,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAC5D,eAAO,MAAM,gCAAgC,eAAe,CAAC;AAC7D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,eAAO,MAAM,uBAAuB,UAAgB,CAAC;AACrD,eAAO,MAAM,mBAAmB,UAA2B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,UAAyB,CAAC;AACvD,eAAO,MAAM,kBAAkB,UAAc,CAAC;AAC9C,eAAO,MAAM,eAAe,SAAK,CAAC;AAClC,eAAO,MAAM,sBAAsB,UAAoC,CAAC;AACxE,eAAO,MAAM,wBAAwB,UAAyB,CAAC;AAC/D,eAAO,MAAM,uBAAuB,UAAoC,CAAC;AACzE,eAAO,MAAM,yBAAyB,UAAyB,CAAC;AAEhE,eAAO,MAAM,iBAAiB,UAAwD,CAAC;AACvF,eAAO,MAAM,4BAA4B,UAAyD,CAAC;AAEnG,eAAO,MAAM,sBAAsB,UAA0D,CAAC;AAC9F,eAAO,MAAM,iCAAiC,UAA2D,CAAC;AAE1G,eAAO,MAAM,uBAAuB,UAA6C,CAAC;AAClF,eAAO,MAAM,uBAAuB,UAAoC,CAAC;AAEzE,eAAO,MAAM,wBAAwB,UAAwD,CAAC;AAC9F,eAAO,MAAM,yBAAyB,UAA4D,CAAC;AACnG,eAAO,MAAM,sBAAsB,UAAyB,CAAC;AAC7D,eAAO,MAAM,sBAAsB,UAAoC,CAAC;AAGxE,eAAO,MAAM,qCAAqC,eAAe,CAAC;AAElE,eAAO,MAAM,mCAAmC,eAAe,CAAC;AAEhE,eAAO,MAAM,kCAAkC,UAAkC,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.confidentialTransferWithProofTypes = exports.confidentialTransferNoProofMethodId = exports.confidentialTransferWithProofMethodId = exports.createV4ForwarderTypes = exports.createV1ForwarderTypes = exports.ERC1155BatchTransferTypes = exports.ERC1155SafeTransferTypes = exports.ERC721TransferFromTypes = exports.ERC721SafeTransferTypes = exports.sendMultiSigTokenTypesFirstSigner = exports.sendMultiSigTokenTypes = exports.sendMultiSigTypesFirstSigner = exports.sendMultiSigTypes = exports.flushERC1155TokensTypesv4 = exports.flushERC1155TokensTypes = exports.flushERC721TokensTypesv4 = exports.flushERC721TokensTypes = exports.flushCoinsTypes = exports.flushTokensTypesv4 = exports.flushTokensTypes = exports.createV1WalletTypes = exports.walletSimpleConstructor = exports.defaultWalletVersion = exports.defaultForwarderVersion = exports.ERC1155BatchTransferTypeMethodId = exports.ERC1155SafeTransferTypeMethodId = exports.ERC721TransferFromMethodId = exports.ERC721SafeTransferTypeMethodId = exports.flushERC1155ForwarderTokensMethodIdV4 = exports.flushERC1155ForwarderTokensMethodId = exports.flushERC721ForwarderTokensMethodIdV4 = exports.flushERC721ForwarderTokensMethodId = exports.flushCoinsMethodId = exports.flushForwarderTokensMethodIdV4 = exports.flushForwarderTokensMethodId = exports.recoveryWalletInitializationFirstBytes = exports.walletInitializationFirstBytes = exports.createForwarderMethodId = exports.v1CreateWalletMethodId = exports.v1WalletInitializationFirstBytes = exports.v4CreateForwarderMethodId = exports.v1CreateForwarderMethodId = exports.sendMultisigTokenMethodId = exports.sendMultisigMethodId = void 0;
4
+ exports.sendMultisigMethodId = '0x39125215';
5
+ exports.sendMultisigTokenMethodId = '0x0dcd7a6c';
6
+ exports.v1CreateForwarderMethodId = '0xfb90b320';
7
+ exports.v4CreateForwarderMethodId = '0x13b2f75c';
8
+ exports.v1WalletInitializationFirstBytes = '0x60806040';
9
+ exports.v1CreateWalletMethodId = '0x7117f3fa';
10
+ exports.createForwarderMethodId = '0xa68a76cc';
11
+ exports.walletInitializationFirstBytes = '0x60606040';
12
+ exports.recoveryWalletInitializationFirstBytes = '0x60c06040';
13
+ exports.flushForwarderTokensMethodId = '0x2da03409';
14
+ exports.flushForwarderTokensMethodIdV4 = '0x3ef13367';
15
+ exports.flushCoinsMethodId = '0x6b9f96ea';
16
+ exports.flushERC721ForwarderTokensMethodId = '0x5a953d0a';
17
+ exports.flushERC721ForwarderTokensMethodIdV4 = '0x159e44d7';
18
+ exports.flushERC1155ForwarderTokensMethodId = '0xe6bd0aa4';
19
+ exports.flushERC1155ForwarderTokensMethodIdV4 = '0x8972c17c';
20
+ exports.ERC721SafeTransferTypeMethodId = '0xb88d4fde';
21
+ exports.ERC721TransferFromMethodId = '0x23b872dd';
22
+ exports.ERC1155SafeTransferTypeMethodId = '0xf242432a';
23
+ exports.ERC1155BatchTransferTypeMethodId = '0x2eb2c2d6';
24
+ exports.defaultForwarderVersion = 0;
25
+ exports.defaultWalletVersion = 0;
26
+ exports.walletSimpleConstructor = ['address[]'];
27
+ exports.createV1WalletTypes = ['address[]', 'bytes32'];
28
+ exports.flushTokensTypes = ['address', 'address'];
29
+ exports.flushTokensTypesv4 = ['address'];
30
+ exports.flushCoinsTypes = [];
31
+ exports.flushERC721TokensTypes = ['address', 'address', 'uint256'];
32
+ exports.flushERC721TokensTypesv4 = ['address', 'uint256'];
33
+ exports.flushERC1155TokensTypes = ['address', 'address', 'uint256'];
34
+ exports.flushERC1155TokensTypesv4 = ['address', 'uint256'];
35
+ exports.sendMultiSigTypes = ['address', 'uint', 'bytes', 'uint', 'uint', 'bytes'];
36
+ exports.sendMultiSigTypesFirstSigner = ['string', 'address', 'uint', 'bytes', 'uint', 'uint'];
37
+ exports.sendMultiSigTokenTypes = ['address', 'uint', 'address', 'uint', 'uint', 'bytes'];
38
+ exports.sendMultiSigTokenTypesFirstSigner = ['string', 'address', 'uint', 'address', 'uint', 'uint'];
39
+ exports.ERC721SafeTransferTypes = ['address', 'address', 'uint256', 'bytes'];
40
+ exports.ERC721TransferFromTypes = ['address', 'address', 'uint256'];
41
+ exports.ERC1155SafeTransferTypes = ['address', 'address', 'uint256', 'uint256', 'bytes'];
42
+ exports.ERC1155BatchTransferTypes = ['address', 'address', 'uint256[]', 'uint256[]', 'bytes'];
43
+ exports.createV1ForwarderTypes = ['address', 'bytes32'];
44
+ exports.createV4ForwarderTypes = ['address', 'address', 'bytes32'];
45
+ // keccak256("confidentialTransfer(address,bytes32,bytes)")[0:4]
46
+ exports.confidentialTransferWithProofMethodId = '0x2fb74e62';
47
+ // keccak256("confidentialTransfer(address,bytes32)")[0:4] — for decoding only
48
+ exports.confidentialTransferNoProofMethodId = '0x5bebed7e';
49
+ // ABI parameter types for the 3-param version
50
+ exports.confidentialTransferWithProofTypes = ['address', 'bytes32', 'bytes'];
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvd2FsbGV0VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLG9CQUFvQixHQUFHLFlBQVksQ0FBQztBQUNwQyxRQUFBLHlCQUF5QixHQUFHLFlBQVksQ0FBQztBQUN6QyxRQUFBLHlCQUF5QixHQUFHLFlBQVksQ0FBQztBQUN6QyxRQUFBLHlCQUF5QixHQUFHLFlBQVksQ0FBQztBQUN6QyxRQUFBLGdDQUFnQyxHQUFHLFlBQVksQ0FBQztBQUNoRCxRQUFBLHNCQUFzQixHQUFHLFlBQVksQ0FBQztBQUN0QyxRQUFBLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUN2QyxRQUFBLDhCQUE4QixHQUFHLFlBQVksQ0FBQztBQUM5QyxRQUFBLHNDQUFzQyxHQUFHLFlBQVksQ0FBQztBQUN0RCxRQUFBLDRCQUE0QixHQUFHLFlBQVksQ0FBQztBQUM1QyxRQUFBLDhCQUE4QixHQUFHLFlBQVksQ0FBQztBQUM5QyxRQUFBLGtCQUFrQixHQUFHLFlBQVksQ0FBQztBQUNsQyxRQUFBLGtDQUFrQyxHQUFHLFlBQVksQ0FBQztBQUNsRCxRQUFBLG9DQUFvQyxHQUFHLFlBQVksQ0FBQztBQUNwRCxRQUFBLG1DQUFtQyxHQUFHLFlBQVksQ0FBQztBQUNuRCxRQUFBLHFDQUFxQyxHQUFHLFlBQVksQ0FBQztBQUVyRCxRQUFBLDhCQUE4QixHQUFHLFlBQVksQ0FBQztBQUM5QyxRQUFBLDBCQUEwQixHQUFHLFlBQVksQ0FBQztBQUMxQyxRQUFBLCtCQUErQixHQUFHLFlBQVksQ0FBQztBQUMvQyxRQUFBLGdDQUFnQyxHQUFHLFlBQVksQ0FBQztBQUNoRCxRQUFBLHVCQUF1QixHQUFHLENBQUMsQ0FBQztBQUM1QixRQUFBLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQUV6QixRQUFBLHVCQUF1QixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDeEMsUUFBQSxtQkFBbUIsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvQyxRQUFBLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFDLFFBQUEsa0JBQWtCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqQyxRQUFBLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDckIsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0QsUUFBQSx3QkFBd0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsRCxRQUFBLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1RCxRQUFBLHlCQUF5QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRW5ELFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFFLFFBQUEsNEJBQTRCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXRGLFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGLFFBQUEsaUNBQWlDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRTdGLFFBQUEsdUJBQXVCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyRSxRQUFBLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUU1RCxRQUFBLHdCQUF3QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGLFFBQUEseUJBQXlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEYsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNoRCxRQUFBLHNCQUFzQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV4RSxnRUFBZ0U7QUFDbkQsUUFBQSxxQ0FBcUMsR0FBRyxZQUFZLENBQUM7QUFDbEUsOEVBQThFO0FBQ2pFLFFBQUEsbUNBQW1DLEdBQUcsWUFBWSxDQUFDO0FBQ2hFLDhDQUE4QztBQUNqQyxRQUFBLGtDQUFrQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzZW5kTXVsdGlzaWdNZXRob2RJZCA9ICcweDM5MTI1MjE1JztcbmV4cG9ydCBjb25zdCBzZW5kTXVsdGlzaWdUb2tlbk1ldGhvZElkID0gJzB4MGRjZDdhNmMnO1xuZXhwb3J0IGNvbnN0IHYxQ3JlYXRlRm9yd2FyZGVyTWV0aG9kSWQgPSAnMHhmYjkwYjMyMCc7XG5leHBvcnQgY29uc3QgdjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCA9ICcweDEzYjJmNzVjJztcbmV4cG9ydCBjb25zdCB2MVdhbGxldEluaXRpYWxpemF0aW9uRmlyc3RCeXRlcyA9ICcweDYwODA2MDQwJztcbmV4cG9ydCBjb25zdCB2MUNyZWF0ZVdhbGxldE1ldGhvZElkID0gJzB4NzExN2YzZmEnO1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUZvcndhcmRlck1ldGhvZElkID0gJzB4YTY4YTc2Y2MnO1xuZXhwb3J0IGNvbnN0IHdhbGxldEluaXRpYWxpemF0aW9uRmlyc3RCeXRlcyA9ICcweDYwNjA2MDQwJztcbmV4cG9ydCBjb25zdCByZWNvdmVyeVdhbGxldEluaXRpYWxpemF0aW9uRmlyc3RCeXRlcyA9ICcweDYwYzA2MDQwJztcbmV4cG9ydCBjb25zdCBmbHVzaEZvcndhcmRlclRva2Vuc01ldGhvZElkID0gJzB4MmRhMDM0MDknO1xuZXhwb3J0IGNvbnN0IGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRWNCA9ICcweDNlZjEzMzY3JztcbmV4cG9ydCBjb25zdCBmbHVzaENvaW5zTWV0aG9kSWQgPSAnMHg2YjlmOTZlYSc7XG5leHBvcnQgY29uc3QgZmx1c2hFUkM3MjFGb3J3YXJkZXJUb2tlbnNNZXRob2RJZCA9ICcweDVhOTUzZDBhJztcbmV4cG9ydCBjb25zdCBmbHVzaEVSQzcyMUZvcndhcmRlclRva2Vuc01ldGhvZElkVjQgPSAnMHgxNTllNDRkNyc7XG5leHBvcnQgY29uc3QgZmx1c2hFUkMxMTU1Rm9yd2FyZGVyVG9rZW5zTWV0aG9kSWQgPSAnMHhlNmJkMGFhNCc7XG5leHBvcnQgY29uc3QgZmx1c2hFUkMxMTU1Rm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRWNCA9ICcweDg5NzJjMTdjJztcblxuZXhwb3J0IGNvbnN0IEVSQzcyMVNhZmVUcmFuc2ZlclR5cGVNZXRob2RJZCA9ICcweGI4OGQ0ZmRlJztcbmV4cG9ydCBjb25zdCBFUkM3MjFUcmFuc2ZlckZyb21NZXRob2RJZCA9ICcweDIzYjg3MmRkJztcbmV4cG9ydCBjb25zdCBFUkMxMTU1U2FmZVRyYW5zZmVyVHlwZU1ldGhvZElkID0gJzB4ZjI0MjQzMmEnO1xuZXhwb3J0IGNvbnN0IEVSQzExNTVCYXRjaFRyYW5zZmVyVHlwZU1ldGhvZElkID0gJzB4MmViMmMyZDYnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRGb3J3YXJkZXJWZXJzaW9uID0gMDtcbmV4cG9ydCBjb25zdCBkZWZhdWx0V2FsbGV0VmVyc2lvbiA9IDA7XG5cbmV4cG9ydCBjb25zdCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciA9IFsnYWRkcmVzc1tdJ107XG5leHBvcnQgY29uc3QgY3JlYXRlVjFXYWxsZXRUeXBlcyA9IFsnYWRkcmVzc1tdJywgJ2J5dGVzMzInXTtcbmV4cG9ydCBjb25zdCBmbHVzaFRva2Vuc1R5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnXTtcbmV4cG9ydCBjb25zdCBmbHVzaFRva2Vuc1R5cGVzdjQgPSBbJ2FkZHJlc3MnXTtcbmV4cG9ydCBjb25zdCBmbHVzaENvaW5zVHlwZXMgPSBbXTtcbmV4cG9ydCBjb25zdCBmbHVzaEVSQzcyMVRva2Vuc1R5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAndWludDI1NiddO1xuZXhwb3J0IGNvbnN0IGZsdXNoRVJDNzIxVG9rZW5zVHlwZXN2NCA9IFsnYWRkcmVzcycsICd1aW50MjU2J107XG5leHBvcnQgY29uc3QgZmx1c2hFUkMxMTU1VG9rZW5zVHlwZXMgPSBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50MjU2J107XG5leHBvcnQgY29uc3QgZmx1c2hFUkMxMTU1VG9rZW5zVHlwZXN2NCA9IFsnYWRkcmVzcycsICd1aW50MjU2J107XG5cbmV4cG9ydCBjb25zdCBzZW5kTXVsdGlTaWdUeXBlcyA9IFsnYWRkcmVzcycsICd1aW50JywgJ2J5dGVzJywgJ3VpbnQnLCAndWludCcsICdieXRlcyddO1xuZXhwb3J0IGNvbnN0IHNlbmRNdWx0aVNpZ1R5cGVzRmlyc3RTaWduZXIgPSBbJ3N0cmluZycsICdhZGRyZXNzJywgJ3VpbnQnLCAnYnl0ZXMnLCAndWludCcsICd1aW50J107XG5cbmV4cG9ydCBjb25zdCBzZW5kTXVsdGlTaWdUb2tlblR5cGVzID0gWydhZGRyZXNzJywgJ3VpbnQnLCAnYWRkcmVzcycsICd1aW50JywgJ3VpbnQnLCAnYnl0ZXMnXTtcbmV4cG9ydCBjb25zdCBzZW5kTXVsdGlTaWdUb2tlblR5cGVzRmlyc3RTaWduZXIgPSBbJ3N0cmluZycsICdhZGRyZXNzJywgJ3VpbnQnLCAnYWRkcmVzcycsICd1aW50JywgJ3VpbnQnXTtcblxuZXhwb3J0IGNvbnN0IEVSQzcyMVNhZmVUcmFuc2ZlclR5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAndWludDI1NicsICdieXRlcyddO1xuZXhwb3J0IGNvbnN0IEVSQzcyMVRyYW5zZmVyRnJvbVR5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAndWludDI1NiddO1xuXG5leHBvcnQgY29uc3QgRVJDMTE1NVNhZmVUcmFuc2ZlclR5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAndWludDI1NicsICd1aW50MjU2JywgJ2J5dGVzJ107XG5leHBvcnQgY29uc3QgRVJDMTE1NUJhdGNoVHJhbnNmZXJUeXBlcyA9IFsnYWRkcmVzcycsICdhZGRyZXNzJywgJ3VpbnQyNTZbXScsICd1aW50MjU2W10nLCAnYnl0ZXMnXTtcbmV4cG9ydCBjb25zdCBjcmVhdGVWMUZvcndhcmRlclR5cGVzID0gWydhZGRyZXNzJywgJ2J5dGVzMzInXTtcbmV4cG9ydCBjb25zdCBjcmVhdGVWNEZvcndhcmRlclR5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAnYnl0ZXMzMiddO1xuXG4vLyBrZWNjYWsyNTYoXCJjb25maWRlbnRpYWxUcmFuc2ZlcihhZGRyZXNzLGJ5dGVzMzIsYnl0ZXMpXCIpWzA6NF1cbmV4cG9ydCBjb25zdCBjb25maWRlbnRpYWxUcmFuc2ZlcldpdGhQcm9vZk1ldGhvZElkID0gJzB4MmZiNzRlNjInO1xuLy8ga2VjY2FrMjU2KFwiY29uZmlkZW50aWFsVHJhbnNmZXIoYWRkcmVzcyxieXRlczMyKVwiKVswOjRdIOKAlCBmb3IgZGVjb2Rpbmcgb25seVxuZXhwb3J0IGNvbnN0IGNvbmZpZGVudGlhbFRyYW5zZmVyTm9Qcm9vZk1ldGhvZElkID0gJzB4NWJlYmVkN2UnO1xuLy8gQUJJIHBhcmFtZXRlciB0eXBlcyBmb3IgdGhlIDMtcGFyYW0gdmVyc2lvblxuZXhwb3J0IGNvbnN0IGNvbmZpZGVudGlhbFRyYW5zZmVyV2l0aFByb29mVHlwZXMgPSBbJ2FkZHJlc3MnLCAnYnl0ZXMzMicsICdieXRlcyddO1xuIl19
@@ -0,0 +1,73 @@
1
+ export declare const delegateForUserDecryptionTypes: readonly ["address", "address", "uint64"];
2
+ export declare const callFromParentTypes: readonly ["address", "uint256", "bytes"];
3
+ export declare const aclMulticallTypes: readonly ["bytes[]"];
4
+ /**
5
+ * Function selector for ACL.delegateForUserDecryption(address,address,uint64)
6
+ * = keccak256('delegateForUserDecryption(address,address,uint64)')[0:4]
7
+ */
8
+ export declare const delegateForUserDecryptionMethodId: string;
9
+ /**
10
+ * Function selector for ACL.multicall(bytes[])
11
+ * = keccak256('multicall(bytes[])')[0:4]
12
+ * ACL inherits OpenZeppelin MulticallUpgradeable — preserves msg.sender via delegatecall.
13
+ */
14
+ export declare const aclMulticallMethodId: string;
15
+ /**
16
+ * Function selector for ForwarderV4.callFromParent(address,uint256,bytes)
17
+ * = keccak256('callFromParent(address,uint256,bytes)')[0:4]
18
+ */
19
+ export declare const callFromParentMethodId: string;
20
+ /**
21
+ * Encodes a single ACL.delegateForUserDecryption() call.
22
+ *
23
+ * Grants `delegateAddress` the right to decrypt ERC-7984 token balances on
24
+ * behalf of the calling address (msg.sender) for the specified token contract.
25
+ *
26
+ * @param delegateAddress BitGo enterprise viewing key address
27
+ * @param tokenContractAddress ERC-7984 token contract address
28
+ * @param expiryTimestamp Unix seconds; recommended: Math.floor(Date.now()/1000) + 365*86400
29
+ * @returns ABI-encoded calldata hex string (0x-prefixed)
30
+ */
31
+ export declare function buildDelegationCalldata(delegateAddress: string, tokenContractAddress: string, expiryTimestamp: number): string;
32
+ /**
33
+ * Encodes N delegateForUserDecryption calls batched inside ACL.multicall().
34
+ *
35
+ * Produces a single TX that grants delegation for all specified token contracts.
36
+ * Requires tokenContractAddresses.length >= 1.
37
+ * Note: DecryptionDelegationBuilder always uses this function (even for a single token)
38
+ * to keep the transaction shape consistent regardless of token count.
39
+ *
40
+ * @param delegateAddress BitGo enterprise viewing key address
41
+ * @param tokenContractAddresses Array of ERC-7984 token contract addresses
42
+ * @param expiryTimestamp Unix seconds
43
+ * @returns ABI-encoded calldata hex string (0x-prefixed)
44
+ */
45
+ export declare function buildMulticallDelegationCalldata(delegateAddress: string, tokenContractAddresses: string[], expiryTimestamp: number): string;
46
+ /**
47
+ * Wraps calldata in a ForwarderV4.callFromParent(target, 0, data) call.
48
+ *
49
+ * Used when a forwarder contract must be msg.sender for an external contract
50
+ * call — for example, when the forwarder itself needs to call
51
+ * ACL.delegateForUserDecryption() so that its own balance can be decrypted.
52
+ *
53
+ * Only the parentAddress (root wallet) is allowed to call callFromParent
54
+ * (enforced by the forwarder's onlyParent modifier).
55
+ *
56
+ * @param targetAddress Address of the contract the forwarder will call (e.g. ACL)
57
+ * @param calldata ABI-encoded inner calldata (e.g. from buildDelegationCalldata)
58
+ * @returns ABI-encoded callFromParent calldata hex string (0x-prefixed)
59
+ */
60
+ export declare function wrapInCallFromParent(targetAddress: string, calldata: string): string;
61
+ /**
62
+ * Decodes token contract addresses from delegation calldata.
63
+ *
64
+ * Handles two shapes of calldata:
65
+ * - Direct ACL.multicall(bytes[]) (root wallet path)
66
+ * - ForwarderV4.callFromParent(address, uint256, bytes) wrapping a multicall (forwarder path)
67
+ *
68
+ * @param calldata ABI-encoded delegation calldata (0x-prefixed or raw hex)
69
+ * @returns Array of token contract addresses (lowercase) found in the delegation calls
70
+ * @throws {Error} if the calldata does not start with a recognised method selector
71
+ */
72
+ export declare function decodeTokenAddressesFromDelegationCalldata(calldata: string): string[];
73
+ //# sourceMappingURL=zamaUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zamaUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/zamaUtils.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,8BAA8B,2CAA4C,CAAC;AACxF,eAAO,MAAM,mBAAmB,0CAA2C,CAAC;AAC5E,eAAO,MAAM,iBAAiB,sBAAuB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,QAE7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAElC,CAAC;AAMF;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,EAC5B,eAAe,EAAE,MAAM,GACtB,MAAM,CAOR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,EAAE,EAChC,eAAe,EAAE,MAAM,GACtB,MAAM,CAyBR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0CAA0C,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCrF"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.callFromParentMethodId = exports.aclMulticallMethodId = exports.delegateForUserDecryptionMethodId = exports.aclMulticallTypes = exports.callFromParentTypes = exports.delegateForUserDecryptionTypes = void 0;
7
+ exports.buildDelegationCalldata = buildDelegationCalldata;
8
+ exports.buildMulticallDelegationCalldata = buildMulticallDelegationCalldata;
9
+ exports.wrapInCallFromParent = wrapInCallFromParent;
10
+ exports.decodeTokenAddressesFromDelegationCalldata = decodeTokenAddressesFromDelegationCalldata;
11
+ const ethereumjs_util_1 = require("ethereumjs-util");
12
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
13
+ const ethers_1 = require("ethers");
14
+ // ---------------------------------------------------------------------------
15
+ // Constants
16
+ // ---------------------------------------------------------------------------
17
+ // ABI parameter type arrays
18
+ exports.delegateForUserDecryptionTypes = ['address', 'address', 'uint64'];
19
+ exports.callFromParentTypes = ['address', 'uint256', 'bytes'];
20
+ exports.aclMulticallTypes = ['bytes[]'];
21
+ /**
22
+ * Function selector for ACL.delegateForUserDecryption(address,address,uint64)
23
+ * = keccak256('delegateForUserDecryption(address,address,uint64)')[0:4]
24
+ */
25
+ exports.delegateForUserDecryptionMethodId = (0, ethereumjs_util_1.addHexPrefix)(ethereumjs_abi_1.default.methodID('delegateForUserDecryption', [...exports.delegateForUserDecryptionTypes]).toString('hex'));
26
+ /**
27
+ * Function selector for ACL.multicall(bytes[])
28
+ * = keccak256('multicall(bytes[])')[0:4]
29
+ * ACL inherits OpenZeppelin MulticallUpgradeable — preserves msg.sender via delegatecall.
30
+ */
31
+ exports.aclMulticallMethodId = (0, ethereumjs_util_1.addHexPrefix)(ethereumjs_abi_1.default.methodID('multicall', [...exports.aclMulticallTypes]).toString('hex'));
32
+ /**
33
+ * Function selector for ForwarderV4.callFromParent(address,uint256,bytes)
34
+ * = keccak256('callFromParent(address,uint256,bytes)')[0:4]
35
+ */
36
+ exports.callFromParentMethodId = (0, ethereumjs_util_1.addHexPrefix)(ethereumjs_abi_1.default.methodID('callFromParent', [...exports.callFromParentTypes]).toString('hex'));
37
+ // ---------------------------------------------------------------------------
38
+ // Encoding functions
39
+ // ---------------------------------------------------------------------------
40
+ /**
41
+ * Encodes a single ACL.delegateForUserDecryption() call.
42
+ *
43
+ * Grants `delegateAddress` the right to decrypt ERC-7984 token balances on
44
+ * behalf of the calling address (msg.sender) for the specified token contract.
45
+ *
46
+ * @param delegateAddress BitGo enterprise viewing key address
47
+ * @param tokenContractAddress ERC-7984 token contract address
48
+ * @param expiryTimestamp Unix seconds; recommended: Math.floor(Date.now()/1000) + 365*86400
49
+ * @returns ABI-encoded calldata hex string (0x-prefixed)
50
+ */
51
+ function buildDelegationCalldata(delegateAddress, tokenContractAddress, expiryTimestamp) {
52
+ const method = ethereumjs_abi_1.default.methodID('delegateForUserDecryption', [...exports.delegateForUserDecryptionTypes]);
53
+ const args = ethereumjs_abi_1.default.rawEncode([...exports.delegateForUserDecryptionTypes], [delegateAddress, tokenContractAddress, expiryTimestamp]);
54
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
55
+ }
56
+ /**
57
+ * Encodes N delegateForUserDecryption calls batched inside ACL.multicall().
58
+ *
59
+ * Produces a single TX that grants delegation for all specified token contracts.
60
+ * Requires tokenContractAddresses.length >= 1.
61
+ * Note: DecryptionDelegationBuilder always uses this function (even for a single token)
62
+ * to keep the transaction shape consistent regardless of token count.
63
+ *
64
+ * @param delegateAddress BitGo enterprise viewing key address
65
+ * @param tokenContractAddresses Array of ERC-7984 token contract addresses
66
+ * @param expiryTimestamp Unix seconds
67
+ * @returns ABI-encoded calldata hex string (0x-prefixed)
68
+ */
69
+ function buildMulticallDelegationCalldata(delegateAddress, tokenContractAddresses, expiryTimestamp) {
70
+ if (tokenContractAddresses.length === 0) {
71
+ throw new Error('buildMulticallDelegationCalldata: tokenContractAddresses must not be empty');
72
+ }
73
+ // Build each inner delegateForUserDecryption call as raw bytes
74
+ const innerCalls = tokenContractAddresses.map((tokenAddress) => {
75
+ const innerMethod = ethereumjs_abi_1.default.methodID('delegateForUserDecryption', [...exports.delegateForUserDecryptionTypes]);
76
+ const innerArgs = ethereumjs_abi_1.default.rawEncode([...exports.delegateForUserDecryptionTypes], [delegateAddress, tokenAddress, expiryTimestamp]);
77
+ return Buffer.concat([innerMethod, innerArgs]);
78
+ });
79
+ // Encode outer multicall(bytes[])
80
+ // ethereumjs-abi v0.6.x has a bug where it omits the per-element offset table
81
+ // for bytes[], producing malformed calldata that on-chain ABI decoders reject.
82
+ // Use ethers AbiCoder which correctly emits the head offset words.
83
+ const outerMethod = ethereumjs_abi_1.default.methodID('multicall', [...exports.aclMulticallTypes]);
84
+ const outerArgs = Buffer.from(new ethers_1.ethers.utils.AbiCoder().encode([...exports.aclMulticallTypes], [innerCalls]).slice(2), 'hex');
85
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([outerMethod, outerArgs]).toString('hex'));
86
+ }
87
+ /**
88
+ * Wraps calldata in a ForwarderV4.callFromParent(target, 0, data) call.
89
+ *
90
+ * Used when a forwarder contract must be msg.sender for an external contract
91
+ * call — for example, when the forwarder itself needs to call
92
+ * ACL.delegateForUserDecryption() so that its own balance can be decrypted.
93
+ *
94
+ * Only the parentAddress (root wallet) is allowed to call callFromParent
95
+ * (enforced by the forwarder's onlyParent modifier).
96
+ *
97
+ * @param targetAddress Address of the contract the forwarder will call (e.g. ACL)
98
+ * @param calldata ABI-encoded inner calldata (e.g. from buildDelegationCalldata)
99
+ * @returns ABI-encoded callFromParent calldata hex string (0x-prefixed)
100
+ */
101
+ function wrapInCallFromParent(targetAddress, calldata) {
102
+ const method = ethereumjs_abi_1.default.methodID('callFromParent', [...exports.callFromParentTypes]);
103
+ const args = ethereumjs_abi_1.default.rawEncode([...exports.callFromParentTypes], [
104
+ targetAddress,
105
+ 0, // value: no ETH transfer
106
+ (0, ethereumjs_util_1.toBuffer)(calldata), // inner calldata as bytes
107
+ ]);
108
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
109
+ }
110
+ /**
111
+ * Decodes token contract addresses from delegation calldata.
112
+ *
113
+ * Handles two shapes of calldata:
114
+ * - Direct ACL.multicall(bytes[]) (root wallet path)
115
+ * - ForwarderV4.callFromParent(address, uint256, bytes) wrapping a multicall (forwarder path)
116
+ *
117
+ * @param calldata ABI-encoded delegation calldata (0x-prefixed or raw hex)
118
+ * @returns Array of token contract addresses (lowercase) found in the delegation calls
119
+ * @throws {Error} if the calldata does not start with a recognised method selector
120
+ */
121
+ function decodeTokenAddressesFromDelegationCalldata(calldata) {
122
+ const data = calldata.startsWith('0x') ? calldata : '0x' + calldata;
123
+ const methodId = data.slice(0, 10);
124
+ const abiCoder = new ethers_1.ethers.utils.AbiCoder();
125
+ let multicallHex;
126
+ if (methodId === exports.callFromParentMethodId) {
127
+ // Decode callFromParent(address, uint256, bytes) — inner bytes is the full multicall calldata.
128
+ // ethers v5 returns `bytes` as a hex string; use hexlify to normalise to a 0x-prefixed hex string
129
+ // regardless of whether the runtime returns a string or a Uint8Array.
130
+ const decoded = abiCoder.decode([...exports.callFromParentTypes], '0x' + data.slice(10));
131
+ multicallHex = ethers_1.ethers.utils.hexlify(decoded[2]);
132
+ }
133
+ else if (methodId === exports.aclMulticallMethodId) {
134
+ multicallHex = data;
135
+ }
136
+ else {
137
+ throw new Error('Not a valid delegation calldata');
138
+ }
139
+ if (multicallHex.slice(0, 10) !== exports.aclMulticallMethodId) {
140
+ throw new Error('Not a valid delegation calldata');
141
+ }
142
+ // Decode multicall(bytes[]) — each element is an inner delegateForUserDecryption call.
143
+ // ethers v5 returns bytes[] elements as hex strings; use hexlify to normalise each element.
144
+ const decoded = abiCoder.decode(['bytes[]'], '0x' + multicallHex.slice(10));
145
+ const innerCalls = decoded[0];
146
+ const tokenAddresses = [];
147
+ for (const innerCall of innerCalls) {
148
+ const innerHex = ethers_1.ethers.utils.hexlify(innerCall).slice(2); // strip 0x
149
+ const innerMethodId = '0x' + innerHex.slice(0, 8);
150
+ if (innerMethodId !== exports.delegateForUserDecryptionMethodId) {
151
+ continue;
152
+ }
153
+ // Decode delegateForUserDecryption(address delegate, address tokenAddress, uint64 expiry)
154
+ const innerDecoded = abiCoder.decode([...exports.delegateForUserDecryptionTypes], '0x' + innerHex.slice(8));
155
+ tokenAddresses.push(innerDecoded[1].toLowerCase());
156
+ }
157
+ return tokenAddresses;
158
+ }
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFtYVV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi96YW1hVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBcURBLDBEQVdDO0FBZUQsNEVBNkJDO0FBZ0JELG9EQVdDO0FBYUQsZ0dBeUNDO0FBN0xELHFEQUF5RDtBQUN6RCxvRUFBeUM7QUFDekMsbUNBQWdDO0FBRWhDLDhFQUE4RTtBQUM5RSxZQUFZO0FBQ1osOEVBQThFO0FBRTlFLDRCQUE0QjtBQUNmLFFBQUEsOEJBQThCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBQzNFLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBQy9ELFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxTQUFTLENBQVUsQ0FBQztBQUV0RDs7O0dBR0c7QUFDVSxRQUFBLGlDQUFpQyxHQUFHLElBQUEsOEJBQVksRUFDM0Qsd0JBQVcsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxHQUFHLHNDQUE4QixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQ3ZHLENBQUM7QUFFRjs7OztHQUlHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDhCQUFZLEVBQzlDLHdCQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcseUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDMUUsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSw4QkFBWSxFQUNoRCx3QkFBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsMkJBQW1CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDakYsQ0FBQztBQUVGLDhFQUE4RTtBQUM5RSxxQkFBcUI7QUFDckIs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QUM1RixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLFVBQVUsR0FBYyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekMsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsZUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBbUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDaEcsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksYUFBYSxLQUFLLHlDQUFpQyxFQUFFLENBQUM7WUFDeEQsU0FBUztRQUNYLENBQUM7UUFDRCwwRkFBMEY7UUFDMUYsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsc0NBQThCLENBQUMsRUFBRSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLGNBQWMsQ0FBQyxJQUFJLENBQUUsWUFBWSxDQUFDLENBQUMsQ0FBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRIZXhQcmVmaXgsIHRvQnVmZmVyIH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgeyBldGhlcnMgfSBmcm9tICdldGhlcnMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnN0YW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFCSSBwYXJhbWV0ZXIgdHlwZSBhcnJheXNcbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uVHlwZXMgPSBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50NjQnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBjYWxsRnJvbVBhcmVudFR5cGVzID0gWydhZGRyZXNzJywgJ3VpbnQyNTYnLCAnYnl0ZXMnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBhY2xNdWx0aWNhbGxUeXBlcyA9IFsnYnl0ZXNbXSddIGFzIGNvbnN0O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHNlbGVjdG9yIGZvciBBQ0wuZGVsZWdhdGVGb3JVc2VyRGVjcnlwdGlvbihhZGRyZXNzLGFkZHJlc3MsdWludDY0KVxuICogPSBrZWNjYWsyNTYoJ2RlbGVnYXRlRm9yVXNlckRlY3J5cHRpb24oYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCknKVswOjRdXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uTWV0aG9kSWQgPSBhZGRIZXhQcmVmaXgoXG4gIEV0aGVyZXVtQWJpLm1ldGhvZElEKCdkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uJywgWy4uLmRlbGVnYXRlRm9yVXNlckRlY3J5cHRpb25UeXBlc10pLnRvU3RyaW5nKCdoZXgnKVxuKTtcblxuLyoqXG4gKiBGdW5jdGlvbiBzZWxlY3RvciBmb3IgQUNMLm11bHRpY2FsbChieXRlc1tdKVxuICogPSBrZWNjYWsyNTYoJ211bHRpY2FsbChieXRlc1tdKScpWzA6NF1cbiAqIEFDTCBpbmhlcml0cyBPcGVuWmVwcGVsaW4gTXVsdGljYWxsVXBncmFkZWFibGUg4oCUIHByZXNlcnZlcyBtc2cuc2VuZGVyIHZpYSBkZWxlZ2F0ZWNhbGwuXG4gKi9cbmV4cG9ydCBjb25zdCBhY2xNdWx0aWNhbGxNZXRob2RJZCA9IGFkZEhleFByZWZpeChcbiAgRXRoZXJldW1BYmkubWV0aG9kSUQoJ211bHRpY2FsbCcsIFsuLi5hY2xNdWx0aWNhbGxUeXBlc10pLnRvU3RyaW5nKCdoZXgnKVxuKTtcblxuLyoqXG4gKiBGdW5jdGlvbiBzZWxlY3RvciBmb3IgRm9yd2FyZGVyVjQuY2FsbEZyb21QYXJlbnQoYWRkcmVzcyx1aW50MjU2LGJ5dGVzKVxuICogPSBrZWNjYWsyNTYoJ2NhbGxGcm9tUGFyZW50KGFkZHJlc3MsdWludDI1NixieXRlcyknKVswOjRdXG4gKi9cbmV4cG9ydCBjb25zdCBjYWxsRnJvbVBhcmVudE1ldGhvZElkID0gYWRkSGV4UHJlZml4KFxuICBFdGhlcmV1bUFiaS5tZXRob2RJRCgnY2FsbEZyb21QYXJlbnQnLCBbLi4uY2FsbEZyb21QYXJlbnRUeXBlc10pLnRvU3RyaW5nKCdoZXgnKVxuKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbmNvZGluZyBmdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEVuY29kZXMgYSBzaW5nbGUgQUNMLmRlbGVnYXRlRm9yVXNlckRlY3J5cHRpb24oKSBjYWxsLlxuICpcbiAqIEdyYW50cyBgZGVsZWdhdGVBZGRyZXNzYCB0aGUgcmlnaHQgdG8gZGVjcnlwdCBFUkMtNzk4NCB0b2tlbiBiYWxhbmNlcyBvblxuICogYmVoYWxmIG9mIHRoZSBjYWxsaW5nIGFkZHJlc3MgKG1zZy5zZW5kZXIpIGZvciB0aGUgc3BlY2lmaWVkIHRva2VuIGNvbnRyYWN0LlxuICpcbiAqIEBwYXJhbSBkZWxlZ2F0ZUFkZHJlc3MgICAgICAgQml0R28gZW50ZXJwcmlzZSB2aWV3aW5nIGtleSBhZGRyZXNzXG4gKiBAcGFyYW0gdG9rZW5Db250cmFjdEFkZHJlc3MgIEVSQy03OTg0IHRva2VuIGNvbnRyYWN0IGFkZHJlc3NcbiAqIEBwYXJhbSBleHBpcnlUaW1lc3RhbXAgICAgICAgVW5peCBzZWNvbmRzOyByZWNvbW1lbmRlZDogTWF0aC5mbG9vcihEYXRlLm5vdygpLzEwMDApICsgMzY1Kjg2NDAwXG4gKiBAcmV0dXJucyBBQkktZW5jb2RlZCBjYWxsZGF0YSBoZXggc3RyaW5nICgweC1wcmVmaXhlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRGVsZWdhdGlvbkNhbGxkYXRhKFxuICBkZWxlZ2F0ZUFkZHJlc3M6IHN0cmluZyxcbiAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgZXhwaXJ5VGltZXN0YW1wOiBudW1iZXJcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKCdkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uJywgWy4uLmRlbGVnYXRlRm9yVXNlckRlY3J5cHRpb25UeXBlc10pO1xuICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKFxuICAgIFsuLi5kZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uVHlwZXNdLFxuICAgIFtkZWxlZ2F0ZUFkZHJlc3MsIHRva2VuQ29udHJhY3RBZGRyZXNzLCBleHBpcnlUaW1lc3RhbXBdXG4gICk7XG4gIHJldHVybiBhZGRIZXhQcmVmaXgoQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuLyoqXG4gKiBFbmNvZGVzIE4gZGVsZWdhdGVGb3JVc2VyRGVjcnlwdGlvbiBjYWxscyBiYXRjaGVkIGluc2lkZSBBQ0wubXVsdGljYWxsKCkuXG4gKlxuICogUHJvZHVjZXMgYSBzaW5nbGUgVFggdGhhdCBncmFudHMgZGVsZWdhdGlvbiBmb3IgYWxsIHNwZWNpZmllZCB0b2tlbiBjb250cmFjdHMuXG4gKiBSZXF1aXJlcyB0b2tlbkNvbnRyYWN0QWRkcmVzc2VzLmxlbmd0aCA+PSAxLlxuICogTm90ZTogRGVjcnlwdGlvbkRlbGVnYXRpb25CdWlsZGVyIGFsd2F5cyB1c2VzIHRoaXMgZnVuY3Rpb24gKGV2ZW4gZm9yIGEgc2luZ2xlIHRva2VuKVxuICogdG8ga2VlcCB0aGUgdHJhbnNhY3Rpb24gc2hhcGUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHRva2VuIGNvdW50LlxuICpcbiAqIEBwYXJhbSBkZWxlZ2F0ZUFkZHJlc3MgICAgICAgICAgQml0R28gZW50ZXJwcmlzZSB2aWV3aW5nIGtleSBhZGRyZXNzXG4gKiBAcGFyYW0gdG9rZW5Db250cmFjdEFkZHJlc3NlcyAgIEFycmF5IG9mIEVSQy03OTg0IHRva2VuIGNvbnRyYWN0IGFkZHJlc3Nlc1xuICogQHBhcmFtIGV4cGlyeVRpbWVzdGFtcCAgICAgICAgICBVbml4IHNlY29uZHNcbiAqIEByZXR1cm5zIEFCSS1lbmNvZGVkIGNhbGxkYXRhIGhleCBzdHJpbmcgKDB4LXByZWZpeGVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoXG4gIGRlbGVnYXRlQWRkcmVzczogc3RyaW5nLFxuICB0b2tlbkNvbnRyYWN0QWRkcmVzc2VzOiBzdHJpbmdbXSxcbiAgZXhwaXJ5VGltZXN0YW1wOiBudW1iZXJcbik6IHN0cmluZyB7XG4gIGlmICh0b2tlbkNvbnRyYWN0QWRkcmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGE6IHRva2VuQ29udHJhY3RBZGRyZXNzZXMgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIGVhY2ggaW5uZXIgZGVsZWdhdGVGb3JVc2VyRGVjcnlwdGlvbiBjYWxsIGFzIHJhdyBieXRlc1xuICBjb25zdCBpbm5lckNhbGxzOiBCdWZmZXJbXSA9IHRva2VuQ29udHJhY3RBZGRyZXNzZXMubWFwKCh0b2tlbkFkZHJlc3MpID0+IHtcbiAgICBjb25zdCBpbm5lck1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKCdkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uJywgWy4uLmRlbGVnYXRlRm9yVXNlckRlY3J5cHRpb25UeXBlc10pO1xuICAgIGNvbnN0IGlubmVyQXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZShcbiAgICAgIFsuLi5kZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uVHlwZXNdLFxuICAgICAgW2RlbGVnYXRlQWRkcmVzcywgdG9rZW5BZGRyZXNzLCBleHBpcnlUaW1lc3RhbXBdXG4gICAgKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbaW5uZXJNZXRob2QsIGlubmVyQXJnc10pO1xuICB9KTtcblxuICAvLyBFbmNvZGUgb3V0ZXIgbXVsdGljYWxsKGJ5dGVzW10pXG4gIC8vIGV0aGVyZXVtanMtYWJpIHYwLjYueCBoYXMgYSBidWcgd2hlcmUgaXQgb21pdHMgdGhlIHBlci1lbGVtZW50IG9mZnNldCB0YWJsZVxuICAvLyBmb3IgYnl0ZXNbXSwgcHJvZHVjaW5nIG1hbGZvcm1lZCBjYWxsZGF0YSB0aGF0IG9uLWNoYWluIEFCSSBkZWNvZGVycyByZWplY3QuXG4gIC8vIFVzZSBldGhlcnMgQWJpQ29kZXIgd2hpY2ggY29ycmVjdGx5IGVtaXRzIHRoZSBoZWFkIG9mZnNldCB3b3Jkcy5cbiAgY29uc3Qgb3V0ZXJNZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRCgnbXVsdGljYWxsJywgWy4uLmFjbE11bHRpY2FsbFR5cGVzXSk7XG4gIGNvbnN0IG91dGVyQXJncyA9IEJ1ZmZlci5mcm9tKFxuICAgIG5ldyBldGhlcnMudXRpbHMuQWJpQ29kZXIoKS5lbmNvZGUoWy4uLmFjbE11bHRpY2FsbFR5cGVzXSwgW2lubmVyQ2FsbHNdKS5zbGljZSgyKSxcbiAgICAnaGV4J1xuICApO1xuICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW291dGVyTWV0aG9kLCBvdXRlckFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xufVxuXG4vKipcbiAqIFdyYXBzIGNhbGxkYXRhIGluIGEgRm9yd2FyZGVyVjQuY2FsbEZyb21QYXJlbnQodGFyZ2V0LCAwLCBkYXRhKSBjYWxsLlxuICpcbiAqIFVzZWQgd2hlbiBhIGZvcndhcmRlciBjb250cmFjdCBtdXN0IGJlIG1zZy5zZW5kZXIgZm9yIGFuIGV4dGVybmFsIGNvbnRyYWN0XG4gKiBjYWxsIOKAlCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgZm9yd2FyZGVyIGl0c2VsZiBuZWVkcyB0byBjYWxsXG4gKiBBQ0wuZGVsZWdhdGVGb3JVc2VyRGVjcnlwdGlvbigpIHNvIHRoYXQgaXRzIG93biBiYWxhbmNlIGNhbiBiZSBkZWNyeXB0ZWQuXG4gKlxuICogT25seSB0aGUgcGFyZW50QWRkcmVzcyAocm9vdCB3YWxsZXQpIGlzIGFsbG93ZWQgdG8gY2FsbCBjYWxsRnJvbVBhcmVudFxuICogKGVuZm9yY2VkIGJ5IHRoZSBmb3J3YXJkZXIncyBvbmx5UGFyZW50IG1vZGlmaWVyKS5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0QWRkcmVzcyAgQWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdGhlIGZvcndhcmRlciB3aWxsIGNhbGwgKGUuZy4gQUNMKVxuICogQHBhcmFtIGNhbGxkYXRhICAgICAgIEFCSS1lbmNvZGVkIGlubmVyIGNhbGxkYXRhIChlLmcuIGZyb20gYnVpbGREZWxlZ2F0aW9uQ2FsbGRhdGEpXG4gKiBAcmV0dXJucyBBQkktZW5jb2RlZCBjYWxsRnJvbVBhcmVudCBjYWxsZGF0YSBoZXggc3RyaW5nICgweC1wcmVmaXhlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBJbkNhbGxGcm9tUGFyZW50KHRhcmdldEFkZHJlc3M6IHN0cmluZywgY2FsbGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKCdjYWxsRnJvbVBhcmVudCcsIFsuLi5jYWxsRnJvbVBhcmVudFR5cGVzXSk7XG4gIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUoXG4gICAgWy4uLmNhbGxGcm9tUGFyZW50VHlwZXNdLFxuICAgIFtcbiAgICAgIHRhcmdldEFkZHJlc3MsXG4gICAgICAwLCAvLyB2YWx1ZTogbm8gRVRIIHRyYW5zZmVyXG4gICAgICB0b0J1ZmZlcihjYWxsZGF0YSksIC8vIGlubmVyIGNhbGxkYXRhIGFzIGJ5dGVzXG4gICAgXVxuICApO1xuICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKSk7XG59XG5cbi8qKlxuICogRGVjb2RlcyB0b2tlbiBjb250cmFjdCBhZGRyZXNzZXMgZnJvbSBkZWxlZ2F0aW9uIGNhbGxkYXRhLlxuICpcbiAqIEhhbmRsZXMgdHdvIHNoYXBlcyBvZiBjYWxsZGF0YTpcbiAqICAgLSBEaXJlY3QgQUNMLm11bHRpY2FsbChieXRlc1tdKSAocm9vdCB3YWxsZXQgcGF0aClcbiAqICAgLSBGb3J3YXJkZXJWNC5jYWxsRnJvbVBhcmVudChhZGRyZXNzLCB1aW50MjU2LCBieXRlcykgd3JhcHBpbmcgYSBtdWx0aWNhbGwgKGZvcndhcmRlciBwYXRoKVxuICpcbiAqIEBwYXJhbSBjYWxsZGF0YSAgQUJJLWVuY29kZWQgZGVsZWdhdGlvbiBjYWxsZGF0YSAoMHgtcHJlZml4ZWQgb3IgcmF3IGhleClcbiAqIEByZXR1cm5zIEFycmF5IG9mIHRva2VuIGNvbnRyYWN0IGFkZHJlc3NlcyAobG93ZXJjYXNlKSBmb3VuZCBpbiB0aGUgZGVsZWdhdGlvbiBjYWxsc1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjYWxsZGF0YSBkb2VzIG5vdCBzdGFydCB3aXRoIGEgcmVjb2duaXNlZCBtZXRob2Qgc2VsZWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVRva2VuQWRkcmVzc2VzRnJvbURlbGVnYXRpb25DYWxsZGF0YShjYWxsZGF0YTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBkYXRhID0gY2FsbGRhdGEuc3RhcnRzV2l0aCgnMHgnKSA/IGNhbGxkYXRhIDogJzB4JyArIGNhbGxkYXRhO1xuICBjb25zdCBtZXRob2RJZCA9IGRhdGEuc2xpY2UoMCwgMTApO1xuICBjb25zdCBhYmlDb2RlciA9IG5ldyBldGhlcnMudXRpbHMuQWJpQ29kZXIoKTtcblxuICBsZXQgbXVsdGljYWxsSGV4OiBzdHJpbmc7XG5cbiAgaWYgKG1ldGhvZElkID09PSBjYWxsRnJvbVBhcmVudE1ldGhvZElkKSB7XG4gICAgLy8gRGVjb2RlIGNhbGxGcm9tUGFyZW50KGFkZHJlc3MsIHVpbnQyNTYsIGJ5dGVzKSDigJQgaW5uZXIgYnl0ZXMgaXMgdGhlIGZ1bGwgbXVsdGljYWxsIGNhbGxkYXRhLlxuICAgIC8vIGV0aGVycyB2NSByZXR1cm5zIGBieXRlc2AgYXMgYSBoZXggc3RyaW5nOyB1c2UgaGV4bGlmeSB0byBub3JtYWxpc2UgdG8gYSAweC1wcmVmaXhlZCBoZXggc3RyaW5nXG4gICAgLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBydW50aW1lIHJldHVybnMgYSBzdHJpbmcgb3IgYSBVaW50OEFycmF5LlxuICAgIGNvbnN0IGRlY29kZWQgPSBhYmlDb2Rlci5kZWNvZGUoWy4uLmNhbGxGcm9tUGFyZW50VHlwZXNdLCAnMHgnICsgZGF0YS5zbGljZSgxMCkpO1xuICAgIG11bHRpY2FsbEhleCA9IGV0aGVycy51dGlscy5oZXhsaWZ5KGRlY29kZWRbMl0pO1xuICB9IGVsc2UgaWYgKG1ldGhvZElkID09PSBhY2xNdWx0aWNhbGxNZXRob2RJZCkge1xuICAgIG11bHRpY2FsbEhleCA9IGRhdGE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSB2YWxpZCBkZWxlZ2F0aW9uIGNhbGxkYXRhJyk7XG4gIH1cblxuICBpZiAobXVsdGljYWxsSGV4LnNsaWNlKDAsIDEwKSAhPT0gYWNsTXVsdGljYWxsTWV0aG9kSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIHZhbGlkIGRlbGVnYXRpb24gY2FsbGRhdGEnKTtcbiAgfVxuXG4gIC8vIERlY29kZSBtdWx0aWNhbGwoYnl0ZXNbXSkg4oCUIGVhY2ggZWxlbWVudCBpcyBhbiBpbm5lciBkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uIGNhbGwuXG4gIC8vIGV0aGVycyB2NSByZXR1cm5zIGJ5dGVzW10gZWxlbWVudHMgYXMgaGV4IHN0cmluZ3M7IHVzZSBoZXhsaWZ5IHRvIG5vcm1hbGlzZSBlYWNoIGVsZW1lbnQuXG4gIGNvbnN0IGRlY29kZWQgPSBhYmlDb2Rlci5kZWNvZGUoWydieXRlc1tdJ10sICcweCcgKyBtdWx0aWNhbGxIZXguc2xpY2UoMTApKTtcbiAgY29uc3QgaW5uZXJDYWxsczogdW5rbm93bltdID0gZGVjb2RlZFswXTtcblxuICBjb25zdCB0b2tlbkFkZHJlc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBpbm5lckNhbGwgb2YgaW5uZXJDYWxscykge1xuICAgIGNvbnN0IGlubmVySGV4ID0gZXRoZXJzLnV0aWxzLmhleGxpZnkoaW5uZXJDYWxsIGFzIGV0aGVycy51dGlscy5CeXRlc0xpa2UpLnNsaWNlKDIpOyAvLyBzdHJpcCAweFxuICAgIGNvbnN0IGlubmVyTWV0aG9kSWQgPSAnMHgnICsgaW5uZXJIZXguc2xpY2UoMCwgOCk7XG4gICAgaWYgKGlubmVyTWV0aG9kSWQgIT09IGRlbGVnYXRlRm9yVXNlckRlY3J5cHRpb25NZXRob2RJZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIERlY29kZSBkZWxlZ2F0ZUZvclVzZXJEZWNyeXB0aW9uKGFkZHJlc3MgZGVsZWdhdGUsIGFkZHJlc3MgdG9rZW5BZGRyZXNzLCB1aW50NjQgZXhwaXJ5KVxuICAgIGNvbnN0IGlubmVyRGVjb2RlZCA9IGFiaUNvZGVyLmRlY29kZShbLi4uZGVsZWdhdGVGb3JVc2VyRGVjcnlwdGlvblR5cGVzXSwgJzB4JyArIGlubmVySGV4LnNsaWNlKDgpKTtcbiAgICB0b2tlbkFkZHJlc3Nlcy5wdXNoKChpbm5lckRlY29kZWRbMV0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbkFkZHJlc3Nlcztcbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import EthereumCommon from '@ethereumjs/common';
2
+ export type SendCrossChainRecoveryOptions = {
3
+ recoveryId: string;
4
+ walletPassphrase?: string;
5
+ encryptedPrv?: string;
6
+ walletType: 'hot' | 'cold';
7
+ common?: EthereumCommon;
8
+ };
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdGhlcmV1bUNvbW1vbiBmcm9tICdAZXRoZXJldW1qcy9jb21tb24nO1xuXG5leHBvcnQgdHlwZSBTZW5kQ3Jvc3NDaGFpblJlY292ZXJ5T3B0aW9ucyA9IHtcbiAgcmVjb3ZlcnlJZDogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICBlbmNyeXB0ZWRQcnY/OiBzdHJpbmc7XG4gIHdhbGxldFR5cGU6ICdob3QnIHwgJ2NvbGQnO1xuICBjb21tb24/OiBFdGhlcmV1bUNvbW1vbjtcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './unit';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./unit"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3VuaXQnO1xuIl19
@@ -0,0 +1,8 @@
1
+ import { TestBitGoAPI } from '@bitgo-beta/sdk-test';
2
+ import { TransactionBuilder } from '../../src';
3
+ export declare function runBasicCoinInfoTests(coinName: string, bitgo: TestBitGoAPI, MainCoin: any, TestCoin: any, testData: any): void;
4
+ export declare function runExplainTransactionTests(coinName: string, txBuilder: TransactionBuilder, basecoin: any, testData: any): void;
5
+ export declare function runSignTransactionTests(coinName: string, builder: TransactionBuilder, basecoin: any, testData: any): void;
6
+ export declare function runTransactionVerificationTests(coinName: string, bitgo: TestBitGoAPI, basecoin: any, testData: any): void;
7
+ export declare function runRecoveryTransactionTests(coinName: string, txBuilder: TransactionBuilder, bitgo: TestBitGoAPI, testData: any, mockData: any): void;
8
+ //# sourceMappingURL=coin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coin.d.ts","sourceRoot":"","sources":["../../../test/unit/coin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAM/D,OAAO,EAKL,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAInB,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,KAAA,EAAE,QAAQ,KAAA,EAAE,QAAQ,EAAE,GAAG,QAwB7G;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,KAAA,EAAE,QAAQ,EAAE,GAAG,QAqElH;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,KAAA,EAAE,QAAQ,EAAE,GAAG,QA0F7G;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,KAAA,EAAE,QAAQ,EAAE,GAAG,QAoR7G;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,QA8Jd"}