@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.
- package/.claude/settings.local.json +17 -0
- package/.github/workflows/ci.yml +37 -0
- package/.github/workflows/publish.yml +51 -0
- package/CLAUDE.md +104 -0
- package/LICENSE +21 -0
- package/README.md +298 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js.map +1 -0
- package/dist/client.d.ts +44 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +131 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +98 -0
- package/dist/config.js.map +1 -0
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +123 -0
- package/dist/config.test.js.map +1 -0
- package/dist/cosmos.d.ts +11 -0
- package/dist/cosmos.d.ts.map +1 -0
- package/dist/cosmos.js +112 -0
- package/dist/cosmos.js.map +1 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +382 -0
- package/dist/index.js.map +1 -0
- package/dist/modules.d.ts +30 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +221 -0
- package/dist/modules.js.map +1 -0
- package/dist/modules.test.d.ts +2 -0
- package/dist/modules.test.d.ts.map +1 -0
- package/dist/modules.test.js +100 -0
- package/dist/modules.test.js.map +1 -0
- package/dist/queries/auth.d.ts +6 -0
- package/dist/queries/auth.d.ts.map +1 -0
- package/dist/queries/auth.js +93 -0
- package/dist/queries/auth.js.map +1 -0
- package/dist/queries/bank.d.ts +6 -0
- package/dist/queries/bank.d.ts.map +1 -0
- package/dist/queries/bank.js +83 -0
- package/dist/queries/bank.js.map +1 -0
- package/dist/queries/billing.d.ts +6 -0
- package/dist/queries/billing.d.ts.map +1 -0
- package/dist/queries/billing.js +115 -0
- package/dist/queries/billing.js.map +1 -0
- package/dist/queries/distribution.d.ts +6 -0
- package/dist/queries/distribution.d.ts.map +1 -0
- package/dist/queries/distribution.js +102 -0
- package/dist/queries/distribution.js.map +1 -0
- package/dist/queries/gov.d.ts +6 -0
- package/dist/queries/gov.d.ts.map +1 -0
- package/dist/queries/gov.js +92 -0
- package/dist/queries/gov.js.map +1 -0
- package/dist/queries/index.d.ts +8 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +8 -0
- package/dist/queries/index.js.map +1 -0
- package/dist/queries/manifest.d.ts +10 -0
- package/dist/queries/manifest.d.ts.map +1 -0
- package/dist/queries/manifest.js +14 -0
- package/dist/queries/manifest.js.map +1 -0
- package/dist/queries/staking.d.ts +6 -0
- package/dist/queries/staking.d.ts.map +1 -0
- package/dist/queries/staking.js +141 -0
- package/dist/queries/staking.js.map +1 -0
- package/dist/queries/utils.d.ts +22 -0
- package/dist/queries/utils.d.ts.map +1 -0
- package/dist/queries/utils.js +32 -0
- package/dist/queries/utils.js.map +1 -0
- package/dist/queries/utils.test.d.ts +2 -0
- package/dist/queries/utils.test.d.ts.map +1 -0
- package/dist/queries/utils.test.js +57 -0
- package/dist/queries/utils.test.js.map +1 -0
- package/dist/transactions/bank.d.ts +7 -0
- package/dist/transactions/bank.d.ts.map +1 -0
- package/dist/transactions/bank.js +76 -0
- package/dist/transactions/bank.js.map +1 -0
- package/dist/transactions/billing.d.ts +7 -0
- package/dist/transactions/billing.d.ts.map +1 -0
- package/dist/transactions/billing.js +108 -0
- package/dist/transactions/billing.js.map +1 -0
- package/dist/transactions/distribution.d.ts +7 -0
- package/dist/transactions/distribution.d.ts.map +1 -0
- package/dist/transactions/distribution.js +63 -0
- package/dist/transactions/distribution.js.map +1 -0
- package/dist/transactions/gov.d.ts +7 -0
- package/dist/transactions/gov.d.ts.map +1 -0
- package/dist/transactions/gov.js +132 -0
- package/dist/transactions/gov.js.map +1 -0
- package/dist/transactions/index.d.ts +8 -0
- package/dist/transactions/index.d.ts.map +1 -0
- package/dist/transactions/index.js +8 -0
- package/dist/transactions/index.js.map +1 -0
- package/dist/transactions/manifest.d.ts +7 -0
- package/dist/transactions/manifest.d.ts.map +1 -0
- package/dist/transactions/manifest.js +58 -0
- package/dist/transactions/manifest.js.map +1 -0
- package/dist/transactions/staking.d.ts +7 -0
- package/dist/transactions/staking.d.ts.map +1 -0
- package/dist/transactions/staking.js +72 -0
- package/dist/transactions/staking.js.map +1 -0
- package/dist/transactions/utils.d.ts +40 -0
- package/dist/transactions/utils.d.ts.map +1 -0
- package/dist/transactions/utils.js +114 -0
- package/dist/transactions/utils.js.map +1 -0
- package/dist/transactions/utils.test.d.ts +2 -0
- package/dist/transactions/utils.test.d.ts.map +1 -0
- package/dist/transactions/utils.test.js +121 -0
- package/dist/transactions/utils.test.js.map +1 -0
- package/dist/types.d.ts +110 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -0
- package/dist/wallet/index.d.ts +3 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +2 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/keplr.d.ts.map +1 -0
- package/dist/wallet/keplr.js.map +1 -0
- package/dist/wallet/mnemonic.d.ts +40 -0
- package/dist/wallet/mnemonic.d.ts.map +1 -0
- package/dist/wallet/mnemonic.js +87 -0
- package/dist/wallet/mnemonic.js.map +1 -0
- package/package.json +40 -0
- package/src/client.ts +178 -0
- package/src/config.test.ts +143 -0
- package/src/config.ts +122 -0
- package/src/cosmos.ts +196 -0
- package/src/index.ts +484 -0
- package/src/modules.test.ts +127 -0
- package/src/modules.ts +278 -0
- package/src/queries/auth.ts +136 -0
- package/src/queries/bank.ts +117 -0
- package/src/queries/billing.ts +164 -0
- package/src/queries/distribution.ts +138 -0
- package/src/queries/gov.ts +128 -0
- package/src/queries/index.ts +7 -0
- package/src/queries/staking.ts +190 -0
- package/src/queries/utils.test.ts +61 -0
- package/src/queries/utils.ts +38 -0
- package/src/transactions/bank.ts +110 -0
- package/src/transactions/billing.ts +160 -0
- package/src/transactions/distribution.ts +98 -0
- package/src/transactions/gov.ts +185 -0
- package/src/transactions/index.ts +7 -0
- package/src/transactions/manifest.ts +89 -0
- package/src/transactions/staking.ts +107 -0
- package/src/transactions/utils.test.ts +129 -0
- package/src/transactions/utils.ts +156 -0
- package/src/types.ts +152 -0
- package/src/wallet/index.ts +2 -0
- package/src/wallet/mnemonic.ts +122 -0
- 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"}
|