@continuumdao/continuum-node-sdk 1.2.9 → 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 (268) 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/handler.d.ts.map +1 -1
  17. package/dist/mcp/defi/handler.js +10 -4
  18. package/dist/mcp/defi/handler.js.map +1 -1
  19. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  20. package/dist/mcp/defi/register-protocol-tools.js +4 -0
  21. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  22. package/dist/mcp/defi/uniswap-api-key.d.ts +16 -0
  23. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -0
  24. package/dist/mcp/defi/uniswap-api-key.js +50 -0
  25. package/dist/mcp/defi/uniswap-api-key.js.map +1 -0
  26. package/dist/mcp/registry/networks.d.ts.map +1 -1
  27. package/dist/mcp/registry/networks.js +1 -1
  28. package/dist/mcp/registry/networks.js.map +1 -1
  29. package/dist/mcp/registry/tokens.d.ts.map +1 -1
  30. package/dist/mcp/registry/tokens.js +3 -10
  31. package/dist/mcp/registry/tokens.js.map +1 -1
  32. package/dist/schemas/extended.d.ts +47 -4
  33. package/dist/schemas/extended.d.ts.map +1 -1
  34. package/dist/schemas/extended.js +49 -6
  35. package/dist/schemas/extended.js.map +1 -1
  36. package/package.json +1 -1
  37. package/dist/core/signing-flow.d.ts +0 -9
  38. package/dist/core/signing-flow.d.ts.map +0 -1
  39. package/dist/core/signing-flow.js +0 -139
  40. package/dist/core/signing-flow.js.map +0 -1
  41. package/dist/data/mpc-keys.d.ts +0 -8
  42. package/dist/data/mpc-keys.d.ts.map +0 -1
  43. package/dist/data/mpc-keys.js +0 -38
  44. package/dist/data/mpc-keys.js.map +0 -1
  45. package/dist/detops/general.d.ts +0 -11
  46. package/dist/detops/general.d.ts.map +0 -1
  47. package/dist/detops/general.js +0 -34
  48. package/dist/detops/general.js.map +0 -1
  49. package/dist/detops/group-actions.d.ts +0 -71
  50. package/dist/detops/group-actions.d.ts.map +0 -1
  51. package/dist/detops/group-actions.js +0 -360
  52. package/dist/detops/group-actions.js.map +0 -1
  53. package/dist/detops/groups.d.ts +0 -33
  54. package/dist/detops/groups.d.ts.map +0 -1
  55. package/dist/detops/groups.js +0 -223
  56. package/dist/detops/groups.js.map +0 -1
  57. package/dist/detops/keygen.d.ts +0 -72
  58. package/dist/detops/keygen.d.ts.map +0 -1
  59. package/dist/detops/keygen.js +0 -245
  60. package/dist/detops/keygen.js.map +0 -1
  61. package/dist/detops/management-keys.d.ts +0 -44
  62. package/dist/detops/management-keys.d.ts.map +0 -1
  63. package/dist/detops/management-keys.js +0 -216
  64. package/dist/detops/management-keys.js.map +0 -1
  65. package/dist/detops/management-signer.d.ts +0 -129
  66. package/dist/detops/management-signer.d.ts.map +0 -1
  67. package/dist/detops/management-signer.js +0 -619
  68. package/dist/detops/management-signer.js.map +0 -1
  69. package/dist/detops/management-signing.d.ts +0 -11
  70. package/dist/detops/management-signing.d.ts.map +0 -1
  71. package/dist/detops/management-signing.js +0 -131
  72. package/dist/detops/management-signing.js.map +0 -1
  73. package/dist/detops/mpc/broadcast-sign-result.d.ts +0 -9
  74. package/dist/detops/mpc/broadcast-sign-result.d.ts.map +0 -1
  75. package/dist/detops/mpc/broadcast-sign-result.js +0 -147
  76. package/dist/detops/mpc/broadcast-sign-result.js.map +0 -1
  77. package/dist/detops/mpc/bump-sign-result.d.ts +0 -25
  78. package/dist/detops/mpc/bump-sign-result.d.ts.map +0 -1
  79. package/dist/detops/mpc/bump-sign-result.js +0 -314
  80. package/dist/detops/mpc/bump-sign-result.js.map +0 -1
  81. package/dist/detops/mpc/client.d.ts +0 -15
  82. package/dist/detops/mpc/client.d.ts.map +0 -1
  83. package/dist/detops/mpc/client.js +0 -62
  84. package/dist/detops/mpc/client.js.map +0 -1
  85. package/dist/detops/mpc/compose-request.d.ts +0 -6
  86. package/dist/detops/mpc/compose-request.d.ts.map +0 -1
  87. package/dist/detops/mpc/compose-request.js +0 -33
  88. package/dist/detops/mpc/compose-request.js.map +0 -1
  89. package/dist/detops/mpc/context.d.ts +0 -11
  90. package/dist/detops/mpc/context.d.ts.map +0 -1
  91. package/dist/detops/mpc/context.js +0 -43
  92. package/dist/detops/mpc/context.js.map +0 -1
  93. package/dist/detops/mpc/forge-request.d.ts +0 -6
  94. package/dist/detops/mpc/forge-request.d.ts.map +0 -1
  95. package/dist/detops/mpc/forge-request.js +0 -46
  96. package/dist/detops/mpc/forge-request.js.map +0 -1
  97. package/dist/detops/mpc/gas-preflight.d.ts +0 -25
  98. package/dist/detops/mpc/gas-preflight.d.ts.map +0 -1
  99. package/dist/detops/mpc/gas-preflight.js +0 -101
  100. package/dist/detops/mpc/gas-preflight.js.map +0 -1
  101. package/dist/detops/mpc/list-ready.d.ts +0 -10
  102. package/dist/detops/mpc/list-ready.d.ts.map +0 -1
  103. package/dist/detops/mpc/list-ready.js +0 -48
  104. package/dist/detops/mpc/list-ready.js.map +0 -1
  105. package/dist/detops/mpc/management-post-sig.d.ts +0 -11
  106. package/dist/detops/mpc/management-post-sig.d.ts.map +0 -1
  107. package/dist/detops/mpc/management-post-sig.js +0 -20
  108. package/dist/detops/mpc/management-post-sig.js.map +0 -1
  109. package/dist/detops/mpc/mpa-top-up.d.ts +0 -18
  110. package/dist/detops/mpc/mpa-top-up.d.ts.map +0 -1
  111. package/dist/detops/mpc/mpa-top-up.js +0 -213
  112. package/dist/detops/mpc/mpa-top-up.js.map +0 -1
  113. package/dist/detops/mpc/register-keygen.d.ts +0 -6
  114. package/dist/detops/mpc/register-keygen.d.ts.map +0 -1
  115. package/dist/detops/mpc/register-keygen.js +0 -41
  116. package/dist/detops/mpc/register-keygen.js.map +0 -1
  117. package/dist/detops/mpc/schemas.d.ts +0 -251
  118. package/dist/detops/mpc/schemas.d.ts.map +0 -1
  119. package/dist/detops/mpc/schemas.js +0 -163
  120. package/dist/detops/mpc/schemas.js.map +0 -1
  121. package/dist/detops/mpc/sign-request-body.d.ts +0 -10
  122. package/dist/detops/mpc/sign-request-body.d.ts.map +0 -1
  123. package/dist/detops/mpc/sign-request-body.js +0 -64
  124. package/dist/detops/mpc/sign-request-body.js.map +0 -1
  125. package/dist/detops/mpc/sign-request-utils.d.ts +0 -33
  126. package/dist/detops/mpc/sign-request-utils.d.ts.map +0 -1
  127. package/dist/detops/mpc/sign-request-utils.js +0 -467
  128. package/dist/detops/mpc/sign-request-utils.js.map +0 -1
  129. package/dist/detops/mpc/transfer-native.d.ts +0 -6
  130. package/dist/detops/mpc/transfer-native.d.ts.map +0 -1
  131. package/dist/detops/mpc/transfer-native.js +0 -167
  132. package/dist/detops/mpc/transfer-native.js.map +0 -1
  133. package/dist/detops/mpc/transfer-tokens.d.ts +0 -15
  134. package/dist/detops/mpc/transfer-tokens.d.ts.map +0 -1
  135. package/dist/detops/mpc/transfer-tokens.js +0 -110
  136. package/dist/detops/mpc/transfer-tokens.js.map +0 -1
  137. package/dist/detops/mpc/trigger-sign-result.d.ts +0 -8
  138. package/dist/detops/mpc/trigger-sign-result.d.ts.map +0 -1
  139. package/dist/detops/mpc/trigger-sign-result.js +0 -244
  140. package/dist/detops/mpc/trigger-sign-result.js.map +0 -1
  141. package/dist/detops/mpc/types.d.ts +0 -62
  142. package/dist/detops/mpc/types.d.ts.map +0 -1
  143. package/dist/detops/mpc/types.js +0 -2
  144. package/dist/detops/mpc/types.js.map +0 -1
  145. package/dist/detops/node-info.d.ts +0 -27
  146. package/dist/detops/node-info.d.ts.map +0 -1
  147. package/dist/detops/node-info.js +0 -96
  148. package/dist/detops/node-info.js.map +0 -1
  149. package/dist/detops/registry/address-book.d.ts +0 -25
  150. package/dist/detops/registry/address-book.d.ts.map +0 -1
  151. package/dist/detops/registry/address-book.js +0 -83
  152. package/dist/detops/registry/address-book.js.map +0 -1
  153. package/dist/detops/registry/networks.d.ts +0 -20
  154. package/dist/detops/registry/networks.d.ts.map +0 -1
  155. package/dist/detops/registry/networks.js +0 -154
  156. package/dist/detops/registry/networks.js.map +0 -1
  157. package/dist/detops/registry/tokens.d.ts +0 -29
  158. package/dist/detops/registry/tokens.d.ts.map +0 -1
  159. package/dist/detops/registry/tokens.js +0 -142
  160. package/dist/detops/registry/tokens.js.map +0 -1
  161. package/dist/detops/result.d.ts +0 -21
  162. package/dist/detops/result.d.ts.map +0 -1
  163. package/dist/detops/result.js +0 -2
  164. package/dist/detops/result.js.map +0 -1
  165. package/dist/detops/schemas.d.ts +0 -153
  166. package/dist/detops/schemas.d.ts.map +0 -1
  167. package/dist/detops/schemas.js +0 -82
  168. package/dist/detops/schemas.js.map +0 -1
  169. package/dist/detops/signing-flow.d.ts +0 -9
  170. package/dist/detops/signing-flow.d.ts.map +0 -1
  171. package/dist/detops/signing-flow.js +0 -139
  172. package/dist/detops/signing-flow.js.map +0 -1
  173. package/dist/detops/types.d.ts +0 -58
  174. package/dist/detops/types.d.ts.map +0 -1
  175. package/dist/detops/types.js +0 -46
  176. package/dist/detops/types.js.map +0 -1
  177. package/dist/internal/ed25519/management-signing.d.ts +0 -51
  178. package/dist/internal/ed25519/management-signing.d.ts.map +0 -1
  179. package/dist/internal/ed25519/management-signing.js +0 -198
  180. package/dist/internal/ed25519/management-signing.js.map +0 -1
  181. package/dist/internal/ed25519/openssh-ed25519.d.ts +0 -20
  182. package/dist/internal/ed25519/openssh-ed25519.d.ts.map +0 -1
  183. package/dist/internal/ed25519/openssh-ed25519.js +0 -129
  184. package/dist/internal/ed25519/openssh-ed25519.js.map +0 -1
  185. package/dist/internal/management-request-signing.d.ts +0 -32
  186. package/dist/internal/management-request-signing.d.ts.map +0 -1
  187. package/dist/internal/management-request-signing.js +0 -186
  188. package/dist/internal/management-request-signing.js.map +0 -1
  189. package/dist/mcp/detops/registry/address-book.d.ts +0 -4
  190. package/dist/mcp/detops/registry/address-book.d.ts.map +0 -1
  191. package/dist/mcp/detops/registry/address-book.js +0 -39
  192. package/dist/mcp/detops/registry/address-book.js.map +0 -1
  193. package/dist/mcp/detops/registry/networks.d.ts +0 -4
  194. package/dist/mcp/detops/registry/networks.d.ts.map +0 -1
  195. package/dist/mcp/detops/registry/networks.js +0 -32
  196. package/dist/mcp/detops/registry/networks.js.map +0 -1
  197. package/dist/mcp/detops/registry/tokens.d.ts +0 -4
  198. package/dist/mcp/detops/registry/tokens.d.ts.map +0 -1
  199. package/dist/mcp/detops/registry/tokens.js +0 -43
  200. package/dist/mcp/detops/registry/tokens.js.map +0 -1
  201. package/dist/mcp/ed25519/management-signing.d.ts +0 -51
  202. package/dist/mcp/ed25519/management-signing.d.ts.map +0 -1
  203. package/dist/mcp/ed25519/management-signing.js +0 -198
  204. package/dist/mcp/ed25519/management-signing.js.map +0 -1
  205. package/dist/mcp/ed25519/openssh-ed25519.d.ts +0 -20
  206. package/dist/mcp/ed25519/openssh-ed25519.d.ts.map +0 -1
  207. package/dist/mcp/ed25519/openssh-ed25519.js +0 -129
  208. package/dist/mcp/ed25519/openssh-ed25519.js.map +0 -1
  209. package/dist/mcp/groups.d.ts +0 -71
  210. package/dist/mcp/groups.d.ts.map +0 -1
  211. package/dist/mcp/groups.js +0 -360
  212. package/dist/mcp/groups.js.map +0 -1
  213. package/dist/mcp/management-keys.d.ts +0 -4
  214. package/dist/mcp/management-keys.d.ts.map +0 -1
  215. package/dist/mcp/management-keys.js +0 -75
  216. package/dist/mcp/management-keys.js.map +0 -1
  217. package/dist/mcp/normalize.d.ts +0 -15
  218. package/dist/mcp/normalize.d.ts.map +0 -1
  219. package/dist/mcp/normalize.js +0 -204
  220. package/dist/mcp/normalize.js.map +0 -1
  221. package/dist/mcp/schemas.d.ts +0 -360
  222. package/dist/mcp/schemas.d.ts.map +0 -1
  223. package/dist/mcp/schemas.js +0 -263
  224. package/dist/mcp/schemas.js.map +0 -1
  225. package/dist/mcp/signing.d.ts +0 -32
  226. package/dist/mcp/signing.d.ts.map +0 -1
  227. package/dist/mcp/signing.js +0 -186
  228. package/dist/mcp/signing.js.map +0 -1
  229. package/dist/ops/general.d.ts +0 -11
  230. package/dist/ops/general.d.ts.map +0 -1
  231. package/dist/ops/general.js +0 -34
  232. package/dist/ops/general.js.map +0 -1
  233. package/dist/ops/groups.d.ts +0 -17
  234. package/dist/ops/groups.d.ts.map +0 -1
  235. package/dist/ops/groups.js +0 -105
  236. package/dist/ops/groups.js.map +0 -1
  237. package/dist/ops/management-signing.d.ts +0 -11
  238. package/dist/ops/management-signing.d.ts.map +0 -1
  239. package/dist/ops/management-signing.js +0 -131
  240. package/dist/ops/management-signing.js.map +0 -1
  241. package/dist/ops/result.d.ts +0 -21
  242. package/dist/ops/result.d.ts.map +0 -1
  243. package/dist/ops/result.js +0 -2
  244. package/dist/ops/result.js.map +0 -1
  245. package/dist/ops/schemas.d.ts +0 -153
  246. package/dist/ops/schemas.d.ts.map +0 -1
  247. package/dist/ops/schemas.js +0 -82
  248. package/dist/ops/schemas.js.map +0 -1
  249. package/dist/ops/signing-flow.d.ts +0 -8
  250. package/dist/ops/signing-flow.d.ts.map +0 -1
  251. package/dist/ops/signing-flow.js +0 -125
  252. package/dist/ops/signing-flow.js.map +0 -1
  253. package/dist/ops/types.d.ts +0 -58
  254. package/dist/ops/types.d.ts.map +0 -1
  255. package/dist/ops/types.js +0 -46
  256. package/dist/ops/types.js.map +0 -1
  257. package/dist/registry/address-book.d.ts +0 -25
  258. package/dist/registry/address-book.d.ts.map +0 -1
  259. package/dist/registry/address-book.js +0 -103
  260. package/dist/registry/address-book.js.map +0 -1
  261. package/dist/registry/networks.d.ts +0 -18
  262. package/dist/registry/networks.d.ts.map +0 -1
  263. package/dist/registry/networks.js +0 -180
  264. package/dist/registry/networks.js.map +0 -1
  265. package/dist/registry/tokens.d.ts +0 -29
  266. package/dist/registry/tokens.d.ts.map +0 -1
  267. package/dist/registry/tokens.js +0 -157
  268. 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