@vultisig/core-chain 2.17.10 → 2.18.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/CHANGELOG.md +18 -0
- package/dist/chains/cosmos/cosmosGasLimitRecord.d.ts.map +1 -1
- package/dist/chains/cosmos/cosmosGasLimitRecord.js +13 -9
- package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
- package/dist/chains/cosmos/gas.js +1 -1
- package/dist/chains/cosmos/gas.js.map +1 -1
- package/dist/chains/cosmos/qbtc/governance/getQbtcGovParams.d.ts +8 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcGovParams.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcGovParams.js +31 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcGovParams.js.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcMyVote.d.ts +12 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcMyVote.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcMyVote.js +32 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcMyVote.js.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.d.ts +4 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.js +8 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.js.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposals.d.ts +7 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposals.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposals.js +13 -0
- package/dist/chains/cosmos/qbtc/governance/getQbtcProposals.js.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/parseGov.d.ts +26 -0
- package/dist/chains/cosmos/qbtc/governance/parseGov.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/parseGov.js +46 -0
- package/dist/chains/cosmos/qbtc/governance/parseGov.js.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/proposal.d.ts +64 -0
- package/dist/chains/cosmos/qbtc/governance/proposal.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/proposal.js +39 -0
- package/dist/chains/cosmos/qbtc/governance/proposal.js.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/voteOption.d.ts +17 -0
- package/dist/chains/cosmos/qbtc/governance/voteOption.d.ts.map +1 -0
- package/dist/chains/cosmos/qbtc/governance/voteOption.js +38 -0
- package/dist/chains/cosmos/qbtc/governance/voteOption.js.map +1 -0
- package/package.json +36 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @vultisig/core-chain
|
|
2
2
|
|
|
3
|
+
## 2.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#888](https://github.com/vultisig/vultisig-sdk/pull/888) [`b61410e`](https://github.com/vultisig/vultisig-sdk/commit/b61410ef8b1d0b1baa7d249440176df23bfa471c) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Add QBTC governance support under `chains/cosmos/qbtc/governance/`: REST clients for the Cosmos `x/gov v1` proposals, tally, votes and params endpoints, plus the domain types and wire parsers. Mirrors the existing `qbtc/claim` split and is consumed by the wallet's QBTC governance UI.
|
|
8
|
+
|
|
9
|
+
## 2.17.11
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#884](https://github.com/vultisig/vultisig-sdk/pull/884) [`33e663c`](https://github.com/vultisig/vultisig-sdk/commit/33e663ce6ba519cacb7dae5befebe9e3e530b4d7) Thanks [@gomesalexandre](https://github.com/gomesalexandre)! - Lower `cosmosGasRecord[TerraClassic]` from 100 LUNC to 20 LUNC.
|
|
14
|
+
|
|
15
|
+
Real on-chain MsgSend cost on columbus-5: ~400k gas x 28.325 uluna/gas ~ 11.33 LUNC.
|
|
16
|
+
The 100 LUNC floor was blocking sends from wallets with 20-100 LUNC balance even when
|
|
17
|
+
the transaction would have succeeded. The new 20 LUNC floor gives a ~1.77x buffer.
|
|
18
|
+
|
|
19
|
+
Companion to vultisig/agent-backend#1409 and vultisig/mcp-ts#594.
|
|
20
|
+
|
|
3
21
|
## 2.17.10
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosGasLimitRecord.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/cosmosGasLimitRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,WAAW,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAEtF,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAqBxD,eAAO,MAAM,iBAAiB,GAAI,MAAM,OAAO,CAAC,WAAW,CAAC,KAAG,MAM9D,CAAA;
|
|
1
|
+
{"version":3,"file":"cosmosGasLimitRecord.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/cosmosGasLimitRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,WAAW,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAEtF,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAqBxD,eAAO,MAAM,iBAAiB,GAAI,MAAM,OAAO,CAAC,WAAW,CAAC,KAAG,MAM9D,CAAA;AAmCD,KAAK,6BAA6B,GAAG;IACnC,KAAK,EAAE,qBAAqB,CAAA;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,GAAI,qBAAyB,6BAA6B,KAAG,MAejG,CAAA"}
|
|
@@ -36,12 +36,15 @@ export const getCosmosGasLimit = (coin) => {
|
|
|
36
36
|
* writes that the standard SDK gas estimate omits. In practice this adds
|
|
37
37
|
* ~200-800 gas on top of the base delegate cost (~2M), so a 2M limit fails
|
|
38
38
|
* consistently ("out of gas in location: ValuePerByte; gasWanted: 2000000,
|
|
39
|
-
* gasUsed: 200X"). 3M
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* [TerraClassic]
|
|
44
|
-
*
|
|
39
|
+
* gasUsed: 200X"). 3M needs ~84.97 LUNC at sign time (3M * 28.325 uluna/gas).
|
|
40
|
+
* That fee is supplied by the CONSUMER's separate per-msg staking fee
|
|
41
|
+
* (mcp-ts COSMOS_STAKING_FEE_PER_MSG_BASE_UNITS[TerraClassic] = 100 LUNC/msg,
|
|
42
|
+
* written into the signAmino / signDirect fee) — NOT by
|
|
43
|
+
* `cosmosGasRecord[TerraClassic]`, which is the native MsgSend fee floor
|
|
44
|
+
* (20 LUNC) and never governs staking. The msgCount scaling is disabled for
|
|
45
|
+
* TerraClassic: at msgCount>=2, scaled gasWanted would push the required fee
|
|
46
|
+
* above the 100 LUNC per-msg staking fee, causing node rejection. Columbus-5
|
|
47
|
+
* callers must split multi-validator claims into separate txs.
|
|
45
48
|
*/
|
|
46
49
|
const cosmosStakingGasLimitRecord = {
|
|
47
50
|
[Chain.Cosmos]: 350000n,
|
|
@@ -68,9 +71,10 @@ export const getCosmosStakingGasLimit = ({ chain, msgCount = 1 }) => {
|
|
|
68
71
|
throw new Error(`getCosmosStakingGasLimit: msgCount must be a non-negative integer, got ${msgCount}`);
|
|
69
72
|
}
|
|
70
73
|
const base = cosmosStakingGasLimitRecord[chain];
|
|
71
|
-
// TerraClassic: fee
|
|
72
|
-
// Scaling would push
|
|
73
|
-
// policy keeps the tx
|
|
74
|
+
// TerraClassic: staking-fee cap (see comment on cosmosStakingGasLimitRecord).
|
|
75
|
+
// Scaling would push the required fee above the consumer's 100 LUNC per-msg
|
|
76
|
+
// staking fee at msgCount>=2; single-msg policy keeps the tx within that fee
|
|
77
|
+
// for columbus-5 (independent of the 20 LUNC cosmosGasRecord send floor).
|
|
74
78
|
if (chain === Chain.TerraClassic)
|
|
75
79
|
return base;
|
|
76
80
|
const n = BigInt(Math.max(1, msgCount));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosGasLimitRecord.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/cosmosGasLimitRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsC,MAAM,4BAA4B,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAW,MAAM,iBAAiB,CAAA;AAExD,MAAM,oBAAoB,GAAgC;IACxD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO;IACvB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO;IACxB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO;IACvB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO;IACrB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,iEAAiE;IACjE,gEAAgE;IAChE,kEAAkE;IAClE,mEAAmE;IACnE,uEAAuE;IACvE,uCAAuC;IACvC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO;IAC7B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS;IAC5B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,WAAW;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAA0B,EAAU,EAAE;IACtE,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnE,OAAO,QAAU,CAAA;IACnB,CAAC;IAED,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"cosmosGasLimitRecord.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/cosmosGasLimitRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsC,MAAM,4BAA4B,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAW,MAAM,iBAAiB,CAAA;AAExD,MAAM,oBAAoB,GAAgC;IACxD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO;IACvB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO;IACxB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO;IACvB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO;IACrB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,iEAAiE;IACjE,gEAAgE;IAChE,kEAAkE;IAClE,mEAAmE;IACnE,uEAAuE;IACvE,uCAAuC;IACvC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO;IAC7B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS;IAC5B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,WAAW;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAA0B,EAAU,EAAE;IACtE,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnE,OAAO,QAAU,CAAA;IACnB,CAAC;IAED,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,2BAA2B,GAA0C;IACzE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAQ;IACxB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAQ;IACzB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAQ;IACxB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAQ;IACtB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAQ;IACvB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAQ;IACvB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAQ;IACvB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,QAAU;CACjC,CAAA;AAaD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAiC,EAAU,EAAE;IACzG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,0EAA0E,QAAQ,EAAE,CAAC,CAAA;IACvG,CAAC;IAED,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAA;IAE/C,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,IAAI,KAAK,KAAK,KAAK,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAE7C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IACvC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAyB,MAAM,aAAa,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,UAAU,GAAG,KAAK,CAAA;AAExB,MAAM,CAAC,MAAM,eAAe,GAA0C;IACpE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU;IAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;IACtB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU;IAC1B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU;IACzB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,iBAAiB;IAC/B,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/gas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { QbtcGovParams } from './proposal.js';
|
|
2
|
+
/**
|
|
3
|
+
* Governance params used for the detail screen's quorum hint and as a fallback
|
|
4
|
+
* voting-window length. Voting and tallying params live at different endpoints
|
|
5
|
+
* across SDK versions, so both are fetched and merged; failures are tolerated.
|
|
6
|
+
*/
|
|
7
|
+
export declare const getQbtcGovParams: () => Promise<QbtcGovParams>;
|
|
8
|
+
//# sourceMappingURL=getQbtcGovParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcGovParams.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcGovParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAwB1C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,aAAa,CAkB9D,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
2
|
+
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
3
|
+
import { govToFraction, qbtcGovBase } from './parseGov.js';
|
|
4
|
+
const parseVotingPeriodSeconds = (raw) => {
|
|
5
|
+
if (typeof raw !== 'string')
|
|
6
|
+
return undefined;
|
|
7
|
+
// Cosmos durations arrive as e.g. `"172800s"`.
|
|
8
|
+
const seconds = Number(raw.replace(/s$/, ''));
|
|
9
|
+
return Number.isFinite(seconds) ? seconds : undefined;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Governance params used for the detail screen's quorum hint and as a fallback
|
|
13
|
+
* voting-window length. Voting and tallying params live at different endpoints
|
|
14
|
+
* across SDK versions, so both are fetched and merged; failures are tolerated.
|
|
15
|
+
*/
|
|
16
|
+
export const getQbtcGovParams = async () => {
|
|
17
|
+
const [votingResult, tallyingResult] = await Promise.all([
|
|
18
|
+
attempt(() => queryUrl(`${qbtcGovBase}/params/voting`)),
|
|
19
|
+
attempt(() => queryUrl(`${qbtcGovBase}/params/tallying`)),
|
|
20
|
+
]);
|
|
21
|
+
const voting = 'data' in votingResult ? votingResult.data : undefined;
|
|
22
|
+
const tallying = 'data' in tallyingResult ? tallyingResult.data : undefined;
|
|
23
|
+
const tallyParams = tallying?.tally_params ?? tallying?.params ?? voting?.params;
|
|
24
|
+
return {
|
|
25
|
+
votingPeriodSeconds: parseVotingPeriodSeconds(voting?.voting_params?.voting_period ?? voting?.params?.voting_period),
|
|
26
|
+
quorum: govToFraction(tallyParams?.quorum),
|
|
27
|
+
threshold: govToFraction(tallyParams?.threshold),
|
|
28
|
+
vetoThreshold: govToFraction(tallyParams?.veto_threshold),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=getQbtcGovParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcGovParams.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcGovParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAkBvD,MAAM,wBAAwB,GAAG,CAAC,GAAY,EAAsB,EAAE;IACpE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC7C,+CAA+C;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAC7C,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACvD,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA4B,EAAE;IACjE,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvD,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAiB,GAAG,WAAW,gBAAgB,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAiB,GAAG,WAAW,kBAAkB,CAAC,CAAC;KAC1E,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAE3E,MAAM,WAAW,GAAG,QAAQ,EAAE,YAAY,IAAI,QAAQ,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,CAAA;IAChF,OAAO;QACL,mBAAmB,EAAE,wBAAwB,CAC3C,MAAM,EAAE,aAAa,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,EAAE,aAAa,CACtE;QACD,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC;QAC1C,SAAS,EAAE,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC;QAChD,aAAa,EAAE,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC;KAC1D,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QbtcGovVote } from './proposal.js';
|
|
2
|
+
type GetQbtcMyVoteInput = {
|
|
3
|
+
proposalId: string;
|
|
4
|
+
voter: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* The voter's recorded vote on a proposal. A 404 means "no vote yet" and
|
|
8
|
+
* resolves to `null` rather than throwing.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getQbtcMyVote: ({ proposalId, voter }: GetQbtcMyVoteInput) => Promise<QbtcGovVote | null>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=getQbtcMyVote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcMyVote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcMyVote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAcxC,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,uBAAuB,kBAAkB,KAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAsBzG,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { qbtcGovBase } from './parseGov.js';
|
|
2
|
+
import { parseQbtcVoteOption } from './voteOption.js';
|
|
3
|
+
/**
|
|
4
|
+
* The voter's recorded vote on a proposal. A 404 means "no vote yet" and
|
|
5
|
+
* resolves to `null` rather than throwing.
|
|
6
|
+
*/
|
|
7
|
+
export const getQbtcMyVote = async ({ proposalId, voter }) => {
|
|
8
|
+
const response = await fetch(`${qbtcGovBase}/proposals/${proposalId}/votes/${voter}`);
|
|
9
|
+
if (response.status === 404)
|
|
10
|
+
return null;
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
throw new Error(`Failed to fetch QBTC vote (${response.status}): ${response.statusText}`);
|
|
13
|
+
}
|
|
14
|
+
const data = await response.json();
|
|
15
|
+
const options = (data.vote?.options ?? [])
|
|
16
|
+
.map(({ option, weight }) => {
|
|
17
|
+
const parsed = parseQbtcVoteOption(option ?? '');
|
|
18
|
+
if (!parsed)
|
|
19
|
+
return undefined;
|
|
20
|
+
// Drop entries whose weight isn't a valid 0..1 fraction rather than
|
|
21
|
+
// coercing to 0, which would make a malformed LCD payload look like a
|
|
22
|
+
// valid vote.
|
|
23
|
+
const weightFraction = Number(weight);
|
|
24
|
+
if (!Number.isFinite(weightFraction) || weightFraction < 0 || weightFraction > 1) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return { option: parsed, weight: weightFraction };
|
|
28
|
+
})
|
|
29
|
+
.filter((entry) => entry !== undefined);
|
|
30
|
+
return { options };
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=getQbtcMyVote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcMyVote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcMyVote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,mBAAmB,EAAqB,MAAM,cAAc,CAAA;AAkBrE;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAsB,EAA+B,EAAE;IAC5G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,cAAc,UAAU,UAAU,KAAK,EAAE,CAAC,CAAA;IACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IAC3F,CAAC;IACD,MAAM,IAAI,GAAiB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAChD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;SACvC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAC7B,oEAAoE;QACpE,sEAAsE;QACtE,cAAc;QACd,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACjF,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACnD,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAA0D,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IACjG,OAAO,EAAE,OAAO,EAAE,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcProposalTally.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcProposalTally.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAMzC,4CAA4C;AAC5C,eAAO,MAAM,oBAAoB,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,YAAY,CAGnF,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
2
|
+
import { parseQbtcGovTally, qbtcGovBase } from './parseGov.js';
|
|
3
|
+
/** Live tally for an in-voting proposal. */
|
|
4
|
+
export const getQbtcProposalTally = async (proposalId) => {
|
|
5
|
+
const data = await queryUrl(`${qbtcGovBase}/proposals/${proposalId}/tally`);
|
|
6
|
+
return parseQbtcGovTally(data.tally);
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=getQbtcProposalTally.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcProposalTally.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcProposalTally.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAY,MAAM,YAAY,CAAA;AAOrE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,UAAkB,EAAyB,EAAE;IACtF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAgB,GAAG,WAAW,cAAc,UAAU,QAAQ,CAAC,CAAA;IAC1F,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { QbtcGovProposal } from './proposal.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetches QBTC governance proposals (newest first). A single page of 100 covers
|
|
4
|
+
* the active set plus recent history without pagination, matching iOS.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getQbtcProposals: () => Promise<QbtcGovProposal[]>;
|
|
7
|
+
//# sourceMappingURL=getQbtcProposals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcProposals.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcProposals.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAM5C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,eAAe,EAAE,CAOlE,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
2
|
+
import { parseQbtcGovProposal, qbtcGovBase } from './parseGov.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fetches QBTC governance proposals (newest first). A single page of 100 covers
|
|
5
|
+
* the active set plus recent history without pagination, matching iOS.
|
|
6
|
+
*/
|
|
7
|
+
export const getQbtcProposals = async () => {
|
|
8
|
+
const data = await queryUrl(`${qbtcGovBase}/proposals?pagination.limit=100&pagination.reverse=true`);
|
|
9
|
+
return (data.proposals ?? [])
|
|
10
|
+
.map(parseQbtcGovProposal)
|
|
11
|
+
.filter((proposal) => proposal !== undefined);
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=getQbtcProposals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQbtcProposals.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/getQbtcProposals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAe,MAAM,YAAY,CAAA;AAO3E;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAgC,EAAE;IACrE,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,GAAG,WAAW,yDAAyD,CACxE,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;SAC1B,GAAG,CAAC,oBAAoB,CAAC;SACzB,MAAM,CAAC,CAAC,QAAQ,EAA+B,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAA;AAC9E,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { QbtcGovProposal, QbtcGovTally } from './proposal.js';
|
|
2
|
+
/** Base path for the Cosmos `x/gov v1` REST endpoints on the QBTC node. */
|
|
3
|
+
export declare const qbtcGovBase = "https://api.vultisig.com/qbtc-rpc/cosmos/gov/v1";
|
|
4
|
+
export declare const govToBigInt: (value: unknown) => bigint;
|
|
5
|
+
export declare const govToFraction: (value: unknown) => number | undefined;
|
|
6
|
+
export type RawTally = {
|
|
7
|
+
yes_count?: string;
|
|
8
|
+
abstain_count?: string;
|
|
9
|
+
no_count?: string;
|
|
10
|
+
no_with_veto_count?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const parseQbtcGovTally: (raw: RawTally | undefined) => QbtcGovTally;
|
|
13
|
+
export type RawProposal = {
|
|
14
|
+
id?: string;
|
|
15
|
+
title?: string;
|
|
16
|
+
summary?: string;
|
|
17
|
+
status?: string;
|
|
18
|
+
final_tally_result?: RawTally;
|
|
19
|
+
voting_start_time?: string;
|
|
20
|
+
voting_end_time?: string;
|
|
21
|
+
messages?: {
|
|
22
|
+
'@type'?: string;
|
|
23
|
+
}[];
|
|
24
|
+
};
|
|
25
|
+
export declare const parseQbtcGovProposal: (raw: RawProposal) => QbtcGovProposal | undefined;
|
|
26
|
+
//# sourceMappingURL=parseGov.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseGov.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/parseGov.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8C,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEtG,2EAA2E;AAC3E,eAAO,MAAM,WAAW,oDAAiC,CAAA;AAEzD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAK5C,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAIvD,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,KAAK,QAAQ,GAAG,SAAS,KAAG,YAQ7D,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kBAAkB,CAAC,EAAE,QAAQ,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,KAAK,WAAW,KAAG,eAAe,GAAG,SAczE,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { qbtcRestUrl } from '@vultisig/core-chain/chains/cosmos/qbtc/tendermintRpcUrl';
|
|
2
|
+
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
3
|
+
import { emptyQbtcGovTally, parseQbtcProposalStatus } from './proposal.js';
|
|
4
|
+
/** Base path for the Cosmos `x/gov v1` REST endpoints on the QBTC node. */
|
|
5
|
+
export const qbtcGovBase = `${qbtcRestUrl}/cosmos/gov/v1`;
|
|
6
|
+
export const govToBigInt = (value) => {
|
|
7
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
8
|
+
return 0n;
|
|
9
|
+
const parsed = attempt(() => BigInt(value));
|
|
10
|
+
if ('error' in parsed)
|
|
11
|
+
return 0n;
|
|
12
|
+
return parsed.data >= 0n ? parsed.data : 0n;
|
|
13
|
+
};
|
|
14
|
+
export const govToFraction = (value) => {
|
|
15
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
16
|
+
return undefined;
|
|
17
|
+
const parsed = Number(value);
|
|
18
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
19
|
+
};
|
|
20
|
+
export const parseQbtcGovTally = (raw) => {
|
|
21
|
+
if (!raw)
|
|
22
|
+
return emptyQbtcGovTally;
|
|
23
|
+
return {
|
|
24
|
+
yes: govToBigInt(raw.yes_count),
|
|
25
|
+
abstain: govToBigInt(raw.abstain_count),
|
|
26
|
+
no: govToBigInt(raw.no_count),
|
|
27
|
+
noWithVeto: govToBigInt(raw.no_with_veto_count),
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export const parseQbtcGovProposal = (raw) => {
|
|
31
|
+
if (typeof raw.id !== 'string' || raw.id.length === 0)
|
|
32
|
+
return undefined;
|
|
33
|
+
return {
|
|
34
|
+
id: raw.id,
|
|
35
|
+
title: raw.title ?? '',
|
|
36
|
+
summary: raw.summary ?? '',
|
|
37
|
+
status: parseQbtcProposalStatus(raw.status ?? ''),
|
|
38
|
+
finalTally: parseQbtcGovTally(raw.final_tally_result),
|
|
39
|
+
votingStartTime: raw.voting_start_time,
|
|
40
|
+
votingEndTime: raw.voting_end_time,
|
|
41
|
+
messageTypes: (raw.messages ?? [])
|
|
42
|
+
.map(message => message['@type'])
|
|
43
|
+
.filter((type) => typeof type === 'string'),
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=parseGov.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseGov.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/parseGov.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAiC,MAAM,YAAY,CAAA;AAEtG,2EAA2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,WAAW,gBAAgB,CAAA;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAU,EAAE;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,EAAE,CAAA;IAChC,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAsB,EAAE;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC,CAAA;AASD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAyB,EAAgB,EAAE;IAC3E,IAAI,CAAC,GAAG;QAAE,OAAO,iBAAiB,CAAA;IAClC,OAAO;QACL,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC;QACvC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7B,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC;KAChD,CAAA;AACH,CAAC,CAAA;AAaD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAgB,EAA+B,EAAE;IACpF,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACvE,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;QAC1B,MAAM,EAAE,uBAAuB,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QACjD,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACrD,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;aAC/B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAChC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;KAC9D,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { QbtcVoteOptionKey } from './voteOption.js';
|
|
2
|
+
/**
|
|
3
|
+
* Subset of Cosmos `x/gov` proposal statuses surfaced by the QBTC governance
|
|
4
|
+
* UI. `votingPeriod` is the only votable state.
|
|
5
|
+
*/
|
|
6
|
+
export declare const qbtcProposalStatuses: readonly ["depositPeriod", "votingPeriod", "passed", "rejected", "failed", "unspecified"];
|
|
7
|
+
export type QbtcProposalStatus = (typeof qbtcProposalStatuses)[number];
|
|
8
|
+
/** Maps the LCD wire status (`PROPOSAL_STATUS_*`) onto our union. */
|
|
9
|
+
export declare const parseQbtcProposalStatus: (wire: string) => QbtcProposalStatus;
|
|
10
|
+
/** A proposal is votable only while in its voting period. */
|
|
11
|
+
export declare const isActiveQbtcProposal: (status: QbtcProposalStatus) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Tally counts in the staking base unit, keyed by option. Stored as `bigint`
|
|
14
|
+
* because validator-weighted totals routinely exceed `Number.MAX_SAFE_INTEGER`;
|
|
15
|
+
* the UI only ever needs their ratios.
|
|
16
|
+
*/
|
|
17
|
+
export type QbtcGovTally = Record<QbtcVoteOptionKey, bigint>;
|
|
18
|
+
export declare const emptyQbtcGovTally: QbtcGovTally;
|
|
19
|
+
export declare const qbtcGovTallyTotal: (tally: QbtcGovTally) => bigint;
|
|
20
|
+
export type QbtcGovProposal = {
|
|
21
|
+
id: string;
|
|
22
|
+
title: string;
|
|
23
|
+
summary: string;
|
|
24
|
+
status: QbtcProposalStatus;
|
|
25
|
+
/** Embedded tally — all-zero for active proposals until the live `/tally`
|
|
26
|
+
* endpoint is queried. */
|
|
27
|
+
finalTally: QbtcGovTally;
|
|
28
|
+
/** RFC3339 timestamps as returned by the chain; `undefined` if absent. */
|
|
29
|
+
votingStartTime?: string;
|
|
30
|
+
votingEndTime?: string;
|
|
31
|
+
/** Wrapped message type URLs (e.g. `/cosmos.gov.v1.MsgExecLegacyContent`). */
|
|
32
|
+
messageTypes: string[];
|
|
33
|
+
};
|
|
34
|
+
/** A weighted option from the voter's recorded vote (`weight` as a fraction). */
|
|
35
|
+
export type QbtcGovVoteOption = {
|
|
36
|
+
option: QbtcVoteOptionKey;
|
|
37
|
+
weight: number;
|
|
38
|
+
};
|
|
39
|
+
/** The voter's recorded vote on a proposal, or `null` if they haven't voted. */
|
|
40
|
+
export type QbtcGovVote = {
|
|
41
|
+
options: QbtcGovVoteOption[];
|
|
42
|
+
};
|
|
43
|
+
export type QbtcGovParams = {
|
|
44
|
+
votingPeriodSeconds?: number;
|
|
45
|
+
quorum?: number;
|
|
46
|
+
threshold?: number;
|
|
47
|
+
vetoThreshold?: number;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* A user's pending vote selection, threaded through navigation to the verify
|
|
51
|
+
* screen. `weightPercent` is an integer 0–100; it is normalised to an
|
|
52
|
+
* 18-decimal `cosmos.Dec` string only when the `MsgVoteWeighted` is built.
|
|
53
|
+
*/
|
|
54
|
+
export type QbtcVoteSelection = {
|
|
55
|
+
kind: 'single';
|
|
56
|
+
option: QbtcVoteOptionKey;
|
|
57
|
+
} | {
|
|
58
|
+
kind: 'weighted';
|
|
59
|
+
options: {
|
|
60
|
+
option: QbtcVoteOptionKey;
|
|
61
|
+
weightPercent: number;
|
|
62
|
+
}[];
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=proposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,2FAOvB,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtE,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,kBAetD,CAAA;AAED,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,GAAI,QAAQ,kBAAkB,KAAG,OAAoC,CAAA;AAEtG;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;AAE5D,eAAO,MAAM,iBAAiB,EAAE,YAK/B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,YAAY,KAAG,MACC,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,kBAAkB,CAAA;IAC1B;8BAC0B;IAC1B,UAAU,EAAE,YAAY,CAAA;IACxB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,gFAAgF;AAChF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC7C;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAChE,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subset of Cosmos `x/gov` proposal statuses surfaced by the QBTC governance
|
|
3
|
+
* UI. `votingPeriod` is the only votable state.
|
|
4
|
+
*/
|
|
5
|
+
export const qbtcProposalStatuses = [
|
|
6
|
+
'depositPeriod',
|
|
7
|
+
'votingPeriod',
|
|
8
|
+
'passed',
|
|
9
|
+
'rejected',
|
|
10
|
+
'failed',
|
|
11
|
+
'unspecified',
|
|
12
|
+
];
|
|
13
|
+
/** Maps the LCD wire status (`PROPOSAL_STATUS_*`) onto our union. */
|
|
14
|
+
export const parseQbtcProposalStatus = (wire) => {
|
|
15
|
+
switch (wire) {
|
|
16
|
+
case 'PROPOSAL_STATUS_DEPOSIT_PERIOD':
|
|
17
|
+
return 'depositPeriod';
|
|
18
|
+
case 'PROPOSAL_STATUS_VOTING_PERIOD':
|
|
19
|
+
return 'votingPeriod';
|
|
20
|
+
case 'PROPOSAL_STATUS_PASSED':
|
|
21
|
+
return 'passed';
|
|
22
|
+
case 'PROPOSAL_STATUS_REJECTED':
|
|
23
|
+
return 'rejected';
|
|
24
|
+
case 'PROPOSAL_STATUS_FAILED':
|
|
25
|
+
return 'failed';
|
|
26
|
+
default:
|
|
27
|
+
return 'unspecified';
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
/** A proposal is votable only while in its voting period. */
|
|
31
|
+
export const isActiveQbtcProposal = (status) => status === 'votingPeriod';
|
|
32
|
+
export const emptyQbtcGovTally = {
|
|
33
|
+
yes: 0n,
|
|
34
|
+
abstain: 0n,
|
|
35
|
+
no: 0n,
|
|
36
|
+
noWithVeto: 0n,
|
|
37
|
+
};
|
|
38
|
+
export const qbtcGovTallyTotal = (tally) => tally.yes + tally.abstain + tally.no + tally.noWithVeto;
|
|
39
|
+
//# sourceMappingURL=proposal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/proposal.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,cAAc;IACd,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,aAAa;CACL,CAAA;AAIV,qEAAqE;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAsB,EAAE;IAC1E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,gCAAgC;YACnC,OAAO,eAAe,CAAA;QACxB,KAAK,+BAA+B;YAClC,OAAO,cAAc,CAAA;QACvB,KAAK,wBAAwB;YAC3B,OAAO,QAAQ,CAAA;QACjB,KAAK,0BAA0B;YAC7B,OAAO,UAAU,CAAA;QACnB,KAAK,wBAAwB;YAC3B,OAAO,QAAQ,CAAA;QACjB;YACE,OAAO,aAAa,CAAA;IACxB,CAAC;AACH,CAAC,CAAA;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAA0B,EAAW,EAAE,CAAC,MAAM,KAAK,cAAc,CAAA;AAStG,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,GAAG,EAAE,EAAE;IACP,OAAO,EAAE,EAAE;IACX,EAAE,EAAE,EAAE;IACN,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAU,EAAE,CAC/D,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QBTC governance vote options, in canonical Cosmos `x/gov` order. The QBTC
|
|
3
|
+
* chain reuses the standard Cosmos `VoteOption` enum, so these map 1:1 onto the
|
|
4
|
+
* proto values (1=YES … 4=NO_WITH_VETO) used when building `MsgVote` /
|
|
5
|
+
* `MsgVoteWeighted`.
|
|
6
|
+
*/
|
|
7
|
+
export declare const qbtcVoteOptionKeys: readonly ["yes", "abstain", "no", "noWithVeto"];
|
|
8
|
+
export type QbtcVoteOptionKey = (typeof qbtcVoteOptionKeys)[number];
|
|
9
|
+
/** Cosmos `VoteOption` proto enum value for each option. */
|
|
10
|
+
export declare const qbtcVoteOptionProtoValue: Record<QbtcVoteOptionKey, number>;
|
|
11
|
+
/**
|
|
12
|
+
* Decodes the option field returned by the gov LCD (`/votes/{voter}`), which
|
|
13
|
+
* may be the proto enum name (`VOTE_OPTION_YES`) or its numeric string (`"1"`).
|
|
14
|
+
* Returns `undefined` for unknown/unspecified values so callers can skip them.
|
|
15
|
+
*/
|
|
16
|
+
export declare const parseQbtcVoteOption: (wire: string) => QbtcVoteOptionKey | undefined;
|
|
17
|
+
//# sourceMappingURL=voteOption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voteOption.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/voteOption.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,iDAAkD,CAAA;AAEjF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAKtE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,iBAAiB,GAAG,SAiBtE,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QBTC governance vote options, in canonical Cosmos `x/gov` order. The QBTC
|
|
3
|
+
* chain reuses the standard Cosmos `VoteOption` enum, so these map 1:1 onto the
|
|
4
|
+
* proto values (1=YES … 4=NO_WITH_VETO) used when building `MsgVote` /
|
|
5
|
+
* `MsgVoteWeighted`.
|
|
6
|
+
*/
|
|
7
|
+
export const qbtcVoteOptionKeys = ['yes', 'abstain', 'no', 'noWithVeto'];
|
|
8
|
+
/** Cosmos `VoteOption` proto enum value for each option. */
|
|
9
|
+
export const qbtcVoteOptionProtoValue = {
|
|
10
|
+
yes: 1,
|
|
11
|
+
abstain: 2,
|
|
12
|
+
no: 3,
|
|
13
|
+
noWithVeto: 4,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Decodes the option field returned by the gov LCD (`/votes/{voter}`), which
|
|
17
|
+
* may be the proto enum name (`VOTE_OPTION_YES`) or its numeric string (`"1"`).
|
|
18
|
+
* Returns `undefined` for unknown/unspecified values so callers can skip them.
|
|
19
|
+
*/
|
|
20
|
+
export const parseQbtcVoteOption = (wire) => {
|
|
21
|
+
switch (wire) {
|
|
22
|
+
case 'VOTE_OPTION_YES':
|
|
23
|
+
case '1':
|
|
24
|
+
return 'yes';
|
|
25
|
+
case 'VOTE_OPTION_ABSTAIN':
|
|
26
|
+
case '2':
|
|
27
|
+
return 'abstain';
|
|
28
|
+
case 'VOTE_OPTION_NO':
|
|
29
|
+
case '3':
|
|
30
|
+
return 'no';
|
|
31
|
+
case 'VOTE_OPTION_NO_WITH_VETO':
|
|
32
|
+
case '4':
|
|
33
|
+
return 'noWithVeto';
|
|
34
|
+
default:
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=voteOption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voteOption.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/governance/voteOption.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,CAAU,CAAA;AAIjF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAsC;IACzE,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;IACV,EAAE,EAAE,CAAC;IACL,UAAU,EAAE,CAAC;CACd,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAiC,EAAE;IACjF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iBAAiB,CAAC;QACvB,KAAK,GAAG;YACN,OAAO,KAAK,CAAA;QACd,KAAK,qBAAqB,CAAC;QAC3B,KAAK,GAAG;YACN,OAAO,SAAS,CAAA;QAClB,KAAK,gBAAgB,CAAC;QACtB,KAAK,GAAG;YACN,OAAO,IAAI,CAAA;QACb,KAAK,0BAA0B,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,YAAY,CAAA;QACrB;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.0",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -290,6 +290,41 @@
|
|
|
290
290
|
"import": "./dist/chains/cosmos/qbtc/getQbtcAccountInfo.js",
|
|
291
291
|
"default": "./dist/chains/cosmos/qbtc/getQbtcAccountInfo.js"
|
|
292
292
|
},
|
|
293
|
+
"./chains/cosmos/qbtc/governance/getQbtcGovParams": {
|
|
294
|
+
"types": "./dist/chains/cosmos/qbtc/governance/getQbtcGovParams.d.ts",
|
|
295
|
+
"import": "./dist/chains/cosmos/qbtc/governance/getQbtcGovParams.js",
|
|
296
|
+
"default": "./dist/chains/cosmos/qbtc/governance/getQbtcGovParams.js"
|
|
297
|
+
},
|
|
298
|
+
"./chains/cosmos/qbtc/governance/getQbtcMyVote": {
|
|
299
|
+
"types": "./dist/chains/cosmos/qbtc/governance/getQbtcMyVote.d.ts",
|
|
300
|
+
"import": "./dist/chains/cosmos/qbtc/governance/getQbtcMyVote.js",
|
|
301
|
+
"default": "./dist/chains/cosmos/qbtc/governance/getQbtcMyVote.js"
|
|
302
|
+
},
|
|
303
|
+
"./chains/cosmos/qbtc/governance/getQbtcProposals": {
|
|
304
|
+
"types": "./dist/chains/cosmos/qbtc/governance/getQbtcProposals.d.ts",
|
|
305
|
+
"import": "./dist/chains/cosmos/qbtc/governance/getQbtcProposals.js",
|
|
306
|
+
"default": "./dist/chains/cosmos/qbtc/governance/getQbtcProposals.js"
|
|
307
|
+
},
|
|
308
|
+
"./chains/cosmos/qbtc/governance/getQbtcProposalTally": {
|
|
309
|
+
"types": "./dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.d.ts",
|
|
310
|
+
"import": "./dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.js",
|
|
311
|
+
"default": "./dist/chains/cosmos/qbtc/governance/getQbtcProposalTally.js"
|
|
312
|
+
},
|
|
313
|
+
"./chains/cosmos/qbtc/governance/parseGov": {
|
|
314
|
+
"types": "./dist/chains/cosmos/qbtc/governance/parseGov.d.ts",
|
|
315
|
+
"import": "./dist/chains/cosmos/qbtc/governance/parseGov.js",
|
|
316
|
+
"default": "./dist/chains/cosmos/qbtc/governance/parseGov.js"
|
|
317
|
+
},
|
|
318
|
+
"./chains/cosmos/qbtc/governance/proposal": {
|
|
319
|
+
"types": "./dist/chains/cosmos/qbtc/governance/proposal.d.ts",
|
|
320
|
+
"import": "./dist/chains/cosmos/qbtc/governance/proposal.js",
|
|
321
|
+
"default": "./dist/chains/cosmos/qbtc/governance/proposal.js"
|
|
322
|
+
},
|
|
323
|
+
"./chains/cosmos/qbtc/governance/voteOption": {
|
|
324
|
+
"types": "./dist/chains/cosmos/qbtc/governance/voteOption.d.ts",
|
|
325
|
+
"import": "./dist/chains/cosmos/qbtc/governance/voteOption.js",
|
|
326
|
+
"default": "./dist/chains/cosmos/qbtc/governance/voteOption.js"
|
|
327
|
+
},
|
|
293
328
|
"./chains/cosmos/qbtc/protoEncoding": {
|
|
294
329
|
"types": "./dist/chains/cosmos/qbtc/protoEncoding.d.ts",
|
|
295
330
|
"import": "./dist/chains/cosmos/qbtc/protoEncoding.js",
|