@continuumdao/continuum-node-sdk 1.2.11 → 1.2.12

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 (266) hide show
  1. package/dist/api/node-read.d.ts +1 -1
  2. package/dist/api/node-read.d.ts.map +1 -1
  3. package/dist/api/node-read.js +2 -1
  4. package/dist/api/node-read.js.map +1 -1
  5. package/dist/core/agent/mcp-servers-catalog.d.ts +12 -1
  6. package/dist/core/agent/mcp-servers-catalog.d.ts.map +1 -1
  7. package/dist/core/agent/mcp-servers-catalog.js +48 -1
  8. package/dist/core/agent/mcp-servers-catalog.js.map +1 -1
  9. package/dist/core/agent/mcp-servers.d.ts.map +1 -1
  10. package/dist/core/agent/mcp-servers.js +1 -0
  11. package/dist/core/agent/mcp-servers.js.map +1 -1
  12. package/dist/core/keygen-messaging.d.ts +31 -0
  13. package/dist/core/keygen-messaging.d.ts.map +1 -0
  14. package/dist/core/keygen-messaging.js +454 -0
  15. package/dist/core/keygen-messaging.js.map +1 -0
  16. package/dist/index.d.ts +2 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/mcp/agent-mcp-servers.js +1 -1
  21. package/dist/mcp/agent-mcp-servers.js.map +1 -1
  22. package/dist/mcp/keygen-messaging.d.ts +4 -0
  23. package/dist/mcp/keygen-messaging.d.ts.map +1 -0
  24. package/dist/mcp/keygen-messaging.js +54 -0
  25. package/dist/mcp/keygen-messaging.js.map +1 -0
  26. package/dist/mcp/register.d.ts +1 -0
  27. package/dist/mcp/register.d.ts.map +1 -1
  28. package/dist/mcp/register.js +3 -0
  29. package/dist/mcp/register.js.map +1 -1
  30. package/dist/schemas/extended.d.ts +162 -1
  31. package/dist/schemas/extended.d.ts.map +1 -1
  32. package/dist/schemas/extended.js +149 -2
  33. package/dist/schemas/extended.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/core/signing-flow.d.ts +0 -9
  36. package/dist/core/signing-flow.d.ts.map +0 -1
  37. package/dist/core/signing-flow.js +0 -139
  38. package/dist/core/signing-flow.js.map +0 -1
  39. package/dist/data/mpc-keys.d.ts +0 -8
  40. package/dist/data/mpc-keys.d.ts.map +0 -1
  41. package/dist/data/mpc-keys.js +0 -38
  42. package/dist/data/mpc-keys.js.map +0 -1
  43. package/dist/detops/general.d.ts +0 -11
  44. package/dist/detops/general.d.ts.map +0 -1
  45. package/dist/detops/general.js +0 -34
  46. package/dist/detops/general.js.map +0 -1
  47. package/dist/detops/group-actions.d.ts +0 -71
  48. package/dist/detops/group-actions.d.ts.map +0 -1
  49. package/dist/detops/group-actions.js +0 -360
  50. package/dist/detops/group-actions.js.map +0 -1
  51. package/dist/detops/groups.d.ts +0 -33
  52. package/dist/detops/groups.d.ts.map +0 -1
  53. package/dist/detops/groups.js +0 -223
  54. package/dist/detops/groups.js.map +0 -1
  55. package/dist/detops/keygen.d.ts +0 -72
  56. package/dist/detops/keygen.d.ts.map +0 -1
  57. package/dist/detops/keygen.js +0 -245
  58. package/dist/detops/keygen.js.map +0 -1
  59. package/dist/detops/management-keys.d.ts +0 -44
  60. package/dist/detops/management-keys.d.ts.map +0 -1
  61. package/dist/detops/management-keys.js +0 -216
  62. package/dist/detops/management-keys.js.map +0 -1
  63. package/dist/detops/management-signer.d.ts +0 -129
  64. package/dist/detops/management-signer.d.ts.map +0 -1
  65. package/dist/detops/management-signer.js +0 -619
  66. package/dist/detops/management-signer.js.map +0 -1
  67. package/dist/detops/management-signing.d.ts +0 -11
  68. package/dist/detops/management-signing.d.ts.map +0 -1
  69. package/dist/detops/management-signing.js +0 -131
  70. package/dist/detops/management-signing.js.map +0 -1
  71. package/dist/detops/mpc/broadcast-sign-result.d.ts +0 -9
  72. package/dist/detops/mpc/broadcast-sign-result.d.ts.map +0 -1
  73. package/dist/detops/mpc/broadcast-sign-result.js +0 -147
  74. package/dist/detops/mpc/broadcast-sign-result.js.map +0 -1
  75. package/dist/detops/mpc/bump-sign-result.d.ts +0 -25
  76. package/dist/detops/mpc/bump-sign-result.d.ts.map +0 -1
  77. package/dist/detops/mpc/bump-sign-result.js +0 -314
  78. package/dist/detops/mpc/bump-sign-result.js.map +0 -1
  79. package/dist/detops/mpc/client.d.ts +0 -15
  80. package/dist/detops/mpc/client.d.ts.map +0 -1
  81. package/dist/detops/mpc/client.js +0 -62
  82. package/dist/detops/mpc/client.js.map +0 -1
  83. package/dist/detops/mpc/compose-request.d.ts +0 -6
  84. package/dist/detops/mpc/compose-request.d.ts.map +0 -1
  85. package/dist/detops/mpc/compose-request.js +0 -33
  86. package/dist/detops/mpc/compose-request.js.map +0 -1
  87. package/dist/detops/mpc/context.d.ts +0 -11
  88. package/dist/detops/mpc/context.d.ts.map +0 -1
  89. package/dist/detops/mpc/context.js +0 -43
  90. package/dist/detops/mpc/context.js.map +0 -1
  91. package/dist/detops/mpc/forge-request.d.ts +0 -6
  92. package/dist/detops/mpc/forge-request.d.ts.map +0 -1
  93. package/dist/detops/mpc/forge-request.js +0 -46
  94. package/dist/detops/mpc/forge-request.js.map +0 -1
  95. package/dist/detops/mpc/gas-preflight.d.ts +0 -25
  96. package/dist/detops/mpc/gas-preflight.d.ts.map +0 -1
  97. package/dist/detops/mpc/gas-preflight.js +0 -101
  98. package/dist/detops/mpc/gas-preflight.js.map +0 -1
  99. package/dist/detops/mpc/list-ready.d.ts +0 -10
  100. package/dist/detops/mpc/list-ready.d.ts.map +0 -1
  101. package/dist/detops/mpc/list-ready.js +0 -48
  102. package/dist/detops/mpc/list-ready.js.map +0 -1
  103. package/dist/detops/mpc/management-post-sig.d.ts +0 -11
  104. package/dist/detops/mpc/management-post-sig.d.ts.map +0 -1
  105. package/dist/detops/mpc/management-post-sig.js +0 -20
  106. package/dist/detops/mpc/management-post-sig.js.map +0 -1
  107. package/dist/detops/mpc/mpa-top-up.d.ts +0 -18
  108. package/dist/detops/mpc/mpa-top-up.d.ts.map +0 -1
  109. package/dist/detops/mpc/mpa-top-up.js +0 -213
  110. package/dist/detops/mpc/mpa-top-up.js.map +0 -1
  111. package/dist/detops/mpc/register-keygen.d.ts +0 -6
  112. package/dist/detops/mpc/register-keygen.d.ts.map +0 -1
  113. package/dist/detops/mpc/register-keygen.js +0 -41
  114. package/dist/detops/mpc/register-keygen.js.map +0 -1
  115. package/dist/detops/mpc/schemas.d.ts +0 -251
  116. package/dist/detops/mpc/schemas.d.ts.map +0 -1
  117. package/dist/detops/mpc/schemas.js +0 -163
  118. package/dist/detops/mpc/schemas.js.map +0 -1
  119. package/dist/detops/mpc/sign-request-body.d.ts +0 -10
  120. package/dist/detops/mpc/sign-request-body.d.ts.map +0 -1
  121. package/dist/detops/mpc/sign-request-body.js +0 -64
  122. package/dist/detops/mpc/sign-request-body.js.map +0 -1
  123. package/dist/detops/mpc/sign-request-utils.d.ts +0 -33
  124. package/dist/detops/mpc/sign-request-utils.d.ts.map +0 -1
  125. package/dist/detops/mpc/sign-request-utils.js +0 -467
  126. package/dist/detops/mpc/sign-request-utils.js.map +0 -1
  127. package/dist/detops/mpc/transfer-native.d.ts +0 -6
  128. package/dist/detops/mpc/transfer-native.d.ts.map +0 -1
  129. package/dist/detops/mpc/transfer-native.js +0 -167
  130. package/dist/detops/mpc/transfer-native.js.map +0 -1
  131. package/dist/detops/mpc/transfer-tokens.d.ts +0 -15
  132. package/dist/detops/mpc/transfer-tokens.d.ts.map +0 -1
  133. package/dist/detops/mpc/transfer-tokens.js +0 -110
  134. package/dist/detops/mpc/transfer-tokens.js.map +0 -1
  135. package/dist/detops/mpc/trigger-sign-result.d.ts +0 -8
  136. package/dist/detops/mpc/trigger-sign-result.d.ts.map +0 -1
  137. package/dist/detops/mpc/trigger-sign-result.js +0 -244
  138. package/dist/detops/mpc/trigger-sign-result.js.map +0 -1
  139. package/dist/detops/mpc/types.d.ts +0 -62
  140. package/dist/detops/mpc/types.d.ts.map +0 -1
  141. package/dist/detops/mpc/types.js +0 -2
  142. package/dist/detops/mpc/types.js.map +0 -1
  143. package/dist/detops/node-info.d.ts +0 -27
  144. package/dist/detops/node-info.d.ts.map +0 -1
  145. package/dist/detops/node-info.js +0 -96
  146. package/dist/detops/node-info.js.map +0 -1
  147. package/dist/detops/registry/address-book.d.ts +0 -25
  148. package/dist/detops/registry/address-book.d.ts.map +0 -1
  149. package/dist/detops/registry/address-book.js +0 -83
  150. package/dist/detops/registry/address-book.js.map +0 -1
  151. package/dist/detops/registry/networks.d.ts +0 -20
  152. package/dist/detops/registry/networks.d.ts.map +0 -1
  153. package/dist/detops/registry/networks.js +0 -154
  154. package/dist/detops/registry/networks.js.map +0 -1
  155. package/dist/detops/registry/tokens.d.ts +0 -29
  156. package/dist/detops/registry/tokens.d.ts.map +0 -1
  157. package/dist/detops/registry/tokens.js +0 -142
  158. package/dist/detops/registry/tokens.js.map +0 -1
  159. package/dist/detops/result.d.ts +0 -21
  160. package/dist/detops/result.d.ts.map +0 -1
  161. package/dist/detops/result.js +0 -2
  162. package/dist/detops/result.js.map +0 -1
  163. package/dist/detops/schemas.d.ts +0 -153
  164. package/dist/detops/schemas.d.ts.map +0 -1
  165. package/dist/detops/schemas.js +0 -82
  166. package/dist/detops/schemas.js.map +0 -1
  167. package/dist/detops/signing-flow.d.ts +0 -9
  168. package/dist/detops/signing-flow.d.ts.map +0 -1
  169. package/dist/detops/signing-flow.js +0 -139
  170. package/dist/detops/signing-flow.js.map +0 -1
  171. package/dist/detops/types.d.ts +0 -58
  172. package/dist/detops/types.d.ts.map +0 -1
  173. package/dist/detops/types.js +0 -46
  174. package/dist/detops/types.js.map +0 -1
  175. package/dist/internal/ed25519/management-signing.d.ts +0 -51
  176. package/dist/internal/ed25519/management-signing.d.ts.map +0 -1
  177. package/dist/internal/ed25519/management-signing.js +0 -198
  178. package/dist/internal/ed25519/management-signing.js.map +0 -1
  179. package/dist/internal/ed25519/openssh-ed25519.d.ts +0 -20
  180. package/dist/internal/ed25519/openssh-ed25519.d.ts.map +0 -1
  181. package/dist/internal/ed25519/openssh-ed25519.js +0 -129
  182. package/dist/internal/ed25519/openssh-ed25519.js.map +0 -1
  183. package/dist/internal/management-request-signing.d.ts +0 -32
  184. package/dist/internal/management-request-signing.d.ts.map +0 -1
  185. package/dist/internal/management-request-signing.js +0 -186
  186. package/dist/internal/management-request-signing.js.map +0 -1
  187. package/dist/mcp/detops/registry/address-book.d.ts +0 -4
  188. package/dist/mcp/detops/registry/address-book.d.ts.map +0 -1
  189. package/dist/mcp/detops/registry/address-book.js +0 -39
  190. package/dist/mcp/detops/registry/address-book.js.map +0 -1
  191. package/dist/mcp/detops/registry/networks.d.ts +0 -4
  192. package/dist/mcp/detops/registry/networks.d.ts.map +0 -1
  193. package/dist/mcp/detops/registry/networks.js +0 -32
  194. package/dist/mcp/detops/registry/networks.js.map +0 -1
  195. package/dist/mcp/detops/registry/tokens.d.ts +0 -4
  196. package/dist/mcp/detops/registry/tokens.d.ts.map +0 -1
  197. package/dist/mcp/detops/registry/tokens.js +0 -43
  198. package/dist/mcp/detops/registry/tokens.js.map +0 -1
  199. package/dist/mcp/ed25519/management-signing.d.ts +0 -51
  200. package/dist/mcp/ed25519/management-signing.d.ts.map +0 -1
  201. package/dist/mcp/ed25519/management-signing.js +0 -198
  202. package/dist/mcp/ed25519/management-signing.js.map +0 -1
  203. package/dist/mcp/ed25519/openssh-ed25519.d.ts +0 -20
  204. package/dist/mcp/ed25519/openssh-ed25519.d.ts.map +0 -1
  205. package/dist/mcp/ed25519/openssh-ed25519.js +0 -129
  206. package/dist/mcp/ed25519/openssh-ed25519.js.map +0 -1
  207. package/dist/mcp/groups.d.ts +0 -71
  208. package/dist/mcp/groups.d.ts.map +0 -1
  209. package/dist/mcp/groups.js +0 -360
  210. package/dist/mcp/groups.js.map +0 -1
  211. package/dist/mcp/management-keys.d.ts +0 -4
  212. package/dist/mcp/management-keys.d.ts.map +0 -1
  213. package/dist/mcp/management-keys.js +0 -75
  214. package/dist/mcp/management-keys.js.map +0 -1
  215. package/dist/mcp/normalize.d.ts +0 -15
  216. package/dist/mcp/normalize.d.ts.map +0 -1
  217. package/dist/mcp/normalize.js +0 -204
  218. package/dist/mcp/normalize.js.map +0 -1
  219. package/dist/mcp/schemas.d.ts +0 -360
  220. package/dist/mcp/schemas.d.ts.map +0 -1
  221. package/dist/mcp/schemas.js +0 -263
  222. package/dist/mcp/schemas.js.map +0 -1
  223. package/dist/mcp/signing.d.ts +0 -32
  224. package/dist/mcp/signing.d.ts.map +0 -1
  225. package/dist/mcp/signing.js +0 -186
  226. package/dist/mcp/signing.js.map +0 -1
  227. package/dist/ops/general.d.ts +0 -11
  228. package/dist/ops/general.d.ts.map +0 -1
  229. package/dist/ops/general.js +0 -34
  230. package/dist/ops/general.js.map +0 -1
  231. package/dist/ops/groups.d.ts +0 -17
  232. package/dist/ops/groups.d.ts.map +0 -1
  233. package/dist/ops/groups.js +0 -105
  234. package/dist/ops/groups.js.map +0 -1
  235. package/dist/ops/management-signing.d.ts +0 -11
  236. package/dist/ops/management-signing.d.ts.map +0 -1
  237. package/dist/ops/management-signing.js +0 -131
  238. package/dist/ops/management-signing.js.map +0 -1
  239. package/dist/ops/result.d.ts +0 -21
  240. package/dist/ops/result.d.ts.map +0 -1
  241. package/dist/ops/result.js +0 -2
  242. package/dist/ops/result.js.map +0 -1
  243. package/dist/ops/schemas.d.ts +0 -153
  244. package/dist/ops/schemas.d.ts.map +0 -1
  245. package/dist/ops/schemas.js +0 -82
  246. package/dist/ops/schemas.js.map +0 -1
  247. package/dist/ops/signing-flow.d.ts +0 -8
  248. package/dist/ops/signing-flow.d.ts.map +0 -1
  249. package/dist/ops/signing-flow.js +0 -125
  250. package/dist/ops/signing-flow.js.map +0 -1
  251. package/dist/ops/types.d.ts +0 -58
  252. package/dist/ops/types.d.ts.map +0 -1
  253. package/dist/ops/types.js +0 -46
  254. package/dist/ops/types.js.map +0 -1
  255. package/dist/registry/address-book.d.ts +0 -25
  256. package/dist/registry/address-book.d.ts.map +0 -1
  257. package/dist/registry/address-book.js +0 -103
  258. package/dist/registry/address-book.js.map +0 -1
  259. package/dist/registry/networks.d.ts +0 -18
  260. package/dist/registry/networks.d.ts.map +0 -1
  261. package/dist/registry/networks.js +0 -180
  262. package/dist/registry/networks.js.map +0 -1
  263. package/dist/registry/tokens.d.ts +0 -29
  264. package/dist/registry/tokens.d.ts.map +0 -1
  265. package/dist/registry/tokens.js +0 -157
  266. 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":"AACA,OAAO,EACN,0BAA0B,GAE1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAC,8BAA8B,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,EACN,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,0BAA0B,GAE1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,qBAAqB,EAAE,oBAAoB,EAAE,iCAAiC,EAAC,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,4CAA4C,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,8BAA8B,EAAC,MAAM,yBAAyB,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,MAAqB,EACrB,KAAc,EACd,UAAmC,0BAA0B;IAE7D,MAAM,MAAM,GAAG,8BAA8B,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAC,CAAC;IACpE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAExB,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7E,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IAEtC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAA+B,CAAC;IACpD,MAAM,UAAU,GACf,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAC9F,MAAM,UAAU,GACf,OAAO,UAAU,KAAK,QAAQ;QAC7B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QACb,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gDAAgD,EAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,sBAAsB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAExD,CAAC;IACb,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,WAAqB,CAAC;IAE1B,IAAI,OAAO,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,cAAc,GACnB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACrC,sBAAsB,CAAC,MAAM,KAAK,MAAM;YACvC,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,CAAC,MAAM,KAAK,MAAM;gBACrE,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,IAAI,CAAC;QACV,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;YAC5B,OAAO;gBACN,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,mBAAmB,MAAM,+CAA+C;aAChF,CAAC;QACH,CAAC;QACD,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACP,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,QAAQ;YACnC,MAAM,CAAC,cAAc;YACrB,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,QAAQ,CAAuB,CAAC;QACxC,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACP,MAAM,KAAK,GAAG,6BAA6B,CAAC;gBAC3C,GAAG,MAAM;gBACT,eAAe,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;gBAC3D,eAAe,EAAE;oBAChB;wBACC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;wBAC1B,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;wBAC1B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG;qBACzD;iBACD;aACD,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAC,CAAC;YAC5E,CAAC;YACD,WAAW,GAAG,KAAK,CAAC;QACrB,CAAC;IACF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,4CAA4C,CAAC,MAAM,EAAE;QAC5E,YAAY,EAAE,EAAE,CAAC,IAAI;QACrB,OAAO,EAAE,UAAU;QACnB,aAAa,EAAE,WAAW;KAC1B,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,GAAG,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAExB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAmB,CAAC;QAC7C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBACnD,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,CAAC,GAAG,CAAC;aACb,CAAC,CAAW,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO;gBACN,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,WAAW,CAAC,MAAM,YAAY,qBAAqB,CAAC,GAAG,CAAC,EAAE;aAC7F,CAAC;QACH,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAChD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5C,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;gBACvD,IAAI,CAAC,GAAG,UAAU;oBAAE,MAAM;YAC3B,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACN,EAAE,EAAE,IAAI;YACR,IAAI,EAAE;gBACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;gBAChC,QAAQ;gBACR,MAAM,EAAE,UAAU;aAClB;SACD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAChC,MAAM,EAAE,UAAU;QAClB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,EAAC,sBAAsB,EAAE,QAAQ,EAAC;YACpC,CAAC,CAAC,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAC,CAAC;KAClC,CAAC,CAAC,CAAC;IACJ,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,iCAAiC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACN,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAC;KACtE,CAAC;AACH,CAAC"}
@@ -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