@manifest-network/manifest-mcp-browser 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 (156) hide show
  1. package/.claude/settings.local.json +17 -0
  2. package/.github/workflows/ci.yml +37 -0
  3. package/.github/workflows/publish.yml +51 -0
  4. package/CLAUDE.md +104 -0
  5. package/LICENSE +21 -0
  6. package/README.md +298 -0
  7. package/dist/browser.d.ts.map +1 -0
  8. package/dist/browser.js.map +1 -0
  9. package/dist/client.d.ts +44 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +131 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/config.d.ts +21 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +98 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/config.test.d.ts +2 -0
  18. package/dist/config.test.d.ts.map +1 -0
  19. package/dist/config.test.js +123 -0
  20. package/dist/config.test.js.map +1 -0
  21. package/dist/cosmos.d.ts +11 -0
  22. package/dist/cosmos.d.ts.map +1 -0
  23. package/dist/cosmos.js +112 -0
  24. package/dist/cosmos.js.map +1 -0
  25. package/dist/index.d.ts +70 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +382 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/modules.d.ts +30 -0
  30. package/dist/modules.d.ts.map +1 -0
  31. package/dist/modules.js +221 -0
  32. package/dist/modules.js.map +1 -0
  33. package/dist/modules.test.d.ts +2 -0
  34. package/dist/modules.test.d.ts.map +1 -0
  35. package/dist/modules.test.js +100 -0
  36. package/dist/modules.test.js.map +1 -0
  37. package/dist/queries/auth.d.ts +6 -0
  38. package/dist/queries/auth.d.ts.map +1 -0
  39. package/dist/queries/auth.js +93 -0
  40. package/dist/queries/auth.js.map +1 -0
  41. package/dist/queries/bank.d.ts +6 -0
  42. package/dist/queries/bank.d.ts.map +1 -0
  43. package/dist/queries/bank.js +83 -0
  44. package/dist/queries/bank.js.map +1 -0
  45. package/dist/queries/billing.d.ts +6 -0
  46. package/dist/queries/billing.d.ts.map +1 -0
  47. package/dist/queries/billing.js +115 -0
  48. package/dist/queries/billing.js.map +1 -0
  49. package/dist/queries/distribution.d.ts +6 -0
  50. package/dist/queries/distribution.d.ts.map +1 -0
  51. package/dist/queries/distribution.js +102 -0
  52. package/dist/queries/distribution.js.map +1 -0
  53. package/dist/queries/gov.d.ts +6 -0
  54. package/dist/queries/gov.d.ts.map +1 -0
  55. package/dist/queries/gov.js +92 -0
  56. package/dist/queries/gov.js.map +1 -0
  57. package/dist/queries/index.d.ts +8 -0
  58. package/dist/queries/index.d.ts.map +1 -0
  59. package/dist/queries/index.js +8 -0
  60. package/dist/queries/index.js.map +1 -0
  61. package/dist/queries/manifest.d.ts +10 -0
  62. package/dist/queries/manifest.d.ts.map +1 -0
  63. package/dist/queries/manifest.js +14 -0
  64. package/dist/queries/manifest.js.map +1 -0
  65. package/dist/queries/staking.d.ts +6 -0
  66. package/dist/queries/staking.d.ts.map +1 -0
  67. package/dist/queries/staking.js +141 -0
  68. package/dist/queries/staking.js.map +1 -0
  69. package/dist/queries/utils.d.ts +22 -0
  70. package/dist/queries/utils.d.ts.map +1 -0
  71. package/dist/queries/utils.js +32 -0
  72. package/dist/queries/utils.js.map +1 -0
  73. package/dist/queries/utils.test.d.ts +2 -0
  74. package/dist/queries/utils.test.d.ts.map +1 -0
  75. package/dist/queries/utils.test.js +57 -0
  76. package/dist/queries/utils.test.js.map +1 -0
  77. package/dist/transactions/bank.d.ts +7 -0
  78. package/dist/transactions/bank.d.ts.map +1 -0
  79. package/dist/transactions/bank.js +76 -0
  80. package/dist/transactions/bank.js.map +1 -0
  81. package/dist/transactions/billing.d.ts +7 -0
  82. package/dist/transactions/billing.d.ts.map +1 -0
  83. package/dist/transactions/billing.js +108 -0
  84. package/dist/transactions/billing.js.map +1 -0
  85. package/dist/transactions/distribution.d.ts +7 -0
  86. package/dist/transactions/distribution.d.ts.map +1 -0
  87. package/dist/transactions/distribution.js +63 -0
  88. package/dist/transactions/distribution.js.map +1 -0
  89. package/dist/transactions/gov.d.ts +7 -0
  90. package/dist/transactions/gov.d.ts.map +1 -0
  91. package/dist/transactions/gov.js +132 -0
  92. package/dist/transactions/gov.js.map +1 -0
  93. package/dist/transactions/index.d.ts +8 -0
  94. package/dist/transactions/index.d.ts.map +1 -0
  95. package/dist/transactions/index.js +8 -0
  96. package/dist/transactions/index.js.map +1 -0
  97. package/dist/transactions/manifest.d.ts +7 -0
  98. package/dist/transactions/manifest.d.ts.map +1 -0
  99. package/dist/transactions/manifest.js +58 -0
  100. package/dist/transactions/manifest.js.map +1 -0
  101. package/dist/transactions/staking.d.ts +7 -0
  102. package/dist/transactions/staking.d.ts.map +1 -0
  103. package/dist/transactions/staking.js +72 -0
  104. package/dist/transactions/staking.js.map +1 -0
  105. package/dist/transactions/utils.d.ts +40 -0
  106. package/dist/transactions/utils.d.ts.map +1 -0
  107. package/dist/transactions/utils.js +114 -0
  108. package/dist/transactions/utils.js.map +1 -0
  109. package/dist/transactions/utils.test.d.ts +2 -0
  110. package/dist/transactions/utils.test.d.ts.map +1 -0
  111. package/dist/transactions/utils.test.js +121 -0
  112. package/dist/transactions/utils.test.js.map +1 -0
  113. package/dist/types.d.ts +110 -0
  114. package/dist/types.d.ts.map +1 -0
  115. package/dist/types.js +55 -0
  116. package/dist/types.js.map +1 -0
  117. package/dist/wallet/index.d.ts +3 -0
  118. package/dist/wallet/index.d.ts.map +1 -0
  119. package/dist/wallet/index.js +2 -0
  120. package/dist/wallet/index.js.map +1 -0
  121. package/dist/wallet/keplr.d.ts.map +1 -0
  122. package/dist/wallet/keplr.js.map +1 -0
  123. package/dist/wallet/mnemonic.d.ts +40 -0
  124. package/dist/wallet/mnemonic.d.ts.map +1 -0
  125. package/dist/wallet/mnemonic.js +87 -0
  126. package/dist/wallet/mnemonic.js.map +1 -0
  127. package/package.json +40 -0
  128. package/src/client.ts +178 -0
  129. package/src/config.test.ts +143 -0
  130. package/src/config.ts +122 -0
  131. package/src/cosmos.ts +196 -0
  132. package/src/index.ts +484 -0
  133. package/src/modules.test.ts +127 -0
  134. package/src/modules.ts +278 -0
  135. package/src/queries/auth.ts +136 -0
  136. package/src/queries/bank.ts +117 -0
  137. package/src/queries/billing.ts +164 -0
  138. package/src/queries/distribution.ts +138 -0
  139. package/src/queries/gov.ts +128 -0
  140. package/src/queries/index.ts +7 -0
  141. package/src/queries/staking.ts +190 -0
  142. package/src/queries/utils.test.ts +61 -0
  143. package/src/queries/utils.ts +38 -0
  144. package/src/transactions/bank.ts +110 -0
  145. package/src/transactions/billing.ts +160 -0
  146. package/src/transactions/distribution.ts +98 -0
  147. package/src/transactions/gov.ts +185 -0
  148. package/src/transactions/index.ts +7 -0
  149. package/src/transactions/manifest.ts +89 -0
  150. package/src/transactions/staking.ts +107 -0
  151. package/src/transactions/utils.test.ts +129 -0
  152. package/src/transactions/utils.ts +156 -0
  153. package/src/types.ts +152 -0
  154. package/src/wallet/index.ts +2 -0
  155. package/src/wallet/mnemonic.ts +122 -0
  156. package/tsconfig.json +23 -0
@@ -0,0 +1,108 @@
1
+ import { liftedinit } from '@manifest-network/manifestjs';
2
+ import { ManifestMCPError, ManifestMCPErrorCode } from '../types.js';
3
+ import { parseAmount, buildTxResult, parseBigInt, validateAddress, validateArgsLength } from './utils.js';
4
+ import { getSubcommandUsage } from '../modules.js';
5
+ const { MsgFundCredit, MsgCreateLease, MsgCloseLease, MsgWithdraw } = liftedinit.billing.v1;
6
+ /**
7
+ * Route billing transaction to appropriate handler
8
+ */
9
+ export async function routeBillingTransaction(client, senderAddress, subcommand, args, _config, waitForConfirmation) {
10
+ validateArgsLength(args, 'billing transaction');
11
+ switch (subcommand) {
12
+ case 'fund-credit': {
13
+ if (args.length < 2) {
14
+ const usage = getSubcommandUsage('tx', 'billing', 'fund-credit');
15
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `fund-credit requires tenant-address and amount arguments. Received ${args.length} argument(s): [${args.map(a => `"${a}"`).join(', ')}]. Usage: fund-credit ${usage || '<tenant-address> <amount>'}`, { receivedArgs: args, expectedArgs: ['tenant-address', 'amount'], usage });
16
+ }
17
+ const [tenant, amountStr] = args;
18
+ validateAddress(tenant, 'tenant address');
19
+ const { amount, denom } = parseAmount(amountStr);
20
+ const msg = {
21
+ typeUrl: '/liftedinit.billing.v1.MsgFundCredit',
22
+ value: MsgFundCredit.fromPartial({
23
+ sender: senderAddress,
24
+ tenant,
25
+ amount: { denom, amount },
26
+ }),
27
+ };
28
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
29
+ return buildTxResult('billing', 'fund-credit', result, waitForConfirmation);
30
+ }
31
+ case 'create-lease': {
32
+ if (args.length < 1) {
33
+ const usage = getSubcommandUsage('tx', 'billing', 'create-lease');
34
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `create-lease requires at least one sku-uuid:quantity pair. Usage: create-lease ${usage || '<sku-uuid:quantity>...'}`, { usage });
35
+ }
36
+ // Parse items (format: sku-uuid:quantity ...)
37
+ const items = args.map((arg) => {
38
+ const [skuUuid, quantityStr] = arg.split(':');
39
+ if (!skuUuid || !quantityStr) {
40
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid lease item format: ${arg}. Expected format: sku-uuid:quantity`);
41
+ }
42
+ return { skuUuid, quantity: parseBigInt(quantityStr, 'quantity') };
43
+ });
44
+ const msg = {
45
+ typeUrl: '/liftedinit.billing.v1.MsgCreateLease',
46
+ value: MsgCreateLease.fromPartial({
47
+ tenant: senderAddress,
48
+ items,
49
+ }),
50
+ };
51
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
52
+ return buildTxResult('billing', 'create-lease', result, waitForConfirmation);
53
+ }
54
+ case 'close-lease': {
55
+ if (args.length < 1) {
56
+ const usage = getSubcommandUsage('tx', 'billing', 'close-lease');
57
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `close-lease requires at least one lease-uuid argument. Usage: close-lease ${usage || '<lease-uuid>...'}`, { usage });
58
+ }
59
+ // MsgCloseLease can close multiple leases at once
60
+ const leaseUuids = args;
61
+ const reason = ''; // Optional reason, could be added as a flag later
62
+ const msg = {
63
+ typeUrl: '/liftedinit.billing.v1.MsgCloseLease',
64
+ value: MsgCloseLease.fromPartial({
65
+ sender: senderAddress,
66
+ leaseUuids,
67
+ reason,
68
+ }),
69
+ };
70
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
71
+ return buildTxResult('billing', 'close-lease', result, waitForConfirmation);
72
+ }
73
+ case 'withdraw': {
74
+ if (args.length < 1) {
75
+ const usage = getSubcommandUsage('tx', 'billing', 'withdraw');
76
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `withdraw requires at least one lease-uuid argument or provider-uuid with --provider flag. Usage: withdraw ${usage || '<lease-uuid>... OR --provider <provider-uuid>'}`, { usage });
77
+ }
78
+ // Check if using provider-wide withdrawal
79
+ const providerFlagIndex = args.indexOf('--provider');
80
+ let leaseUuids = [];
81
+ let providerUuid = '';
82
+ if (providerFlagIndex !== -1) {
83
+ // Provider-wide withdrawal mode
84
+ providerUuid = args[providerFlagIndex + 1] || '';
85
+ if (!providerUuid) {
86
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'withdraw with --provider flag requires provider-uuid argument');
87
+ }
88
+ }
89
+ else {
90
+ // Lease-specific withdrawal mode
91
+ leaseUuids = args;
92
+ }
93
+ const msg = {
94
+ typeUrl: '/liftedinit.billing.v1.MsgWithdraw',
95
+ value: MsgWithdraw.fromPartial({
96
+ sender: senderAddress,
97
+ leaseUuids,
98
+ providerUuid,
99
+ }),
100
+ };
101
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
102
+ return buildTxResult('billing', 'withdraw', result, waitForConfirmation);
103
+ }
104
+ default:
105
+ throw new ManifestMCPError(ManifestMCPErrorCode.UNSUPPORTED_TX, `Unsupported billing transaction subcommand: ${subcommand}`, { availableSubcommands: ['fund-credit', 'create-lease', 'close-lease', 'withdraw'] });
106
+ }
107
+ }
108
+ //# sourceMappingURL=billing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/transactions/billing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SigningStargateClient } from '@cosmjs/stargate';
2
+ import { CosmosTxResult, ManifestMCPConfig } from '../types.js';
3
+ /**
4
+ * Route distribution transaction to appropriate handler
5
+ */
6
+ export declare function routeDistributionTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], _config: ManifestMCPConfig, waitForConfirmation: boolean): Promise<CosmosTxResult>;
7
+ //# sourceMappingURL=distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/transactions/distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAA0C,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKxG;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,EAC1B,mBAAmB,EAAE,OAAO,GAC3B,OAAO,CAAC,cAAc,CAAC,CAgFzB"}
@@ -0,0 +1,63 @@
1
+ import { cosmos } from '@manifest-network/manifestjs';
2
+ import { ManifestMCPError, ManifestMCPErrorCode } from '../types.js';
3
+ import { parseAmount, buildTxResult, validateAddress, validateArgsLength } from './utils.js';
4
+ const { MsgWithdrawDelegatorReward, MsgSetWithdrawAddress, MsgFundCommunityPool } = cosmos.distribution.v1beta1;
5
+ /**
6
+ * Route distribution transaction to appropriate handler
7
+ */
8
+ export async function routeDistributionTransaction(client, senderAddress, subcommand, args, _config, waitForConfirmation) {
9
+ validateArgsLength(args, 'distribution transaction');
10
+ switch (subcommand) {
11
+ case 'withdraw-rewards': {
12
+ if (args.length < 1) {
13
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'withdraw-rewards requires validator-address argument');
14
+ }
15
+ const [validatorAddress] = args;
16
+ validateAddress(validatorAddress, 'validator address');
17
+ const msg = {
18
+ typeUrl: '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward',
19
+ value: MsgWithdrawDelegatorReward.fromPartial({
20
+ delegatorAddress: senderAddress,
21
+ validatorAddress,
22
+ }),
23
+ };
24
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
25
+ return buildTxResult('distribution', 'withdraw-rewards', result, waitForConfirmation);
26
+ }
27
+ case 'set-withdraw-addr': {
28
+ if (args.length < 1) {
29
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'set-withdraw-addr requires withdraw-address argument');
30
+ }
31
+ const [withdrawAddress] = args;
32
+ validateAddress(withdrawAddress, 'withdraw address');
33
+ const msg = {
34
+ typeUrl: '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress',
35
+ value: MsgSetWithdrawAddress.fromPartial({
36
+ delegatorAddress: senderAddress,
37
+ withdrawAddress,
38
+ }),
39
+ };
40
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
41
+ return buildTxResult('distribution', 'set-withdraw-addr', result, waitForConfirmation);
42
+ }
43
+ case 'fund-community-pool': {
44
+ if (args.length < 1) {
45
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'fund-community-pool requires amount argument');
46
+ }
47
+ const [amountStr] = args;
48
+ const { amount, denom } = parseAmount(amountStr);
49
+ const msg = {
50
+ typeUrl: '/cosmos.distribution.v1beta1.MsgFundCommunityPool',
51
+ value: MsgFundCommunityPool.fromPartial({
52
+ depositor: senderAddress,
53
+ amount: [{ denom, amount }],
54
+ }),
55
+ };
56
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
57
+ return buildTxResult('distribution', 'fund-community-pool', result, waitForConfirmation);
58
+ }
59
+ default:
60
+ throw new ManifestMCPError(ManifestMCPErrorCode.UNSUPPORTED_TX, `Unsupported distribution transaction subcommand: ${subcommand}`, { availableSubcommands: ['withdraw-rewards', 'set-withdraw-addr', 'fund-community-pool'] });
61
+ }
62
+ }
63
+ //# sourceMappingURL=distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/transactions/distribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SigningStargateClient } from '@cosmjs/stargate';
2
+ import { CosmosTxResult, ManifestMCPConfig } from '../types.js';
3
+ /**
4
+ * Route gov transaction to appropriate handler
5
+ */
6
+ export declare function routeGovTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], _config: ManifestMCPConfig, waitForConfirmation: boolean): Promise<CosmosTxResult>;
7
+ //# sourceMappingURL=gov.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gov.d.ts","sourceRoot":"","sources":["../../src/transactions/gov.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAA0C,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA8DxG;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,EAC1B,mBAAmB,EAAE,OAAO,GAC3B,OAAO,CAAC,cAAc,CAAC,CA8GzB"}
@@ -0,0 +1,132 @@
1
+ import { cosmos } from '@manifest-network/manifestjs';
2
+ import { ManifestMCPError, ManifestMCPErrorCode } from '../types.js';
3
+ import { parseAmount, buildTxResult, parseBigInt, validateArgsLength } from './utils.js';
4
+ const { MsgVote, MsgDeposit, MsgVoteWeighted, VoteOption } = cosmos.gov.v1;
5
+ /**
6
+ * Parse a decimal weight string to an 18-decimal fixed-point string.
7
+ * Uses string manipulation to avoid floating-point precision loss.
8
+ *
9
+ * @param weightStr - Decimal string like "0.5", "0.333333333333333333", "1"
10
+ * @returns String representation of weight * 10^18
11
+ */
12
+ function parseWeightToFixed18(weightStr) {
13
+ // Validate format: must be a valid decimal number
14
+ if (!/^\d+(\.\d+)?$/.test(weightStr)) {
15
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid weight format: "${weightStr}". Expected decimal like "0.5" or "0.333333333333333333"`);
16
+ }
17
+ const [intPart, decPart = ''] = weightStr.split('.');
18
+ // Pad or truncate decimal part to exactly 18 digits
19
+ const paddedDecimal = decPart.padEnd(18, '0').slice(0, 18);
20
+ // Combine integer and decimal parts
21
+ const combined = intPart + paddedDecimal;
22
+ // Remove leading zeros but keep at least one digit
23
+ const result = combined.replace(/^0+/, '') || '0';
24
+ return result;
25
+ }
26
+ /**
27
+ * Parse vote option string to VoteOption enum value from manifestjs
28
+ */
29
+ function parseVoteOption(optionStr) {
30
+ const option = optionStr.toLowerCase();
31
+ switch (option) {
32
+ case 'yes':
33
+ case '1':
34
+ return VoteOption.VOTE_OPTION_YES;
35
+ case 'abstain':
36
+ case '2':
37
+ return VoteOption.VOTE_OPTION_ABSTAIN;
38
+ case 'no':
39
+ case '3':
40
+ return VoteOption.VOTE_OPTION_NO;
41
+ case 'no_with_veto':
42
+ case 'nowithveto':
43
+ case '4':
44
+ return VoteOption.VOTE_OPTION_NO_WITH_VETO;
45
+ default:
46
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid vote option: ${optionStr}. Expected: yes, no, abstain, or no_with_veto`);
47
+ }
48
+ }
49
+ /**
50
+ * Route gov transaction to appropriate handler
51
+ */
52
+ export async function routeGovTransaction(client, senderAddress, subcommand, args, _config, waitForConfirmation) {
53
+ validateArgsLength(args, 'gov transaction');
54
+ switch (subcommand) {
55
+ case 'vote': {
56
+ if (args.length < 2) {
57
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'vote requires proposal-id and option arguments');
58
+ }
59
+ const [proposalIdStr, optionStr] = args;
60
+ const proposalId = parseBigInt(proposalIdStr, 'proposal-id');
61
+ const option = parseVoteOption(optionStr);
62
+ // Extract optional metadata from args
63
+ let metadata = '';
64
+ const metadataIndex = args.indexOf('--metadata');
65
+ if (metadataIndex !== -1 && args[metadataIndex + 1]) {
66
+ metadata = args[metadataIndex + 1];
67
+ }
68
+ const msg = {
69
+ typeUrl: '/cosmos.gov.v1.MsgVote',
70
+ value: MsgVote.fromPartial({
71
+ proposalId,
72
+ voter: senderAddress,
73
+ option,
74
+ metadata,
75
+ }),
76
+ };
77
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
78
+ return buildTxResult('gov', 'vote', result, waitForConfirmation);
79
+ }
80
+ case 'weighted-vote': {
81
+ if (args.length < 2) {
82
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'weighted-vote requires proposal-id and options arguments (format: yes=0.5,no=0.5)');
83
+ }
84
+ const [proposalIdStr, optionsStr] = args;
85
+ const proposalId = parseBigInt(proposalIdStr, 'proposal-id');
86
+ // Parse weighted options (format: yes=0.5,no=0.3,abstain=0.2)
87
+ const options = optionsStr.split(',').map((opt) => {
88
+ const [optName, weightStr] = opt.split('=');
89
+ if (!optName || !weightStr) {
90
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid weighted vote format: ${opt}. Expected format: option=weight`);
91
+ }
92
+ const option = parseVoteOption(optName);
93
+ // Weight is a decimal string (e.g., "0.5" -> "500000000000000000" for 18 decimals)
94
+ // Use string-based conversion to avoid floating-point precision loss
95
+ const weight = parseWeightToFixed18(weightStr);
96
+ return { option, weight };
97
+ });
98
+ const msg = {
99
+ typeUrl: '/cosmos.gov.v1.MsgVoteWeighted',
100
+ value: MsgVoteWeighted.fromPartial({
101
+ proposalId,
102
+ voter: senderAddress,
103
+ options,
104
+ metadata: '',
105
+ }),
106
+ };
107
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
108
+ return buildTxResult('gov', 'weighted-vote', result, waitForConfirmation);
109
+ }
110
+ case 'deposit': {
111
+ if (args.length < 2) {
112
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'deposit requires proposal-id and amount arguments');
113
+ }
114
+ const [proposalIdStr, amountStr] = args;
115
+ const proposalId = parseBigInt(proposalIdStr, 'proposal-id');
116
+ const { amount, denom } = parseAmount(amountStr);
117
+ const msg = {
118
+ typeUrl: '/cosmos.gov.v1.MsgDeposit',
119
+ value: MsgDeposit.fromPartial({
120
+ proposalId,
121
+ depositor: senderAddress,
122
+ amount: [{ denom, amount }],
123
+ }),
124
+ };
125
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
126
+ return buildTxResult('gov', 'deposit', result, waitForConfirmation);
127
+ }
128
+ default:
129
+ throw new ManifestMCPError(ManifestMCPErrorCode.UNSUPPORTED_TX, `Unsupported gov transaction subcommand: ${subcommand}`, { availableSubcommands: ['vote', 'weighted-vote', 'deposit'] });
130
+ }
131
+ }
132
+ //# sourceMappingURL=gov.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gov.js","sourceRoot":"","sources":["../../src/transactions/gov.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { parseAmount, buildTxResult, parseBigInt } from './utils.js';
2
+ export { routeBankTransaction } from './bank.js';
3
+ export { routeStakingTransaction } from './staking.js';
4
+ export { routeDistributionTransaction } from './distribution.js';
5
+ export { routeGovTransaction } from './gov.js';
6
+ export { routeBillingTransaction } from './billing.js';
7
+ export { routeManifestTransaction } from './manifest.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transactions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { parseAmount, buildTxResult, parseBigInt } from './utils.js';
2
+ export { routeBankTransaction } from './bank.js';
3
+ export { routeStakingTransaction } from './staking.js';
4
+ export { routeDistributionTransaction } from './distribution.js';
5
+ export { routeGovTransaction } from './gov.js';
6
+ export { routeBillingTransaction } from './billing.js';
7
+ export { routeManifestTransaction } from './manifest.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transactions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { SigningStargateClient } from '@cosmjs/stargate';
2
+ import { CosmosTxResult, ManifestMCPConfig } from '../types.js';
3
+ /**
4
+ * Route manifest transaction to appropriate handler
5
+ */
6
+ export declare function routeManifestTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], _config: ManifestMCPConfig, waitForConfirmation: boolean): Promise<CosmosTxResult>;
7
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/transactions/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAA0C,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKxG;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,EAC1B,mBAAmB,EAAE,OAAO,GAC3B,OAAO,CAAC,cAAc,CAAC,CAuEzB"}
@@ -0,0 +1,58 @@
1
+ import { liftedinit } from '@manifest-network/manifestjs';
2
+ import { ManifestMCPError, ManifestMCPErrorCode } from '../types.js';
3
+ import { parseAmount, buildTxResult, validateAddress, validateArgsLength } from './utils.js';
4
+ const { MsgPayout, MsgBurnHeldBalance } = liftedinit.manifest.v1;
5
+ /**
6
+ * Route manifest transaction to appropriate handler
7
+ */
8
+ export async function routeManifestTransaction(client, senderAddress, subcommand, args, _config, waitForConfirmation) {
9
+ validateArgsLength(args, 'manifest transaction');
10
+ switch (subcommand) {
11
+ case 'payout': {
12
+ if (args.length < 1) {
13
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'payout requires at least one address:amount pair');
14
+ }
15
+ // Parse payout pairs (format: address:amount ...)
16
+ const payoutPairs = args.map((arg) => {
17
+ const [address, amountStr] = arg.split(':');
18
+ if (!address || !amountStr) {
19
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, `Invalid payout pair format: ${arg}. Expected format: address:amount`);
20
+ }
21
+ validateAddress(address, 'payout recipient address');
22
+ const { amount, denom } = parseAmount(amountStr);
23
+ return { address, coin: { denom, amount } };
24
+ });
25
+ const msg = {
26
+ typeUrl: '/liftedinit.manifest.v1.MsgPayout',
27
+ value: MsgPayout.fromPartial({
28
+ authority: senderAddress,
29
+ payoutPairs,
30
+ }),
31
+ };
32
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
33
+ return buildTxResult('manifest', 'payout', result, waitForConfirmation);
34
+ }
35
+ case 'burn-held-balance': {
36
+ if (args.length < 1) {
37
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'burn-held-balance requires at least one amount argument');
38
+ }
39
+ // Parse coins to burn
40
+ const burnCoins = args.map((amountStr) => {
41
+ const { amount, denom } = parseAmount(amountStr);
42
+ return { denom, amount };
43
+ });
44
+ const msg = {
45
+ typeUrl: '/liftedinit.manifest.v1.MsgBurnHeldBalance',
46
+ value: MsgBurnHeldBalance.fromPartial({
47
+ authority: senderAddress,
48
+ burnCoins,
49
+ }),
50
+ };
51
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
52
+ return buildTxResult('manifest', 'burn-held-balance', result, waitForConfirmation);
53
+ }
54
+ default:
55
+ throw new ManifestMCPError(ManifestMCPErrorCode.UNSUPPORTED_TX, `Unsupported manifest transaction subcommand: ${subcommand}`, { availableSubcommands: ['payout', 'burn-held-balance'] });
56
+ }
57
+ }
58
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/transactions/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SigningStargateClient } from '@cosmjs/stargate';
2
+ import { CosmosTxResult, ManifestMCPConfig } from '../types.js';
3
+ /**
4
+ * Route staking transaction to appropriate handler
5
+ */
6
+ export declare function routeStakingTransaction(client: SigningStargateClient, senderAddress: string, subcommand: string, args: string[], _config: ManifestMCPConfig, waitForConfirmation: boolean): Promise<CosmosTxResult>;
7
+ //# sourceMappingURL=staking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.d.ts","sourceRoot":"","sources":["../../src/transactions/staking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAA0C,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKxG;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,EAC1B,mBAAmB,EAAE,OAAO,GAC3B,OAAO,CAAC,cAAc,CAAC,CAyFzB"}
@@ -0,0 +1,72 @@
1
+ import { cosmos } from '@manifest-network/manifestjs';
2
+ import { ManifestMCPError, ManifestMCPErrorCode } from '../types.js';
3
+ import { parseAmount, buildTxResult, validateAddress, validateArgsLength } from './utils.js';
4
+ const { MsgDelegate, MsgUndelegate, MsgBeginRedelegate } = cosmos.staking.v1beta1;
5
+ /**
6
+ * Route staking transaction to appropriate handler
7
+ */
8
+ export async function routeStakingTransaction(client, senderAddress, subcommand, args, _config, waitForConfirmation) {
9
+ validateArgsLength(args, 'staking transaction');
10
+ switch (subcommand) {
11
+ case 'delegate': {
12
+ if (args.length < 2) {
13
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'delegate requires validator-address and amount arguments');
14
+ }
15
+ const [validatorAddress, amountStr] = args;
16
+ validateAddress(validatorAddress, 'validator address');
17
+ const { amount, denom } = parseAmount(amountStr);
18
+ const msg = {
19
+ typeUrl: '/cosmos.staking.v1beta1.MsgDelegate',
20
+ value: MsgDelegate.fromPartial({
21
+ delegatorAddress: senderAddress,
22
+ validatorAddress,
23
+ amount: { denom, amount },
24
+ }),
25
+ };
26
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
27
+ return buildTxResult('staking', 'delegate', result, waitForConfirmation);
28
+ }
29
+ case 'unbond':
30
+ case 'undelegate': {
31
+ if (args.length < 2) {
32
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'unbond requires validator-address and amount arguments');
33
+ }
34
+ const [validatorAddress, amountStr] = args;
35
+ validateAddress(validatorAddress, 'validator address');
36
+ const { amount, denom } = parseAmount(amountStr);
37
+ const msg = {
38
+ typeUrl: '/cosmos.staking.v1beta1.MsgUndelegate',
39
+ value: MsgUndelegate.fromPartial({
40
+ delegatorAddress: senderAddress,
41
+ validatorAddress,
42
+ amount: { denom, amount },
43
+ }),
44
+ };
45
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
46
+ return buildTxResult('staking', 'unbond', result, waitForConfirmation);
47
+ }
48
+ case 'redelegate': {
49
+ if (args.length < 3) {
50
+ throw new ManifestMCPError(ManifestMCPErrorCode.TX_FAILED, 'redelegate requires src-validator, dst-validator, and amount arguments');
51
+ }
52
+ const [srcValidatorAddress, dstValidatorAddress, amountStr] = args;
53
+ validateAddress(srcValidatorAddress, 'source validator address');
54
+ validateAddress(dstValidatorAddress, 'destination validator address');
55
+ const { amount, denom } = parseAmount(amountStr);
56
+ const msg = {
57
+ typeUrl: '/cosmos.staking.v1beta1.MsgBeginRedelegate',
58
+ value: MsgBeginRedelegate.fromPartial({
59
+ delegatorAddress: senderAddress,
60
+ validatorSrcAddress: srcValidatorAddress,
61
+ validatorDstAddress: dstValidatorAddress,
62
+ amount: { denom, amount },
63
+ }),
64
+ };
65
+ const result = await client.signAndBroadcast(senderAddress, [msg], 'auto');
66
+ return buildTxResult('staking', 'redelegate', result, waitForConfirmation);
67
+ }
68
+ default:
69
+ throw new ManifestMCPError(ManifestMCPErrorCode.UNSUPPORTED_TX, `Unsupported staking transaction subcommand: ${subcommand}`, { availableSubcommands: ['delegate', 'unbond', 'redelegate'] });
70
+ }
71
+ }
72
+ //# sourceMappingURL=staking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../src/transactions/staking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { SigningStargateClient } from '@cosmjs/stargate';
2
+ import { ManifestMCPErrorCode, CosmosTxResult } from '../types.js';
3
+ /** Maximum number of arguments allowed */
4
+ export declare const MAX_ARGS = 100;
5
+ /** Maximum memo length (Cosmos SDK default) */
6
+ export declare const MAX_MEMO_LENGTH = 256;
7
+ /**
8
+ * Validate args array length
9
+ */
10
+ export declare function validateArgsLength(args: string[], context: string): void;
11
+ /**
12
+ * Validate a bech32 address using @cosmjs/encoding
13
+ */
14
+ export declare function validateAddress(address: string, fieldName: string, expectedPrefix?: string): void;
15
+ /**
16
+ * Validate memo length
17
+ */
18
+ export declare function validateMemo(memo: string): void;
19
+ /**
20
+ * Safely parse a string to BigInt with proper error handling and configurable error code.
21
+ * This is the base implementation used by both transaction and query utilities.
22
+ */
23
+ export declare function parseBigIntWithCode(value: string, fieldName: string, errorCode: ManifestMCPErrorCode): bigint;
24
+ /**
25
+ * Safely parse a string to BigInt with proper error handling (for transactions)
26
+ */
27
+ export declare function parseBigInt(value: string, fieldName: string): bigint;
28
+ /**
29
+ * Parse amount string into coin (e.g., "1000umfx" -> { amount: "1000", denom: "umfx" })
30
+ * Supports simple denoms (umfx), IBC denoms (ibc/...), and factory denoms (factory/creator/subdenom)
31
+ */
32
+ export declare function parseAmount(amountStr: string): {
33
+ amount: string;
34
+ denom: string;
35
+ };
36
+ /**
37
+ * Build transaction result from DeliverTxResponse
38
+ */
39
+ export declare function buildTxResult(module: string, subcommand: string, result: Awaited<ReturnType<SigningStargateClient['signAndBroadcast']>>, waitForConfirmation: boolean): CosmosTxResult;
40
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/transactions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAoB,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,+CAA+C;AAC/C,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAOxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAyBjG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAO/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,oBAAoB,GAC9B,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAyBhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACtE,mBAAmB,EAAE,OAAO,GAC3B,cAAc,CAkBhB"}