@continuumdao/continuum-node-sdk 1.2.7 → 1.2.10

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 (275) hide show
  1. package/dist/core/agent/environment-variables.d.ts +12 -0
  2. package/dist/core/agent/environment-variables.d.ts.map +1 -0
  3. package/dist/core/agent/environment-variables.js +69 -0
  4. package/dist/core/agent/environment-variables.js.map +1 -0
  5. package/dist/core/registry/networks.d.ts.map +1 -1
  6. package/dist/core/registry/networks.js +8 -2
  7. package/dist/core/registry/networks.js.map +1 -1
  8. package/dist/core/registry/tokens.d.ts +3 -24
  9. package/dist/core/registry/tokens.d.ts.map +1 -1
  10. package/dist/core/registry/tokens.js +13 -11
  11. package/dist/core/registry/tokens.js.map +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/mcp/defi/catalog-adapter.d.ts +2 -3
  17. package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
  18. package/dist/mcp/defi/catalog-adapter.js +2 -5
  19. package/dist/mcp/defi/catalog-adapter.js.map +1 -1
  20. package/dist/mcp/defi/discovery.d.ts.map +1 -1
  21. package/dist/mcp/defi/discovery.js +11 -2
  22. package/dist/mcp/defi/discovery.js.map +1 -1
  23. package/dist/mcp/defi/handler.d.ts.map +1 -1
  24. package/dist/mcp/defi/handler.js +10 -4
  25. package/dist/mcp/defi/handler.js.map +1 -1
  26. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  27. package/dist/mcp/defi/register-protocol-tools.js +4 -0
  28. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  29. package/dist/mcp/defi/uniswap-api-key.d.ts +16 -0
  30. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -0
  31. package/dist/mcp/defi/uniswap-api-key.js +50 -0
  32. package/dist/mcp/defi/uniswap-api-key.js.map +1 -0
  33. package/dist/mcp/registry/networks.d.ts.map +1 -1
  34. package/dist/mcp/registry/networks.js +1 -1
  35. package/dist/mcp/registry/networks.js.map +1 -1
  36. package/dist/mcp/registry/tokens.d.ts.map +1 -1
  37. package/dist/mcp/registry/tokens.js +3 -10
  38. package/dist/mcp/registry/tokens.js.map +1 -1
  39. package/dist/schemas/extended.d.ts +47 -4
  40. package/dist/schemas/extended.d.ts.map +1 -1
  41. package/dist/schemas/extended.js +49 -6
  42. package/dist/schemas/extended.js.map +1 -1
  43. package/package.json +2 -2
  44. package/dist/core/signing-flow.d.ts +0 -9
  45. package/dist/core/signing-flow.d.ts.map +0 -1
  46. package/dist/core/signing-flow.js +0 -139
  47. package/dist/core/signing-flow.js.map +0 -1
  48. package/dist/data/mpc-keys.d.ts +0 -8
  49. package/dist/data/mpc-keys.d.ts.map +0 -1
  50. package/dist/data/mpc-keys.js +0 -38
  51. package/dist/data/mpc-keys.js.map +0 -1
  52. package/dist/detops/general.d.ts +0 -11
  53. package/dist/detops/general.d.ts.map +0 -1
  54. package/dist/detops/general.js +0 -34
  55. package/dist/detops/general.js.map +0 -1
  56. package/dist/detops/group-actions.d.ts +0 -71
  57. package/dist/detops/group-actions.d.ts.map +0 -1
  58. package/dist/detops/group-actions.js +0 -360
  59. package/dist/detops/group-actions.js.map +0 -1
  60. package/dist/detops/groups.d.ts +0 -33
  61. package/dist/detops/groups.d.ts.map +0 -1
  62. package/dist/detops/groups.js +0 -223
  63. package/dist/detops/groups.js.map +0 -1
  64. package/dist/detops/keygen.d.ts +0 -72
  65. package/dist/detops/keygen.d.ts.map +0 -1
  66. package/dist/detops/keygen.js +0 -245
  67. package/dist/detops/keygen.js.map +0 -1
  68. package/dist/detops/management-keys.d.ts +0 -44
  69. package/dist/detops/management-keys.d.ts.map +0 -1
  70. package/dist/detops/management-keys.js +0 -216
  71. package/dist/detops/management-keys.js.map +0 -1
  72. package/dist/detops/management-signer.d.ts +0 -129
  73. package/dist/detops/management-signer.d.ts.map +0 -1
  74. package/dist/detops/management-signer.js +0 -619
  75. package/dist/detops/management-signer.js.map +0 -1
  76. package/dist/detops/management-signing.d.ts +0 -11
  77. package/dist/detops/management-signing.d.ts.map +0 -1
  78. package/dist/detops/management-signing.js +0 -131
  79. package/dist/detops/management-signing.js.map +0 -1
  80. package/dist/detops/mpc/broadcast-sign-result.d.ts +0 -9
  81. package/dist/detops/mpc/broadcast-sign-result.d.ts.map +0 -1
  82. package/dist/detops/mpc/broadcast-sign-result.js +0 -147
  83. package/dist/detops/mpc/broadcast-sign-result.js.map +0 -1
  84. package/dist/detops/mpc/bump-sign-result.d.ts +0 -25
  85. package/dist/detops/mpc/bump-sign-result.d.ts.map +0 -1
  86. package/dist/detops/mpc/bump-sign-result.js +0 -314
  87. package/dist/detops/mpc/bump-sign-result.js.map +0 -1
  88. package/dist/detops/mpc/client.d.ts +0 -15
  89. package/dist/detops/mpc/client.d.ts.map +0 -1
  90. package/dist/detops/mpc/client.js +0 -62
  91. package/dist/detops/mpc/client.js.map +0 -1
  92. package/dist/detops/mpc/compose-request.d.ts +0 -6
  93. package/dist/detops/mpc/compose-request.d.ts.map +0 -1
  94. package/dist/detops/mpc/compose-request.js +0 -33
  95. package/dist/detops/mpc/compose-request.js.map +0 -1
  96. package/dist/detops/mpc/context.d.ts +0 -11
  97. package/dist/detops/mpc/context.d.ts.map +0 -1
  98. package/dist/detops/mpc/context.js +0 -43
  99. package/dist/detops/mpc/context.js.map +0 -1
  100. package/dist/detops/mpc/forge-request.d.ts +0 -6
  101. package/dist/detops/mpc/forge-request.d.ts.map +0 -1
  102. package/dist/detops/mpc/forge-request.js +0 -46
  103. package/dist/detops/mpc/forge-request.js.map +0 -1
  104. package/dist/detops/mpc/gas-preflight.d.ts +0 -25
  105. package/dist/detops/mpc/gas-preflight.d.ts.map +0 -1
  106. package/dist/detops/mpc/gas-preflight.js +0 -101
  107. package/dist/detops/mpc/gas-preflight.js.map +0 -1
  108. package/dist/detops/mpc/list-ready.d.ts +0 -10
  109. package/dist/detops/mpc/list-ready.d.ts.map +0 -1
  110. package/dist/detops/mpc/list-ready.js +0 -48
  111. package/dist/detops/mpc/list-ready.js.map +0 -1
  112. package/dist/detops/mpc/management-post-sig.d.ts +0 -11
  113. package/dist/detops/mpc/management-post-sig.d.ts.map +0 -1
  114. package/dist/detops/mpc/management-post-sig.js +0 -20
  115. package/dist/detops/mpc/management-post-sig.js.map +0 -1
  116. package/dist/detops/mpc/mpa-top-up.d.ts +0 -18
  117. package/dist/detops/mpc/mpa-top-up.d.ts.map +0 -1
  118. package/dist/detops/mpc/mpa-top-up.js +0 -213
  119. package/dist/detops/mpc/mpa-top-up.js.map +0 -1
  120. package/dist/detops/mpc/register-keygen.d.ts +0 -6
  121. package/dist/detops/mpc/register-keygen.d.ts.map +0 -1
  122. package/dist/detops/mpc/register-keygen.js +0 -41
  123. package/dist/detops/mpc/register-keygen.js.map +0 -1
  124. package/dist/detops/mpc/schemas.d.ts +0 -251
  125. package/dist/detops/mpc/schemas.d.ts.map +0 -1
  126. package/dist/detops/mpc/schemas.js +0 -163
  127. package/dist/detops/mpc/schemas.js.map +0 -1
  128. package/dist/detops/mpc/sign-request-body.d.ts +0 -10
  129. package/dist/detops/mpc/sign-request-body.d.ts.map +0 -1
  130. package/dist/detops/mpc/sign-request-body.js +0 -64
  131. package/dist/detops/mpc/sign-request-body.js.map +0 -1
  132. package/dist/detops/mpc/sign-request-utils.d.ts +0 -33
  133. package/dist/detops/mpc/sign-request-utils.d.ts.map +0 -1
  134. package/dist/detops/mpc/sign-request-utils.js +0 -467
  135. package/dist/detops/mpc/sign-request-utils.js.map +0 -1
  136. package/dist/detops/mpc/transfer-native.d.ts +0 -6
  137. package/dist/detops/mpc/transfer-native.d.ts.map +0 -1
  138. package/dist/detops/mpc/transfer-native.js +0 -167
  139. package/dist/detops/mpc/transfer-native.js.map +0 -1
  140. package/dist/detops/mpc/transfer-tokens.d.ts +0 -15
  141. package/dist/detops/mpc/transfer-tokens.d.ts.map +0 -1
  142. package/dist/detops/mpc/transfer-tokens.js +0 -110
  143. package/dist/detops/mpc/transfer-tokens.js.map +0 -1
  144. package/dist/detops/mpc/trigger-sign-result.d.ts +0 -8
  145. package/dist/detops/mpc/trigger-sign-result.d.ts.map +0 -1
  146. package/dist/detops/mpc/trigger-sign-result.js +0 -244
  147. package/dist/detops/mpc/trigger-sign-result.js.map +0 -1
  148. package/dist/detops/mpc/types.d.ts +0 -62
  149. package/dist/detops/mpc/types.d.ts.map +0 -1
  150. package/dist/detops/mpc/types.js +0 -2
  151. package/dist/detops/mpc/types.js.map +0 -1
  152. package/dist/detops/node-info.d.ts +0 -27
  153. package/dist/detops/node-info.d.ts.map +0 -1
  154. package/dist/detops/node-info.js +0 -96
  155. package/dist/detops/node-info.js.map +0 -1
  156. package/dist/detops/registry/address-book.d.ts +0 -25
  157. package/dist/detops/registry/address-book.d.ts.map +0 -1
  158. package/dist/detops/registry/address-book.js +0 -83
  159. package/dist/detops/registry/address-book.js.map +0 -1
  160. package/dist/detops/registry/networks.d.ts +0 -20
  161. package/dist/detops/registry/networks.d.ts.map +0 -1
  162. package/dist/detops/registry/networks.js +0 -154
  163. package/dist/detops/registry/networks.js.map +0 -1
  164. package/dist/detops/registry/tokens.d.ts +0 -29
  165. package/dist/detops/registry/tokens.d.ts.map +0 -1
  166. package/dist/detops/registry/tokens.js +0 -142
  167. package/dist/detops/registry/tokens.js.map +0 -1
  168. package/dist/detops/result.d.ts +0 -21
  169. package/dist/detops/result.d.ts.map +0 -1
  170. package/dist/detops/result.js +0 -2
  171. package/dist/detops/result.js.map +0 -1
  172. package/dist/detops/schemas.d.ts +0 -153
  173. package/dist/detops/schemas.d.ts.map +0 -1
  174. package/dist/detops/schemas.js +0 -82
  175. package/dist/detops/schemas.js.map +0 -1
  176. package/dist/detops/signing-flow.d.ts +0 -9
  177. package/dist/detops/signing-flow.d.ts.map +0 -1
  178. package/dist/detops/signing-flow.js +0 -139
  179. package/dist/detops/signing-flow.js.map +0 -1
  180. package/dist/detops/types.d.ts +0 -58
  181. package/dist/detops/types.d.ts.map +0 -1
  182. package/dist/detops/types.js +0 -46
  183. package/dist/detops/types.js.map +0 -1
  184. package/dist/internal/ed25519/management-signing.d.ts +0 -51
  185. package/dist/internal/ed25519/management-signing.d.ts.map +0 -1
  186. package/dist/internal/ed25519/management-signing.js +0 -198
  187. package/dist/internal/ed25519/management-signing.js.map +0 -1
  188. package/dist/internal/ed25519/openssh-ed25519.d.ts +0 -20
  189. package/dist/internal/ed25519/openssh-ed25519.d.ts.map +0 -1
  190. package/dist/internal/ed25519/openssh-ed25519.js +0 -129
  191. package/dist/internal/ed25519/openssh-ed25519.js.map +0 -1
  192. package/dist/internal/management-request-signing.d.ts +0 -32
  193. package/dist/internal/management-request-signing.d.ts.map +0 -1
  194. package/dist/internal/management-request-signing.js +0 -186
  195. package/dist/internal/management-request-signing.js.map +0 -1
  196. package/dist/mcp/detops/registry/address-book.d.ts +0 -4
  197. package/dist/mcp/detops/registry/address-book.d.ts.map +0 -1
  198. package/dist/mcp/detops/registry/address-book.js +0 -39
  199. package/dist/mcp/detops/registry/address-book.js.map +0 -1
  200. package/dist/mcp/detops/registry/networks.d.ts +0 -4
  201. package/dist/mcp/detops/registry/networks.d.ts.map +0 -1
  202. package/dist/mcp/detops/registry/networks.js +0 -32
  203. package/dist/mcp/detops/registry/networks.js.map +0 -1
  204. package/dist/mcp/detops/registry/tokens.d.ts +0 -4
  205. package/dist/mcp/detops/registry/tokens.d.ts.map +0 -1
  206. package/dist/mcp/detops/registry/tokens.js +0 -43
  207. package/dist/mcp/detops/registry/tokens.js.map +0 -1
  208. package/dist/mcp/ed25519/management-signing.d.ts +0 -51
  209. package/dist/mcp/ed25519/management-signing.d.ts.map +0 -1
  210. package/dist/mcp/ed25519/management-signing.js +0 -198
  211. package/dist/mcp/ed25519/management-signing.js.map +0 -1
  212. package/dist/mcp/ed25519/openssh-ed25519.d.ts +0 -20
  213. package/dist/mcp/ed25519/openssh-ed25519.d.ts.map +0 -1
  214. package/dist/mcp/ed25519/openssh-ed25519.js +0 -129
  215. package/dist/mcp/ed25519/openssh-ed25519.js.map +0 -1
  216. package/dist/mcp/groups.d.ts +0 -71
  217. package/dist/mcp/groups.d.ts.map +0 -1
  218. package/dist/mcp/groups.js +0 -360
  219. package/dist/mcp/groups.js.map +0 -1
  220. package/dist/mcp/management-keys.d.ts +0 -4
  221. package/dist/mcp/management-keys.d.ts.map +0 -1
  222. package/dist/mcp/management-keys.js +0 -75
  223. package/dist/mcp/management-keys.js.map +0 -1
  224. package/dist/mcp/normalize.d.ts +0 -15
  225. package/dist/mcp/normalize.d.ts.map +0 -1
  226. package/dist/mcp/normalize.js +0 -204
  227. package/dist/mcp/normalize.js.map +0 -1
  228. package/dist/mcp/schemas.d.ts +0 -360
  229. package/dist/mcp/schemas.d.ts.map +0 -1
  230. package/dist/mcp/schemas.js +0 -263
  231. package/dist/mcp/schemas.js.map +0 -1
  232. package/dist/mcp/signing.d.ts +0 -32
  233. package/dist/mcp/signing.d.ts.map +0 -1
  234. package/dist/mcp/signing.js +0 -186
  235. package/dist/mcp/signing.js.map +0 -1
  236. package/dist/ops/general.d.ts +0 -11
  237. package/dist/ops/general.d.ts.map +0 -1
  238. package/dist/ops/general.js +0 -34
  239. package/dist/ops/general.js.map +0 -1
  240. package/dist/ops/groups.d.ts +0 -17
  241. package/dist/ops/groups.d.ts.map +0 -1
  242. package/dist/ops/groups.js +0 -105
  243. package/dist/ops/groups.js.map +0 -1
  244. package/dist/ops/management-signing.d.ts +0 -11
  245. package/dist/ops/management-signing.d.ts.map +0 -1
  246. package/dist/ops/management-signing.js +0 -131
  247. package/dist/ops/management-signing.js.map +0 -1
  248. package/dist/ops/result.d.ts +0 -21
  249. package/dist/ops/result.d.ts.map +0 -1
  250. package/dist/ops/result.js +0 -2
  251. package/dist/ops/result.js.map +0 -1
  252. package/dist/ops/schemas.d.ts +0 -153
  253. package/dist/ops/schemas.d.ts.map +0 -1
  254. package/dist/ops/schemas.js +0 -82
  255. package/dist/ops/schemas.js.map +0 -1
  256. package/dist/ops/signing-flow.d.ts +0 -8
  257. package/dist/ops/signing-flow.d.ts.map +0 -1
  258. package/dist/ops/signing-flow.js +0 -125
  259. package/dist/ops/signing-flow.js.map +0 -1
  260. package/dist/ops/types.d.ts +0 -58
  261. package/dist/ops/types.d.ts.map +0 -1
  262. package/dist/ops/types.js +0 -46
  263. package/dist/ops/types.js.map +0 -1
  264. package/dist/registry/address-book.d.ts +0 -25
  265. package/dist/registry/address-book.d.ts.map +0 -1
  266. package/dist/registry/address-book.js +0 -103
  267. package/dist/registry/address-book.js.map +0 -1
  268. package/dist/registry/networks.d.ts +0 -18
  269. package/dist/registry/networks.d.ts.map +0 -1
  270. package/dist/registry/networks.js +0 -180
  271. package/dist/registry/networks.js.map +0 -1
  272. package/dist/registry/tokens.d.ts +0 -29
  273. package/dist/registry/tokens.d.ts.map +0 -1
  274. package/dist/registry/tokens.js +0 -157
  275. package/dist/registry/tokens.js.map +0 -1
@@ -1,131 +0,0 @@
1
- import { buildDetOpsCanonicalJson } from '../api/canonical-json.js';
2
- import { fetchPublicMgtKeyNonce, managementGet, managementPost, } from '../api/management-api.js';
3
- import { resolveKeyPathForPublicKey, resolveSignerPublicKey, signUtf8Message, } from '../api/management-key.js';
4
- import { nodeId } from './general.js';
5
- import { AllowedKeyApiEntrySchema, ManagementKeyEntrySchema, ManagementKeysResponseSchema, NonceDataSchema, PreferredSignerResponseSchema, } from './schemas.js';
6
- import { EdDSAPubKeySchema } from './types.js';
7
- export async function listManagementSigners(config) {
8
- const result = await managementGet(config, '/getAllowedEd25519MgtKeys');
9
- if (!result.ok) {
10
- return result;
11
- }
12
- if (!Array.isArray(result.data)) {
13
- return { ok: false, reason: 'Management keys response failed validation.' };
14
- }
15
- const managementKeysList = [];
16
- for (const entry of result.data) {
17
- const parsed = AllowedKeyApiEntrySchema.safeParse(entry);
18
- if (!parsed.success) {
19
- continue;
20
- }
21
- const mapped = {
22
- publicKey: parsed.data.publicKey ?? parsed.data.removedPublicKey ?? '',
23
- label: parsed.data.label ?? 'Unknown key',
24
- isValid: parsed.data.deleted !== true && Boolean(parsed.data.publicKey),
25
- };
26
- const validated = ManagementKeyEntrySchema.safeParse(mapped);
27
- if (validated.success) {
28
- managementKeysList.push(validated.data);
29
- }
30
- }
31
- const response = ManagementKeysResponseSchema.safeParse({
32
- managementKeys: managementKeysList,
33
- });
34
- if (!response.success) {
35
- return { ok: false, reason: 'Management keys response failed validation.' };
36
- }
37
- return { ok: true, data: response.data };
38
- }
39
- export async function getPreferredManagementSigner(config) {
40
- const preferred = await managementGet(config, '/getPreferredSigner');
41
- if (!preferred.ok) {
42
- return preferred;
43
- }
44
- const preferredParsed = PreferredSignerResponseSchema.safeParse(preferred.data);
45
- if (!preferredParsed.success) {
46
- return { ok: false, reason: 'Preferred signer response failed validation.' };
47
- }
48
- let publicKey = preferredParsed.data.publicKeyHex?.replace(/^0x/i, '') ?? '';
49
- if (!EdDSAPubKeySchema.safeParse(publicKey).success) {
50
- publicKey = resolveSignerPublicKey(config) ?? '';
51
- }
52
- if (!EdDSAPubKeySchema.safeParse(publicKey).success) {
53
- return { ok: false, reason: 'No valid management signing key available.' };
54
- }
55
- const nonceResult = await fetchPublicMgtKeyNonce(config, publicKey);
56
- if (!nonceResult.ok) {
57
- return nonceResult;
58
- }
59
- const nonceParsed = NonceDataSchema.safeParse(nonceResult.data);
60
- if (!nonceParsed.success) {
61
- return { ok: false, reason: 'Nonce response failed validation.' };
62
- }
63
- const nodeIdResult = await nodeId(config);
64
- if (!nodeIdResult.ok) {
65
- return nodeIdResult;
66
- }
67
- return {
68
- ok: true,
69
- data: {
70
- publicKey,
71
- nonce: nonceParsed.data.nonce,
72
- nodeKey: nodeIdResult.data.nodeId,
73
- },
74
- };
75
- }
76
- export async function managementSign(config, requestFields, keyPath) {
77
- const keyInfo = await getPreferredManagementSigner(config);
78
- if (!keyInfo.ok) {
79
- return keyInfo;
80
- }
81
- const resolvedKeyPath = keyPath ?? resolveKeyPathForPublicKey(config, keyInfo.data.publicKey);
82
- if (!resolvedKeyPath) {
83
- return {
84
- ok: false,
85
- reason: `No local private key found for signer ${keyInfo.data.publicKey}`,
86
- };
87
- }
88
- const unsigned = {
89
- clientSig: '',
90
- nonce: keyInfo.data.nonce,
91
- nodeKey: keyInfo.data.nodeKey,
92
- ...requestFields,
93
- };
94
- const canonicalJson = buildDetOpsCanonicalJson(unsigned);
95
- const signature = signUtf8Message(resolvedKeyPath, canonicalJson);
96
- return {
97
- ok: true,
98
- data: {
99
- ...unsigned,
100
- clientSig: signature,
101
- },
102
- };
103
- }
104
- export async function setPreferredSigner(config, publicKey) {
105
- const parsedKey = EdDSAPubKeySchema.safeParse(publicKey);
106
- if (!parsedKey.success) {
107
- return { ok: false, reason: 'Invalid management public key.' };
108
- }
109
- const signed = await managementSign(config, { publicKey: parsedKey.data });
110
- if (!signed.ok) {
111
- return signed;
112
- }
113
- const canonicalJson = buildDetOpsCanonicalJson({
114
- clientSig: '',
115
- nonce: signed.data.nonce,
116
- nodeKey: signed.data.nodeKey,
117
- publicKey: parsedKey.data,
118
- });
119
- const body = {
120
- nonce: signed.data.nonce,
121
- publicKey: parsedKey.data,
122
- signedMessage: canonicalJson,
123
- clientSig: signed.data.clientSig,
124
- };
125
- const response = await managementPost(config, '/setPreferredSigner', body);
126
- if (!response.ok) {
127
- return response;
128
- }
129
- return { ok: true };
130
- }
131
- //# sourceMappingURL=management-signing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"management-signing.js","sourceRoot":"","sources":["../../src/detops/management-signing.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { NodeSdkConfig } from '../../config/schema.js';
2
- import { type ManagementSigningMethod } from '../../schemas/extended.js';
3
- import type { SdkResult } from '../result.js';
4
- export declare function broadcastSignResult(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
5
- requestId: string;
6
- txHashes: string[];
7
- status: 'executed';
8
- }>>;
9
- //# sourceMappingURL=broadcast-sign-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcast-sign-result.d.ts","sourceRoot":"","sources":["../../../src/detops/mpc/broadcast-sign-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAmB5C,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAC,CAAC,CAAC,CAgJjF"}
@@ -1,147 +0,0 @@
1
- import { DEFAULT_MANAGEMENT_SIGNING, } from '../../schemas/extended.js';
2
- import { BroadcastSignResultInputSchema } from './schemas.js';
3
- import { buildBatchSignedTxsFromResult, broadcastErrorMessage, isBatchSignRequest, getBatchLength, } from './sign-request-utils.js';
4
- import { createPublicClientForChain, } from './context.js';
5
- import { fetchKeyGenResult } from '../keygen.js';
6
- import { nodeId } from '../general.js';
7
- import { mpcGetSignRequestById, mpcGetSignResultById, mpcPostUpdateSignResultStatusById } from './client.js';
8
- import { keyGenIdFromRecord } from './sign-request-utils.js';
9
- import { assertExecutorNativeSufficientForSignedHexes } from './gas-preflight.js';
10
- import { prepareSignedManagementRequest } from '../management-signer.js';
11
- export async function broadcastSignResult(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
12
- const parsed = BroadcastSignResultInputSchema.safeParse(input);
13
- if (!parsed.success) {
14
- return { ok: false, reason: 'Invalid broadcast sign result input.' };
15
- }
16
- const req = await mpcGetSignRequestById(config, parsed.data.requestId);
17
- if (!req.ok)
18
- return req;
19
- const signResult = await mpcGetSignResultById(config, parsed.data.requestId);
20
- if (!signResult.ok)
21
- return signResult;
22
- const result = signResult.data;
23
- const reqData = req.data;
24
- const chainIdRaw = result.chainId ?? result.ChainID ?? reqData.DestinationChainID ?? reqData.destinationChainID;
25
- const chainIdNum = typeof chainIdRaw === 'number'
26
- ? chainIdRaw
27
- : parseInt(String(chainIdRaw), 10);
28
- if (Number.isNaN(chainIdNum)) {
29
- return { ok: false, reason: 'Missing valid chain id for broadcast.' };
30
- }
31
- const keyGenId = keyGenIdFromRecord(reqData);
32
- const kg = keyGenId ? await fetchKeyGenResult(config, keyGenId) : null;
33
- if (!kg?.ok) {
34
- return { ok: false, reason: 'Could not load KeyGen for broadcast preflight.' };
35
- }
36
- const isBatch = isBatchSignRequest(reqData);
37
- const batchN = isBatch ? getBatchLength(reqData) : 0;
38
- const batchSignedTxsPrebuilt = (result.SignedTxs ?? result.signedTxs);
39
- const batchSignedTxsBuilt = buildBatchSignedTxsFromResult(result);
40
- let signedHexes;
41
- if (isBatch && batchN > 0) {
42
- const batchSignedTxs = Array.isArray(batchSignedTxsPrebuilt) &&
43
- batchSignedTxsPrebuilt.length === batchN
44
- ? batchSignedTxsPrebuilt
45
- : batchSignedTxsBuilt != null && batchSignedTxsBuilt.length === batchN
46
- ? batchSignedTxsBuilt
47
- : null;
48
- if (batchSignedTxs == null) {
49
- return {
50
- ok: false,
51
- reason: `Could not build ${batchN} signed transaction(s) from batch signatures.`,
52
- };
53
- }
54
- signedHexes = batchSignedTxs.map(h => (h.startsWith('0x') ? h : `0x${h}`));
55
- }
56
- else {
57
- const signedTxHex = (result.signedTx ??
58
- result.rawTransaction ??
59
- result.serializedTx ??
60
- result.SignedTx);
61
- if (signedTxHex && signedTxHex.startsWith('0x')) {
62
- signedHexes = [signedTxHex];
63
- }
64
- else {
65
- const built = buildBatchSignedTxsFromResult({
66
- ...result,
67
- MessageRawBatch: [reqData.MessageRaw ?? reqData.messageRaw],
68
- batchsignatures: [
69
- {
70
- sigr: result.r ?? result.R,
71
- sigs: result.s ?? result.S,
72
- sigrecover: result.sigrecover ?? result.Sigrecover ?? '0',
73
- },
74
- ],
75
- });
76
- if (!built || built.length !== 1) {
77
- return { ok: false, reason: 'Could not build signed transaction from r,s.' };
78
- }
79
- signedHexes = built;
80
- }
81
- }
82
- const preflight = await assertExecutorNativeSufficientForSignedHexes(config, {
83
- keyGenResult: kg.data,
84
- chainId: chainIdNum,
85
- signedTxHexes: signedHexes,
86
- });
87
- if (!preflight.ok)
88
- return preflight;
89
- const ctx = await createPublicClientForChain(config, chainIdNum);
90
- if (!ctx.ok)
91
- return ctx;
92
- const txHashes = [];
93
- const slowBatch = parsed.data.slowBatch === true;
94
- for (let i = 0; i < signedHexes.length; i++) {
95
- const hex = signedHexes[i];
96
- try {
97
- const txHash = (await ctx.data.publicClient.request({
98
- method: 'eth_sendRawTransaction',
99
- params: [hex],
100
- }));
101
- txHashes.push(txHash.startsWith('0x') ? txHash : `0x${txHash}`);
102
- }
103
- catch (e) {
104
- const msg = e instanceof Error ? e.message : String(e);
105
- return {
106
- ok: false,
107
- reason: `Transaction ${i + 1} of ${signedHexes.length} failed: ${broadcastErrorMessage(msg)}`,
108
- };
109
- }
110
- if (slowBatch && i < signedHexes.length - 1) {
111
- const blockAfter = await ctx.data.publicClient.getBlockNumber();
112
- const slowDeadline = Date.now() + 6 * 60 * 1000;
113
- while (Date.now() < slowDeadline) {
114
- await new Promise(r => setTimeout(r, 2000));
115
- const b = await ctx.data.publicClient.getBlockNumber();
116
- if (b > blockAfter)
117
- break;
118
- }
119
- }
120
- }
121
- const self = await nodeId(config);
122
- if (!self.ok) {
123
- return {
124
- ok: true,
125
- data: {
126
- requestId: parsed.data.requestId,
127
- txHashes,
128
- status: 'executed',
129
- },
130
- };
131
- }
132
- const signed = await prepareSignedManagementRequest(config, signing, () => ({
133
- requestId: parsed.data.requestId,
134
- status: 'executed',
135
- ...(txHashes.length > 1
136
- ? { batchTransactionHashes: txHashes }
137
- : { transactionHash: txHashes[0] }),
138
- }));
139
- if (signed.ok) {
140
- await mpcPostUpdateSignResultStatusById(config, signed.data.body);
141
- }
142
- return {
143
- ok: true,
144
- data: { requestId: parsed.data.requestId, txHashes, status: 'executed' },
145
- };
146
- }
147
- //# sourceMappingURL=broadcast-sign-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcast-sign-result.js","sourceRoot":"","sources":["../../../src/detops/mpc/broadcast-sign-result.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Bump / cancel pending mempool txs by creating a new multiSignRequest (ported from bumpMultisignFromSourceRequest).
3
- */
4
- import { type Address, type PublicClient } from 'viem';
5
- import type { NodeSdkConfig } from '../../config/schema.js';
6
- import type { SdkResult } from '../result.js';
7
- export type BumpMempoolPrecheckOk = {
8
- ok: true;
9
- slicedFromIndex: number;
10
- activeCount: number;
11
- message: string;
12
- };
13
- export type BumpMempoolPrecheckFail = {
14
- ok: false;
15
- message: string;
16
- };
17
- export declare function precheckBumpMempool(args: {
18
- publicClient: PublicClient;
19
- executorAddress: Address;
20
- proposalNonces: number[];
21
- }): Promise<BumpMempoolPrecheckOk | BumpMempoolPrecheckFail>;
22
- export declare function bumpOrCancelSignResult(config: NodeSdkConfig, input: unknown): Promise<SdkResult<{
23
- requestId: string;
24
- }>>;
25
- //# sourceMappingURL=bump-sign-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bump-sign-result.d.ts","sourceRoot":"","sources":["../../../src/detops/mpc/bump-sign-result.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAKN,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAyB5C,MAAM,MAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC;AAEnE,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC/C,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAAC,qBAAqB,GAAG,uBAAuB,CAAC,CAkC3D;AA6CD,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CA4OzC"}
@@ -1,314 +0,0 @@
1
- /**
2
- * Bump / cancel pending mempool txs by creating a new multiSignRequest (ported from bumpMultisignFromSourceRequest).
3
- */
4
- import { getAddress, keccak256, parseTransaction, serializeTransaction, } from 'viem';
5
- import { BumpSignResultInputSchema } from './schemas.js';
6
- import { createPublicClientForChain, executorAddressFromKeyGen, } from './context.js';
7
- import { fetchKeyGenResult } from '../keygen.js';
8
- import { mpcGetSignRequestById } from './client.js';
9
- import { getBatchLength, getDestinationAddressForDetail, getMessageRawForDetail, getProposalTxParamsForDetailIndex, getSignatureTextForDetail, isBatchSignRequest, keyGenIdFromRecord, parseSignRequestExtraJSON, } from './sign-request-utils.js';
10
- import { signAndSubmitMultiSignRequest } from './sign-request-body.js';
11
- import { fetchChainFeeParams } from '../../evm/chain-fees.js';
12
- const CANCEL_GAS = 21000n;
13
- export async function precheckBumpMempool(args) {
14
- const latest = await args.publicClient.getTransactionCount({
15
- address: args.executorAddress,
16
- blockTag: 'latest',
17
- });
18
- const pending = await args.publicClient.getTransactionCount({
19
- address: args.executorAddress,
20
- blockTag: 'pending',
21
- });
22
- let firstActive = 0;
23
- while (firstActive < args.proposalNonces.length &&
24
- args.proposalNonces[firstActive] < latest) {
25
- firstActive++;
26
- }
27
- if (firstActive >= args.proposalNonces.length) {
28
- return {
29
- ok: false,
30
- message: 'Every transaction from this sign request is already mined.',
31
- };
32
- }
33
- const activeNonces = args.proposalNonces.slice(firstActive);
34
- if (pending <= latest) {
35
- return {
36
- ok: false,
37
- message: 'No pending transactions in mempool for this key.',
38
- };
39
- }
40
- const msg = firstActive > 0
41
- ? `First ${firstActive} tx(s) mined; bumping ${activeNonces.length} remaining.`
42
- : `All ${activeNonces.length} transaction(s) still pending.`;
43
- return { ok: true, slicedFromIndex: firstActive, activeCount: activeNonces.length, message: msg };
44
- }
45
- function deriveTxParamsEnvelopeFromMessageRaws(detail) {
46
- const batch = isBatchSignRequest(detail);
47
- const N = batch ? getBatchLength(detail) : 1;
48
- const rows = [];
49
- for (let i = 0; i < N; i++) {
50
- const raw = getMessageRawForDetail(detail, i);
51
- if (!raw || String(raw).trim().length < 4)
52
- return null;
53
- const hex = (raw.trim().startsWith('0x') ? raw.trim() : `0x${raw.trim()}`);
54
- let parsed;
55
- try {
56
- parsed = parseTransaction(hex);
57
- }
58
- catch {
59
- return null;
60
- }
61
- const nonce = Number(parsed.nonce);
62
- if (!Number.isFinite(nonce) || parsed.gas == null)
63
- return null;
64
- const gasLimit = parsed.gas.toString();
65
- if (parsed.maxFeePerGas != null && parsed.maxPriorityFeePerGas != null) {
66
- rows.push({
67
- nonce,
68
- gasLimit,
69
- txType: 'eip1559',
70
- maxFeePerGas: parsed.maxFeePerGas.toString(),
71
- maxPriorityFeePerGas: parsed.maxPriorityFeePerGas.toString(),
72
- });
73
- }
74
- else if (parsed.gasPrice != null) {
75
- rows.push({
76
- nonce,
77
- gasLimit,
78
- txType: 'legacy',
79
- gasPrice: parsed.gasPrice.toString(),
80
- });
81
- }
82
- else {
83
- return null;
84
- }
85
- }
86
- if (batch && N > 1)
87
- return { proposalTxParams: rows };
88
- if (rows.length === 1)
89
- return { txParams: rows[0] };
90
- return null;
91
- }
92
- export async function bumpOrCancelSignResult(config, input) {
93
- const parsed = BumpSignResultInputSchema.safeParse(input);
94
- if (!parsed.success) {
95
- return { ok: false, reason: 'Invalid bump sign result input.' };
96
- }
97
- const kg = await fetchKeyGenResult(config, parsed.data.keyGenId);
98
- if (!kg.ok)
99
- return kg;
100
- const req = await mpcGetSignRequestById(config, parsed.data.sourceRequestId);
101
- if (!req.ok)
102
- return req;
103
- const txParamsReq = await mpcGetSignRequestById(config, parsed.data.sourceRequestId, {
104
- txParams: true,
105
- });
106
- let txEnvelope = null;
107
- if (txParamsReq.ok) {
108
- txEnvelope = txParamsReq.data;
109
- }
110
- if (!txEnvelope) {
111
- txEnvelope = deriveTxParamsEnvelopeFromMessageRaws(req.data);
112
- }
113
- if (!txEnvelope) {
114
- return {
115
- ok: false,
116
- reason: 'Could not read nonce/gas data; MessageRaw must be full unsigned tx hex.',
117
- };
118
- }
119
- const detail = req.data;
120
- const batch = isBatchSignRequest(detail);
121
- const N = batch ? getBatchLength(detail) : 1;
122
- const proposalNonces = [];
123
- for (let i = 0; i < N; i++) {
124
- const tp = getProposalTxParamsForDetailIndex(txEnvelope, batch, i);
125
- if (!tp || !Number.isFinite(tp.nonce)) {
126
- return { ok: false, reason: `Missing nonce for transaction ${i + 1}.` };
127
- }
128
- proposalNonces.push(tp.nonce);
129
- }
130
- const destChainIdNum = parseInt(String(detail.DestinationChainID ?? detail.destinationChainID ?? ''), 10);
131
- const ctx = await createPublicClientForChain(config, destChainIdNum);
132
- if (!ctx.ok)
133
- return ctx;
134
- const executor = executorAddressFromKeyGen(kg.data);
135
- if (!executor) {
136
- return { ok: false, reason: 'KeyGen missing executor address.' };
137
- }
138
- const sourceKg = keyGenIdFromRecord(detail);
139
- if (sourceKg !== parsed.data.keyGenId) {
140
- return { ok: false, reason: 'Source sign request belongs to a different KeyGen.' };
141
- }
142
- const mempool = await precheckBumpMempool({
143
- publicClient: ctx.data.publicClient,
144
- executorAddress: executor,
145
- proposalNonces,
146
- });
147
- if (!mempool.ok)
148
- return { ok: false, reason: mempool.message };
149
- const from = mempool.slicedFromIndex;
150
- const activeIndices = [];
151
- for (let i = from; i < N; i++)
152
- activeIndices.push(i);
153
- const cancelPendingTx = parsed.data.cancelPendingTx === true;
154
- const messageHashes = [];
155
- const messageRawBatch = [];
156
- const proposalTxParamsBatch = [];
157
- const batchMeta = [];
158
- const chainIdNum = destChainIdNum;
159
- const legacy = Boolean(ctx.data.chainDetail?.legacy) ||
160
- !(await fetchChainFeeParams((ctx.data.chainDetail.rpcGateway ?? '').trim(), chainIdNum)).isEip1559;
161
- for (const i of activeIndices) {
162
- const tp = getProposalTxParamsForDetailIndex(txEnvelope, batch, i);
163
- let dataHex = '0x';
164
- let toAddr;
165
- let valueBI = 0n;
166
- if (!cancelPendingTx) {
167
- const raw = getMessageRawForDetail(detail, i);
168
- const hexFull = raw && raw.trim().length >= 4
169
- ? (raw.trim().startsWith('0x') ? raw.trim() : `0x${raw.trim()}`)
170
- : null;
171
- if (hexFull) {
172
- try {
173
- const p = parseTransaction(hexFull);
174
- dataHex = (p.data ?? '0x');
175
- if (p.to)
176
- toAddr = getAddress(p.to);
177
- valueBI = p.value ?? 0n;
178
- }
179
- catch {
180
- /* calldata-only */
181
- }
182
- }
183
- if (!toAddr) {
184
- const dest = getDestinationAddressForDetail(detail, i);
185
- if (dest && /^0x[a-fA-F0-9]{40}$/.test(dest.trim())) {
186
- toAddr = getAddress(dest.trim().startsWith('0x') ? dest.trim() : `0x${dest.trim()}`);
187
- }
188
- }
189
- if (!toAddr) {
190
- return { ok: false, reason: `Could not resolve destination for tx ${i + 1}.` };
191
- }
192
- }
193
- else {
194
- toAddr = executor;
195
- dataHex = '0x';
196
- valueBI = 0n;
197
- }
198
- const gasLimitForLeg = cancelPendingTx ? CANCEL_GAS : BigInt(tp.gasLimit);
199
- let newTp;
200
- let serialized;
201
- if (legacy || tp.txType === 'legacy') {
202
- const gp = BigInt(String(tp.gasPrice ?? '0').trim() || '0');
203
- newTp = { nonce: tp.nonce, gasLimit: gasLimitForLeg.toString(), txType: 'legacy', gasPrice: gp.toString() };
204
- serialized = serializeTransaction({
205
- type: 'legacy',
206
- to: toAddr,
207
- data: dataHex,
208
- value: valueBI,
209
- gas: gasLimitForLeg,
210
- gasPrice: gp,
211
- nonce: tp.nonce,
212
- chainId: chainIdNum,
213
- });
214
- }
215
- else {
216
- let maxFeeBI = BigInt(String(tp.maxFeePerGas ?? '0').trim() || '0');
217
- const maxPrioBI = BigInt(String(tp.maxPriorityFeePerGas ?? '0').trim() || '0');
218
- if (maxFeeBI < maxPrioBI)
219
- maxFeeBI = maxPrioBI;
220
- newTp = {
221
- nonce: tp.nonce,
222
- gasLimit: gasLimitForLeg.toString(),
223
- txType: 'eip1559',
224
- maxFeePerGas: maxFeeBI.toString(),
225
- maxPriorityFeePerGas: maxPrioBI.toString(),
226
- };
227
- serialized = serializeTransaction({
228
- type: 'eip1559',
229
- to: toAddr,
230
- data: dataHex,
231
- value: valueBI,
232
- gas: gasLimitForLeg,
233
- maxFeePerGas: maxFeeBI,
234
- maxPriorityFeePerGas: maxPrioBI,
235
- nonce: tp.nonce,
236
- chainId: chainIdNum,
237
- });
238
- }
239
- const hash = keccak256(serialized);
240
- messageHashes.push(hash.replace(/^0x/, ''));
241
- messageRawBatch.push(serialized);
242
- proposalTxParamsBatch.push(newTp);
243
- batchMeta.push({
244
- destinationAddress: cancelPendingTx
245
- ? String(executor)
246
- : (getDestinationAddressForDetail(detail, i) ?? '').trim(),
247
- signatureText: cancelPendingTx ? '' : (getSignatureTextForDetail(detail, i) ?? '').trim(),
248
- });
249
- }
250
- const keyList = (kg.data.keylist ?? detail.KeyList ?? detail.keyList ?? []);
251
- const pubKey = (kg.data.pubkeyhex ?? detail.PubKey ?? detail.pubKey);
252
- if (!pubKey?.trim()) {
253
- return { ok: false, reason: 'Missing pubkey for bump request.' };
254
- }
255
- const id = parsed.data.sourceRequestId;
256
- const purposeBase = cancelPendingTx ? `[Cancel pending tx from ${id}]` : `[Bump from ${id}]`;
257
- const note = (parsed.data.purposeNote ?? '').trim();
258
- const purposeTrim = (purposeBase + (note ? ` ${note}` : '')).slice(0, 256);
259
- const priorExtra = parseSignRequestExtraJSON(detail) ?? {};
260
- const { batchMeta: _bm, bumpSourceRequestId: _b, ...priorRest } = priorExtra;
261
- const extraPayload = {
262
- ...priorRest,
263
- batchMeta,
264
- bumpSourceRequestId: id,
265
- ...(from > 0 ? { bumpSlicedFromIndex: from } : {}),
266
- ...(cancelPendingTx ? { cancelPendingTx: true } : {}),
267
- };
268
- const extraJSON = JSON.stringify(extraPayload);
269
- const firstDest = batchMeta[0]?.destinationAddress ?? '';
270
- const firstSig = batchMeta[0]?.signatureText ?? '';
271
- let bodyForSign;
272
- if (activeIndices.length === 1) {
273
- let msgRaw = '';
274
- try {
275
- const p = parseTransaction(messageRawBatch[0]);
276
- const d = (p.data ?? '0x');
277
- msgRaw = d.startsWith('0x') ? d.slice(2) : d;
278
- }
279
- catch {
280
- msgRaw = '';
281
- }
282
- bodyForSign = {
283
- keyList,
284
- pubKey: pubKey.trim(),
285
- msgHash: messageHashes[0],
286
- msgRaw,
287
- destinationChainID: String(destChainIdNum),
288
- destinationAddress: firstDest,
289
- destinationContract: firstDest,
290
- signatureText: firstSig,
291
- extraJSON,
292
- purpose: purposeTrim,
293
- txParams: proposalTxParamsBatch[0],
294
- };
295
- }
296
- else {
297
- bodyForSign = {
298
- keyList,
299
- pubKey: pubKey.trim(),
300
- msgHash: messageHashes[0],
301
- msgRaw: '',
302
- messageHashes,
303
- messageRawBatch,
304
- destinationChainID: String(destChainIdNum),
305
- destinationAddress: firstDest,
306
- extraJSON,
307
- signatureText: firstSig,
308
- proposalTxParams: proposalTxParamsBatch,
309
- purpose: purposeTrim,
310
- };
311
- }
312
- return signAndSubmitMultiSignRequest(config, bodyForSign);
313
- }
314
- //# sourceMappingURL=bump-sign-result.js.map