@bitgo-beta/utxo-staking 1.1.1-beta.91 → 1.1.1-beta.910

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 (137) hide show
  1. package/dist/cjs/scripts/babylon-sync.d.ts +2 -0
  2. package/dist/cjs/scripts/babylon-sync.d.ts.map +1 -0
  3. package/dist/cjs/scripts/babylon-sync.js +126 -0
  4. package/dist/cjs/src/babylon/delegationMessage.d.ts +38 -0
  5. package/dist/cjs/src/babylon/delegationMessage.d.ts.map +1 -0
  6. package/dist/cjs/src/babylon/delegationMessage.js +285 -0
  7. package/dist/cjs/src/babylon/descriptor.d.ts +48 -0
  8. package/dist/cjs/src/babylon/descriptor.d.ts.map +1 -0
  9. package/dist/cjs/src/babylon/descriptor.js +97 -0
  10. package/dist/cjs/src/babylon/index.d.ts +8 -0
  11. package/dist/cjs/src/babylon/index.d.ts.map +1 -0
  12. package/dist/cjs/src/babylon/index.js +51 -0
  13. package/dist/cjs/src/babylon/network.d.ts +7 -0
  14. package/dist/cjs/src/babylon/network.d.ts.map +1 -0
  15. package/dist/cjs/src/babylon/network.js +66 -0
  16. package/dist/cjs/src/babylon/params.mainnet.json +152 -0
  17. package/dist/cjs/src/babylon/params.testnet.json +212 -0
  18. package/dist/cjs/src/babylon/parseDescriptor.d.ts +26 -0
  19. package/dist/cjs/src/babylon/parseDescriptor.d.ts.map +1 -0
  20. package/dist/cjs/src/babylon/parseDescriptor.js +159 -0
  21. package/dist/cjs/src/babylon/stakingManager.d.ts +6 -0
  22. package/dist/cjs/src/babylon/stakingManager.d.ts.map +1 -0
  23. package/dist/cjs/src/babylon/stakingManager.js +120 -0
  24. package/dist/cjs/src/babylon/stakingParams.d.ts +40 -0
  25. package/dist/cjs/src/babylon/stakingParams.d.ts.map +1 -0
  26. package/dist/cjs/src/babylon/stakingParams.js +132 -0
  27. package/dist/cjs/src/babylon/undelegation/UndelegationResponse.d.ts +24 -0
  28. package/dist/cjs/src/babylon/undelegation/UndelegationResponse.d.ts.map +1 -0
  29. package/dist/cjs/src/babylon/undelegation/UndelegationResponse.js +55 -0
  30. package/dist/cjs/src/babylon/undelegation/index.d.ts +3 -0
  31. package/dist/cjs/src/babylon/undelegation/index.d.ts.map +1 -0
  32. package/dist/{src → cjs/src/babylon/undelegation}/index.js +3 -4
  33. package/dist/cjs/src/babylon/undelegation/unbonding.d.ts +16 -0
  34. package/dist/cjs/src/babylon/undelegation/unbonding.d.ts.map +1 -0
  35. package/dist/cjs/src/babylon/undelegation/unbonding.js +111 -0
  36. package/dist/cjs/src/coreDao/descriptor.d.ts.map +1 -0
  37. package/dist/cjs/src/coreDao/descriptor.js +38 -0
  38. package/dist/cjs/src/coreDao/index.d.ts.map +1 -0
  39. package/dist/{src → cjs/src}/coreDao/index.js +1 -1
  40. package/dist/cjs/src/coreDao/opReturn.d.ts.map +1 -0
  41. package/dist/cjs/src/coreDao/opReturn.js +183 -0
  42. package/dist/{src → cjs/src}/coreDao/transaction.d.ts +16 -7
  43. package/dist/cjs/src/coreDao/transaction.d.ts.map +1 -0
  44. package/dist/cjs/src/coreDao/transaction.js +34 -0
  45. package/dist/cjs/src/index.d.ts +3 -0
  46. package/dist/cjs/src/index.d.ts.map +1 -0
  47. package/dist/cjs/src/index.js +39 -0
  48. package/dist/cjs/test/unit/babylon/bug71.d.ts +2 -0
  49. package/dist/cjs/test/unit/babylon/bug71.d.ts.map +1 -0
  50. package/dist/cjs/test/unit/babylon/bug71.js +108 -0
  51. package/dist/cjs/test/unit/babylon/key.utils.d.ts +6 -0
  52. package/dist/cjs/test/unit/babylon/key.utils.d.ts.map +1 -0
  53. package/dist/cjs/test/unit/babylon/key.utils.js +68 -0
  54. package/dist/cjs/test/unit/babylon/transactions.d.ts +2 -0
  55. package/dist/cjs/test/unit/babylon/transactions.d.ts.map +1 -0
  56. package/dist/cjs/test/unit/babylon/transactions.js +338 -0
  57. package/dist/cjs/test/unit/babylon/undelegation.d.ts +2 -0
  58. package/dist/cjs/test/unit/babylon/undelegation.d.ts.map +1 -0
  59. package/dist/cjs/test/unit/babylon/undelegation.js +156 -0
  60. package/dist/cjs/test/unit/babylon/vendor.utils.d.ts +13 -0
  61. package/dist/cjs/test/unit/babylon/vendor.utils.d.ts.map +1 -0
  62. package/dist/cjs/test/unit/babylon/vendor.utils.js +78 -0
  63. package/dist/cjs/test/unit/coreDao/descriptor.d.ts +2 -0
  64. package/dist/cjs/test/unit/coreDao/descriptor.d.ts.map +1 -0
  65. package/dist/cjs/test/unit/coreDao/descriptor.js +144 -0
  66. package/dist/cjs/test/unit/coreDao/opReturn.d.ts +2 -0
  67. package/dist/cjs/test/unit/coreDao/opReturn.d.ts.map +1 -0
  68. package/dist/cjs/test/unit/coreDao/opReturn.js +275 -0
  69. package/dist/cjs/test/unit/coreDao/utils.d.ts +5 -0
  70. package/dist/cjs/test/unit/coreDao/utils.d.ts.map +1 -0
  71. package/dist/cjs/test/unit/coreDao/utils.js +54 -0
  72. package/dist/cjs/test/unit/fixtures.utils.d.ts +9 -0
  73. package/dist/cjs/test/unit/fixtures.utils.d.ts.map +1 -0
  74. package/dist/cjs/test/unit/fixtures.utils.js +91 -0
  75. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  76. package/dist/esm/babylon/delegationMessage.d.ts +38 -0
  77. package/dist/esm/babylon/delegationMessage.d.ts.map +1 -0
  78. package/dist/esm/babylon/delegationMessage.js +239 -0
  79. package/dist/esm/babylon/descriptor.d.ts +48 -0
  80. package/dist/esm/babylon/descriptor.d.ts.map +1 -0
  81. package/dist/esm/babylon/descriptor.js +91 -0
  82. package/dist/esm/babylon/index.d.ts +8 -0
  83. package/dist/esm/babylon/index.d.ts.map +1 -0
  84. package/dist/esm/babylon/index.js +13 -0
  85. package/dist/esm/babylon/network.d.ts +7 -0
  86. package/dist/esm/babylon/network.d.ts.map +1 -0
  87. package/dist/esm/babylon/network.js +29 -0
  88. package/dist/esm/babylon/params.mainnet.json +152 -0
  89. package/dist/esm/babylon/params.testnet.json +212 -0
  90. package/dist/esm/babylon/parseDescriptor.d.ts +26 -0
  91. package/dist/esm/babylon/parseDescriptor.d.ts.map +1 -0
  92. package/dist/esm/babylon/parseDescriptor.js +155 -0
  93. package/dist/esm/babylon/stakingManager.d.ts +6 -0
  94. package/dist/esm/babylon/stakingManager.d.ts.map +1 -0
  95. package/dist/esm/babylon/stakingManager.js +83 -0
  96. package/dist/esm/babylon/stakingParams.d.ts +40 -0
  97. package/dist/esm/babylon/stakingParams.d.ts.map +1 -0
  98. package/dist/esm/babylon/stakingParams.js +86 -0
  99. package/dist/esm/babylon/undelegation/UndelegationResponse.d.ts +24 -0
  100. package/dist/esm/babylon/undelegation/UndelegationResponse.d.ts.map +1 -0
  101. package/dist/esm/babylon/undelegation/UndelegationResponse.js +18 -0
  102. package/dist/esm/babylon/undelegation/index.d.ts +3 -0
  103. package/dist/esm/babylon/undelegation/index.d.ts.map +1 -0
  104. package/dist/esm/babylon/undelegation/index.js +3 -0
  105. package/dist/esm/babylon/undelegation/unbonding.d.ts +16 -0
  106. package/dist/esm/babylon/undelegation/unbonding.d.ts.map +1 -0
  107. package/dist/esm/babylon/undelegation/unbonding.js +70 -0
  108. package/dist/esm/coreDao/descriptor.d.ts +18 -0
  109. package/dist/{src → esm}/coreDao/descriptor.d.ts.map +1 -1
  110. package/dist/esm/coreDao/descriptor.js +35 -0
  111. package/dist/esm/coreDao/index.d.ts +4 -0
  112. package/dist/esm/coreDao/index.js +4 -0
  113. package/dist/esm/coreDao/opReturn.d.ts +41 -0
  114. package/dist/esm/coreDao/opReturn.js +175 -0
  115. package/dist/esm/coreDao/transaction.d.ts +28 -0
  116. package/dist/esm/coreDao/transaction.d.ts.map +1 -0
  117. package/dist/esm/coreDao/transaction.js +30 -0
  118. package/dist/esm/index.d.ts +3 -0
  119. package/dist/{src → esm}/index.d.ts.map +1 -1
  120. package/dist/esm/index.js +3 -0
  121. package/package.json +42 -12
  122. package/.eslintignore +0 -5
  123. package/.mocharc.yml +0 -8
  124. package/CHANGELOG.md +0 -63
  125. package/dist/src/coreDao/descriptor.js +0 -37
  126. package/dist/src/coreDao/opReturn.js +0 -183
  127. package/dist/src/coreDao/transaction.d.ts.map +0 -1
  128. package/dist/src/coreDao/transaction.js +0 -26
  129. package/dist/src/index.d.ts +0 -3
  130. package/dist/src/transaction.d.ts +0 -32
  131. package/dist/src/transaction.d.ts.map +0 -1
  132. package/dist/src/transaction.js +0 -54
  133. /package/dist/{src → cjs/src}/coreDao/descriptor.d.ts +0 -0
  134. /package/dist/{src → cjs/src}/coreDao/index.d.ts +0 -0
  135. /package/dist/{src → cjs/src}/coreDao/opReturn.d.ts +0 -0
  136. /package/dist/{src → esm}/coreDao/index.d.ts.map +0 -0
  137. /package/dist/{src → esm}/coreDao/opReturn.d.ts.map +0 -0
@@ -0,0 +1,152 @@
1
+ [
2
+ {
3
+ "version": 0,
4
+ "params": {
5
+ "covenant_pks": [
6
+ "d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
7
+ "4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
8
+ "23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
9
+ "d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
10
+ "8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
11
+ "e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
12
+ "cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204",
13
+ "f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
14
+ "de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c"
15
+ ],
16
+ "covenant_quorum": 6,
17
+ "min_staking_value_sat": "500000",
18
+ "max_staking_value_sat": "5000000",
19
+ "min_staking_time_blocks": 64000,
20
+ "max_staking_time_blocks": 64000,
21
+ "slashing_pk_script": "agdiYWJ5bG9u",
22
+ "min_slashing_tx_fee_sat": "100000",
23
+ "slashing_rate": "0.001000000000000000",
24
+ "unbonding_time_blocks": 1008,
25
+ "unbonding_fee_sat": "64000",
26
+ "min_commission_rate": "0.030000000000000000",
27
+ "delegation_creation_base_gas_fee": "1095000",
28
+ "allow_list_expiration_height": "139920",
29
+ "btc_activation_height": 857910
30
+ }
31
+ },
32
+ {
33
+ "version": 1,
34
+ "params": {
35
+ "covenant_pks": [
36
+ "d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
37
+ "4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
38
+ "23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
39
+ "d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
40
+ "8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
41
+ "e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
42
+ "cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204",
43
+ "f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
44
+ "de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c"
45
+ ],
46
+ "covenant_quorum": 6,
47
+ "min_staking_value_sat": "500000",
48
+ "max_staking_value_sat": "50000000000",
49
+ "min_staking_time_blocks": 64000,
50
+ "max_staking_time_blocks": 64000,
51
+ "slashing_pk_script": "agdiYWJ5bG9u",
52
+ "min_slashing_tx_fee_sat": "100000",
53
+ "slashing_rate": "0.001000000000000000",
54
+ "unbonding_time_blocks": 1008,
55
+ "unbonding_fee_sat": "32000",
56
+ "min_commission_rate": "0.030000000000000000",
57
+ "delegation_creation_base_gas_fee": "1095000",
58
+ "allow_list_expiration_height": "139920",
59
+ "btc_activation_height": 864790
60
+ }
61
+ },
62
+ {
63
+ "version": 2,
64
+ "params": {
65
+ "covenant_pks": [
66
+ "d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
67
+ "4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
68
+ "23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
69
+ "d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
70
+ "8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
71
+ "e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
72
+ "cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204",
73
+ "f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
74
+ "de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c"
75
+ ],
76
+ "covenant_quorum": 6,
77
+ "min_staking_value_sat": "500000",
78
+ "max_staking_value_sat": "500000000000",
79
+ "min_staking_time_blocks": 64000,
80
+ "max_staking_time_blocks": 64000,
81
+ "slashing_pk_script": "agdiYWJ5bG9u",
82
+ "min_slashing_tx_fee_sat": "100000",
83
+ "slashing_rate": "0.001000000000000000",
84
+ "unbonding_time_blocks": 1008,
85
+ "unbonding_fee_sat": "32000",
86
+ "min_commission_rate": "0.030000000000000000",
87
+ "delegation_creation_base_gas_fee": "1095000",
88
+ "allow_list_expiration_height": "139920",
89
+ "btc_activation_height": 874088
90
+ }
91
+ },
92
+ {
93
+ "version": 3,
94
+ "params": {
95
+ "covenant_pks": [
96
+ "d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
97
+ "4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
98
+ "23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
99
+ "d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
100
+ "8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
101
+ "e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
102
+ "f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
103
+ "de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c",
104
+ "cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204"
105
+ ],
106
+ "covenant_quorum": 6,
107
+ "min_staking_value_sat": "500000",
108
+ "max_staking_value_sat": "500000000000",
109
+ "min_staking_time_blocks": 64000,
110
+ "max_staking_time_blocks": 64000,
111
+ "slashing_pk_script": "agdiYWJ5bG9u",
112
+ "min_slashing_tx_fee_sat": "100000",
113
+ "slashing_rate": "0.001000000000000000",
114
+ "unbonding_time_blocks": 1008,
115
+ "unbonding_fee_sat": "32000",
116
+ "min_commission_rate": "0.030000000000000000",
117
+ "delegation_creation_base_gas_fee": "1095000",
118
+ "allow_list_expiration_height": "139920",
119
+ "btc_activation_height": 891425
120
+ }
121
+ },
122
+ {
123
+ "version": 4,
124
+ "params": {
125
+ "covenant_pks": [
126
+ "d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
127
+ "4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
128
+ "23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
129
+ "d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
130
+ "8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
131
+ "e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
132
+ "f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
133
+ "de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c",
134
+ "cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204"
135
+ ],
136
+ "covenant_quorum": 6,
137
+ "min_staking_value_sat": "500000",
138
+ "max_staking_value_sat": "500000000000",
139
+ "min_staking_time_blocks": 64000,
140
+ "max_staking_time_blocks": 64000,
141
+ "slashing_pk_script": "agdiYWJ5bG9u",
142
+ "min_slashing_tx_fee_sat": "100000",
143
+ "slashing_rate": "0.001000000000000000",
144
+ "unbonding_time_blocks": 1008,
145
+ "unbonding_fee_sat": "9600",
146
+ "min_commission_rate": "0.030000000000000000",
147
+ "delegation_creation_base_gas_fee": "1095000",
148
+ "allow_list_expiration_height": "139920",
149
+ "btc_activation_height": 893362
150
+ }
151
+ }
152
+ ]
@@ -0,0 +1,212 @@
1
+ [
2
+ {
3
+ "version": 0,
4
+ "params": {
5
+ "covenant_pks": [
6
+ "49766ccd9e3cd94343e2040474a77fb37cdfd30530d05f9f1e96ae1e2102c86e",
7
+ "76d1ae01f8fb6bf30108731c884cddcf57ef6eef2d9d9559e130894e0e40c62c",
8
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
9
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
10
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
11
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
12
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
13
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
14
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
15
+ ],
16
+ "covenant_quorum": 6,
17
+ "min_staking_value_sat": "50000",
18
+ "max_staking_value_sat": "5000000",
19
+ "min_staking_time_blocks": 64000,
20
+ "max_staking_time_blocks": 64000,
21
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
22
+ "min_slashing_tx_fee_sat": "1000",
23
+ "slashing_rate": "0.100000000000000000",
24
+ "unbonding_time_blocks": 1008,
25
+ "unbonding_fee_sat": "2000",
26
+ "min_commission_rate": "0.030000000000000000",
27
+ "delegation_creation_base_gas_fee": "1000",
28
+ "allow_list_expiration_height": "26120",
29
+ "btc_activation_height": 197535
30
+ }
31
+ },
32
+ {
33
+ "version": 1,
34
+ "params": {
35
+ "covenant_pks": [
36
+ "09585ab55a971a231c945790a0a81df754e5a07263a5c20829931cc24683bbb7",
37
+ "76d1ae01f8fb6bf30108731c884cddcf57ef6eef2d9d9559e130894e0e40c62c",
38
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
39
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
40
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
41
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
42
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
43
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
44
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
45
+ ],
46
+ "covenant_quorum": 6,
47
+ "min_staking_value_sat": "50000",
48
+ "max_staking_value_sat": "5000000",
49
+ "min_staking_time_blocks": 64000,
50
+ "max_staking_time_blocks": 64000,
51
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
52
+ "min_slashing_tx_fee_sat": "1000",
53
+ "slashing_rate": "0.100000000000000000",
54
+ "unbonding_time_blocks": 1008,
55
+ "unbonding_fee_sat": "10000",
56
+ "min_commission_rate": "0.030000000000000000",
57
+ "delegation_creation_base_gas_fee": "1000",
58
+ "allow_list_expiration_height": "26120",
59
+ "btc_activation_height": 198665
60
+ }
61
+ },
62
+ {
63
+ "version": 2,
64
+ "params": {
65
+ "covenant_pks": [
66
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
67
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
68
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
69
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
70
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
71
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
72
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
73
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
74
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
75
+ ],
76
+ "covenant_quorum": 6,
77
+ "min_staking_value_sat": "50000",
78
+ "max_staking_value_sat": "5000000",
79
+ "min_staking_time_blocks": 64000,
80
+ "max_staking_time_blocks": 64000,
81
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
82
+ "min_slashing_tx_fee_sat": "1000",
83
+ "slashing_rate": "0.100000000000000000",
84
+ "unbonding_time_blocks": 1008,
85
+ "unbonding_fee_sat": "10000",
86
+ "min_commission_rate": "0.030000000000000000",
87
+ "delegation_creation_base_gas_fee": "1000",
88
+ "allow_list_expiration_height": "26120",
89
+ "btc_activation_height": 200665
90
+ }
91
+ },
92
+ {
93
+ "version": 3,
94
+ "params": {
95
+ "covenant_pks": [
96
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
97
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
98
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
99
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
100
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
101
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
102
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
103
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
104
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
105
+ ],
106
+ "covenant_quorum": 6,
107
+ "min_staking_value_sat": "50000",
108
+ "max_staking_value_sat": "50000000",
109
+ "min_staking_time_blocks": 64000,
110
+ "max_staking_time_blocks": 64000,
111
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
112
+ "min_slashing_tx_fee_sat": "1000",
113
+ "slashing_rate": "0.100000000000000000",
114
+ "unbonding_time_blocks": 1008,
115
+ "unbonding_fee_sat": "5000",
116
+ "min_commission_rate": "0.030000000000000000",
117
+ "delegation_creation_base_gas_fee": "1000",
118
+ "allow_list_expiration_height": "26120",
119
+ "btc_activation_height": 215968
120
+ }
121
+ },
122
+ {
123
+ "version": 4,
124
+ "params": {
125
+ "covenant_pks": [
126
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
127
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
128
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
129
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
130
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
131
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
132
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
133
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
134
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
135
+ ],
136
+ "covenant_quorum": 6,
137
+ "min_staking_value_sat": "50000",
138
+ "max_staking_value_sat": "50000000",
139
+ "min_staking_time_blocks": 64000,
140
+ "max_staking_time_blocks": 64000,
141
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
142
+ "min_slashing_tx_fee_sat": "1000",
143
+ "slashing_rate": "0.100000000000000000",
144
+ "unbonding_time_blocks": 1008,
145
+ "unbonding_fee_sat": "5000",
146
+ "min_commission_rate": "0.030000000000000000",
147
+ "delegation_creation_base_gas_fee": "1000",
148
+ "allow_list_expiration_height": "26120",
149
+ "btc_activation_height": 220637
150
+ }
151
+ },
152
+ {
153
+ "version": 5,
154
+ "params": {
155
+ "covenant_pks": [
156
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
157
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
158
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
159
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
160
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
161
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
162
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
163
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
164
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
165
+ ],
166
+ "covenant_quorum": 6,
167
+ "min_staking_value_sat": "50000",
168
+ "max_staking_value_sat": "35000000000",
169
+ "min_staking_time_blocks": 10000,
170
+ "max_staking_time_blocks": 64000,
171
+ "slashing_pk_script": "ABRb4SYk0IorQkCV18ByIcM0UNFL8Q==",
172
+ "min_slashing_tx_fee_sat": "5000",
173
+ "slashing_rate": "0.050000000000000000",
174
+ "unbonding_time_blocks": 1008,
175
+ "unbonding_fee_sat": "2000",
176
+ "min_commission_rate": "0.030000000000000000",
177
+ "delegation_creation_base_gas_fee": "1095000",
178
+ "allow_list_expiration_height": "26124",
179
+ "btc_activation_height": 227174
180
+ }
181
+ },
182
+ {
183
+ "version": 6,
184
+ "params": {
185
+ "covenant_pks": [
186
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
187
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
188
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
189
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
190
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
191
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
192
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
193
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
194
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
195
+ ],
196
+ "covenant_quorum": 6,
197
+ "min_staking_value_sat": "50000",
198
+ "max_staking_value_sat": "35000000000",
199
+ "min_staking_time_blocks": 10000,
200
+ "max_staking_time_blocks": 64000,
201
+ "slashing_pk_script": "ABRb4SYk0IorQkCV18ByIcM0UNFL8Q==",
202
+ "min_slashing_tx_fee_sat": "6000",
203
+ "slashing_rate": "0.050000000000000000",
204
+ "unbonding_time_blocks": 1008,
205
+ "unbonding_fee_sat": "2000",
206
+ "min_commission_rate": "0.030000000000000000",
207
+ "delegation_creation_base_gas_fee": "1095000",
208
+ "allow_list_expiration_height": "26124",
209
+ "btc_activation_height": 235952
210
+ }
211
+ }
212
+ ]
@@ -0,0 +1,26 @@
1
+ import { Descriptor, ast } from '@bitgo/wasm-utxo';
2
+ export type ParsedStakingDescriptor = {
3
+ stakerKey: Buffer;
4
+ finalityProviderKeys: Buffer[];
5
+ covenantKeys: Buffer[];
6
+ covenantThreshold: number;
7
+ stakingTimeLock: number;
8
+ slashingMiniscriptNode: ast.MiniscriptNode;
9
+ unbondingMiniscriptNode: ast.MiniscriptNode;
10
+ timelockMiniscriptNode: ast.MiniscriptNode;
11
+ };
12
+ /**
13
+ * @return parsed staking descriptor components or null if the descriptor does not match the expected staking pattern.
14
+ */
15
+ export declare function parseStakingDescriptor(descriptor: Descriptor | ast.DescriptorNode): ParsedStakingDescriptor | null;
16
+ export type ParsedUnbondingDescriptor = {
17
+ stakerKey: Buffer;
18
+ finalityProviderKeys: Buffer[];
19
+ covenantKeys: Buffer[];
20
+ covenantThreshold: number;
21
+ unbondingTimeLock: number;
22
+ slashingMiniscriptNode: ast.MiniscriptNode;
23
+ unbondingTimelockMiniscriptNode: ast.MiniscriptNode;
24
+ };
25
+ export declare function parseUnbondingDescriptor(descriptor: Descriptor | ast.DescriptorNode): ParsedUnbondingDescriptor | null;
26
+ //# sourceMappingURL=parseDescriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDescriptor.d.ts","sourceRoot":"","sources":["../../../src/babylon/parseDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAKnD,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,GAAG,CAAC,cAAc,CAAC;IAC3C,uBAAuB,EAAE,GAAG,CAAC,cAAc,CAAC;IAC5C,sBAAsB,EAAE,GAAG,CAAC,cAAc,CAAC;CAC5C,CAAC;AAwFF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,GAAG,CAAC,cAAc,GAAG,uBAAuB,GAAG,IAAI,CA+DlH;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,GAAG,CAAC,cAAc,CAAC;IAC3C,+BAA+B,EAAE,GAAG,CAAC,cAAc,CAAC;CACrD,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,GAAG,GAAG,CAAC,cAAc,GAC1C,yBAAyB,GAAG,IAAI,CA2ClC"}
@@ -0,0 +1,155 @@
1
+ import { Descriptor, ast } from '@bitgo/wasm-utxo';
2
+ import { PatternMatcher } from '@bitgo-beta/utxo-core/descriptor';
3
+ import { getUnspendableKey } from './descriptor';
4
+ function parseMulti(multi) {
5
+ if (!Array.isArray(multi) || multi.length < 1) {
6
+ throw new Error('Invalid multi structure: not an array or empty');
7
+ }
8
+ const [threshold, ...keys] = multi;
9
+ if (typeof threshold !== 'number') {
10
+ throw new Error('Invalid multi structure: threshold is not a number');
11
+ }
12
+ if (!keys.every((k) => typeof k === 'string')) {
13
+ throw new Error('Invalid multi structure: not all keys are strings');
14
+ }
15
+ return [threshold, keys];
16
+ }
17
+ function parseUnilateralTimelock(node, matcher) {
18
+ const pattern = {
19
+ and_v: [{ 'v:pk': { $var: 'key' } }, { older: { $var: 'timelock' } }],
20
+ };
21
+ const match = matcher.match(node, pattern);
22
+ if (!match) {
23
+ return null;
24
+ }
25
+ if (typeof match.key !== 'string') {
26
+ throw new Error('key must be a string');
27
+ }
28
+ if (typeof match.timelock !== 'number') {
29
+ throw new Error('timelock must be a number');
30
+ }
31
+ return { key: match.key, timelock: match.timelock };
32
+ }
33
+ function parseSlashingNode(slashingNode, matcher) {
34
+ const slashingPattern = {
35
+ and_v: [
36
+ {
37
+ and_v: [{ 'v:pk': { $var: 'stakerKey' } }, { $var: 'finalityProviderKeyOrMulti' }],
38
+ },
39
+ { multi_a: { $var: 'covenantMulti' } },
40
+ ],
41
+ };
42
+ const slashingMatch = matcher.match(slashingNode, slashingPattern);
43
+ if (!slashingMatch) {
44
+ throw new Error('Slashing node does not match expected pattern');
45
+ }
46
+ if (typeof slashingMatch.stakerKey !== 'string') {
47
+ throw new Error('stakerKey must be a string');
48
+ }
49
+ const [covenantThreshold, covenantKeyStrings] = parseMulti(slashingMatch.covenantMulti);
50
+ const covenantKeys = covenantKeyStrings.map((k) => Buffer.from(k, 'hex'));
51
+ let finalityProviderKeys;
52
+ const fpKeyOrMulti = slashingMatch.finalityProviderKeyOrMulti;
53
+ if ('v:pk' in fpKeyOrMulti) {
54
+ finalityProviderKeys = [Buffer.from(fpKeyOrMulti['v:pk'], 'hex')];
55
+ }
56
+ else if ('v:multi_a' in fpKeyOrMulti) {
57
+ const [threshold, keyStrings] = parseMulti(fpKeyOrMulti['v:multi_a']);
58
+ if (threshold !== 1) {
59
+ throw new Error('Finality provider multi threshold must be 1');
60
+ }
61
+ finalityProviderKeys = keyStrings.map((k) => Buffer.from(k, 'hex'));
62
+ }
63
+ else {
64
+ throw new Error('Invalid finality provider key structure');
65
+ }
66
+ return {
67
+ stakerKey: slashingMatch.stakerKey,
68
+ finalityProviderKeys,
69
+ covenantKeys,
70
+ covenantThreshold,
71
+ };
72
+ }
73
+ /**
74
+ * @return parsed staking descriptor components or null if the descriptor does not match the expected staking pattern.
75
+ */
76
+ export function parseStakingDescriptor(descriptor) {
77
+ const pattern = {
78
+ tr: [
79
+ getUnspendableKey(),
80
+ [{ $var: 'slashingMiniscriptNode' }, [{ $var: 'unbondingMiniscriptNode' }, { $var: 'timelockMiniscriptNode' }]],
81
+ ],
82
+ };
83
+ const matcher = new PatternMatcher();
84
+ const descriptorNode = descriptor instanceof Descriptor ? ast.fromDescriptor(descriptor) : descriptor;
85
+ const result = matcher.match(descriptorNode, pattern);
86
+ if (!result) {
87
+ return null;
88
+ }
89
+ const slashingNode = result.slashingMiniscriptNode;
90
+ const unbondingNode = result.unbondingMiniscriptNode;
91
+ const timelockNode = result.timelockMiniscriptNode;
92
+ // Verify slashing node shape: and_v([and_v([pk, pk/multi_a]), multi_a])
93
+ const { stakerKey: stakerKey1, finalityProviderKeys, covenantKeys, covenantThreshold, } = parseSlashingNode(slashingNode, matcher);
94
+ // Verify unbonding node shape: and_v([pk, multi_a])
95
+ const unbondingPattern = {
96
+ and_v: [{ 'v:pk': { $var: 'stakerKey2' } }, { multi_a: { $var: 'covenantMulti2' } }],
97
+ };
98
+ const unbondingMatch = matcher.match(unbondingNode, unbondingPattern);
99
+ if (!unbondingMatch) {
100
+ throw new Error('Unbonding node does not match expected pattern');
101
+ }
102
+ // Verify unbonding timelock node shape: and_v([pk, older])
103
+ const unilateralTimelock = parseUnilateralTimelock(timelockNode, matcher);
104
+ if (!unilateralTimelock) {
105
+ return null;
106
+ }
107
+ const { key: stakerKey3, timelock: stakingTimeLock } = unilateralTimelock;
108
+ // Verify all staker keys are the same
109
+ if (stakerKey1 !== unbondingMatch.stakerKey2 || unbondingMatch.stakerKey2 !== stakerKey3) {
110
+ throw new Error('Staker keys must be identical across all nodes');
111
+ }
112
+ const stakerKey = Buffer.from(stakerKey1, 'hex');
113
+ return {
114
+ stakerKey,
115
+ finalityProviderKeys,
116
+ covenantKeys,
117
+ covenantThreshold,
118
+ stakingTimeLock,
119
+ slashingMiniscriptNode: slashingNode,
120
+ unbondingMiniscriptNode: unbondingNode,
121
+ timelockMiniscriptNode: timelockNode,
122
+ };
123
+ }
124
+ export function parseUnbondingDescriptor(descriptor) {
125
+ const pattern = {
126
+ tr: [getUnspendableKey(), [{ $var: 'slashingMiniscriptNode' }, { $var: 'unbondingTimelockMiniscriptNode' }]],
127
+ };
128
+ const matcher = new PatternMatcher();
129
+ const descriptorNode = descriptor instanceof Descriptor ? ast.fromDescriptor(descriptor) : descriptor;
130
+ const result = matcher.match(descriptorNode, pattern);
131
+ if (!result) {
132
+ return null;
133
+ }
134
+ const slashingNode = result.slashingMiniscriptNode;
135
+ const unbondingTimelockNode = result.unbondingTimelockMiniscriptNode;
136
+ const { stakerKey: stakerKey1, finalityProviderKeys, covenantKeys, covenantThreshold, } = parseSlashingNode(slashingNode, matcher);
137
+ const unilateralTimelock = parseUnilateralTimelock(unbondingTimelockNode, matcher);
138
+ if (!unilateralTimelock) {
139
+ return null;
140
+ }
141
+ const { key: stakerKey2, timelock: unbondingTimeLock } = unilateralTimelock;
142
+ if (stakerKey1 !== stakerKey2) {
143
+ throw new Error('Staker keys must be identical across all nodes');
144
+ }
145
+ return {
146
+ stakerKey: Buffer.from(stakerKey1, 'hex'),
147
+ finalityProviderKeys,
148
+ covenantKeys,
149
+ covenantThreshold,
150
+ unbondingTimeLock,
151
+ slashingMiniscriptNode: slashingNode,
152
+ unbondingTimelockMiniscriptNode: unbondingTimelockNode,
153
+ };
154
+ }
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VEZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhYnlsb24vcGFyc2VEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBVyxNQUFNLGtDQUFrQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWFqRCxTQUFTLFVBQVUsQ0FBQyxLQUFjO0lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ25DLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQzlCLElBQXdCLEVBQ3hCLE9BQXVCO0lBRXZCLE1BQU0sT0FBTyxHQUFZO1FBQ3ZCLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFF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QUM7SUFFRCxPQUFPO1FBQ0wsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztRQUN6QyxvQkFBb0I7UUFDcEIsWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsc0JBQXNCLEVBQUUsWUFBWTtRQUNwQywrQkFBK0IsRUFBRSxxQkFBcUI7S0FDdkQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNjcmlwdG9yLCBhc3QgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCB7IFBhdHRlcm5NYXRjaGVyLCBQYXR0ZXJuIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1jb3JlL2Rlc2NyaXB0b3InO1xuXG5pbXBvcnQgeyBnZXRVbnNwZW5kYWJsZUtleSB9IGZyb20gJy4vZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFN0YWtpbmdEZXNjcmlwdG9yID0ge1xuICBzdGFrZXJLZXk6IEJ1ZmZlcjtcbiAgZmluYWxpdHlQcm92aWRlcktleXM6IEJ1ZmZlcltdO1xuICBjb3ZlbmFudEtleXM6IEJ1ZmZlcltdO1xuICBjb3ZlbmFudFRocmVzaG9sZDogbnVtYmVyO1xuICBzdGFraW5nVGltZUxvY2s6IG51bWJlcjtcbiAgc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZTogYXN0Lk1pbmlzY3JpcHROb2RlO1xuICB1bmJvbmRpbmdNaW5pc2NyaXB0Tm9kZTogYXN0Lk1pbmlzY3JpcHROb2RlO1xuICB0aW1lbG9ja01pbmlzY3JpcHROb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG59O1xuXG5mdW5jdGlvbiBwYXJzZU11bHRpKG11bHRpOiB1bmtub3duKTogW251bWJlciwgc3RyaW5nW11dIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG11bHRpKSB8fCBtdWx0aS5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpIHN0cnVjdHVyZTogbm90IGFuIGFycmF5IG9yIGVtcHR5Jyk7XG4gIH1cbiAgY29uc3QgW3RocmVzaG9sZCwgLi4ua2V5c10gPSBtdWx0aTtcbiAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpIHN0cnVjdHVyZTogdGhyZXNob2xkIGlzIG5vdCBhIG51bWJlcicpO1xuICB9XG4gIGlmICgha2V5cy5ldmVyeSgoaykgPT4gdHlwZW9mIGsgPT09ICdzdHJpbmcnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtdWx0aSBzdHJ1Y3R1cmU6IG5vdCBhbGwga2V5cyBhcmUgc3RyaW5ncycpO1xuICB9XG4gIHJldHVybiBbdGhyZXNob2xkLCBrZXlzXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVbmlsYXRlcmFsVGltZWxvY2soXG4gIG5vZGU6IGFzdC5NaW5pc2NyaXB0Tm9kZSxcbiAgbWF0Y2hlcjogUGF0dGVybk1hdGNoZXJcbik6IHsga2V5OiBzdHJpbmc7IHRpbWVsb2NrOiBudW1iZXIgfSB8IG51bGwge1xuICBjb25zdCBwYXR0ZXJuOiBQYXR0ZXJuID0ge1xuICAgIGFuZF92OiBbeyAndjpwayc6IHsgJHZhcjogJ2tleScgfSB9LCB7IG9sZGVyOiB7ICR2YXI6ICd0aW1lbG9jaycgfSB9XSxcbiAgfTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLm1hdGNoKG5vZGUsIHBhdHRlcm4pO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHR5cGVvZiBtYXRjaC5rZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdrZXkgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG4gIGlmICh0eXBlb2YgbWF0Y2gudGltZWxvY2sgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0aW1lbG9jayBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gIH1cbiAgcmV0dXJuIHsga2V5OiBtYXRjaC5rZXksIHRpbWVsb2NrOiBtYXRjaC50aW1lbG9jayB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZVNsYXNoaW5nTm9kZShcbiAgc2xhc2hpbmdOb2RlOiBhc3QuTWluaXNjcmlwdE5vZGUsXG4gIG1hdGNoZXI6IFBhdHRlcm5NYXRjaGVyXG4pOiB7XG4gIHN0YWtlcktleTogc3RyaW5nO1xuICBmaW5hbGl0eVByb3ZpZGVyS2V5czogQnVmZmVyW107XG4gIGNvdmVuYW50S2V5czogQnVmZmVyW107XG4gIGNvdmVuYW50VGhyZXNob2xkOiBudW1iZXI7XG59IHtcbiAgY29uc3Qgc2xhc2hpbmdQYXR0ZXJuOiBQYXR0ZXJuID0ge1xuICAgIGFuZF92OiBbXG4gICAgICB7XG4gICAgICAgIGFuZF92OiBbeyAndjpwayc6IHsgJHZhcjogJ3N0YWtlcktleScgfSB9LCB7ICR2YXI6ICdmaW5hbGl0eVByb3ZpZGVyS2V5T3JNdWx0aScgfV0sXG4gICAgICB9LFxuICAgICAgeyBtdWx0aV9hOiB7ICR2YXI6ICdjb3ZlbmFudE11bHRpJyB9IH0sXG4gICAgXSxcbiAgfTtcblxuICBjb25zdCBzbGFzaGluZ01hdGNoID0gbWF0Y2hlci5tYXRjaChzbGFzaGluZ05vZGUsIHNsYXNoaW5nUGF0dGVybik7XG4gIGlmICghc2xhc2hpbmdNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2xhc2hpbmcgbm9kZSBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBwYXR0ZXJuJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHNsYXNoaW5nTWF0Y2guc3Rha2VyS2V5ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignc3Rha2VyS2V5IG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGNvbnN0IFtjb3ZlbmFudFRocmVzaG9sZCwgY292ZW5hbnRLZXlTdHJpbmdzXSA9IHBhcnNlTXVsdGkoc2xhc2hpbmdNYXRjaC5jb3ZlbmFudE11bHRpKTtcbiAgY29uc3QgY292ZW5hbnRLZXlzID0gY292ZW5hbnRLZXlTdHJpbmdzLm1hcCgoaykgPT4gQnVmZmVyLmZyb20oaywgJ2hleCcpKTtcblxuICBsZXQgZmluYWxpdHlQcm92aWRlcktleXM6IEJ1ZmZlcltdO1xuICBjb25zdCBmcEtleU9yTXVsdGkgPSBzbGFzaGluZ01hdGNoLmZpbmFsaXR5UHJvdmlkZXJLZXlPck11bHRpIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZTtcbiAgaWYgKCd2OnBrJyBpbiBmcEtleU9yTXVsdGkpIHtcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyA9IFtCdWZmZXIuZnJvbShmcEtleU9yTXVsdGlbJ3Y6cGsnXSwgJ2hleCcpXTtcbiAgfSBlbHNlIGlmICgndjptdWx0aV9hJyBpbiBmcEtleU9yTXVsdGkpIHtcbiAgICBjb25zdCBbdGhyZXNob2xkLCBrZXlTdHJpbmdzXSA9IHBhcnNlTXVsdGkoZnBLZXlPck11bHRpWyd2Om11bHRpX2EnXSk7XG4gICAgaWYgKHRocmVzaG9sZCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaW5hbGl0eSBwcm92aWRlciBtdWx0aSB0aHJlc2hvbGQgbXVzdCBiZSAxJyk7XG4gICAgfVxuICAgIGZpbmFsaXR5UHJvdmlkZXJLZXlzID0ga2V5U3RyaW5ncy5tYXAoKGspID0+IEJ1ZmZlci5mcm9tKGssICdoZXgnKSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZpbmFsaXR5IHByb3ZpZGVyIGtleSBzdHJ1Y3R1cmUnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3Rha2VyS2V5OiBzbGFzaGluZ01hdGNoLnN0YWtlcktleSxcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyxcbiAgICBjb3ZlbmFudEtleXMsXG4gICAgY292ZW5hbnRUaHJlc2hvbGQsXG4gIH07XG59XG5cbi8qKlxuICogQHJldHVybiBwYXJzZWQgc3Rha2luZyBkZXNjcmlwdG9yIGNvbXBvbmVudHMgb3IgbnVsbCBpZiB0aGUgZGVzY3JpcHRvciBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgc3Rha2luZyBwYXR0ZXJuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGFraW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yIHwgYXN0LkRlc2NyaXB0b3JOb2RlKTogUGFyc2VkU3Rha2luZ0Rlc2NyaXB0b3IgfCBudWxsIHtcbiAgY29uc3QgcGF0dGVybjogUGF0dGVybiA9IHtcbiAgICB0cjogW1xuICAgICAgZ2V0VW5zcGVuZGFibGVLZXkoKSxcbiAgICAgIFt7ICR2YXI6ICdzbGFzaGluZ01pbmlzY3JpcHROb2RlJyB9LCBbeyAkdmFyOiAndW5ib25kaW5nTWluaXNjcmlwdE5vZGUnIH0sIHsgJHZhcjogJ3RpbWVsb2NrTWluaXNjcmlwdE5vZGUnIH1dXSxcbiAgICBdLFxuICB9O1xuXG4gIGNvbnN0IG1hdGNoZXIgPSBuZXcgUGF0dGVybk1hdGNoZXIoKTtcbiAgY29uc3QgZGVzY3JpcHRvck5vZGUgPSBkZXNjcmlwdG9yIGluc3RhbmNlb2YgRGVzY3JpcHRvciA/IGFzdC5mcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yKSA6IGRlc2NyaXB0b3I7XG4gIGNvbnN0IHJlc3VsdCA9IG1hdGNoZXIubWF0Y2goZGVzY3JpcHRvck5vZGUsIHBhdHRlcm4pO1xuXG4gIGlmICghcmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzbGFzaGluZ05vZGUgPSByZXN1bHQuc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZSBhcyBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIGNvbnN0IHVuYm9uZGluZ05vZGUgPSByZXN1bHQudW5ib25kaW5nTWluaXNjcmlwdE5vZGUgYXMgYXN0Lk1pbmlzY3JpcHROb2RlO1xuICBjb25zdCB0aW1lbG9ja05vZGUgPSByZXN1bHQudGltZWxvY2tNaW5pc2NyaXB0Tm9kZSBhcyBhc3QuTWluaXNjcmlwdE5vZGU7XG5cbiAgLy8gVmVyaWZ5IHNsYXNoaW5nIG5vZGUgc2hhcGU6IGFuZF92KFthbmRfdihbcGssIHBrL211bHRpX2FdKSwgbXVsdGlfYV0pXG4gIGNvbnN0IHtcbiAgICBzdGFrZXJLZXk6IHN0YWtlcktleTEsXG4gICAgZmluYWxpdHlQcm92aWRlcktleXMsXG4gICAgY292ZW5hbnRLZXlzLFxuICAgIGNvdmVuYW50VGhyZXNob2xkLFxuICB9ID0gcGFyc2VTbGFzaGluZ05vZGUoc2xhc2hpbmdOb2RlLCBtYXRjaGVyKTtcblxuICAvLyBWZXJpZnkgdW5ib25kaW5nIG5vZGUgc2hhcGU6IGFuZF92KFtwaywgbXVsdGlfYV0pXG4gIGNvbnN0IHVuYm9uZGluZ1BhdHRlcm46IFBhdHRlcm4gPSB7XG4gICAgYW5kX3Y6IFt7ICd2OnBrJzogeyAkdmFyOiAnc3Rha2VyS2V5MicgfSB9LCB7IG11bHRpX2E6IHsgJHZhcjogJ2NvdmVuYW50TXVsdGkyJyB9IH1dLFxuICB9O1xuXG4gIGNvbnN0IHVuYm9uZGluZ01hdGNoID0gbWF0Y2hlci5tYXRjaCh1bmJvbmRpbmdOb2RlLCB1bmJvbmRpbmdQYXR0ZXJuKTtcbiAgaWYgKCF1bmJvbmRpbmdNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5ib25kaW5nIG5vZGUgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgcGF0dGVybicpO1xuICB9XG5cbiAgLy8gVmVyaWZ5IHVuYm9uZGluZyB0aW1lbG9jayBub2RlIHNoYXBlOiBhbmRfdihbcGssIG9sZGVyXSlcbiAgY29uc3QgdW5pbGF0ZXJhbFRpbWVsb2NrID0gcGFyc2VVbmlsYXRlcmFsVGltZWxvY2sodGltZWxvY2tOb2RlLCBtYXRjaGVyKTtcbiAgaWYgKCF1bmlsYXRlcmFsVGltZWxvY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsga2V5OiBzdGFrZXJLZXkzLCB0aW1lbG9jazogc3Rha2luZ1RpbWVMb2NrIH0gPSB1bmlsYXRlcmFsVGltZWxvY2s7XG5cbiAgLy8gVmVyaWZ5IGFsbCBzdGFrZXIga2V5cyBhcmUgdGhlIHNhbWVcbiAgaWYgKHN0YWtlcktleTEgIT09IHVuYm9uZGluZ01hdGNoLnN0YWtlcktleTIgfHwgdW5ib25kaW5nTWF0Y2guc3Rha2VyS2V5MiAhPT0gc3Rha2VyS2V5Mykge1xuICAgIHRocm93IG5ldyBFcnJvcignU3Rha2VyIGtleXMgbXVzdCBiZSBpZGVudGljYWwgYWNyb3NzIGFsbCBub2RlcycpO1xuICB9XG5cbiAgY29uc3Qgc3Rha2VyS2V5ID0gQnVmZmVyLmZyb20oc3Rha2VyS2V5MSwgJ2hleCcpO1xuXG4gIHJldHVybiB7XG4gICAgc3Rha2VyS2V5LFxuICAgIGZpbmFsaXR5UHJvdmlkZXJLZXlzLFxuICAgIGNvdmVuYW50S2V5cyxcbiAgICBjb3ZlbmFudFRocmVzaG9sZCxcbiAgICBzdGFraW5nVGltZUxvY2ssXG4gICAgc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZTogc2xhc2hpbmdOb2RlLFxuICAgIHVuYm9uZGluZ01pbmlzY3JpcHROb2RlOiB1bmJvbmRpbmdOb2RlLFxuICAgIHRpbWVsb2NrTWluaXNjcmlwdE5vZGU6IHRpbWVsb2NrTm9kZSxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkVW5ib25kaW5nRGVzY3JpcHRvciA9IHtcbiAgc3Rha2VyS2V5OiBCdWZmZXI7XG4gIGZpbmFsaXR5UHJvdmlkZXJLZXlzOiBCdWZmZXJbXTtcbiAgY292ZW5hbnRLZXlzOiBCdWZmZXJbXTtcbiAgY292ZW5hbnRUaHJlc2hvbGQ6IG51bWJlcjtcbiAgdW5ib25kaW5nVGltZUxvY2s6IG51bWJlcjtcbiAgc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZTogYXN0Lk1pbmlzY3JpcHROb2RlO1xuICB1bmJvbmRpbmdUaW1lbG9ja01pbmlzY3JpcHROb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbmJvbmRpbmdEZXNjcmlwdG9yKFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yIHwgYXN0LkRlc2NyaXB0b3JOb2RlXG4pOiBQYXJzZWRVbmJvbmRpbmdEZXNjcmlwdG9yIHwgbnVsbCB7XG4gIGNvbnN0IHBhdHRlcm46IFBhdHRlcm4gPSB7XG4gICAgdHI6IFtnZXRVbnNwZW5kYWJsZUtleSgpLCBbeyAkdmFyOiAnc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZScgfSwgeyAkdmFyOiAndW5ib25kaW5nVGltZWxvY2tNaW5pc2NyaXB0Tm9kZScgfV1dLFxuICB9O1xuXG4gIGNvbnN0IG1hdGNoZXIgPSBuZXcgUGF0dGVybk1hdGNoZXIoKTtcbiAgY29uc3QgZGVzY3JpcHRvck5vZGUgPSBkZXNjcmlwdG9yIGluc3RhbmNlb2YgRGVzY3JpcHRvciA/IGFzdC5mcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yKSA6IGRlc2NyaXB0b3I7XG4gIGNvbnN0IHJlc3VsdCA9IG1hdGNoZXIubWF0Y2goZGVzY3JpcHRvck5vZGUsIHBhdHRlcm4pO1xuXG4gIGlmICghcmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzbGFzaGluZ05vZGUgPSByZXN1bHQuc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZSBhcyBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIGNvbnN0IHVuYm9uZGluZ1RpbWVsb2NrTm9kZSA9IHJlc3VsdC51bmJvbmRpbmdUaW1lbG9ja01pbmlzY3JpcHROb2RlIGFzIGFzdC5NaW5pc2NyaXB0Tm9kZTtcblxuICBjb25zdCB7XG4gICAgc3Rha2VyS2V5OiBzdGFrZXJLZXkxLFxuICAgIGZpbmFsaXR5UHJvdmlkZXJLZXlzLFxuICAgIGNvdmVuYW50S2V5cyxcbiAgICBjb3ZlbmFudFRocmVzaG9sZCxcbiAgfSA9IHBhcnNlU2xhc2hpbmdOb2RlKHNsYXNoaW5nTm9kZSwgbWF0Y2hlcik7XG5cbiAgY29uc3QgdW5pbGF0ZXJhbFRpbWVsb2NrID0gcGFyc2VVbmlsYXRlcmFsVGltZWxvY2sodW5ib25kaW5nVGltZWxvY2tOb2RlLCBtYXRjaGVyKTtcbiAgaWYgKCF1bmlsYXRlcmFsVGltZWxvY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsga2V5OiBzdGFrZXJLZXkyLCB0aW1lbG9jazogdW5ib25kaW5nVGltZUxvY2sgfSA9IHVuaWxhdGVyYWxUaW1lbG9jaztcblxuICBpZiAoc3Rha2VyS2V5MSAhPT0gc3Rha2VyS2V5Mikge1xuICAgIHRocm93IG5ldyBFcnJvcignU3Rha2VyIGtleXMgbXVzdCBiZSBpZGVudGljYWwgYWNyb3NzIGFsbCBub2RlcycpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFrZXJLZXk6IEJ1ZmZlci5mcm9tKHN0YWtlcktleTEsICdoZXgnKSxcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyxcbiAgICBjb3ZlbmFudEtleXMsXG4gICAgY292ZW5hbnRUaHJlc2hvbGQsXG4gICAgdW5ib25kaW5nVGltZUxvY2ssXG4gICAgc2xhc2hpbmdNaW5pc2NyaXB0Tm9kZTogc2xhc2hpbmdOb2RlLFxuICAgIHVuYm9uZGluZ1RpbWVsb2NrTWluaXNjcmlwdE5vZGU6IHVuYm9uZGluZ1RpbWVsb2NrTm9kZSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import * as bitcoinjslib from 'bitcoinjs-lib';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ import * as vendor from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
4
+ export declare const mockBabylonProvider: vendor.BabylonProvider;
5
+ export declare function createStakingManager(network: bitcoinjslib.Network | utxolib.Network, btcProvider: vendor.BtcProvider, stakingParams?: vendor.VersionedStakingParams[], babylonProvider?: vendor.BabylonProvider): vendor.BabylonBtcStakingManager;
6
+ //# sourceMappingURL=stakingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingManager.d.ts","sourceRoot":"","sources":["../../../src/babylon/stakingManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,2CAA2C,CAAC;AAmFpE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,eAIxC,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,aAAa,CAAC,EAAE,MAAM,CAAC,sBAAsB,EAAE,EAC/C,eAAe,yBAAsB,GACpC,MAAM,CAAC,wBAAwB,CAiBjC"}