@manifest-network/manifest-mcp-core 0.1.0

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 (237) hide show
  1. package/dist/__test-utils__/callTool.d.ts +29 -0
  2. package/dist/__test-utils__/callTool.d.ts.map +1 -0
  3. package/dist/__test-utils__/callTool.js +45 -0
  4. package/dist/__test-utils__/callTool.js.map +1 -0
  5. package/dist/__test-utils__/mocks.d.ts +125 -0
  6. package/dist/__test-utils__/mocks.d.ts.map +1 -0
  7. package/dist/__test-utils__/mocks.js +146 -0
  8. package/dist/__test-utils__/mocks.js.map +1 -0
  9. package/dist/client.d.ts +67 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +209 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/config.d.ts +30 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +127 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/cosmos.d.ts +24 -0
  18. package/dist/cosmos.d.ts.map +1 -0
  19. package/dist/cosmos.js +85 -0
  20. package/dist/cosmos.js.map +1 -0
  21. package/dist/index.d.ts +19 -0
  22. package/dist/index.js +20 -0
  23. package/dist/lcd-adapter.d.ts +15 -0
  24. package/dist/lcd-adapter.d.ts.map +1 -0
  25. package/dist/lcd-adapter.js +98 -0
  26. package/dist/lcd-adapter.js.map +1 -0
  27. package/dist/logger.d.ts +20 -0
  28. package/dist/logger.d.ts.map +1 -0
  29. package/dist/logger.js +43 -0
  30. package/dist/logger.js.map +1 -0
  31. package/dist/modules.d.ts +63 -0
  32. package/dist/modules.d.ts.map +1 -0
  33. package/dist/modules.js +759 -0
  34. package/dist/modules.js.map +1 -0
  35. package/dist/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +78 -0
  36. package/dist/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js.map +1 -0
  37. package/dist/node_modules/@vitest/expect/dist/index.d.ts +802 -0
  38. package/dist/node_modules/@vitest/expect/dist/index.d.ts.map +1 -0
  39. package/dist/node_modules/@vitest/expect/dist/index.js +1457 -0
  40. package/dist/node_modules/@vitest/expect/dist/index.js.map +1 -0
  41. package/dist/node_modules/@vitest/pretty-format/dist/index.d.ts +95 -0
  42. package/dist/node_modules/@vitest/pretty-format/dist/index.d.ts.map +1 -0
  43. package/dist/node_modules/@vitest/pretty-format/dist/index.js +877 -0
  44. package/dist/node_modules/@vitest/pretty-format/dist/index.js.map +1 -0
  45. package/dist/node_modules/@vitest/runner/dist/chunk-tasks.js +91 -0
  46. package/dist/node_modules/@vitest/runner/dist/chunk-tasks.js.map +1 -0
  47. package/dist/node_modules/@vitest/runner/dist/index.js +1381 -0
  48. package/dist/node_modules/@vitest/runner/dist/index.js.map +1 -0
  49. package/dist/node_modules/@vitest/runner/dist/tasks.d-D2GKpdwQ.d.ts +540 -0
  50. package/dist/node_modules/@vitest/runner/dist/tasks.d-D2GKpdwQ.d.ts.map +1 -0
  51. package/dist/node_modules/@vitest/runner/dist/utils.js +1 -0
  52. package/dist/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts +16 -0
  53. package/dist/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts.map +1 -0
  54. package/dist/node_modules/@vitest/snapshot/dist/index.d.ts +89 -0
  55. package/dist/node_modules/@vitest/snapshot/dist/index.d.ts.map +1 -0
  56. package/dist/node_modules/@vitest/snapshot/dist/index.js +649 -0
  57. package/dist/node_modules/@vitest/snapshot/dist/index.js.map +1 -0
  58. package/dist/node_modules/@vitest/snapshot/dist/rawSnapshot.d-U2kJUxDr.d.ts +40 -0
  59. package/dist/node_modules/@vitest/snapshot/dist/rawSnapshot.d-U2kJUxDr.d.ts.map +1 -0
  60. package/dist/node_modules/@vitest/spy/dist/index.d.ts +343 -0
  61. package/dist/node_modules/@vitest/spy/dist/index.d.ts.map +1 -0
  62. package/dist/node_modules/@vitest/spy/dist/index.js +386 -0
  63. package/dist/node_modules/@vitest/spy/dist/index.js.map +1 -0
  64. package/dist/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +82 -0
  65. package/dist/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js.map +1 -0
  66. package/dist/node_modules/@vitest/utils/dist/diff.d.ts +14 -0
  67. package/dist/node_modules/@vitest/utils/dist/diff.d.ts.map +1 -0
  68. package/dist/node_modules/@vitest/utils/dist/diff.js +1297 -0
  69. package/dist/node_modules/@vitest/utils/dist/diff.js.map +1 -0
  70. package/dist/node_modules/@vitest/utils/dist/display.d.ts +15 -0
  71. package/dist/node_modules/@vitest/utils/dist/display.d.ts.map +1 -0
  72. package/dist/node_modules/@vitest/utils/dist/display.js +558 -0
  73. package/dist/node_modules/@vitest/utils/dist/display.js.map +1 -0
  74. package/dist/node_modules/@vitest/utils/dist/error.js +30 -0
  75. package/dist/node_modules/@vitest/utils/dist/error.js.map +1 -0
  76. package/dist/node_modules/@vitest/utils/dist/helpers.js +181 -0
  77. package/dist/node_modules/@vitest/utils/dist/helpers.js.map +1 -0
  78. package/dist/node_modules/@vitest/utils/dist/offset.js +27 -0
  79. package/dist/node_modules/@vitest/utils/dist/offset.js.map +1 -0
  80. package/dist/node_modules/@vitest/utils/dist/serialize.js +77 -0
  81. package/dist/node_modules/@vitest/utils/dist/serialize.js.map +1 -0
  82. package/dist/node_modules/@vitest/utils/dist/source-map.js +367 -0
  83. package/dist/node_modules/@vitest/utils/dist/source-map.js.map +1 -0
  84. package/dist/node_modules/@vitest/utils/dist/timers.js +37 -0
  85. package/dist/node_modules/@vitest/utils/dist/timers.js.map +1 -0
  86. package/dist/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts +38 -0
  87. package/dist/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts.map +1 -0
  88. package/dist/node_modules/@vitest/utils/dist/types.d.ts +25 -0
  89. package/dist/node_modules/@vitest/utils/dist/types.d.ts.map +1 -0
  90. package/dist/node_modules/chai/index.js +2875 -0
  91. package/dist/node_modules/chai/index.js.map +1 -0
  92. package/dist/node_modules/magic-string/dist/magic-string.es.js +939 -0
  93. package/dist/node_modules/magic-string/dist/magic-string.es.js.map +1 -0
  94. package/dist/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +85 -0
  95. package/dist/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js.map +1 -0
  96. package/dist/node_modules/tinybench/dist/index.d.ts +91 -0
  97. package/dist/node_modules/tinybench/dist/index.d.ts.map +1 -0
  98. package/dist/node_modules/tinyrainbow/dist/index.d.ts +9 -0
  99. package/dist/node_modules/tinyrainbow/dist/index.d.ts.map +1 -0
  100. package/dist/node_modules/tinyrainbow/dist/index.js +86 -0
  101. package/dist/node_modules/tinyrainbow/dist/index.js.map +1 -0
  102. package/dist/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -0
  103. package/dist/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js.map +1 -0
  104. package/dist/node_modules/vitest/dist/chunks/benchmark.D0SlKNbZ.js +41 -0
  105. package/dist/node_modules/vitest/dist/chunks/benchmark.D0SlKNbZ.js.map +1 -0
  106. package/dist/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts +12 -0
  107. package/dist/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts.map +1 -0
  108. package/dist/node_modules/vitest/dist/chunks/global.d.x-ILCfAE.d.ts +100 -0
  109. package/dist/node_modules/vitest/dist/chunks/global.d.x-ILCfAE.d.ts.map +1 -0
  110. package/dist/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +57 -0
  111. package/dist/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js.map +1 -0
  112. package/dist/node_modules/vitest/dist/chunks/rpc.d.BFMWpdph.d.ts +13 -0
  113. package/dist/node_modules/vitest/dist/chunks/rpc.d.BFMWpdph.d.ts.map +1 -0
  114. package/dist/node_modules/vitest/dist/chunks/test.CTcmp4Su.js +2791 -0
  115. package/dist/node_modules/vitest/dist/chunks/test.CTcmp4Su.js.map +1 -0
  116. package/dist/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +44 -0
  117. package/dist/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js.map +1 -0
  118. package/dist/node_modules/vitest/dist/index.d.ts +9 -0
  119. package/dist/queries/auth.d.ts +15 -0
  120. package/dist/queries/auth.d.ts.map +1 -0
  121. package/dist/queries/auth.js +58 -0
  122. package/dist/queries/auth.js.map +1 -0
  123. package/dist/queries/bank.d.ts +15 -0
  124. package/dist/queries/bank.d.ts.map +1 -0
  125. package/dist/queries/bank.js +93 -0
  126. package/dist/queries/bank.js.map +1 -0
  127. package/dist/queries/billing.d.ts +15 -0
  128. package/dist/queries/billing.d.ts.map +1 -0
  129. package/dist/queries/billing.js +114 -0
  130. package/dist/queries/billing.js.map +1 -0
  131. package/dist/queries/distribution.d.ts +15 -0
  132. package/dist/queries/distribution.d.ts.map +1 -0
  133. package/dist/queries/distribution.js +73 -0
  134. package/dist/queries/distribution.js.map +1 -0
  135. package/dist/queries/gov.d.ts +15 -0
  136. package/dist/queries/gov.d.ts.map +1 -0
  137. package/dist/queries/gov.js +98 -0
  138. package/dist/queries/gov.js.map +1 -0
  139. package/dist/queries/group.d.ts +15 -0
  140. package/dist/queries/group.d.ts.map +1 -0
  141. package/dist/queries/group.js +159 -0
  142. package/dist/queries/group.js.map +1 -0
  143. package/dist/queries/index.d.ts +10 -0
  144. package/dist/queries/index.js +10 -0
  145. package/dist/queries/sku.d.ts +16 -0
  146. package/dist/queries/sku.d.ts.map +1 -0
  147. package/dist/queries/sku.js +85 -0
  148. package/dist/queries/sku.js.map +1 -0
  149. package/dist/queries/staking.d.ts +15 -0
  150. package/dist/queries/staking.d.ts.map +1 -0
  151. package/dist/queries/staking.js +127 -0
  152. package/dist/queries/staking.js.map +1 -0
  153. package/dist/queries/utils.d.ts +54 -0
  154. package/dist/queries/utils.d.ts.map +1 -0
  155. package/dist/queries/utils.js +74 -0
  156. package/dist/queries/utils.js.map +1 -0
  157. package/dist/retry.d.ts +48 -0
  158. package/dist/retry.d.ts.map +1 -0
  159. package/dist/retry.js +106 -0
  160. package/dist/retry.js.map +1 -0
  161. package/dist/server-utils.d.ts +61 -0
  162. package/dist/server-utils.d.ts.map +1 -0
  163. package/dist/server-utils.js +156 -0
  164. package/dist/server-utils.js.map +1 -0
  165. package/dist/tools/fundCredits.d.ts +8 -0
  166. package/dist/tools/fundCredits.d.ts.map +1 -0
  167. package/dist/tools/fundCredits.js +9 -0
  168. package/dist/tools/fundCredits.js.map +1 -0
  169. package/dist/tools/getBalance.d.ts +26 -0
  170. package/dist/tools/getBalance.d.ts.map +1 -0
  171. package/dist/tools/getBalance.js +59 -0
  172. package/dist/tools/getBalance.js.map +1 -0
  173. package/dist/tools/stopApp.d.ts +13 -0
  174. package/dist/tools/stopApp.d.ts.map +1 -0
  175. package/dist/tools/stopApp.js +15 -0
  176. package/dist/tools/stopApp.js.map +1 -0
  177. package/dist/transactions/bank.d.ts +11 -0
  178. package/dist/transactions/bank.d.ts.map +1 -0
  179. package/dist/transactions/bank.js +75 -0
  180. package/dist/transactions/bank.js.map +1 -0
  181. package/dist/transactions/billing.d.ts +11 -0
  182. package/dist/transactions/billing.d.ts.map +1 -0
  183. package/dist/transactions/billing.js +189 -0
  184. package/dist/transactions/billing.js.map +1 -0
  185. package/dist/transactions/distribution.d.ts +11 -0
  186. package/dist/transactions/distribution.d.ts.map +1 -0
  187. package/dist/transactions/distribution.js +60 -0
  188. package/dist/transactions/distribution.js.map +1 -0
  189. package/dist/transactions/gov.d.ts +11 -0
  190. package/dist/transactions/gov.d.ts.map +1 -0
  191. package/dist/transactions/gov.js +108 -0
  192. package/dist/transactions/gov.js.map +1 -0
  193. package/dist/transactions/group.d.ts +11 -0
  194. package/dist/transactions/group.d.ts.map +1 -0
  195. package/dist/transactions/group.js +347 -0
  196. package/dist/transactions/group.js.map +1 -0
  197. package/dist/transactions/index.d.ts +10 -0
  198. package/dist/transactions/index.js +10 -0
  199. package/dist/transactions/manifest.d.ts +11 -0
  200. package/dist/transactions/manifest.d.ts.map +1 -0
  201. package/dist/transactions/manifest.js +59 -0
  202. package/dist/transactions/manifest.js.map +1 -0
  203. package/dist/transactions/sku.d.ts +11 -0
  204. package/dist/transactions/sku.d.ts.map +1 -0
  205. package/dist/transactions/sku.js +191 -0
  206. package/dist/transactions/sku.js.map +1 -0
  207. package/dist/transactions/staking.d.ts +11 -0
  208. package/dist/transactions/staking.d.ts.map +1 -0
  209. package/dist/transactions/staking.js +79 -0
  210. package/dist/transactions/staking.js.map +1 -0
  211. package/dist/transactions/utils.d.ts +161 -0
  212. package/dist/transactions/utils.d.ts.map +1 -0
  213. package/dist/transactions/utils.js +272 -0
  214. package/dist/transactions/utils.js.map +1 -0
  215. package/dist/types.d.ts +390 -0
  216. package/dist/types.d.ts.map +1 -0
  217. package/dist/types.js +45 -0
  218. package/dist/types.js.map +1 -0
  219. package/dist/validation.d.ts +30 -0
  220. package/dist/validation.d.ts.map +1 -0
  221. package/dist/validation.js +53 -0
  222. package/dist/validation.js.map +1 -0
  223. package/dist/version.d.ts +5 -0
  224. package/dist/version.d.ts.map +1 -0
  225. package/dist/version.js +6 -0
  226. package/dist/version.js.map +1 -0
  227. package/dist/wallet/index.d.ts +4 -0
  228. package/dist/wallet/index.js +3 -0
  229. package/dist/wallet/mnemonic.d.ts +47 -0
  230. package/dist/wallet/mnemonic.d.ts.map +1 -0
  231. package/dist/wallet/mnemonic.js +97 -0
  232. package/dist/wallet/mnemonic.js.map +1 -0
  233. package/dist/wallet/sign-arbitrary.d.ts +12 -0
  234. package/dist/wallet/sign-arbitrary.d.ts.map +1 -0
  235. package/dist/wallet/sign-arbitrary.js +36 -0
  236. package/dist/wallet/sign-arbitrary.js.map +1 -0
  237. package/package.json +72 -0
@@ -0,0 +1,347 @@
1
+ import { ManifestMCPError, ManifestMCPErrorCode } from "../types.js";
2
+ import { buildTxResult, extractBooleanFlag, extractFlag, filterConsumedArgs, parseBigInt, parseColonPair, parseVoteOption, requireArgs, validateAddress, validateArgsLength } from "./utils.js";
3
+ import { throwUnsupportedSubcommand } from "../modules.js";
4
+ import { cosmos } from "@manifest-network/manifestjs";
5
+ import { fromBase64 } from "@cosmjs/encoding";
6
+ //#region src/transactions/group.ts
7
+ const { MsgCreateGroup, MsgUpdateGroupMembers, MsgUpdateGroupAdmin, MsgUpdateGroupMetadata, MsgCreateGroupPolicy, MsgUpdateGroupPolicyAdmin, MsgCreateGroupWithPolicy, MsgUpdateGroupPolicyDecisionPolicy, MsgUpdateGroupPolicyMetadata, MsgSubmitProposal, MsgWithdrawProposal, MsgVote, MsgExec, MsgLeaveGroup, VoteOption, Exec } = cosmos.group.v1;
8
+ /**
9
+ * Parse an exec mode string. Accepts 'try' or '1' for EXEC_TRY.
10
+ * Returns EXEC_UNSPECIFIED by default.
11
+ */
12
+ function parseExec(value) {
13
+ if (!value) return Exec.EXEC_UNSPECIFIED;
14
+ const lower = value.toLowerCase();
15
+ if (lower === "try" || lower === "1") return Exec.EXEC_TRY;
16
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid exec mode: "${value}". Expected: "try" for immediate execution.`);
17
+ }
18
+ /**
19
+ * Build a decision policy (ThresholdDecisionPolicy or PercentageDecisionPolicy)
20
+ * wrapped for use with fromPartial().
21
+ */
22
+ function buildDecisionPolicy(policyType, value, votingPeriodSecs, minExecPeriodSecs) {
23
+ const votingSecs = parseBigInt(votingPeriodSecs, "voting-period-secs");
24
+ const minExecSecs = parseBigInt(minExecPeriodSecs, "min-execution-period-secs");
25
+ const windows = {
26
+ votingPeriod: {
27
+ seconds: votingSecs,
28
+ nanos: 0
29
+ },
30
+ minExecutionPeriod: {
31
+ seconds: minExecSecs,
32
+ nanos: 0
33
+ }
34
+ };
35
+ switch (policyType.toLowerCase()) {
36
+ case "threshold": return {
37
+ $typeUrl: "/cosmos.group.v1.ThresholdDecisionPolicy",
38
+ threshold: value,
39
+ windows
40
+ };
41
+ case "percentage": return {
42
+ $typeUrl: "/cosmos.group.v1.PercentageDecisionPolicy",
43
+ percentage: value,
44
+ windows
45
+ };
46
+ default: throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid policy type: "${policyType}". Expected "threshold" or "percentage".`);
47
+ }
48
+ }
49
+ /**
50
+ * Parse address:weight pairs into MemberRequest array.
51
+ * Each pair is validated for proper address format and non-negative weight.
52
+ */
53
+ function parseMemberRequests(pairs) {
54
+ return pairs.map((pair) => {
55
+ const [address, weight] = parseColonPair(pair, "address", "weight", "member");
56
+ validateAddress(address, "member address");
57
+ if (!/^\d+(\.\d+)?$/.test(weight)) throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid member weight: "${weight}" for address "${address}". Expected a non-negative decimal string (e.g., "1", "0.5").`);
58
+ return {
59
+ address,
60
+ weight,
61
+ metadata: ""
62
+ };
63
+ });
64
+ }
65
+ /**
66
+ * Parse JSON message strings into Any[] for MsgSubmitProposal.
67
+ * Each JSON object must have a typeUrl and a base64-encoded value field.
68
+ * The value must contain protobuf-encoded bytes (not JSON).
69
+ */
70
+ function parseProposalMessages(jsonArgs) {
71
+ return jsonArgs.map((jsonStr, index) => {
72
+ let parsed;
73
+ try {
74
+ parsed = JSON.parse(jsonStr);
75
+ } catch {
76
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid JSON in message at index ${index}: ${jsonStr}`);
77
+ }
78
+ const { typeUrl, value } = parsed;
79
+ if (typeof typeUrl !== "string" || !typeUrl) throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Message at index ${index} missing required "typeUrl" field.`);
80
+ if (typeof value !== "string" || !value) throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Message at index ${index} missing required "value" field. Provide protobuf-encoded bytes as a base64 string.`);
81
+ try {
82
+ return {
83
+ typeUrl,
84
+ value: fromBase64(value)
85
+ };
86
+ } catch {
87
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Message at index ${index}: invalid base64 value.`);
88
+ }
89
+ });
90
+ }
91
+ /**
92
+ * Route group transaction to appropriate handler
93
+ */
94
+ async function routeGroupTransaction(client, senderAddress, subcommand, args, waitForConfirmation) {
95
+ validateArgsLength(args, "group transaction");
96
+ switch (subcommand) {
97
+ case "create-group": {
98
+ requireArgs(args, 2, ["metadata", "address:weight"], "group create-group");
99
+ const [metadata, ...memberPairs] = args;
100
+ const members = parseMemberRequests(memberPairs);
101
+ const msg = {
102
+ typeUrl: "/cosmos.group.v1.MsgCreateGroup",
103
+ value: MsgCreateGroup.fromPartial({
104
+ admin: senderAddress,
105
+ members,
106
+ metadata
107
+ })
108
+ };
109
+ return buildTxResult("group", "create-group", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
110
+ }
111
+ case "update-group-members": {
112
+ requireArgs(args, 2, ["group-id", "address:weight"], "group update-group-members");
113
+ const [groupIdStr, ...memberPairs] = args;
114
+ const groupId = parseBigInt(groupIdStr, "group-id");
115
+ const memberUpdates = parseMemberRequests(memberPairs);
116
+ const msg = {
117
+ typeUrl: "/cosmos.group.v1.MsgUpdateGroupMembers",
118
+ value: MsgUpdateGroupMembers.fromPartial({
119
+ admin: senderAddress,
120
+ groupId,
121
+ memberUpdates
122
+ })
123
+ };
124
+ return buildTxResult("group", "update-group-members", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
125
+ }
126
+ case "update-group-admin": {
127
+ requireArgs(args, 2, ["group-id", "new-admin-address"], "group update-group-admin");
128
+ const [groupIdStr, newAdmin] = args;
129
+ const groupId = parseBigInt(groupIdStr, "group-id");
130
+ validateAddress(newAdmin, "new admin address");
131
+ const msg = {
132
+ typeUrl: "/cosmos.group.v1.MsgUpdateGroupAdmin",
133
+ value: MsgUpdateGroupAdmin.fromPartial({
134
+ admin: senderAddress,
135
+ groupId,
136
+ newAdmin
137
+ })
138
+ };
139
+ return buildTxResult("group", "update-group-admin", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
140
+ }
141
+ case "update-group-metadata": {
142
+ requireArgs(args, 2, ["group-id", "metadata"], "group update-group-metadata");
143
+ const [groupIdStr, metadata] = args;
144
+ const groupId = parseBigInt(groupIdStr, "group-id");
145
+ const msg = {
146
+ typeUrl: "/cosmos.group.v1.MsgUpdateGroupMetadata",
147
+ value: MsgUpdateGroupMetadata.fromPartial({
148
+ admin: senderAddress,
149
+ groupId,
150
+ metadata
151
+ })
152
+ };
153
+ return buildTxResult("group", "update-group-metadata", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
154
+ }
155
+ case "create-group-policy": {
156
+ requireArgs(args, 6, [
157
+ "group-id",
158
+ "metadata",
159
+ "policy-type",
160
+ "threshold-or-pct",
161
+ "voting-period-secs",
162
+ "min-execution-period-secs"
163
+ ], "group create-group-policy");
164
+ const [groupIdStr, metadata, policyType, value, votingPeriodSecs, minExecPeriodSecs] = args;
165
+ const groupId = parseBigInt(groupIdStr, "group-id");
166
+ const decisionPolicy = buildDecisionPolicy(policyType, value, votingPeriodSecs, minExecPeriodSecs);
167
+ const msg = {
168
+ typeUrl: "/cosmos.group.v1.MsgCreateGroupPolicy",
169
+ value: MsgCreateGroupPolicy.fromPartial({
170
+ admin: senderAddress,
171
+ groupId,
172
+ metadata,
173
+ decisionPolicy
174
+ })
175
+ };
176
+ return buildTxResult("group", "create-group-policy", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
177
+ }
178
+ case "update-group-policy-admin": {
179
+ requireArgs(args, 2, ["group-policy-address", "new-admin-address"], "group update-group-policy-admin");
180
+ const [groupPolicyAddress, newAdmin] = args;
181
+ validateAddress(groupPolicyAddress, "group policy address");
182
+ validateAddress(newAdmin, "new admin address");
183
+ const msg = {
184
+ typeUrl: "/cosmos.group.v1.MsgUpdateGroupPolicyAdmin",
185
+ value: MsgUpdateGroupPolicyAdmin.fromPartial({
186
+ admin: senderAddress,
187
+ groupPolicyAddress,
188
+ newAdmin
189
+ })
190
+ };
191
+ return buildTxResult("group", "update-group-policy-admin", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
192
+ }
193
+ case "create-group-with-policy": {
194
+ const { value: groupPolicyAsAdmin, remainingArgs: afterBool } = extractBooleanFlag(args, "--group-policy-as-admin");
195
+ requireArgs(afterBool, 7, [
196
+ "group-metadata",
197
+ "group-policy-metadata",
198
+ "policy-type",
199
+ "threshold-or-pct",
200
+ "voting-period-secs",
201
+ "min-execution-period-secs",
202
+ "address:weight"
203
+ ], "group create-group-with-policy");
204
+ const [groupMetadata, groupPolicyMetadata, policyType, value, votingPeriodSecs, minExecPeriodSecs, ...memberPairs] = afterBool;
205
+ const members = parseMemberRequests(memberPairs);
206
+ const decisionPolicy = buildDecisionPolicy(policyType, value, votingPeriodSecs, minExecPeriodSecs);
207
+ const msg = {
208
+ typeUrl: "/cosmos.group.v1.MsgCreateGroupWithPolicy",
209
+ value: MsgCreateGroupWithPolicy.fromPartial({
210
+ admin: senderAddress,
211
+ members,
212
+ groupMetadata,
213
+ groupPolicyMetadata,
214
+ groupPolicyAsAdmin,
215
+ decisionPolicy
216
+ })
217
+ };
218
+ return buildTxResult("group", "create-group-with-policy", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
219
+ }
220
+ case "update-group-policy-decision-policy": {
221
+ requireArgs(args, 5, [
222
+ "group-policy-address",
223
+ "policy-type",
224
+ "threshold-or-pct",
225
+ "voting-period-secs",
226
+ "min-execution-period-secs"
227
+ ], "group update-group-policy-decision-policy");
228
+ const [groupPolicyAddress, policyType, value, votingPeriodSecs, minExecPeriodSecs] = args;
229
+ validateAddress(groupPolicyAddress, "group policy address");
230
+ const decisionPolicy = buildDecisionPolicy(policyType, value, votingPeriodSecs, minExecPeriodSecs);
231
+ const msg = {
232
+ typeUrl: "/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy",
233
+ value: MsgUpdateGroupPolicyDecisionPolicy.fromPartial({
234
+ admin: senderAddress,
235
+ groupPolicyAddress,
236
+ decisionPolicy
237
+ })
238
+ };
239
+ return buildTxResult("group", "update-group-policy-decision-policy", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
240
+ }
241
+ case "update-group-policy-metadata": {
242
+ requireArgs(args, 2, ["group-policy-address", "metadata"], "group update-group-policy-metadata");
243
+ const [groupPolicyAddress, metadata] = args;
244
+ validateAddress(groupPolicyAddress, "group policy address");
245
+ const msg = {
246
+ typeUrl: "/cosmos.group.v1.MsgUpdateGroupPolicyMetadata",
247
+ value: MsgUpdateGroupPolicyMetadata.fromPartial({
248
+ admin: senderAddress,
249
+ groupPolicyAddress,
250
+ metadata
251
+ })
252
+ };
253
+ return buildTxResult("group", "update-group-policy-metadata", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
254
+ }
255
+ case "submit-proposal": {
256
+ const execFlag = extractFlag(args, "--exec", "group submit-proposal");
257
+ const metadataFlag = extractFlag(args, "--metadata", "group submit-proposal");
258
+ const positionalArgs = filterConsumedArgs(args, [...execFlag.consumedIndices, ...metadataFlag.consumedIndices]);
259
+ requireArgs(positionalArgs, 3, [
260
+ "group-policy-address",
261
+ "title",
262
+ "summary"
263
+ ], "group submit-proposal");
264
+ const [groupPolicyAddress, title, summary, ...messageJsonArgs] = positionalArgs;
265
+ validateAddress(groupPolicyAddress, "group policy address");
266
+ const exec = parseExec(execFlag.value);
267
+ const metadata = metadataFlag.value ?? "";
268
+ const messages = messageJsonArgs.length > 0 ? parseProposalMessages(messageJsonArgs) : [];
269
+ const msg = {
270
+ typeUrl: "/cosmos.group.v1.MsgSubmitProposal",
271
+ value: MsgSubmitProposal.fromPartial({
272
+ groupPolicyAddress,
273
+ proposers: [senderAddress],
274
+ metadata,
275
+ messages,
276
+ exec,
277
+ title,
278
+ summary
279
+ })
280
+ };
281
+ return buildTxResult("group", "submit-proposal", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
282
+ }
283
+ case "withdraw-proposal": {
284
+ requireArgs(args, 1, ["proposal-id"], "group withdraw-proposal");
285
+ const proposalId = parseBigInt(args[0], "proposal-id");
286
+ const msg = {
287
+ typeUrl: "/cosmos.group.v1.MsgWithdrawProposal",
288
+ value: MsgWithdrawProposal.fromPartial({
289
+ proposalId,
290
+ address: senderAddress
291
+ })
292
+ };
293
+ return buildTxResult("group", "withdraw-proposal", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
294
+ }
295
+ case "vote": {
296
+ const execFlag = extractFlag(args, "--exec", "group vote");
297
+ const metadataFlag = extractFlag(args, "--metadata", "group vote");
298
+ const positionalArgs = filterConsumedArgs(args, [...execFlag.consumedIndices, ...metadataFlag.consumedIndices]);
299
+ requireArgs(positionalArgs, 2, ["proposal-id", "option"], "group vote");
300
+ const [proposalIdStr, optionStr] = positionalArgs;
301
+ const proposalId = parseBigInt(proposalIdStr, "proposal-id");
302
+ const option = parseVoteOption(optionStr, VoteOption);
303
+ const exec = parseExec(execFlag.value);
304
+ const metadata = metadataFlag.value ?? "";
305
+ const msg = {
306
+ typeUrl: "/cosmos.group.v1.MsgVote",
307
+ value: MsgVote.fromPartial({
308
+ proposalId,
309
+ voter: senderAddress,
310
+ option,
311
+ metadata,
312
+ exec
313
+ })
314
+ };
315
+ return buildTxResult("group", "vote", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
316
+ }
317
+ case "exec": {
318
+ requireArgs(args, 1, ["proposal-id"], "group exec");
319
+ const proposalId = parseBigInt(args[0], "proposal-id");
320
+ const msg = {
321
+ typeUrl: "/cosmos.group.v1.MsgExec",
322
+ value: MsgExec.fromPartial({
323
+ proposalId,
324
+ executor: senderAddress
325
+ })
326
+ };
327
+ return buildTxResult("group", "exec", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
328
+ }
329
+ case "leave-group": {
330
+ requireArgs(args, 1, ["group-id"], "group leave-group");
331
+ const groupId = parseBigInt(args[0], "group-id");
332
+ const msg = {
333
+ typeUrl: "/cosmos.group.v1.MsgLeaveGroup",
334
+ value: MsgLeaveGroup.fromPartial({
335
+ address: senderAddress,
336
+ groupId
337
+ })
338
+ };
339
+ return buildTxResult("group", "leave-group", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
340
+ }
341
+ default: throwUnsupportedSubcommand("tx", "group", subcommand);
342
+ }
343
+ }
344
+ //#endregion
345
+ export { routeGroupTransaction };
346
+
347
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","names":[],"sources":["../../src/transactions/group.ts"],"sourcesContent":["import { fromBase64 } from '@cosmjs/encoding';\nimport type { SigningStargateClient } from '@cosmjs/stargate';\nimport { cosmos } from '@manifest-network/manifestjs';\nimport { throwUnsupportedSubcommand } from '../modules.js';\nimport {\n type CosmosTxResult,\n ManifestMCPError,\n ManifestMCPErrorCode,\n} from '../types.js';\nimport {\n buildTxResult,\n extractBooleanFlag,\n extractFlag,\n filterConsumedArgs,\n parseBigInt,\n parseColonPair,\n parseVoteOption,\n requireArgs,\n validateAddress,\n validateArgsLength,\n} from './utils.js';\n\nconst {\n MsgCreateGroup,\n MsgUpdateGroupMembers,\n MsgUpdateGroupAdmin,\n MsgUpdateGroupMetadata,\n MsgCreateGroupPolicy,\n MsgUpdateGroupPolicyAdmin,\n MsgCreateGroupWithPolicy,\n MsgUpdateGroupPolicyDecisionPolicy,\n MsgUpdateGroupPolicyMetadata,\n MsgSubmitProposal,\n MsgWithdrawProposal,\n MsgVote,\n MsgExec,\n MsgLeaveGroup,\n VoteOption,\n Exec,\n} = cosmos.group.v1;\n\n/**\n * Parse an exec mode string. Accepts 'try' or '1' for EXEC_TRY.\n * Returns EXEC_UNSPECIFIED by default.\n */\nfunction parseExec(value: string | undefined): number {\n if (!value) return Exec.EXEC_UNSPECIFIED;\n const lower = value.toLowerCase();\n if (lower === 'try' || lower === '1') return Exec.EXEC_TRY;\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Invalid exec mode: \"${value}\". Expected: \"try\" for immediate execution.`,\n );\n}\n\ninterface DecisionPolicyWindows {\n votingPeriod: { seconds: bigint; nanos: number };\n minExecutionPeriod: { seconds: bigint; nanos: number };\n}\n\ninterface ThresholdPolicy {\n $typeUrl: '/cosmos.group.v1.ThresholdDecisionPolicy';\n threshold: string;\n windows: DecisionPolicyWindows;\n}\n\ninterface PercentagePolicy {\n $typeUrl: '/cosmos.group.v1.PercentageDecisionPolicy';\n percentage: string;\n windows: DecisionPolicyWindows;\n}\n\n/**\n * Build a decision policy (ThresholdDecisionPolicy or PercentageDecisionPolicy)\n * wrapped for use with fromPartial().\n */\nfunction buildDecisionPolicy(\n policyType: string,\n value: string,\n votingPeriodSecs: string,\n minExecPeriodSecs: string,\n): ThresholdPolicy | PercentagePolicy {\n const votingSecs = parseBigInt(votingPeriodSecs, 'voting-period-secs');\n const minExecSecs = parseBigInt(\n minExecPeriodSecs,\n 'min-execution-period-secs',\n );\n\n const windows: DecisionPolicyWindows = {\n votingPeriod: { seconds: votingSecs, nanos: 0 },\n minExecutionPeriod: { seconds: minExecSecs, nanos: 0 },\n };\n\n switch (policyType.toLowerCase()) {\n case 'threshold':\n return {\n $typeUrl: '/cosmos.group.v1.ThresholdDecisionPolicy' as const,\n threshold: value,\n windows,\n };\n case 'percentage':\n return {\n $typeUrl: '/cosmos.group.v1.PercentageDecisionPolicy' as const,\n percentage: value,\n windows,\n };\n default:\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Invalid policy type: \"${policyType}\". Expected \"threshold\" or \"percentage\".`,\n );\n }\n}\n\n/**\n * Parse address:weight pairs into MemberRequest array.\n * Each pair is validated for proper address format and non-negative weight.\n */\nfunction parseMemberRequests(\n pairs: string[],\n): { address: string; weight: string; metadata: string }[] {\n return pairs.map((pair) => {\n const [address, weight] = parseColonPair(\n pair,\n 'address',\n 'weight',\n 'member',\n );\n validateAddress(address, 'member address');\n if (!/^\\d+(\\.\\d+)?$/.test(weight)) {\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Invalid member weight: \"${weight}\" for address \"${address}\". Expected a non-negative decimal string (e.g., \"1\", \"0.5\").`,\n );\n }\n return { address, weight, metadata: '' };\n });\n}\n\n/**\n * Parse JSON message strings into Any[] for MsgSubmitProposal.\n * Each JSON object must have a typeUrl and a base64-encoded value field.\n * The value must contain protobuf-encoded bytes (not JSON).\n */\nfunction parseProposalMessages(\n jsonArgs: string[],\n): { typeUrl: string; value: Uint8Array }[] {\n return jsonArgs.map((jsonStr, index) => {\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(jsonStr) as Record<string, unknown>;\n } catch {\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Invalid JSON in message at index ${index}: ${jsonStr}`,\n );\n }\n\n const { typeUrl, value } = parsed;\n if (typeof typeUrl !== 'string' || !typeUrl) {\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Message at index ${index} missing required \"typeUrl\" field.`,\n );\n }\n\n if (typeof value !== 'string' || !value) {\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Message at index ${index} missing required \"value\" field. Provide protobuf-encoded bytes as a base64 string.`,\n );\n }\n\n try {\n const bytes = fromBase64(value);\n return { typeUrl, value: bytes };\n } catch {\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Message at index ${index}: invalid base64 value.`,\n );\n }\n });\n}\n\n/**\n * Route group transaction to appropriate handler\n */\nexport async function routeGroupTransaction(\n client: SigningStargateClient,\n senderAddress: string,\n subcommand: string,\n args: string[],\n waitForConfirmation: boolean,\n): Promise<CosmosTxResult> {\n validateArgsLength(args, 'group transaction');\n\n switch (subcommand) {\n case 'create-group': {\n requireArgs(\n args,\n 2,\n ['metadata', 'address:weight'],\n 'group create-group',\n );\n const [metadata, ...memberPairs] = args;\n const members = parseMemberRequests(memberPairs);\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgCreateGroup',\n value: MsgCreateGroup.fromPartial({\n admin: senderAddress,\n members,\n metadata,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'create-group',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-group-members': {\n requireArgs(\n args,\n 2,\n ['group-id', 'address:weight'],\n 'group update-group-members',\n );\n const [groupIdStr, ...memberPairs] = args;\n const groupId = parseBigInt(groupIdStr, 'group-id');\n const memberUpdates = parseMemberRequests(memberPairs);\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgUpdateGroupMembers',\n value: MsgUpdateGroupMembers.fromPartial({\n admin: senderAddress,\n groupId,\n memberUpdates,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'update-group-members',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-group-admin': {\n requireArgs(\n args,\n 2,\n ['group-id', 'new-admin-address'],\n 'group update-group-admin',\n );\n const [groupIdStr, newAdmin] = args;\n const groupId = parseBigInt(groupIdStr, 'group-id');\n validateAddress(newAdmin, 'new admin address');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgUpdateGroupAdmin',\n value: MsgUpdateGroupAdmin.fromPartial({\n admin: senderAddress,\n groupId,\n newAdmin,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'update-group-admin',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-group-metadata': {\n requireArgs(\n args,\n 2,\n ['group-id', 'metadata'],\n 'group update-group-metadata',\n );\n const [groupIdStr, metadata] = args;\n const groupId = parseBigInt(groupIdStr, 'group-id');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgUpdateGroupMetadata',\n value: MsgUpdateGroupMetadata.fromPartial({\n admin: senderAddress,\n groupId,\n metadata,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'update-group-metadata',\n result,\n waitForConfirmation,\n );\n }\n\n case 'create-group-policy': {\n requireArgs(\n args,\n 6,\n [\n 'group-id',\n 'metadata',\n 'policy-type',\n 'threshold-or-pct',\n 'voting-period-secs',\n 'min-execution-period-secs',\n ],\n 'group create-group-policy',\n );\n const [\n groupIdStr,\n metadata,\n policyType,\n value,\n votingPeriodSecs,\n minExecPeriodSecs,\n ] = args;\n const groupId = parseBigInt(groupIdStr, 'group-id');\n const decisionPolicy = buildDecisionPolicy(\n policyType,\n value,\n votingPeriodSecs,\n minExecPeriodSecs,\n );\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgCreateGroupPolicy',\n value: MsgCreateGroupPolicy.fromPartial({\n admin: senderAddress,\n groupId,\n metadata,\n decisionPolicy,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'create-group-policy',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-group-policy-admin': {\n requireArgs(\n args,\n 2,\n ['group-policy-address', 'new-admin-address'],\n 'group update-group-policy-admin',\n );\n const [groupPolicyAddress, newAdmin] = args;\n validateAddress(groupPolicyAddress, 'group policy address');\n validateAddress(newAdmin, 'new admin address');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgUpdateGroupPolicyAdmin',\n value: MsgUpdateGroupPolicyAdmin.fromPartial({\n admin: senderAddress,\n groupPolicyAddress,\n newAdmin,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'update-group-policy-admin',\n result,\n waitForConfirmation,\n );\n }\n\n case 'create-group-with-policy': {\n // Extract optional --group-policy-as-admin flag\n const { value: groupPolicyAsAdmin, remainingArgs: afterBool } =\n extractBooleanFlag(args, '--group-policy-as-admin');\n\n requireArgs(\n afterBool,\n 7,\n [\n 'group-metadata',\n 'group-policy-metadata',\n 'policy-type',\n 'threshold-or-pct',\n 'voting-period-secs',\n 'min-execution-period-secs',\n 'address:weight',\n ],\n 'group create-group-with-policy',\n );\n const [\n groupMetadata,\n groupPolicyMetadata,\n policyType,\n value,\n votingPeriodSecs,\n minExecPeriodSecs,\n ...memberPairs\n ] = afterBool;\n\n const members = parseMemberRequests(memberPairs);\n const decisionPolicy = buildDecisionPolicy(\n policyType,\n value,\n votingPeriodSecs,\n minExecPeriodSecs,\n );\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgCreateGroupWithPolicy',\n value: MsgCreateGroupWithPolicy.fromPartial({\n admin: senderAddress,\n members,\n groupMetadata,\n groupPolicyMetadata,\n groupPolicyAsAdmin,\n decisionPolicy,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'create-group-with-policy',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-group-policy-decision-policy': {\n requireArgs(\n args,\n 5,\n [\n 'group-policy-address',\n 'policy-type',\n 'threshold-or-pct',\n 'voting-period-secs',\n 'min-execution-period-secs',\n ],\n 'group update-group-policy-decision-policy',\n );\n const [\n groupPolicyAddress,\n policyType,\n value,\n votingPeriodSecs,\n minExecPeriodSecs,\n ] = args;\n validateAddress(groupPolicyAddress, 'group policy address');\n const decisionPolicy = buildDecisionPolicy(\n policyType,\n value,\n votingPeriodSecs,\n minExecPeriodSecs,\n );\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy',\n value: MsgUpdateGroupPolicyDecisionPolicy.fromPartial({\n admin: senderAddress,\n groupPolicyAddress,\n decisionPolicy,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'update-group-policy-decision-policy',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-group-policy-metadata': {\n requireArgs(\n args,\n 2,\n ['group-policy-address', 'metadata'],\n 'group update-group-policy-metadata',\n );\n const [groupPolicyAddress, metadata] = args;\n validateAddress(groupPolicyAddress, 'group policy address');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgUpdateGroupPolicyMetadata',\n value: MsgUpdateGroupPolicyMetadata.fromPartial({\n admin: senderAddress,\n groupPolicyAddress,\n metadata,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'update-group-policy-metadata',\n result,\n waitForConfirmation,\n );\n }\n\n case 'submit-proposal': {\n // Extract optional flags\n const execFlag = extractFlag(args, '--exec', 'group submit-proposal');\n const metadataFlag = extractFlag(\n args,\n '--metadata',\n 'group submit-proposal',\n );\n const allConsumed = [\n ...execFlag.consumedIndices,\n ...metadataFlag.consumedIndices,\n ];\n const positionalArgs = filterConsumedArgs(args, allConsumed);\n\n requireArgs(\n positionalArgs,\n 3,\n ['group-policy-address', 'title', 'summary'],\n 'group submit-proposal',\n );\n const [groupPolicyAddress, title, summary, ...messageJsonArgs] =\n positionalArgs;\n validateAddress(groupPolicyAddress, 'group policy address');\n\n const exec = parseExec(execFlag.value);\n const metadata = metadataFlag.value ?? '';\n const messages =\n messageJsonArgs.length > 0\n ? parseProposalMessages(messageJsonArgs)\n : [];\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgSubmitProposal',\n value: MsgSubmitProposal.fromPartial({\n groupPolicyAddress,\n proposers: [senderAddress],\n metadata,\n messages,\n exec,\n title,\n summary,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'submit-proposal',\n result,\n waitForConfirmation,\n );\n }\n\n case 'withdraw-proposal': {\n requireArgs(args, 1, ['proposal-id'], 'group withdraw-proposal');\n const proposalId = parseBigInt(args[0], 'proposal-id');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgWithdrawProposal',\n value: MsgWithdrawProposal.fromPartial({\n proposalId,\n address: senderAddress,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'group',\n 'withdraw-proposal',\n result,\n waitForConfirmation,\n );\n }\n\n case 'vote': {\n // Extract optional flags\n const execFlag = extractFlag(args, '--exec', 'group vote');\n const metadataFlag = extractFlag(args, '--metadata', 'group vote');\n const allConsumed = [\n ...execFlag.consumedIndices,\n ...metadataFlag.consumedIndices,\n ];\n const positionalArgs = filterConsumedArgs(args, allConsumed);\n\n requireArgs(positionalArgs, 2, ['proposal-id', 'option'], 'group vote');\n const [proposalIdStr, optionStr] = positionalArgs;\n const proposalId = parseBigInt(proposalIdStr, 'proposal-id');\n const option = parseVoteOption(optionStr, VoteOption);\n const exec = parseExec(execFlag.value);\n const metadata = metadataFlag.value ?? '';\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgVote',\n value: MsgVote.fromPartial({\n proposalId,\n voter: senderAddress,\n option,\n metadata,\n exec,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('group', 'vote', result, waitForConfirmation);\n }\n\n case 'exec': {\n requireArgs(args, 1, ['proposal-id'], 'group exec');\n const proposalId = parseBigInt(args[0], 'proposal-id');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgExec',\n value: MsgExec.fromPartial({\n proposalId,\n executor: senderAddress,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('group', 'exec', result, waitForConfirmation);\n }\n\n case 'leave-group': {\n requireArgs(args, 1, ['group-id'], 'group leave-group');\n const groupId = parseBigInt(args[0], 'group-id');\n\n const msg = {\n typeUrl: '/cosmos.group.v1.MsgLeaveGroup',\n value: MsgLeaveGroup.fromPartial({\n address: senderAddress,\n groupId,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('group', 'leave-group', result, waitForConfirmation);\n }\n\n default:\n throwUnsupportedSubcommand('tx', 'group', subcommand);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ParsedLeaseItem, buildTxResult, bytesToHex, parseAmount, parseBigInt, parseHexBytes, parseLeaseItem } from "./utils.js";
2
+ import { routeBankTransaction } from "./bank.js";
3
+ import { routeBillingTransaction } from "./billing.js";
4
+ import { routeDistributionTransaction } from "./distribution.js";
5
+ import { routeGovTransaction } from "./gov.js";
6
+ import { routeGroupTransaction } from "./group.js";
7
+ import { routeManifestTransaction } from "./manifest.js";
8
+ import { routeSkuTransaction } from "./sku.js";
9
+ import { routeStakingTransaction } from "./staking.js";
10
+ export { type ParsedLeaseItem, buildTxResult, bytesToHex, parseAmount, parseBigInt, parseHexBytes, parseLeaseItem, routeBankTransaction, routeBillingTransaction, routeDistributionTransaction, routeGovTransaction, routeGroupTransaction, routeManifestTransaction, routeSkuTransaction, routeStakingTransaction };
@@ -0,0 +1,10 @@
1
+ import { buildTxResult, bytesToHex, parseAmount, parseBigInt, parseHexBytes, parseLeaseItem } from "./utils.js";
2
+ import { routeBankTransaction } from "./bank.js";
3
+ import { routeBillingTransaction } from "./billing.js";
4
+ import { routeDistributionTransaction } from "./distribution.js";
5
+ import { routeGovTransaction } from "./gov.js";
6
+ import { routeGroupTransaction } from "./group.js";
7
+ import { routeManifestTransaction } from "./manifest.js";
8
+ import { routeSkuTransaction } from "./sku.js";
9
+ import { routeStakingTransaction } from "./staking.js";
10
+ export { buildTxResult, bytesToHex, parseAmount, parseBigInt, parseHexBytes, parseLeaseItem, routeBankTransaction, routeBillingTransaction, routeDistributionTransaction, routeGovTransaction, routeGroupTransaction, routeManifestTransaction, routeSkuTransaction, routeStakingTransaction };
@@ -0,0 +1,11 @@
1
+ import { CosmosTxResult } from "../types.js";
2
+ import { SigningStargateClient } from "@cosmjs/stargate";
3
+
4
+ //#region src/transactions/manifest.d.ts
5
+ /**
6
+ * Route manifest transaction to appropriate handler
7
+ */
8
+ declare function routeManifestTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], waitForConfirmation: boolean): Promise<CosmosTxResult>;
9
+ //#endregion
10
+ export { routeManifestTransaction };
11
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","names":[],"sources":["../../src/transactions/manifest.ts"],"mappings":";;;;;;AAkBA;iBAAsB,wBAAA,CACpB,MAAA,EAAQ,qBAAA,EACR,aAAA,UACA,UAAA,UACA,IAAA,YACA,mBAAA,YACC,OAAA,CAAQ,cAAA"}
@@ -0,0 +1,59 @@
1
+ import { buildTxResult, parseAmount, parseColonPair, requireArgs, validateAddress, validateArgsLength } from "./utils.js";
2
+ import { throwUnsupportedSubcommand } from "../modules.js";
3
+ import { liftedinit } from "@manifest-network/manifestjs";
4
+ //#region src/transactions/manifest.ts
5
+ const { MsgPayout, MsgBurnHeldBalance } = liftedinit.manifest.v1;
6
+ /**
7
+ * Route manifest transaction to appropriate handler
8
+ */
9
+ async function routeManifestTransaction(client, senderAddress, subcommand, args, waitForConfirmation) {
10
+ validateArgsLength(args, "manifest transaction");
11
+ switch (subcommand) {
12
+ case "payout": {
13
+ requireArgs(args, 1, ["address:amount"], "manifest payout");
14
+ const payoutPairs = args.map((arg) => {
15
+ const [address, amountStr] = parseColonPair(arg, "address", "amount", "payout pair");
16
+ validateAddress(address, "payout recipient address");
17
+ const { amount, denom } = parseAmount(amountStr);
18
+ return {
19
+ address,
20
+ coin: {
21
+ denom,
22
+ amount
23
+ }
24
+ };
25
+ });
26
+ const msg = {
27
+ typeUrl: "/liftedinit.manifest.v1.MsgPayout",
28
+ value: MsgPayout.fromPartial({
29
+ authority: senderAddress,
30
+ payoutPairs
31
+ })
32
+ };
33
+ return buildTxResult("manifest", "payout", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
34
+ }
35
+ case "burn-held-balance": {
36
+ requireArgs(args, 1, ["amount"], "manifest burn-held-balance");
37
+ const burnCoins = args.map((amountStr) => {
38
+ const { amount, denom } = parseAmount(amountStr);
39
+ return {
40
+ denom,
41
+ amount
42
+ };
43
+ });
44
+ const msg = {
45
+ typeUrl: "/liftedinit.manifest.v1.MsgBurnHeldBalance",
46
+ value: MsgBurnHeldBalance.fromPartial({
47
+ authority: senderAddress,
48
+ burnCoins
49
+ })
50
+ };
51
+ return buildTxResult("manifest", "burn-held-balance", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
52
+ }
53
+ default: throwUnsupportedSubcommand("tx", "manifest", subcommand);
54
+ }
55
+ }
56
+ //#endregion
57
+ export { routeManifestTransaction };
58
+
59
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","names":[],"sources":["../../src/transactions/manifest.ts"],"sourcesContent":["import type { SigningStargateClient } from '@cosmjs/stargate';\nimport { liftedinit } from '@manifest-network/manifestjs';\nimport { throwUnsupportedSubcommand } from '../modules.js';\nimport type { CosmosTxResult } from '../types.js';\nimport {\n buildTxResult,\n parseAmount,\n parseColonPair,\n requireArgs,\n validateAddress,\n validateArgsLength,\n} from './utils.js';\n\nconst { MsgPayout, MsgBurnHeldBalance } = liftedinit.manifest.v1;\n\n/**\n * Route manifest transaction to appropriate handler\n */\nexport async function routeManifestTransaction(\n client: SigningStargateClient,\n senderAddress: string,\n subcommand: string,\n args: string[],\n waitForConfirmation: boolean,\n): Promise<CosmosTxResult> {\n validateArgsLength(args, 'manifest transaction');\n\n switch (subcommand) {\n case 'payout': {\n requireArgs(args, 1, ['address:amount'], 'manifest payout');\n // Parse payout pairs (format: address:amount ...)\n const payoutPairs = args.map((arg) => {\n const [address, amountStr] = parseColonPair(\n arg,\n 'address',\n 'amount',\n 'payout pair',\n );\n validateAddress(address, 'payout recipient address');\n const { amount, denom } = parseAmount(amountStr);\n return { address, coin: { denom, amount } };\n });\n\n const msg = {\n typeUrl: '/liftedinit.manifest.v1.MsgPayout',\n value: MsgPayout.fromPartial({\n authority: senderAddress,\n payoutPairs,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('manifest', 'payout', result, waitForConfirmation);\n }\n\n case 'burn-held-balance': {\n requireArgs(args, 1, ['amount'], 'manifest burn-held-balance');\n // Parse coins to burn\n const burnCoins = args.map((amountStr) => {\n const { amount, denom } = parseAmount(amountStr);\n return { denom, amount };\n });\n\n const msg = {\n typeUrl: '/liftedinit.manifest.v1.MsgBurnHeldBalance',\n value: MsgBurnHeldBalance.fromPartial({\n authority: senderAddress,\n burnCoins,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'manifest',\n 'burn-held-balance',\n result,\n waitForConfirmation,\n );\n }\n\n default:\n throwUnsupportedSubcommand('tx', 'manifest', subcommand);\n }\n}\n"],"mappings":";;;;AAaA,MAAM,EAAE,WAAW,uBAAuB,WAAW,SAAS;;;;AAK9D,eAAsB,yBACpB,QACA,eACA,YACA,MACA,qBACyB;AACzB,oBAAmB,MAAM,uBAAuB;AAEhD,SAAQ,YAAR;EACE,KAAK,UAAU;AACb,eAAY,MAAM,GAAG,CAAC,iBAAiB,EAAE,kBAAkB;GAE3D,MAAM,cAAc,KAAK,KAAK,QAAQ;IACpC,MAAM,CAAC,SAAS,aAAa,eAC3B,KACA,WACA,UACA,cACD;AACD,oBAAgB,SAAS,2BAA2B;IACpD,MAAM,EAAE,QAAQ,UAAU,YAAY,UAAU;AAChD,WAAO;KAAE;KAAS,MAAM;MAAE;MAAO;MAAQ;KAAE;KAC3C;GAEF,MAAM,MAAM;IACV,SAAS;IACT,OAAO,UAAU,YAAY;KAC3B,WAAW;KACX;KACD,CAAC;IACH;AAOD,UAAO,cAAc,YAAY,UALlB,MAAM,OAAO,iBAC1B,eACA,CAAC,IAAI,EACL,OACD,EACkD,oBAAoB;;EAGzE,KAAK,qBAAqB;AACxB,eAAY,MAAM,GAAG,CAAC,SAAS,EAAE,6BAA6B;GAE9D,MAAM,YAAY,KAAK,KAAK,cAAc;IACxC,MAAM,EAAE,QAAQ,UAAU,YAAY,UAAU;AAChD,WAAO;KAAE;KAAO;KAAQ;KACxB;GAEF,MAAM,MAAM;IACV,SAAS;IACT,OAAO,mBAAmB,YAAY;KACpC,WAAW;KACX;KACD,CAAC;IACH;AAOD,UAAO,cACL,YACA,qBAPa,MAAM,OAAO,iBAC1B,eACA,CAAC,IAAI,EACL,OACD,EAKC,oBACD;;EAGH,QACE,4BAA2B,MAAM,YAAY,WAAW"}
@@ -0,0 +1,11 @@
1
+ import { CosmosTxResult } from "../types.js";
2
+ import { SigningStargateClient } from "@cosmjs/stargate";
3
+
4
+ //#region src/transactions/sku.d.ts
5
+ /**
6
+ * Route SKU transaction to appropriate handler
7
+ */
8
+ declare function routeSkuTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], waitForConfirmation: boolean): Promise<CosmosTxResult>;
9
+ //#endregion
10
+ export { routeSkuTransaction };
11
+ //# sourceMappingURL=sku.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sku.d.ts","names":[],"sources":["../../src/transactions/sku.ts"],"mappings":";;;;;;AAiEA;iBAAsB,mBAAA,CACpB,MAAA,EAAQ,qBAAA,EACR,aAAA,UACA,UAAA,UACA,IAAA,YACA,mBAAA,YACC,OAAA,CAAQ,cAAA"}