@continuumdao/ctm-mpc-defi 0.1.3

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 (65) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +111 -0
  3. package/dist/agent/catalog.cjs +484 -0
  4. package/dist/agent/catalog.cjs.map +1 -0
  5. package/dist/agent/catalog.d.cts +117 -0
  6. package/dist/agent/catalog.d.ts +117 -0
  7. package/dist/agent/catalog.js +474 -0
  8. package/dist/agent/catalog.js.map +1 -0
  9. package/dist/chains/evm/index.cjs +474 -0
  10. package/dist/chains/evm/index.cjs.map +1 -0
  11. package/dist/chains/evm/index.d.cts +62 -0
  12. package/dist/chains/evm/index.d.ts +62 -0
  13. package/dist/chains/evm/index.js +459 -0
  14. package/dist/chains/evm/index.js.map +1 -0
  15. package/dist/chains/near/index.cjs +25 -0
  16. package/dist/chains/near/index.cjs.map +1 -0
  17. package/dist/chains/near/index.d.cts +37 -0
  18. package/dist/chains/near/index.d.ts +37 -0
  19. package/dist/chains/near/index.js +20 -0
  20. package/dist/chains/near/index.js.map +1 -0
  21. package/dist/chains/solana/index.cjs +25 -0
  22. package/dist/chains/solana/index.cjs.map +1 -0
  23. package/dist/chains/solana/index.d.cts +40 -0
  24. package/dist/chains/solana/index.d.ts +40 -0
  25. package/dist/chains/solana/index.js +20 -0
  26. package/dist/chains/solana/index.js.map +1 -0
  27. package/dist/core/index.cjs +128 -0
  28. package/dist/core/index.cjs.map +1 -0
  29. package/dist/core/index.d.cts +10 -0
  30. package/dist/core/index.d.ts +10 -0
  31. package/dist/core/index.js +116 -0
  32. package/dist/core/index.js.map +1 -0
  33. package/dist/envelope-CcE5Cz_q.d.ts +35 -0
  34. package/dist/envelope-DYDPnrHZ.d.cts +35 -0
  35. package/dist/index.cjs +2481 -0
  36. package/dist/index.cjs.map +1 -0
  37. package/dist/index.d.cts +15 -0
  38. package/dist/index.d.ts +15 -0
  39. package/dist/index.js +2446 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/keygen-CfNp8yKJ.d.cts +9 -0
  42. package/dist/keygen-DsINazx8.d.ts +9 -0
  43. package/dist/nodeRead-BnmSaMGO.d.cts +8 -0
  44. package/dist/nodeRead-BnmSaMGO.d.ts +8 -0
  45. package/dist/protocols/evm/curve-dao/index.cjs +869 -0
  46. package/dist/protocols/evm/curve-dao/index.cjs.map +1 -0
  47. package/dist/protocols/evm/curve-dao/index.d.cts +147 -0
  48. package/dist/protocols/evm/curve-dao/index.d.ts +147 -0
  49. package/dist/protocols/evm/curve-dao/index.js +846 -0
  50. package/dist/protocols/evm/curve-dao/index.js.map +1 -0
  51. package/dist/protocols/evm/uniswap-v4/index.cjs +1700 -0
  52. package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -0
  53. package/dist/protocols/evm/uniswap-v4/index.d.cts +323 -0
  54. package/dist/protocols/evm/uniswap-v4/index.d.ts +323 -0
  55. package/dist/protocols/evm/uniswap-v4/index.js +1659 -0
  56. package/dist/protocols/evm/uniswap-v4/index.js.map +1 -0
  57. package/dist/registry-BwZoE668.d.cts +8 -0
  58. package/dist/registry-oMKlO_5z.d.ts +8 -0
  59. package/dist/txParams-BC7ogvdR.d.cts +19 -0
  60. package/dist/txParams-BC7ogvdR.d.ts +19 -0
  61. package/dist/types-5u863Fd9.d.ts +34 -0
  62. package/dist/types-B8idm_gu.d.cts +34 -0
  63. package/dist/types-Ce2qNHai.d.cts +57 -0
  64. package/dist/types-Ce2qNHai.d.ts +57 -0
  65. package/package.json +94 -0
@@ -0,0 +1,37 @@
1
+ import { K as KeyGenSubset } from '../../types-Ce2qNHai.cjs';
2
+
3
+ type NearSigningDefaults = {
4
+ gasPriceYocto?: string;
5
+ };
6
+ type NearChainDetail = {
7
+ chainType: 'near';
8
+ chainId: string;
9
+ chainName: string;
10
+ rpcGateway: string;
11
+ endpointKind: 'json-rpc';
12
+ testnet: boolean;
13
+ nativeSymbol: string;
14
+ nativeDecimals: number;
15
+ signingDefaults?: NearSigningDefaults;
16
+ };
17
+ interface NearProtocolContext {
18
+ chainCategory: 'near';
19
+ chainId: string;
20
+ rpcGateway: string;
21
+ executorAddress: string;
22
+ chainDetail: NearChainDetail;
23
+ useCustomFees: boolean;
24
+ keyGen: KeyGenSubset;
25
+ purposeText: string;
26
+ }
27
+ declare class NotImplementedError extends Error {
28
+ constructor(feature: string);
29
+ }
30
+ declare function buildNearMultisignBatch(): Promise<never>;
31
+ declare const nearChainCategoryModule: {
32
+ category: "near";
33
+ };
34
+
35
+ declare const NEAR_CHAIN_CATEGORY: "near";
36
+
37
+ export { NEAR_CHAIN_CATEGORY, type NearChainDetail, type NearProtocolContext, type NearSigningDefaults, NotImplementedError, buildNearMultisignBatch, nearChainCategoryModule };
@@ -0,0 +1,37 @@
1
+ import { K as KeyGenSubset } from '../../types-Ce2qNHai.js';
2
+
3
+ type NearSigningDefaults = {
4
+ gasPriceYocto?: string;
5
+ };
6
+ type NearChainDetail = {
7
+ chainType: 'near';
8
+ chainId: string;
9
+ chainName: string;
10
+ rpcGateway: string;
11
+ endpointKind: 'json-rpc';
12
+ testnet: boolean;
13
+ nativeSymbol: string;
14
+ nativeDecimals: number;
15
+ signingDefaults?: NearSigningDefaults;
16
+ };
17
+ interface NearProtocolContext {
18
+ chainCategory: 'near';
19
+ chainId: string;
20
+ rpcGateway: string;
21
+ executorAddress: string;
22
+ chainDetail: NearChainDetail;
23
+ useCustomFees: boolean;
24
+ keyGen: KeyGenSubset;
25
+ purposeText: string;
26
+ }
27
+ declare class NotImplementedError extends Error {
28
+ constructor(feature: string);
29
+ }
30
+ declare function buildNearMultisignBatch(): Promise<never>;
31
+ declare const nearChainCategoryModule: {
32
+ category: "near";
33
+ };
34
+
35
+ declare const NEAR_CHAIN_CATEGORY: "near";
36
+
37
+ export { NEAR_CHAIN_CATEGORY, type NearChainDetail, type NearProtocolContext, type NearSigningDefaults, NotImplementedError, buildNearMultisignBatch, nearChainCategoryModule };
@@ -0,0 +1,20 @@
1
+ // src/chains/near/types.ts
2
+ var NotImplementedError = class extends Error {
3
+ constructor(feature) {
4
+ super(`${feature} is not implemented yet for chain category near`);
5
+ this.name = "NotImplementedError";
6
+ }
7
+ };
8
+ async function buildNearMultisignBatch() {
9
+ throw new NotImplementedError("buildNearMultisignBatch");
10
+ }
11
+ var nearChainCategoryModule = {
12
+ category: "near"
13
+ };
14
+
15
+ // src/chains/near/index.ts
16
+ var NEAR_CHAIN_CATEGORY = "near";
17
+
18
+ export { NEAR_CHAIN_CATEGORY, NotImplementedError, buildNearMultisignBatch, nearChainCategoryModule };
19
+ //# sourceMappingURL=index.js.map
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/chains/near/types.ts","../../../src/chains/near/index.ts"],"names":[],"mappings":";AA2BO,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAA,EAC7C,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,+CAAA,CAAiD,CAAA;AACjE,IAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AAAA,EACd;AACF;AAEA,eAAsB,uBAAA,GAA0C;AAC9D,EAAA,MAAM,IAAI,oBAAoB,yBAAyB,CAAA;AACzD;AAEO,IAAM,uBAAA,GAA0B;AAAA,EACrC,QAAA,EAAU;AACZ;;;ACtCO,IAAM,mBAAA,GAAsB","file":"index.js","sourcesContent":["export type NearSigningDefaults = {\n gasPriceYocto?: string\n}\n\nexport type NearChainDetail = {\n chainType: 'near'\n chainId: string\n chainName: string\n rpcGateway: string\n endpointKind: 'json-rpc'\n testnet: boolean\n nativeSymbol: string\n nativeDecimals: number\n signingDefaults?: NearSigningDefaults\n}\n\nexport interface NearProtocolContext {\n chainCategory: 'near'\n chainId: string\n rpcGateway: string\n executorAddress: string\n chainDetail: NearChainDetail\n useCustomFees: boolean\n keyGen: import('../../core/types.js').KeyGenSubset\n purposeText: string\n}\n\nexport class NotImplementedError extends Error {\n constructor(feature: string) {\n super(`${feature} is not implemented yet for chain category near`)\n this.name = 'NotImplementedError'\n }\n}\n\nexport async function buildNearMultisignBatch(): Promise<never> {\n throw new NotImplementedError('buildNearMultisignBatch')\n}\n\nexport const nearChainCategoryModule = {\n category: 'near' as const,\n}\n","export * from './types.js'\n\nexport const NEAR_CHAIN_CATEGORY = 'near' as const\n"]}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ // src/chains/solana/types.ts
4
+ var NotImplementedError = class extends Error {
5
+ constructor(feature) {
6
+ super(`${feature} is not implemented yet for chain category solana`);
7
+ this.name = "NotImplementedError";
8
+ }
9
+ };
10
+ async function buildSolanaMultisignBatch() {
11
+ throw new NotImplementedError("buildSolanaMultisignBatch");
12
+ }
13
+ var solanaChainCategoryModule = {
14
+ category: "solana"
15
+ };
16
+
17
+ // src/chains/solana/index.ts
18
+ var SOLANA_CHAIN_CATEGORY = "solana";
19
+
20
+ exports.NotImplementedError = NotImplementedError;
21
+ exports.SOLANA_CHAIN_CATEGORY = SOLANA_CHAIN_CATEGORY;
22
+ exports.buildSolanaMultisignBatch = buildSolanaMultisignBatch;
23
+ exports.solanaChainCategoryModule = solanaChainCategoryModule;
24
+ //# sourceMappingURL=index.cjs.map
25
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/chains/solana/types.ts","../../../src/chains/solana/index.ts"],"names":[],"mappings":";;;AA8BO,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAA,EAC7C,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,iDAAA,CAAmD,CAAA;AACnE,IAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AAAA,EACd;AACF;AAEA,eAAsB,yBAAA,GAA4C;AAChE,EAAA,MAAM,IAAI,oBAAoB,2BAA2B,CAAA;AAC3D;AAEO,IAAM,yBAAA,GAA4B;AAAA,EACvC,QAAA,EAAU;AACZ;;;ACzCO,IAAM,qBAAA,GAAwB","file":"index.cjs","sourcesContent":["/** Solana signing defaults — mirrors app NonEvmChainDetailRow.signingDefaults. */\nexport type SolanaSigningDefaults = {\n commitment?: 'confirmed' | 'finalized'\n computeUnitLimit?: number\n priorityFeeMicroLamports?: number\n}\n\nexport type SolanaChainDetail = {\n chainType: 'solana'\n chainId: string\n chainName: string\n rpcGateway: string\n endpointKind: 'json-rpc'\n testnet: boolean\n nativeSymbol: string\n nativeDecimals: number\n signingDefaults?: SolanaSigningDefaults\n}\n\nexport interface SolanaProtocolContext {\n chainCategory: 'solana'\n chainId: string\n rpcGateway: string\n executorAddress: string\n chainDetail: SolanaChainDetail\n useCustomFees: boolean\n keyGen: import('../../core/types.js').KeyGenSubset\n purposeText: string\n}\n\nexport class NotImplementedError extends Error {\n constructor(feature: string) {\n super(`${feature} is not implemented yet for chain category solana`)\n this.name = 'NotImplementedError'\n }\n}\n\nexport async function buildSolanaMultisignBatch(): Promise<never> {\n throw new NotImplementedError('buildSolanaMultisignBatch')\n}\n\nexport const solanaChainCategoryModule = {\n category: 'solana' as const,\n}\n","export * from './types.js'\n\nexport const SOLANA_CHAIN_CATEGORY = 'solana' as const\n"]}
@@ -0,0 +1,40 @@
1
+ import { K as KeyGenSubset } from '../../types-Ce2qNHai.cjs';
2
+
3
+ /** Solana signing defaults — mirrors app NonEvmChainDetailRow.signingDefaults. */
4
+ type SolanaSigningDefaults = {
5
+ commitment?: 'confirmed' | 'finalized';
6
+ computeUnitLimit?: number;
7
+ priorityFeeMicroLamports?: number;
8
+ };
9
+ type SolanaChainDetail = {
10
+ chainType: 'solana';
11
+ chainId: string;
12
+ chainName: string;
13
+ rpcGateway: string;
14
+ endpointKind: 'json-rpc';
15
+ testnet: boolean;
16
+ nativeSymbol: string;
17
+ nativeDecimals: number;
18
+ signingDefaults?: SolanaSigningDefaults;
19
+ };
20
+ interface SolanaProtocolContext {
21
+ chainCategory: 'solana';
22
+ chainId: string;
23
+ rpcGateway: string;
24
+ executorAddress: string;
25
+ chainDetail: SolanaChainDetail;
26
+ useCustomFees: boolean;
27
+ keyGen: KeyGenSubset;
28
+ purposeText: string;
29
+ }
30
+ declare class NotImplementedError extends Error {
31
+ constructor(feature: string);
32
+ }
33
+ declare function buildSolanaMultisignBatch(): Promise<never>;
34
+ declare const solanaChainCategoryModule: {
35
+ category: "solana";
36
+ };
37
+
38
+ declare const SOLANA_CHAIN_CATEGORY: "solana";
39
+
40
+ export { NotImplementedError, SOLANA_CHAIN_CATEGORY, type SolanaChainDetail, type SolanaProtocolContext, type SolanaSigningDefaults, buildSolanaMultisignBatch, solanaChainCategoryModule };
@@ -0,0 +1,40 @@
1
+ import { K as KeyGenSubset } from '../../types-Ce2qNHai.js';
2
+
3
+ /** Solana signing defaults — mirrors app NonEvmChainDetailRow.signingDefaults. */
4
+ type SolanaSigningDefaults = {
5
+ commitment?: 'confirmed' | 'finalized';
6
+ computeUnitLimit?: number;
7
+ priorityFeeMicroLamports?: number;
8
+ };
9
+ type SolanaChainDetail = {
10
+ chainType: 'solana';
11
+ chainId: string;
12
+ chainName: string;
13
+ rpcGateway: string;
14
+ endpointKind: 'json-rpc';
15
+ testnet: boolean;
16
+ nativeSymbol: string;
17
+ nativeDecimals: number;
18
+ signingDefaults?: SolanaSigningDefaults;
19
+ };
20
+ interface SolanaProtocolContext {
21
+ chainCategory: 'solana';
22
+ chainId: string;
23
+ rpcGateway: string;
24
+ executorAddress: string;
25
+ chainDetail: SolanaChainDetail;
26
+ useCustomFees: boolean;
27
+ keyGen: KeyGenSubset;
28
+ purposeText: string;
29
+ }
30
+ declare class NotImplementedError extends Error {
31
+ constructor(feature: string);
32
+ }
33
+ declare function buildSolanaMultisignBatch(): Promise<never>;
34
+ declare const solanaChainCategoryModule: {
35
+ category: "solana";
36
+ };
37
+
38
+ declare const SOLANA_CHAIN_CATEGORY: "solana";
39
+
40
+ export { NotImplementedError, SOLANA_CHAIN_CATEGORY, type SolanaChainDetail, type SolanaProtocolContext, type SolanaSigningDefaults, buildSolanaMultisignBatch, solanaChainCategoryModule };
@@ -0,0 +1,20 @@
1
+ // src/chains/solana/types.ts
2
+ var NotImplementedError = class extends Error {
3
+ constructor(feature) {
4
+ super(`${feature} is not implemented yet for chain category solana`);
5
+ this.name = "NotImplementedError";
6
+ }
7
+ };
8
+ async function buildSolanaMultisignBatch() {
9
+ throw new NotImplementedError("buildSolanaMultisignBatch");
10
+ }
11
+ var solanaChainCategoryModule = {
12
+ category: "solana"
13
+ };
14
+
15
+ // src/chains/solana/index.ts
16
+ var SOLANA_CHAIN_CATEGORY = "solana";
17
+
18
+ export { NotImplementedError, SOLANA_CHAIN_CATEGORY, buildSolanaMultisignBatch, solanaChainCategoryModule };
19
+ //# sourceMappingURL=index.js.map
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/chains/solana/types.ts","../../../src/chains/solana/index.ts"],"names":[],"mappings":";AA8BO,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAA,EAC7C,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,iDAAA,CAAmD,CAAA;AACnE,IAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AAAA,EACd;AACF;AAEA,eAAsB,yBAAA,GAA4C;AAChE,EAAA,MAAM,IAAI,oBAAoB,2BAA2B,CAAA;AAC3D;AAEO,IAAM,yBAAA,GAA4B;AAAA,EACvC,QAAA,EAAU;AACZ;;;ACzCO,IAAM,qBAAA,GAAwB","file":"index.js","sourcesContent":["/** Solana signing defaults — mirrors app NonEvmChainDetailRow.signingDefaults. */\nexport type SolanaSigningDefaults = {\n commitment?: 'confirmed' | 'finalized'\n computeUnitLimit?: number\n priorityFeeMicroLamports?: number\n}\n\nexport type SolanaChainDetail = {\n chainType: 'solana'\n chainId: string\n chainName: string\n rpcGateway: string\n endpointKind: 'json-rpc'\n testnet: boolean\n nativeSymbol: string\n nativeDecimals: number\n signingDefaults?: SolanaSigningDefaults\n}\n\nexport interface SolanaProtocolContext {\n chainCategory: 'solana'\n chainId: string\n rpcGateway: string\n executorAddress: string\n chainDetail: SolanaChainDetail\n useCustomFees: boolean\n keyGen: import('../../core/types.js').KeyGenSubset\n purposeText: string\n}\n\nexport class NotImplementedError extends Error {\n constructor(feature: string) {\n super(`${feature} is not implemented yet for chain category solana`)\n this.name = 'NotImplementedError'\n }\n}\n\nexport async function buildSolanaMultisignBatch(): Promise<never> {\n throw new NotImplementedError('buildSolanaMultisignBatch')\n}\n\nexport const solanaChainCategoryModule = {\n category: 'solana' as const,\n}\n","export * from './types.js'\n\nexport const SOLANA_CHAIN_CATEGORY = 'solana' as const\n"]}
@@ -0,0 +1,128 @@
1
+ 'use strict';
2
+
3
+ // src/core/keygen.ts
4
+ function firstClientIdFromKeyGen(data) {
5
+ const map = data?.ClientKeys;
6
+ if (!map || typeof map !== "object") return null;
7
+ for (const v of Object.values(map)) {
8
+ if (typeof v === "string" && v.trim()) return v.trim();
9
+ }
10
+ return null;
11
+ }
12
+ function requirePubKeyHex(keyGen) {
13
+ const ph = (keyGen.pubkeyhex ?? "").trim();
14
+ if (!ph) throw new Error("keyGen pubKey (pubkeyhex) is required");
15
+ return ph;
16
+ }
17
+ function keyListFromKeyGen(keyGen) {
18
+ return keyGen.keylist ?? [];
19
+ }
20
+
21
+ // src/core/purpose.ts
22
+ function mergePurposeText(purposeText, purposeSuffix) {
23
+ const t = purposeText.trim();
24
+ const suffix = (purposeSuffix ?? "").trim();
25
+ if (!suffix) return t;
26
+ return t ? `${t}
27
+
28
+ ${suffix}` : suffix;
29
+ }
30
+
31
+ // src/core/envelope.ts
32
+ function finalizeMultisign(input) {
33
+ const { keyGen, destinationChainID, legs } = input;
34
+ if (legs.length === 0) {
35
+ throw new Error("finalizeMultisign requires at least one leg");
36
+ }
37
+ const ph = (keyGen.pubkeyhex ?? "").trim();
38
+ if (!ph) throw new Error("keyGen pubKey (pubkeyhex) is required");
39
+ const keyList = keyGen.keylist ?? [];
40
+ const clientId = firstClientIdFromKeyGen(keyGen);
41
+ const first = legs[0];
42
+ const messageHashes = legs.map((l) => l.msgHash);
43
+ const messageRawBatch = legs.map((l) => l.msgRaw);
44
+ const batchMeta = legs.map((l) => ({
45
+ destinationAddress: l.destinationAddress,
46
+ signatureText: l.signatureText,
47
+ ...l.audit
48
+ }));
49
+ const proposalTxParams = legs.map((l) => l.proposalTxParams).filter((p) => p != null && typeof p === "object");
50
+ const extraPayload = {
51
+ batchMeta,
52
+ ...input.extraJSON ?? {}
53
+ };
54
+ const extraJSON = JSON.stringify(extraPayload);
55
+ const bodyForSign = {
56
+ keyList,
57
+ pubKey: ph,
58
+ msgHash: messageHashes[0],
59
+ msgRaw: first.msgRaw,
60
+ destinationChainID,
61
+ destinationAddress: input.destinationAddress ?? first.destinationAddress,
62
+ extraJSON,
63
+ signatureText: first.signatureText,
64
+ purpose: mergePurposeText(input.purposeText, input.purposeSuffix),
65
+ ...first.feeSnapshot
66
+ };
67
+ if (legs.length > 1) {
68
+ bodyForSign.messageHashes = messageHashes;
69
+ bodyForSign.messageRawBatch = messageRawBatch;
70
+ }
71
+ if (proposalTxParams.length > 0) {
72
+ bodyForSign.proposalTxParams = proposalTxParams;
73
+ }
74
+ const valueWei = first.valueWei;
75
+ if (valueWei != null && valueWei > 0n) {
76
+ bodyForSign.value = valueWei.toString();
77
+ }
78
+ if (clientId) bodyForSign.clientId = clientId;
79
+ return { bodyForSign, messageToSign: JSON.stringify(bodyForSign) };
80
+ }
81
+ var coreChainCategoryModule = {
82
+ category: "evm",
83
+ finalizeMultisign
84
+ };
85
+
86
+ // src/core/registry.ts
87
+ var modules = [];
88
+ function registerProtocolModule(mod) {
89
+ const existing = modules.findIndex((m) => m.id === mod.id);
90
+ if (existing >= 0) {
91
+ modules[existing] = mod;
92
+ } else {
93
+ modules.push(mod);
94
+ }
95
+ }
96
+ function getProtocolModules() {
97
+ return modules;
98
+ }
99
+ function getProtocolModule(id) {
100
+ return modules.find((m) => m.id === id);
101
+ }
102
+ function getActionsByChainCategory(category) {
103
+ return modules.filter((m) => m.chainCategory === category).flatMap((m) => m.actions);
104
+ }
105
+
106
+ // src/core/nodeRead.ts
107
+ function nodeFetchWithReadAuth(url, init, auth) {
108
+ const method = (init?.method ?? "GET").toUpperCase();
109
+ const headers = new Headers(init?.headers);
110
+ if (auth.bearerOnGet && method === "GET" && auth.jwt && auth.jwt.trim()) {
111
+ headers.set("Authorization", `Bearer ${auth.jwt.trim()}`);
112
+ }
113
+ return fetch(url, { ...init, headers });
114
+ }
115
+
116
+ exports.coreChainCategoryModule = coreChainCategoryModule;
117
+ exports.finalizeMultisign = finalizeMultisign;
118
+ exports.firstClientIdFromKeyGen = firstClientIdFromKeyGen;
119
+ exports.getActionsByChainCategory = getActionsByChainCategory;
120
+ exports.getProtocolModule = getProtocolModule;
121
+ exports.getProtocolModules = getProtocolModules;
122
+ exports.keyListFromKeyGen = keyListFromKeyGen;
123
+ exports.mergePurposeText = mergePurposeText;
124
+ exports.nodeFetchWithReadAuth = nodeFetchWithReadAuth;
125
+ exports.registerProtocolModule = registerProtocolModule;
126
+ exports.requirePubKeyHex = requirePubKeyHex;
127
+ //# sourceMappingURL=index.cjs.map
128
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/keygen.ts","../../src/core/purpose.ts","../../src/core/envelope.ts","../../src/core/registry.ts","../../src/core/nodeRead.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { KeyGenSubset } from './types.js'\n\nexport type { KeyGenSubset }\n\n/** App-compatible alias used by existing multisign builders. */\nexport type KeyGenSubsetForPermit = KeyGenSubset\n\nexport function firstClientIdFromKeyGen(data: KeyGenSubset | null | undefined): string | null {\n const map = data?.ClientKeys\n if (!map || typeof map !== 'object') return null\n for (const v of Object.values(map)) {\n if (typeof v === 'string' && v.trim()) return v.trim()\n }\n return null\n}\n\nexport function requirePubKeyHex(keyGen: KeyGenSubset): string {\n const ph = (keyGen.pubkeyhex ?? '').trim()\n if (!ph) throw new Error('keyGen pubKey (pubkeyhex) is required')\n return ph\n}\n\nexport function keyListFromKeyGen(keyGen: KeyGenSubset): string[] {\n return keyGen.keylist ?? []\n}\n","/** Merge user purpose text with an optional batch / protocol suffix. */\nexport function mergePurposeText(purposeText: string, purposeSuffix?: string): string {\n const t = purposeText.trim()\n const suffix = (purposeSuffix ?? '').trim()\n if (!suffix) return t\n return t ? `${t}\\n\\n${suffix}` : suffix\n}\n","import type { ChainCategory, MultisignBuildResult } from './types.js'\nimport type { KeyGenSubset } from './keygen.js'\nimport { firstClientIdFromKeyGen } from './keygen.js'\nimport { mergePurposeText } from './purpose.js'\n\nexport interface MultisignLeg {\n msgHash: string\n msgRaw: string\n destinationAddress: string\n signatureText: string\n audit: Record<string, unknown>\n feeSnapshot: Record<string, unknown>\n proposalTxParams?: Record<string, unknown>\n /** Payable value wei string for first leg only when relevant */\n valueWei?: bigint\n}\n\nexport interface ChainCategoryBuildInput {\n keyGen: KeyGenSubset\n purposeText: string\n purposeSuffix?: string\n destinationChainID: string\n legs: MultisignLeg[]\n extraJSON?: Record<string, unknown>\n /** Top-level destination address (first leg destination if omitted) */\n destinationAddress?: string\n}\n\nexport interface ChainCategoryModule {\n category: ChainCategory\n finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult\n}\n\n/**\n * Assemble mpc-auth `bodyForSign` from category-built legs.\n * Supports single-tx and batch (messageHashes / messageRawBatch / proposalTxParams).\n */\nexport function finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult {\n const { keyGen, destinationChainID, legs } = input\n if (legs.length === 0) {\n throw new Error('finalizeMultisign requires at least one leg')\n }\n\n const ph = (keyGen.pubkeyhex ?? '').trim()\n if (!ph) throw new Error('keyGen pubKey (pubkeyhex) is required')\n\n const keyList = keyGen.keylist ?? []\n const clientId = firstClientIdFromKeyGen(keyGen)\n const first = legs[0]!\n\n const messageHashes = legs.map((l) => l.msgHash)\n const messageRawBatch = legs.map((l) => l.msgRaw)\n const batchMeta = legs.map((l) => ({\n destinationAddress: l.destinationAddress,\n signatureText: l.signatureText,\n ...l.audit,\n }))\n\n const proposalTxParams = legs\n .map((l) => l.proposalTxParams)\n .filter((p): p is Record<string, unknown> => p != null && typeof p === 'object')\n\n const extraPayload: Record<string, unknown> = {\n batchMeta,\n ...(input.extraJSON ?? {}),\n }\n const extraJSON = JSON.stringify(extraPayload)\n\n const bodyForSign: Record<string, unknown> = {\n keyList,\n pubKey: ph,\n msgHash: messageHashes[0],\n msgRaw: first.msgRaw,\n destinationChainID,\n destinationAddress: input.destinationAddress ?? first.destinationAddress,\n extraJSON,\n signatureText: first.signatureText,\n purpose: mergePurposeText(input.purposeText, input.purposeSuffix),\n ...first.feeSnapshot,\n }\n\n if (legs.length > 1) {\n bodyForSign.messageHashes = messageHashes\n bodyForSign.messageRawBatch = messageRawBatch\n }\n\n if (proposalTxParams.length > 0) {\n bodyForSign.proposalTxParams = proposalTxParams\n }\n\n const valueWei = first.valueWei\n if (valueWei != null && valueWei > 0n) {\n bodyForSign.value = valueWei.toString()\n }\n\n if (clientId) bodyForSign.clientId = clientId\n\n return { bodyForSign, messageToSign: JSON.stringify(bodyForSign) }\n}\n\nexport const coreChainCategoryModule: ChainCategoryModule = {\n category: 'evm',\n finalizeMultisign,\n}\n","import type { ProtocolModule } from './types.js'\n\nconst modules: ProtocolModule[] = []\n\nexport function registerProtocolModule(mod: ProtocolModule): void {\n const existing = modules.findIndex((m) => m.id === mod.id)\n if (existing >= 0) {\n modules[existing] = mod\n } else {\n modules.push(mod)\n }\n}\n\nexport function getProtocolModules(): readonly ProtocolModule[] {\n return modules\n}\n\nexport function getProtocolModule(id: string): ProtocolModule | undefined {\n return modules.find((m) => m.id === id)\n}\n\nexport function getActionsByChainCategory(category: string): ProtocolModule['actions'] {\n return modules.filter((m) => m.chainCategory === category).flatMap((m) => m.actions)\n}\n","/** GET requests to mpc-auth management node with optional Bearer JWT (Browser HTTPS). */\nexport type NodeReadAuth = {\n bearerOnGet: boolean\n jwt: string | null\n}\n\nexport function nodeFetchWithReadAuth(\n url: string,\n init: RequestInit | undefined,\n auth: NodeReadAuth,\n): Promise<Response> {\n const method = (init?.method ?? 'GET').toUpperCase()\n const headers = new Headers(init?.headers)\n if (auth.bearerOnGet && method === 'GET' && auth.jwt && auth.jwt.trim()) {\n headers.set('Authorization', `Bearer ${auth.jwt.trim()}`)\n }\n return fetch(url, { ...init, headers })\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export { C as ChainCategory, a as ChainSupportContext, E as EvmTokenKind, K as KeyGenSubset, M as MultisignBuildResult, b as MultisignCommonArgs, N as NearTokenKind, P as ParamDoc, c as ProtocolActionDescriptor, d as ProtocolModule, S as SolanaTokenKind, T as TokenRef } from '../types-Ce2qNHai.cjs';
2
+ export { K as KeyGenSubsetForPermit, f as firstClientIdFromKeyGen, k as keyListFromKeyGen, r as requirePubKeyHex } from '../keygen-CfNp8yKJ.cjs';
3
+ export { C as ChainCategoryBuildInput, a as ChainCategoryModule, M as MultisignLeg, c as coreChainCategoryModule, f as finalizeMultisign } from '../envelope-DYDPnrHZ.cjs';
4
+ export { g as getActionsByChainCategory, a as getProtocolModule, b as getProtocolModules, r as registerProtocolModule } from '../registry-BwZoE668.cjs';
5
+ export { N as NodeReadAuth, n as nodeFetchWithReadAuth } from '../nodeRead-BnmSaMGO.cjs';
6
+
7
+ /** Merge user purpose text with an optional batch / protocol suffix. */
8
+ declare function mergePurposeText(purposeText: string, purposeSuffix?: string): string;
9
+
10
+ export { mergePurposeText };
@@ -0,0 +1,10 @@
1
+ export { C as ChainCategory, a as ChainSupportContext, E as EvmTokenKind, K as KeyGenSubset, M as MultisignBuildResult, b as MultisignCommonArgs, N as NearTokenKind, P as ParamDoc, c as ProtocolActionDescriptor, d as ProtocolModule, S as SolanaTokenKind, T as TokenRef } from '../types-Ce2qNHai.js';
2
+ export { K as KeyGenSubsetForPermit, f as firstClientIdFromKeyGen, k as keyListFromKeyGen, r as requirePubKeyHex } from '../keygen-DsINazx8.js';
3
+ export { C as ChainCategoryBuildInput, a as ChainCategoryModule, M as MultisignLeg, c as coreChainCategoryModule, f as finalizeMultisign } from '../envelope-CcE5Cz_q.js';
4
+ export { g as getActionsByChainCategory, a as getProtocolModule, b as getProtocolModules, r as registerProtocolModule } from '../registry-oMKlO_5z.js';
5
+ export { N as NodeReadAuth, n as nodeFetchWithReadAuth } from '../nodeRead-BnmSaMGO.js';
6
+
7
+ /** Merge user purpose text with an optional batch / protocol suffix. */
8
+ declare function mergePurposeText(purposeText: string, purposeSuffix?: string): string;
9
+
10
+ export { mergePurposeText };
@@ -0,0 +1,116 @@
1
+ // src/core/keygen.ts
2
+ function firstClientIdFromKeyGen(data) {
3
+ const map = data?.ClientKeys;
4
+ if (!map || typeof map !== "object") return null;
5
+ for (const v of Object.values(map)) {
6
+ if (typeof v === "string" && v.trim()) return v.trim();
7
+ }
8
+ return null;
9
+ }
10
+ function requirePubKeyHex(keyGen) {
11
+ const ph = (keyGen.pubkeyhex ?? "").trim();
12
+ if (!ph) throw new Error("keyGen pubKey (pubkeyhex) is required");
13
+ return ph;
14
+ }
15
+ function keyListFromKeyGen(keyGen) {
16
+ return keyGen.keylist ?? [];
17
+ }
18
+
19
+ // src/core/purpose.ts
20
+ function mergePurposeText(purposeText, purposeSuffix) {
21
+ const t = purposeText.trim();
22
+ const suffix = (purposeSuffix ?? "").trim();
23
+ if (!suffix) return t;
24
+ return t ? `${t}
25
+
26
+ ${suffix}` : suffix;
27
+ }
28
+
29
+ // src/core/envelope.ts
30
+ function finalizeMultisign(input) {
31
+ const { keyGen, destinationChainID, legs } = input;
32
+ if (legs.length === 0) {
33
+ throw new Error("finalizeMultisign requires at least one leg");
34
+ }
35
+ const ph = (keyGen.pubkeyhex ?? "").trim();
36
+ if (!ph) throw new Error("keyGen pubKey (pubkeyhex) is required");
37
+ const keyList = keyGen.keylist ?? [];
38
+ const clientId = firstClientIdFromKeyGen(keyGen);
39
+ const first = legs[0];
40
+ const messageHashes = legs.map((l) => l.msgHash);
41
+ const messageRawBatch = legs.map((l) => l.msgRaw);
42
+ const batchMeta = legs.map((l) => ({
43
+ destinationAddress: l.destinationAddress,
44
+ signatureText: l.signatureText,
45
+ ...l.audit
46
+ }));
47
+ const proposalTxParams = legs.map((l) => l.proposalTxParams).filter((p) => p != null && typeof p === "object");
48
+ const extraPayload = {
49
+ batchMeta,
50
+ ...input.extraJSON ?? {}
51
+ };
52
+ const extraJSON = JSON.stringify(extraPayload);
53
+ const bodyForSign = {
54
+ keyList,
55
+ pubKey: ph,
56
+ msgHash: messageHashes[0],
57
+ msgRaw: first.msgRaw,
58
+ destinationChainID,
59
+ destinationAddress: input.destinationAddress ?? first.destinationAddress,
60
+ extraJSON,
61
+ signatureText: first.signatureText,
62
+ purpose: mergePurposeText(input.purposeText, input.purposeSuffix),
63
+ ...first.feeSnapshot
64
+ };
65
+ if (legs.length > 1) {
66
+ bodyForSign.messageHashes = messageHashes;
67
+ bodyForSign.messageRawBatch = messageRawBatch;
68
+ }
69
+ if (proposalTxParams.length > 0) {
70
+ bodyForSign.proposalTxParams = proposalTxParams;
71
+ }
72
+ const valueWei = first.valueWei;
73
+ if (valueWei != null && valueWei > 0n) {
74
+ bodyForSign.value = valueWei.toString();
75
+ }
76
+ if (clientId) bodyForSign.clientId = clientId;
77
+ return { bodyForSign, messageToSign: JSON.stringify(bodyForSign) };
78
+ }
79
+ var coreChainCategoryModule = {
80
+ category: "evm",
81
+ finalizeMultisign
82
+ };
83
+
84
+ // src/core/registry.ts
85
+ var modules = [];
86
+ function registerProtocolModule(mod) {
87
+ const existing = modules.findIndex((m) => m.id === mod.id);
88
+ if (existing >= 0) {
89
+ modules[existing] = mod;
90
+ } else {
91
+ modules.push(mod);
92
+ }
93
+ }
94
+ function getProtocolModules() {
95
+ return modules;
96
+ }
97
+ function getProtocolModule(id) {
98
+ return modules.find((m) => m.id === id);
99
+ }
100
+ function getActionsByChainCategory(category) {
101
+ return modules.filter((m) => m.chainCategory === category).flatMap((m) => m.actions);
102
+ }
103
+
104
+ // src/core/nodeRead.ts
105
+ function nodeFetchWithReadAuth(url, init, auth) {
106
+ const method = (init?.method ?? "GET").toUpperCase();
107
+ const headers = new Headers(init?.headers);
108
+ if (auth.bearerOnGet && method === "GET" && auth.jwt && auth.jwt.trim()) {
109
+ headers.set("Authorization", `Bearer ${auth.jwt.trim()}`);
110
+ }
111
+ return fetch(url, { ...init, headers });
112
+ }
113
+
114
+ export { coreChainCategoryModule, finalizeMultisign, firstClientIdFromKeyGen, getActionsByChainCategory, getProtocolModule, getProtocolModules, keyListFromKeyGen, mergePurposeText, nodeFetchWithReadAuth, registerProtocolModule, requirePubKeyHex };
115
+ //# sourceMappingURL=index.js.map
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/keygen.ts","../../src/core/purpose.ts","../../src/core/envelope.ts","../../src/core/registry.ts","../../src/core/nodeRead.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { KeyGenSubset } from './types.js'\n\nexport type { KeyGenSubset }\n\n/** App-compatible alias used by existing multisign builders. */\nexport type KeyGenSubsetForPermit = KeyGenSubset\n\nexport function firstClientIdFromKeyGen(data: KeyGenSubset | null | undefined): string | null {\n const map = data?.ClientKeys\n if (!map || typeof map !== 'object') return null\n for (const v of Object.values(map)) {\n if (typeof v === 'string' && v.trim()) return v.trim()\n }\n return null\n}\n\nexport function requirePubKeyHex(keyGen: KeyGenSubset): string {\n const ph = (keyGen.pubkeyhex ?? '').trim()\n if (!ph) throw new Error('keyGen pubKey (pubkeyhex) is required')\n return ph\n}\n\nexport function keyListFromKeyGen(keyGen: KeyGenSubset): string[] {\n return keyGen.keylist ?? []\n}\n","/** Merge user purpose text with an optional batch / protocol suffix. */\nexport function mergePurposeText(purposeText: string, purposeSuffix?: string): string {\n const t = purposeText.trim()\n const suffix = (purposeSuffix ?? '').trim()\n if (!suffix) return t\n return t ? `${t}\\n\\n${suffix}` : suffix\n}\n","import type { ChainCategory, MultisignBuildResult } from './types.js'\nimport type { KeyGenSubset } from './keygen.js'\nimport { firstClientIdFromKeyGen } from './keygen.js'\nimport { mergePurposeText } from './purpose.js'\n\nexport interface MultisignLeg {\n msgHash: string\n msgRaw: string\n destinationAddress: string\n signatureText: string\n audit: Record<string, unknown>\n feeSnapshot: Record<string, unknown>\n proposalTxParams?: Record<string, unknown>\n /** Payable value wei string for first leg only when relevant */\n valueWei?: bigint\n}\n\nexport interface ChainCategoryBuildInput {\n keyGen: KeyGenSubset\n purposeText: string\n purposeSuffix?: string\n destinationChainID: string\n legs: MultisignLeg[]\n extraJSON?: Record<string, unknown>\n /** Top-level destination address (first leg destination if omitted) */\n destinationAddress?: string\n}\n\nexport interface ChainCategoryModule {\n category: ChainCategory\n finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult\n}\n\n/**\n * Assemble mpc-auth `bodyForSign` from category-built legs.\n * Supports single-tx and batch (messageHashes / messageRawBatch / proposalTxParams).\n */\nexport function finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult {\n const { keyGen, destinationChainID, legs } = input\n if (legs.length === 0) {\n throw new Error('finalizeMultisign requires at least one leg')\n }\n\n const ph = (keyGen.pubkeyhex ?? '').trim()\n if (!ph) throw new Error('keyGen pubKey (pubkeyhex) is required')\n\n const keyList = keyGen.keylist ?? []\n const clientId = firstClientIdFromKeyGen(keyGen)\n const first = legs[0]!\n\n const messageHashes = legs.map((l) => l.msgHash)\n const messageRawBatch = legs.map((l) => l.msgRaw)\n const batchMeta = legs.map((l) => ({\n destinationAddress: l.destinationAddress,\n signatureText: l.signatureText,\n ...l.audit,\n }))\n\n const proposalTxParams = legs\n .map((l) => l.proposalTxParams)\n .filter((p): p is Record<string, unknown> => p != null && typeof p === 'object')\n\n const extraPayload: Record<string, unknown> = {\n batchMeta,\n ...(input.extraJSON ?? {}),\n }\n const extraJSON = JSON.stringify(extraPayload)\n\n const bodyForSign: Record<string, unknown> = {\n keyList,\n pubKey: ph,\n msgHash: messageHashes[0],\n msgRaw: first.msgRaw,\n destinationChainID,\n destinationAddress: input.destinationAddress ?? first.destinationAddress,\n extraJSON,\n signatureText: first.signatureText,\n purpose: mergePurposeText(input.purposeText, input.purposeSuffix),\n ...first.feeSnapshot,\n }\n\n if (legs.length > 1) {\n bodyForSign.messageHashes = messageHashes\n bodyForSign.messageRawBatch = messageRawBatch\n }\n\n if (proposalTxParams.length > 0) {\n bodyForSign.proposalTxParams = proposalTxParams\n }\n\n const valueWei = first.valueWei\n if (valueWei != null && valueWei > 0n) {\n bodyForSign.value = valueWei.toString()\n }\n\n if (clientId) bodyForSign.clientId = clientId\n\n return { bodyForSign, messageToSign: JSON.stringify(bodyForSign) }\n}\n\nexport const coreChainCategoryModule: ChainCategoryModule = {\n category: 'evm',\n finalizeMultisign,\n}\n","import type { ProtocolModule } from './types.js'\n\nconst modules: ProtocolModule[] = []\n\nexport function registerProtocolModule(mod: ProtocolModule): void {\n const existing = modules.findIndex((m) => m.id === mod.id)\n if (existing >= 0) {\n modules[existing] = mod\n } else {\n modules.push(mod)\n }\n}\n\nexport function getProtocolModules(): readonly ProtocolModule[] {\n return modules\n}\n\nexport function getProtocolModule(id: string): ProtocolModule | undefined {\n return modules.find((m) => m.id === id)\n}\n\nexport function getActionsByChainCategory(category: string): ProtocolModule['actions'] {\n return modules.filter((m) => m.chainCategory === category).flatMap((m) => m.actions)\n}\n","/** GET requests to mpc-auth management node with optional Bearer JWT (Browser HTTPS). */\nexport type NodeReadAuth = {\n bearerOnGet: boolean\n jwt: string | null\n}\n\nexport function nodeFetchWithReadAuth(\n url: string,\n init: RequestInit | undefined,\n auth: NodeReadAuth,\n): Promise<Response> {\n const method = (init?.method ?? 'GET').toUpperCase()\n const headers = new Headers(init?.headers)\n if (auth.bearerOnGet && method === 'GET' && auth.jwt && auth.jwt.trim()) {\n headers.set('Authorization', `Bearer ${auth.jwt.trim()}`)\n }\n return fetch(url, { ...init, headers })\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import { K as KeyGenSubset, C as ChainCategory, M as MultisignBuildResult } from './types-Ce2qNHai.js';
2
+
3
+ interface MultisignLeg {
4
+ msgHash: string;
5
+ msgRaw: string;
6
+ destinationAddress: string;
7
+ signatureText: string;
8
+ audit: Record<string, unknown>;
9
+ feeSnapshot: Record<string, unknown>;
10
+ proposalTxParams?: Record<string, unknown>;
11
+ /** Payable value wei string for first leg only when relevant */
12
+ valueWei?: bigint;
13
+ }
14
+ interface ChainCategoryBuildInput {
15
+ keyGen: KeyGenSubset;
16
+ purposeText: string;
17
+ purposeSuffix?: string;
18
+ destinationChainID: string;
19
+ legs: MultisignLeg[];
20
+ extraJSON?: Record<string, unknown>;
21
+ /** Top-level destination address (first leg destination if omitted) */
22
+ destinationAddress?: string;
23
+ }
24
+ interface ChainCategoryModule {
25
+ category: ChainCategory;
26
+ finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult;
27
+ }
28
+ /**
29
+ * Assemble mpc-auth `bodyForSign` from category-built legs.
30
+ * Supports single-tx and batch (messageHashes / messageRawBatch / proposalTxParams).
31
+ */
32
+ declare function finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult;
33
+ declare const coreChainCategoryModule: ChainCategoryModule;
34
+
35
+ export { type ChainCategoryBuildInput as C, type MultisignLeg as M, type ChainCategoryModule as a, coreChainCategoryModule as c, finalizeMultisign as f };
@@ -0,0 +1,35 @@
1
+ import { K as KeyGenSubset, C as ChainCategory, M as MultisignBuildResult } from './types-Ce2qNHai.cjs';
2
+
3
+ interface MultisignLeg {
4
+ msgHash: string;
5
+ msgRaw: string;
6
+ destinationAddress: string;
7
+ signatureText: string;
8
+ audit: Record<string, unknown>;
9
+ feeSnapshot: Record<string, unknown>;
10
+ proposalTxParams?: Record<string, unknown>;
11
+ /** Payable value wei string for first leg only when relevant */
12
+ valueWei?: bigint;
13
+ }
14
+ interface ChainCategoryBuildInput {
15
+ keyGen: KeyGenSubset;
16
+ purposeText: string;
17
+ purposeSuffix?: string;
18
+ destinationChainID: string;
19
+ legs: MultisignLeg[];
20
+ extraJSON?: Record<string, unknown>;
21
+ /** Top-level destination address (first leg destination if omitted) */
22
+ destinationAddress?: string;
23
+ }
24
+ interface ChainCategoryModule {
25
+ category: ChainCategory;
26
+ finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult;
27
+ }
28
+ /**
29
+ * Assemble mpc-auth `bodyForSign` from category-built legs.
30
+ * Supports single-tx and batch (messageHashes / messageRawBatch / proposalTxParams).
31
+ */
32
+ declare function finalizeMultisign(input: ChainCategoryBuildInput): MultisignBuildResult;
33
+ declare const coreChainCategoryModule: ChainCategoryModule;
34
+
35
+ export { type ChainCategoryBuildInput as C, type MultisignLeg as M, type ChainCategoryModule as a, coreChainCategoryModule as c, finalizeMultisign as f };