@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,191 @@
1
+ import { ManifestMCPError, ManifestMCPErrorCode } from "../types.js";
2
+ import { buildTxResult, extractFlag, filterConsumedArgs, parseAmount, parseHexBytes, requireArgs, validateAddress, validateArgsLength } from "./utils.js";
3
+ import { throwUnsupportedSubcommand } from "../modules.js";
4
+ import { liftedinit } from "@manifest-network/manifestjs";
5
+ //#region src/transactions/sku.ts
6
+ const { MsgCreateProvider, MsgUpdateProvider, MsgDeactivateProvider, MsgCreateSKU, MsgUpdateSKU, MsgDeactivateSKU, MsgUpdateParams, Unit } = liftedinit.sku.v1;
7
+ /**
8
+ * Parse a unit string to the Unit enum value.
9
+ * Accepts 'per-hour' or 'per-day'.
10
+ */
11
+ function parseUnit(value) {
12
+ switch (value.toLowerCase()) {
13
+ case "per-hour": return Unit.UNIT_PER_HOUR;
14
+ case "per-day": return Unit.UNIT_PER_DAY;
15
+ default: throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid unit: "${value}". Expected "per-hour" or "per-day".`);
16
+ }
17
+ }
18
+ /**
19
+ * Parse a boolean string ('true' or 'false').
20
+ */
21
+ function parseBooleanString(value, fieldName) {
22
+ const lower = value.toLowerCase();
23
+ if (lower === "true") return true;
24
+ if (lower === "false") return false;
25
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid ${fieldName}: "${value}". Expected "true" or "false".`);
26
+ }
27
+ /**
28
+ * Route SKU transaction to appropriate handler
29
+ */
30
+ async function routeSkuTransaction(client, senderAddress, subcommand, args, waitForConfirmation) {
31
+ validateArgsLength(args, "sku transaction");
32
+ switch (subcommand) {
33
+ case "create-provider": {
34
+ const { value: metaHashHex, consumedIndices } = extractFlag(args, "--meta-hash", "sku create-provider");
35
+ const metaHash = metaHashHex ? parseHexBytes(metaHashHex, "meta-hash", 64) : new Uint8Array();
36
+ const positionalArgs = filterConsumedArgs(args, consumedIndices);
37
+ requireArgs(positionalArgs, 3, [
38
+ "address",
39
+ "payout-address",
40
+ "api-url"
41
+ ], "sku create-provider");
42
+ const [address, payoutAddress, apiUrl] = positionalArgs;
43
+ validateAddress(address, "address");
44
+ validateAddress(payoutAddress, "payout address");
45
+ const msg = {
46
+ typeUrl: "/liftedinit.sku.v1.MsgCreateProvider",
47
+ value: MsgCreateProvider.fromPartial({
48
+ authority: senderAddress,
49
+ address,
50
+ payoutAddress,
51
+ metaHash,
52
+ apiUrl
53
+ })
54
+ };
55
+ return buildTxResult("sku", "create-provider", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
56
+ }
57
+ case "update-provider": {
58
+ const metaHashFlag = extractFlag(args, "--meta-hash", "sku update-provider");
59
+ const activeFlag = extractFlag(args, "--active", "sku update-provider");
60
+ const positionalArgs = filterConsumedArgs(args, [...metaHashFlag.consumedIndices, ...activeFlag.consumedIndices]);
61
+ requireArgs(positionalArgs, 4, [
62
+ "provider-uuid",
63
+ "address",
64
+ "payout-address",
65
+ "api-url"
66
+ ], "sku update-provider");
67
+ const [uuid, address, payoutAddress, apiUrl] = positionalArgs;
68
+ validateAddress(address, "address");
69
+ validateAddress(payoutAddress, "payout address");
70
+ const metaHash = metaHashFlag.value ? parseHexBytes(metaHashFlag.value, "meta-hash", 64) : new Uint8Array();
71
+ const active = activeFlag.value ? parseBooleanString(activeFlag.value, "active") : true;
72
+ const msg = {
73
+ typeUrl: "/liftedinit.sku.v1.MsgUpdateProvider",
74
+ value: MsgUpdateProvider.fromPartial({
75
+ authority: senderAddress,
76
+ uuid,
77
+ address,
78
+ payoutAddress,
79
+ metaHash,
80
+ active,
81
+ apiUrl
82
+ })
83
+ };
84
+ return buildTxResult("sku", "update-provider", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
85
+ }
86
+ case "deactivate-provider": {
87
+ requireArgs(args, 1, ["provider-uuid"], "sku deactivate-provider");
88
+ const [uuid] = args;
89
+ const msg = {
90
+ typeUrl: "/liftedinit.sku.v1.MsgDeactivateProvider",
91
+ value: MsgDeactivateProvider.fromPartial({
92
+ authority: senderAddress,
93
+ uuid
94
+ })
95
+ };
96
+ return buildTxResult("sku", "deactivate-provider", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
97
+ }
98
+ case "create-sku": {
99
+ const { value: metaHashHex, consumedIndices } = extractFlag(args, "--meta-hash", "sku create-sku");
100
+ const metaHash = metaHashHex ? parseHexBytes(metaHashHex, "meta-hash", 64) : new Uint8Array();
101
+ const positionalArgs = filterConsumedArgs(args, consumedIndices);
102
+ requireArgs(positionalArgs, 4, [
103
+ "provider-uuid",
104
+ "name",
105
+ "unit",
106
+ "base-price"
107
+ ], "sku create-sku");
108
+ const [providerUuid, name, unitStr, basePriceStr] = positionalArgs;
109
+ const unit = parseUnit(unitStr);
110
+ const { amount, denom } = parseAmount(basePriceStr);
111
+ const msg = {
112
+ typeUrl: "/liftedinit.sku.v1.MsgCreateSKU",
113
+ value: MsgCreateSKU.fromPartial({
114
+ authority: senderAddress,
115
+ providerUuid,
116
+ name,
117
+ unit,
118
+ basePrice: {
119
+ denom,
120
+ amount
121
+ },
122
+ metaHash
123
+ })
124
+ };
125
+ return buildTxResult("sku", "create-sku", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
126
+ }
127
+ case "update-sku": {
128
+ const metaHashFlag = extractFlag(args, "--meta-hash", "sku update-sku");
129
+ const activeFlag = extractFlag(args, "--active", "sku update-sku");
130
+ const positionalArgs = filterConsumedArgs(args, [...metaHashFlag.consumedIndices, ...activeFlag.consumedIndices]);
131
+ requireArgs(positionalArgs, 5, [
132
+ "sku-uuid",
133
+ "provider-uuid",
134
+ "name",
135
+ "unit",
136
+ "base-price"
137
+ ], "sku update-sku");
138
+ const [uuid, providerUuid, name, unitStr, basePriceStr] = positionalArgs;
139
+ const unit = parseUnit(unitStr);
140
+ const { amount, denom } = parseAmount(basePriceStr);
141
+ const metaHash = metaHashFlag.value ? parseHexBytes(metaHashFlag.value, "meta-hash", 64) : new Uint8Array();
142
+ const active = activeFlag.value ? parseBooleanString(activeFlag.value, "active") : true;
143
+ const msg = {
144
+ typeUrl: "/liftedinit.sku.v1.MsgUpdateSKU",
145
+ value: MsgUpdateSKU.fromPartial({
146
+ authority: senderAddress,
147
+ uuid,
148
+ providerUuid,
149
+ name,
150
+ unit,
151
+ basePrice: {
152
+ denom,
153
+ amount
154
+ },
155
+ metaHash,
156
+ active
157
+ })
158
+ };
159
+ return buildTxResult("sku", "update-sku", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
160
+ }
161
+ case "deactivate-sku": {
162
+ requireArgs(args, 1, ["sku-uuid"], "sku deactivate-sku");
163
+ const [uuid] = args;
164
+ const msg = {
165
+ typeUrl: "/liftedinit.sku.v1.MsgDeactivateSKU",
166
+ value: MsgDeactivateSKU.fromPartial({
167
+ authority: senderAddress,
168
+ uuid
169
+ })
170
+ };
171
+ return buildTxResult("sku", "deactivate-sku", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
172
+ }
173
+ case "update-params": {
174
+ requireArgs(args, 1, ["allowed-address"], "sku update-params");
175
+ for (const addr of args) validateAddress(addr, "allowed address");
176
+ const msg = {
177
+ typeUrl: "/liftedinit.sku.v1.MsgUpdateParams",
178
+ value: MsgUpdateParams.fromPartial({
179
+ authority: senderAddress,
180
+ params: { allowedList: args }
181
+ })
182
+ };
183
+ return buildTxResult("sku", "update-params", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
184
+ }
185
+ default: throwUnsupportedSubcommand("tx", "sku", subcommand);
186
+ }
187
+ }
188
+ //#endregion
189
+ export { routeSkuTransaction };
190
+
191
+ //# sourceMappingURL=sku.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sku.js","names":[],"sources":["../../src/transactions/sku.ts"],"sourcesContent":["import type { SigningStargateClient } from '@cosmjs/stargate';\nimport { liftedinit } 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 extractFlag,\n filterConsumedArgs,\n MAX_META_HASH_BYTES,\n parseAmount,\n parseHexBytes,\n requireArgs,\n validateAddress,\n validateArgsLength,\n} from './utils.js';\n\nconst {\n MsgCreateProvider,\n MsgUpdateProvider,\n MsgDeactivateProvider,\n MsgCreateSKU,\n MsgUpdateSKU,\n MsgDeactivateSKU,\n MsgUpdateParams,\n Unit,\n} = liftedinit.sku.v1;\n\n/**\n * Parse a unit string to the Unit enum value.\n * Accepts 'per-hour' or 'per-day'.\n */\nfunction parseUnit(value: string): number {\n switch (value.toLowerCase()) {\n case 'per-hour':\n return Unit.UNIT_PER_HOUR;\n case 'per-day':\n return Unit.UNIT_PER_DAY;\n default:\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Invalid unit: \"${value}\". Expected \"per-hour\" or \"per-day\".`,\n );\n }\n}\n\n/**\n * Parse a boolean string ('true' or 'false').\n */\nfunction parseBooleanString(value: string, fieldName: string): boolean {\n const lower = value.toLowerCase();\n if (lower === 'true') return true;\n if (lower === 'false') return false;\n throw new ManifestMCPError(\n ManifestMCPErrorCode.TX_FAILED,\n `Invalid ${fieldName}: \"${value}\". Expected \"true\" or \"false\".`,\n );\n}\n\n/**\n * Route SKU transaction to appropriate handler\n */\nexport async function routeSkuTransaction(\n client: SigningStargateClient,\n senderAddress: string,\n subcommand: string,\n args: string[],\n waitForConfirmation: boolean,\n): Promise<CosmosTxResult> {\n validateArgsLength(args, 'sku transaction');\n\n switch (subcommand) {\n case 'create-provider': {\n // Parse optional --meta-hash flag\n const { value: metaHashHex, consumedIndices } = extractFlag(\n args,\n '--meta-hash',\n 'sku create-provider',\n );\n const metaHash = metaHashHex\n ? parseHexBytes(metaHashHex, 'meta-hash', MAX_META_HASH_BYTES)\n : new Uint8Array();\n const positionalArgs = filterConsumedArgs(args, consumedIndices);\n\n requireArgs(\n positionalArgs,\n 3,\n ['address', 'payout-address', 'api-url'],\n 'sku create-provider',\n );\n const [address, payoutAddress, apiUrl] = positionalArgs;\n validateAddress(address, 'address');\n validateAddress(payoutAddress, 'payout address');\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgCreateProvider',\n value: MsgCreateProvider.fromPartial({\n authority: senderAddress,\n address,\n payoutAddress,\n metaHash,\n apiUrl,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'sku',\n 'create-provider',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-provider': {\n // Parse optional flags\n const metaHashFlag = extractFlag(\n args,\n '--meta-hash',\n 'sku update-provider',\n );\n const activeFlag = extractFlag(args, '--active', 'sku update-provider');\n const allConsumed = [\n ...metaHashFlag.consumedIndices,\n ...activeFlag.consumedIndices,\n ];\n const positionalArgs = filterConsumedArgs(args, allConsumed);\n\n requireArgs(\n positionalArgs,\n 4,\n ['provider-uuid', 'address', 'payout-address', 'api-url'],\n 'sku update-provider',\n );\n const [uuid, address, payoutAddress, apiUrl] = positionalArgs;\n validateAddress(address, 'address');\n validateAddress(payoutAddress, 'payout address');\n\n const metaHash = metaHashFlag.value\n ? parseHexBytes(metaHashFlag.value, 'meta-hash', MAX_META_HASH_BYTES)\n : new Uint8Array();\n const active = activeFlag.value\n ? parseBooleanString(activeFlag.value, 'active')\n : true;\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgUpdateProvider',\n value: MsgUpdateProvider.fromPartial({\n authority: senderAddress,\n uuid,\n address,\n payoutAddress,\n metaHash,\n active,\n apiUrl,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'sku',\n 'update-provider',\n result,\n waitForConfirmation,\n );\n }\n\n case 'deactivate-provider': {\n requireArgs(args, 1, ['provider-uuid'], 'sku deactivate-provider');\n const [uuid] = args;\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgDeactivateProvider',\n value: MsgDeactivateProvider.fromPartial({\n authority: senderAddress,\n uuid,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'sku',\n 'deactivate-provider',\n result,\n waitForConfirmation,\n );\n }\n\n case 'create-sku': {\n // Parse optional --meta-hash flag\n const { value: metaHashHex, consumedIndices } = extractFlag(\n args,\n '--meta-hash',\n 'sku create-sku',\n );\n const metaHash = metaHashHex\n ? parseHexBytes(metaHashHex, 'meta-hash', MAX_META_HASH_BYTES)\n : new Uint8Array();\n const positionalArgs = filterConsumedArgs(args, consumedIndices);\n\n requireArgs(\n positionalArgs,\n 4,\n ['provider-uuid', 'name', 'unit', 'base-price'],\n 'sku create-sku',\n );\n const [providerUuid, name, unitStr, basePriceStr] = positionalArgs;\n\n const unit = parseUnit(unitStr);\n const { amount, denom } = parseAmount(basePriceStr);\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgCreateSKU',\n value: MsgCreateSKU.fromPartial({\n authority: senderAddress,\n providerUuid,\n name,\n unit,\n basePrice: { denom, amount },\n metaHash,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('sku', 'create-sku', result, waitForConfirmation);\n }\n\n case 'update-sku': {\n // Parse optional flags\n const metaHashFlag = extractFlag(args, '--meta-hash', 'sku update-sku');\n const activeFlag = extractFlag(args, '--active', 'sku update-sku');\n const allConsumed = [\n ...metaHashFlag.consumedIndices,\n ...activeFlag.consumedIndices,\n ];\n const positionalArgs = filterConsumedArgs(args, allConsumed);\n\n requireArgs(\n positionalArgs,\n 5,\n ['sku-uuid', 'provider-uuid', 'name', 'unit', 'base-price'],\n 'sku update-sku',\n );\n const [uuid, providerUuid, name, unitStr, basePriceStr] = positionalArgs;\n\n const unit = parseUnit(unitStr);\n const { amount, denom } = parseAmount(basePriceStr);\n const metaHash = metaHashFlag.value\n ? parseHexBytes(metaHashFlag.value, 'meta-hash', MAX_META_HASH_BYTES)\n : new Uint8Array();\n const active = activeFlag.value\n ? parseBooleanString(activeFlag.value, 'active')\n : true;\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgUpdateSKU',\n value: MsgUpdateSKU.fromPartial({\n authority: senderAddress,\n uuid,\n providerUuid,\n name,\n unit,\n basePrice: { denom, amount },\n metaHash,\n active,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('sku', 'update-sku', result, waitForConfirmation);\n }\n\n case 'deactivate-sku': {\n requireArgs(args, 1, ['sku-uuid'], 'sku deactivate-sku');\n const [uuid] = args;\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgDeactivateSKU',\n value: MsgDeactivateSKU.fromPartial({\n authority: senderAddress,\n uuid,\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'sku',\n 'deactivate-sku',\n result,\n waitForConfirmation,\n );\n }\n\n case 'update-params': {\n requireArgs(args, 1, ['allowed-address'], 'sku update-params');\n for (const addr of args) {\n validateAddress(addr, 'allowed address');\n }\n\n const msg = {\n typeUrl: '/liftedinit.sku.v1.MsgUpdateParams',\n value: MsgUpdateParams.fromPartial({\n authority: senderAddress,\n params: {\n allowedList: args,\n },\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('sku', 'update-params', result, waitForConfirmation);\n }\n\n default:\n throwUnsupportedSubcommand('tx', 'sku', subcommand);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CosmosTxResult } from "../types.js";
2
+ import { SigningStargateClient } from "@cosmjs/stargate";
3
+
4
+ //#region src/transactions/staking.d.ts
5
+ /**
6
+ * Route staking transaction to appropriate handler
7
+ */
8
+ declare function routeStakingTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], waitForConfirmation: boolean): Promise<CosmosTxResult>;
9
+ //#endregion
10
+ export { routeStakingTransaction };
11
+ //# sourceMappingURL=staking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.d.ts","names":[],"sources":["../../src/transactions/staking.ts"],"mappings":";;;;;;AAkBA;iBAAsB,uBAAA,CACpB,MAAA,EAAQ,qBAAA,EACR,aAAA,UACA,UAAA,UACA,IAAA,YACA,mBAAA,YACC,OAAA,CAAQ,cAAA"}
@@ -0,0 +1,79 @@
1
+ import { buildTxResult, parseAmount, requireArgs, validateAddress, validateArgsLength } from "./utils.js";
2
+ import { throwUnsupportedSubcommand } from "../modules.js";
3
+ import { cosmos } from "@manifest-network/manifestjs";
4
+ //#region src/transactions/staking.ts
5
+ const { MsgDelegate, MsgUndelegate, MsgBeginRedelegate } = cosmos.staking.v1beta1;
6
+ /**
7
+ * Route staking transaction to appropriate handler
8
+ */
9
+ async function routeStakingTransaction(client, senderAddress, subcommand, args, waitForConfirmation) {
10
+ validateArgsLength(args, "staking transaction");
11
+ switch (subcommand) {
12
+ case "delegate": {
13
+ requireArgs(args, 2, ["validator-address", "amount"], "staking delegate");
14
+ const [validatorAddress, amountStr] = args;
15
+ validateAddress(validatorAddress, "validator address");
16
+ const { amount, denom } = parseAmount(amountStr);
17
+ const msg = {
18
+ typeUrl: "/cosmos.staking.v1beta1.MsgDelegate",
19
+ value: MsgDelegate.fromPartial({
20
+ delegatorAddress: senderAddress,
21
+ validatorAddress,
22
+ amount: {
23
+ denom,
24
+ amount
25
+ }
26
+ })
27
+ };
28
+ return buildTxResult("staking", "delegate", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
29
+ }
30
+ case "unbond":
31
+ case "undelegate": {
32
+ requireArgs(args, 2, ["validator-address", "amount"], "staking unbond");
33
+ const [validatorAddress, amountStr] = args;
34
+ validateAddress(validatorAddress, "validator address");
35
+ const { amount, denom } = parseAmount(amountStr);
36
+ const msg = {
37
+ typeUrl: "/cosmos.staking.v1beta1.MsgUndelegate",
38
+ value: MsgUndelegate.fromPartial({
39
+ delegatorAddress: senderAddress,
40
+ validatorAddress,
41
+ amount: {
42
+ denom,
43
+ amount
44
+ }
45
+ })
46
+ };
47
+ return buildTxResult("staking", "unbond", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
48
+ }
49
+ case "redelegate": {
50
+ requireArgs(args, 3, [
51
+ "src-validator",
52
+ "dst-validator",
53
+ "amount"
54
+ ], "staking redelegate");
55
+ const [srcValidatorAddress, dstValidatorAddress, amountStr] = args;
56
+ validateAddress(srcValidatorAddress, "source validator address");
57
+ validateAddress(dstValidatorAddress, "destination validator address");
58
+ const { amount, denom } = parseAmount(amountStr);
59
+ const msg = {
60
+ typeUrl: "/cosmos.staking.v1beta1.MsgBeginRedelegate",
61
+ value: MsgBeginRedelegate.fromPartial({
62
+ delegatorAddress: senderAddress,
63
+ validatorSrcAddress: srcValidatorAddress,
64
+ validatorDstAddress: dstValidatorAddress,
65
+ amount: {
66
+ denom,
67
+ amount
68
+ }
69
+ })
70
+ };
71
+ return buildTxResult("staking", "redelegate", await client.signAndBroadcast(senderAddress, [msg], "auto"), waitForConfirmation);
72
+ }
73
+ default: throwUnsupportedSubcommand("tx", "staking", subcommand);
74
+ }
75
+ }
76
+ //#endregion
77
+ export { routeStakingTransaction };
78
+
79
+ //# sourceMappingURL=staking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.js","names":[],"sources":["../../src/transactions/staking.ts"],"sourcesContent":["import type { SigningStargateClient } from '@cosmjs/stargate';\nimport { cosmos } from '@manifest-network/manifestjs';\nimport { throwUnsupportedSubcommand } from '../modules.js';\nimport type { CosmosTxResult } from '../types.js';\nimport {\n buildTxResult,\n parseAmount,\n requireArgs,\n validateAddress,\n validateArgsLength,\n} from './utils.js';\n\nconst { MsgDelegate, MsgUndelegate, MsgBeginRedelegate } =\n cosmos.staking.v1beta1;\n\n/**\n * Route staking transaction to appropriate handler\n */\nexport async function routeStakingTransaction(\n client: SigningStargateClient,\n senderAddress: string,\n subcommand: string,\n args: string[],\n waitForConfirmation: boolean,\n): Promise<CosmosTxResult> {\n validateArgsLength(args, 'staking transaction');\n\n switch (subcommand) {\n case 'delegate': {\n requireArgs(args, 2, ['validator-address', 'amount'], 'staking delegate');\n const [validatorAddress, amountStr] = args;\n validateAddress(validatorAddress, 'validator address');\n const { amount, denom } = parseAmount(amountStr);\n\n const msg = {\n typeUrl: '/cosmos.staking.v1beta1.MsgDelegate',\n value: MsgDelegate.fromPartial({\n delegatorAddress: senderAddress,\n validatorAddress,\n amount: { denom, amount },\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('staking', 'delegate', result, waitForConfirmation);\n }\n\n case 'unbond':\n case 'undelegate': {\n requireArgs(args, 2, ['validator-address', 'amount'], 'staking unbond');\n const [validatorAddress, amountStr] = args;\n validateAddress(validatorAddress, 'validator address');\n const { amount, denom } = parseAmount(amountStr);\n\n const msg = {\n typeUrl: '/cosmos.staking.v1beta1.MsgUndelegate',\n value: MsgUndelegate.fromPartial({\n delegatorAddress: senderAddress,\n validatorAddress,\n amount: { denom, amount },\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult('staking', 'unbond', result, waitForConfirmation);\n }\n\n case 'redelegate': {\n requireArgs(\n args,\n 3,\n ['src-validator', 'dst-validator', 'amount'],\n 'staking redelegate',\n );\n const [srcValidatorAddress, dstValidatorAddress, amountStr] = args;\n validateAddress(srcValidatorAddress, 'source validator address');\n validateAddress(dstValidatorAddress, 'destination validator address');\n const { amount, denom } = parseAmount(amountStr);\n\n const msg = {\n typeUrl: '/cosmos.staking.v1beta1.MsgBeginRedelegate',\n value: MsgBeginRedelegate.fromPartial({\n delegatorAddress: senderAddress,\n validatorSrcAddress: srcValidatorAddress,\n validatorDstAddress: dstValidatorAddress,\n amount: { denom, amount },\n }),\n };\n\n const result = await client.signAndBroadcast(\n senderAddress,\n [msg],\n 'auto',\n );\n return buildTxResult(\n 'staking',\n 'redelegate',\n result,\n waitForConfirmation,\n );\n }\n\n default:\n throwUnsupportedSubcommand('tx', 'staking', subcommand);\n }\n}\n"],"mappings":";;;;AAYA,MAAM,EAAE,aAAa,eAAe,uBAClC,OAAO,QAAQ;;;;AAKjB,eAAsB,wBACpB,QACA,eACA,YACA,MACA,qBACyB;AACzB,oBAAmB,MAAM,sBAAsB;AAE/C,SAAQ,YAAR;EACE,KAAK,YAAY;AACf,eAAY,MAAM,GAAG,CAAC,qBAAqB,SAAS,EAAE,mBAAmB;GACzE,MAAM,CAAC,kBAAkB,aAAa;AACtC,mBAAgB,kBAAkB,oBAAoB;GACtD,MAAM,EAAE,QAAQ,UAAU,YAAY,UAAU;GAEhD,MAAM,MAAM;IACV,SAAS;IACT,OAAO,YAAY,YAAY;KAC7B,kBAAkB;KAClB;KACA,QAAQ;MAAE;MAAO;MAAQ;KAC1B,CAAC;IACH;AAOD,UAAO,cAAc,WAAW,YALjB,MAAM,OAAO,iBAC1B,eACA,CAAC,IAAI,EACL,OACD,EACmD,oBAAoB;;EAG1E,KAAK;EACL,KAAK,cAAc;AACjB,eAAY,MAAM,GAAG,CAAC,qBAAqB,SAAS,EAAE,iBAAiB;GACvE,MAAM,CAAC,kBAAkB,aAAa;AACtC,mBAAgB,kBAAkB,oBAAoB;GACtD,MAAM,EAAE,QAAQ,UAAU,YAAY,UAAU;GAEhD,MAAM,MAAM;IACV,SAAS;IACT,OAAO,cAAc,YAAY;KAC/B,kBAAkB;KAClB;KACA,QAAQ;MAAE;MAAO;MAAQ;KAC1B,CAAC;IACH;AAOD,UAAO,cAAc,WAAW,UALjB,MAAM,OAAO,iBAC1B,eACA,CAAC,IAAI,EACL,OACD,EACiD,oBAAoB;;EAGxE,KAAK,cAAc;AACjB,eACE,MACA,GACA;IAAC;IAAiB;IAAiB;IAAS,EAC5C,qBACD;GACD,MAAM,CAAC,qBAAqB,qBAAqB,aAAa;AAC9D,mBAAgB,qBAAqB,2BAA2B;AAChE,mBAAgB,qBAAqB,gCAAgC;GACrE,MAAM,EAAE,QAAQ,UAAU,YAAY,UAAU;GAEhD,MAAM,MAAM;IACV,SAAS;IACT,OAAO,mBAAmB,YAAY;KACpC,kBAAkB;KAClB,qBAAqB;KACrB,qBAAqB;KACrB,QAAQ;MAAE;MAAO;MAAQ;KAC1B,CAAC;IACH;AAOD,UAAO,cACL,WACA,cAPa,MAAM,OAAO,iBAC1B,eACA,CAAC,IAAI,EACL,OACD,EAKC,oBACD;;EAGH,QACE,4BAA2B,MAAM,WAAW,WAAW"}
@@ -0,0 +1,161 @@
1
+ import { CosmosTxResult, ManifestMCPErrorCode } from "../types.js";
2
+ import { SigningStargateClient } from "@cosmjs/stargate";
3
+
4
+ //#region src/transactions/utils.d.ts
5
+ /** Maximum number of arguments allowed */
6
+ declare const MAX_ARGS = 100;
7
+ /** Maximum meta hash length in bytes (64 bytes for SHA-512) */
8
+ declare const MAX_META_HASH_BYTES = 64;
9
+ /**
10
+ * Result from extracting a flag from args
11
+ */
12
+ interface ExtractedFlag {
13
+ /** The flag value, or undefined if flag not present */
14
+ value: string | undefined;
15
+ /** Indices consumed by the flag and its value (for filtering) */
16
+ consumedIndices: number[];
17
+ }
18
+ /**
19
+ * Extract a flag value from args array.
20
+ * Returns { value, consumedIndices } or { value: undefined, consumedIndices: [] } if flag not present.
21
+ * Throws if flag is present but value is missing or looks like another flag.
22
+ *
23
+ * @param args - The arguments array to search
24
+ * @param flagName - The flag to look for (e.g., '--memo')
25
+ * @param context - Description for error messages (e.g., 'bank send')
26
+ */
27
+ declare function extractFlag(args: string[], flagName: string, context: string, errorCode?: ManifestMCPErrorCode): ExtractedFlag;
28
+ /**
29
+ * Result from extracting a boolean (valueless) flag from args
30
+ */
31
+ interface ExtractedBooleanFlag {
32
+ /** Whether the flag was present */
33
+ value: boolean;
34
+ /** Args with the flag removed */
35
+ remainingArgs: string[];
36
+ }
37
+ /**
38
+ * Extract a valueless boolean flag from args array.
39
+ * Returns { value: true, remainingArgs } if flag is present, { value: false, remainingArgs: args } otherwise.
40
+ *
41
+ * @param args - The arguments array to search
42
+ * @param flagName - The flag to look for (e.g., '--active-only')
43
+ * @returns Object with boolean value and filtered args
44
+ */
45
+ declare function extractBooleanFlag(args: string[], flagName: string): ExtractedBooleanFlag;
46
+ /**
47
+ * Filter args to remove consumed flag indices
48
+ */
49
+ declare function filterConsumedArgs(args: string[], consumedIndices: number[]): string[];
50
+ /** Maximum memo length (Cosmos SDK default) */
51
+ declare const MAX_MEMO_LENGTH = 256;
52
+ /**
53
+ * Parse a colon-separated pair (e.g., "address:amount", "sku:quantity").
54
+ * Throws with helpful error if format is invalid.
55
+ *
56
+ * @param input - The string to parse (e.g., "manifest1abc:1000umfx")
57
+ * @param leftName - Name of the left value for error messages (e.g., "address")
58
+ * @param rightName - Name of the right value for error messages (e.g., "amount")
59
+ * @param context - Context for error messages (e.g., "multi-send pair")
60
+ * @returns Tuple of [left, right] values
61
+ */
62
+ declare function parseColonPair(input: string, leftName: string, rightName: string, context: string): [string, string];
63
+ /**
64
+ * Validate args array length (max limit)
65
+ */
66
+ declare function validateArgsLength(args: string[], context: string): void;
67
+ /**
68
+ * Validate that required arguments are present.
69
+ * Provides helpful error messages with received vs expected args.
70
+ *
71
+ * @param args - The arguments array to validate
72
+ * @param minCount - Minimum number of required arguments
73
+ * @param expectedNames - Names of expected arguments for error messages
74
+ * @param context - Context for error messages (e.g., 'bank send', 'staking delegate')
75
+ * @param errorCode - Error code to use (defaults to TX_FAILED)
76
+ * @throws ManifestMCPError if args.length < minCount
77
+ */
78
+ declare function requireArgs(args: string[], minCount: number, expectedNames: string[], context: string, errorCode?: ManifestMCPErrorCode): void;
79
+ /**
80
+ * Validate a bech32 address using @cosmjs/encoding
81
+ */
82
+ declare function validateAddress(address: string, fieldName: string, expectedPrefix?: string): void;
83
+ /**
84
+ * Validate memo length
85
+ */
86
+ declare function validateMemo(memo: string): void;
87
+ /**
88
+ * Parse and validate a hex string into Uint8Array.
89
+ * Uses @cosmjs/encoding for browser compatibility.
90
+ *
91
+ * @param hexString - The hex string to parse
92
+ * @param fieldName - Name of the field for error messages
93
+ * @param maxBytes - Maximum allowed byte length
94
+ * @param errorCode - Error code to use (defaults to TX_FAILED)
95
+ * @returns Uint8Array of the parsed bytes
96
+ */
97
+ declare function parseHexBytes(hexString: string, fieldName: string, maxBytes: number, errorCode?: ManifestMCPErrorCode): Uint8Array;
98
+ /**
99
+ * Convert Uint8Array to hex string.
100
+ * Uses @cosmjs/encoding for browser compatibility.
101
+ */
102
+ declare function bytesToHex(bytes: Uint8Array): string;
103
+ /**
104
+ * Safely parse a string to BigInt with proper error handling and configurable error code.
105
+ * This is the base implementation used by both transaction and query utilities.
106
+ */
107
+ declare function parseBigIntWithCode(value: string, fieldName: string, errorCode: ManifestMCPErrorCode): bigint;
108
+ /**
109
+ * Safely parse a string to BigInt with proper error handling (for transactions)
110
+ */
111
+ declare function parseBigInt(value: string, fieldName: string): bigint;
112
+ /**
113
+ * Interface for VoteOption-like enums from cosmos protobuf modules.
114
+ * Both cosmos.gov.v1.VoteOption and cosmos.group.v1.VoteOption share this shape.
115
+ */
116
+ interface VoteOptionEnum {
117
+ VOTE_OPTION_YES: number;
118
+ VOTE_OPTION_ABSTAIN: number;
119
+ VOTE_OPTION_NO: number;
120
+ VOTE_OPTION_NO_WITH_VETO: number;
121
+ }
122
+ /**
123
+ * Parse a vote option string to its numeric enum value.
124
+ * Accepts case-insensitive strings or numeric identifiers.
125
+ *
126
+ * @param optionStr - Vote option string (yes, no, abstain, no_with_veto, or 1-4)
127
+ * @param voteOptionEnum - The VoteOption enum object from the relevant cosmos module
128
+ */
129
+ declare function parseVoteOption(optionStr: string, voteOptionEnum: VoteOptionEnum): number;
130
+ /**
131
+ * Parsed lease item with optional service name for stack deployments.
132
+ */
133
+ interface ParsedLeaseItem {
134
+ skuUuid: string;
135
+ quantity: bigint;
136
+ serviceName: string;
137
+ }
138
+ /**
139
+ * Parse a lease item string in the format "sku-uuid:quantity" or "sku-uuid:quantity:service-name".
140
+ * The service-name is optional and used for stack (multi-service) deployments.
141
+ *
142
+ * @param input - The string to parse (e.g., "sku-123:1" or "sku-123:1:web")
143
+ * @returns Parsed lease item with skuUuid, quantity, and serviceName
144
+ */
145
+ declare function parseLeaseItem(input: string): ParsedLeaseItem;
146
+ /**
147
+ * Parse amount string into coin (e.g., "1000umfx" -> { amount: "1000", denom: "umfx" })
148
+ * Supports simple denoms (umfx), IBC denoms (ibc/...), and factory denoms (factory/creator/subdenom)
149
+ */
150
+ declare function parseAmount(amountStr: string): {
151
+ amount: string;
152
+ denom: string;
153
+ };
154
+ /**
155
+ * Build transaction result from DeliverTxResponse.
156
+ * Throws ManifestMCPError if the transaction failed on-chain (non-zero code).
157
+ */
158
+ declare function buildTxResult(module: string, subcommand: string, result: Awaited<ReturnType<SigningStargateClient['signAndBroadcast']>>, waitForConfirmation: boolean): CosmosTxResult;
159
+ //#endregion
160
+ export { ExtractedBooleanFlag, ExtractedFlag, MAX_ARGS, MAX_MEMO_LENGTH, MAX_META_HASH_BYTES, ParsedLeaseItem, buildTxResult, bytesToHex, extractBooleanFlag, extractFlag, filterConsumedArgs, parseAmount, parseBigInt, parseBigIntWithCode, parseColonPair, parseHexBytes, parseLeaseItem, parseVoteOption, requireArgs, validateAddress, validateArgsLength, validateMemo };
161
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/transactions/utils.ts"],"mappings":";;;;;cAUa,QAAA;AAAb;AAAA,cAGa,mBAAA;;;;UAKI,aAAA;EALe;EAO9B,KAAA;EAP8B;EAS9B,eAAA;AAAA;;;;;AAYF;;;;;iBAAgB,WAAA,CACd,IAAA,YACA,QAAA,UACA,OAAA,UACA,SAAA,GAAW,oBAAA,GACV,aAAA;;;;UA4Bc,oBAAA;EA5BD;EA8Bd,KAAA;EAFe;EAIf,aAAA;AAAA;;;AAWF;;;;;;iBAAgB,kBAAA,CACd,IAAA,YACA,QAAA,WACC,oBAAA;;;AAYH;iBAAgB,kBAAA,CACd,IAAA,YACA,eAAA;;cAUW,eAAA;;AAAb;;;;;AAYA;;;;iBAAgB,cAAA,CACd,KAAA,UACA,QAAA,UACA,SAAA,UACA,OAAA;;;;iBA2Bc,kBAAA,CAAmB,IAAA,YAAgB,OAAA;;AAAnD;;;;;AAoBA;;;;;iBAAgB,WAAA,CACd,IAAA,YACA,QAAA,UACA,aAAA,YACA,OAAA,UACA,SAAA,GAAW,oBAAA;;;;iBAyBG,eAAA,CACd,OAAA,UACA,SAAA,UACA,cAAA;;;AAHF;iBAkCgB,YAAA,CAAa,IAAA;;;;;;;;AAA7B;;;iBAmBgB,aAAA,CACd,SAAA,UACA,SAAA,UACA,QAAA,UACA,SAAA,GAAW,oBAAA,GACV,UAAA;;AALH;;;iBA8CgB,UAAA,CAAW,KAAA,EAAO,UAAA;;;;;iBAQlB,mBAAA,CACd,KAAA,UACA,SAAA,UACA,SAAA,EAAW,oBAAA;;;;iBAuBG,WAAA,CAAY,KAAA,UAAe,SAAA;;;;;UAQjC,cAAA;EACR,eAAA;EACA,mBAAA;EACA,cAAA;EACA,wBAAA;AAAA;;;;;AAZF;;;iBAsBgB,eAAA,CACd,SAAA,UACA,cAAA,EAAgB,cAAA;;AAtBjB;;UAkDgB,eAAA;EACf,OAAA;EACA,QAAA;EACA,WAAA;AAAA;;;;AAjCF;;;;iBA2CgB,cAAA,CAAe,KAAA,WAAgB,eAAA;;;;;iBAkD/B,WAAA,CAAY,SAAA;EAC1B,MAAA;EACA,KAAA;AAAA;;;;;iBAoCc,aAAA,CACd,MAAA,UACA,UAAA,UACA,MAAA,EAAQ,OAAA,CAAQ,UAAA,CAAW,qBAAA,wBAC3B,mBAAA,YACC,cAAA"}