@ritbit/v4-client-js 2.2.3 → 2.2.5

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 (120) hide show
  1. package/__tests__/helpers/constants.ts +2 -1
  2. package/__tests__/lib/validation.test.ts +2 -2
  3. package/build/cjs/__tests__/helpers/constants.js +1 -1
  4. package/build/cjs/__tests__/lib/validation.test.js +1 -1
  5. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.js +89 -2
  6. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.js +45 -2
  7. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.js +12 -11
  8. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.js +12 -3
  9. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.js +164 -30
  10. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.js +65 -18
  11. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.js +13 -4
  12. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +259 -8
  13. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.js +13 -1
  14. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.js +81 -37
  15. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.js +84 -4
  16. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.js +19 -3
  17. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.js +47 -7
  18. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.js +72 -4
  19. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +4 -4
  20. package/build/cjs/src/clients/composite-client.js +4 -4
  21. package/build/cjs/src/clients/modules/composer.js +1 -1
  22. package/build/cjs/src/clients/modules/get.js +45 -36
  23. package/build/cjs/src/clients/modules/markets.js +5 -1
  24. package/build/cjs/src/clients/modules/post.js +30 -10
  25. package/build/cjs/src/clients/validator-client.js +3 -2
  26. package/build/cjs/src/index.js +2 -5
  27. package/build/cjs/src/lib/validation.js +1 -1
  28. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  29. package/build/esm/__tests__/helpers/constants.d.ts +2 -2
  30. package/build/esm/__tests__/helpers/constants.d.ts.map +1 -1
  31. package/build/esm/__tests__/helpers/constants.js +1 -1
  32. package/build/esm/__tests__/lib/validation.test.js +1 -1
  33. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.d.ts +31 -0
  34. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.d.ts.map +1 -1
  35. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.js +88 -1
  36. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.d.ts +17 -0
  37. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.d.ts.map +1 -1
  38. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.js +44 -1
  39. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.d.ts +7 -11
  40. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.d.ts.map +1 -1
  41. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.js +13 -12
  42. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.d.ts +8 -1
  43. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.d.ts.map +1 -1
  44. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.js +12 -3
  45. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.d.ts +70 -51
  46. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.d.ts.map +1 -1
  47. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.js +164 -30
  48. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.d.ts +5 -4
  49. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.d.ts.map +1 -1
  50. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.js +65 -18
  51. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.d.ts +18 -22
  52. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.d.ts.map +1 -1
  53. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.js +14 -5
  54. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts +93 -2
  55. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts.map +1 -1
  56. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +260 -9
  57. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.d.ts +10 -1
  58. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.d.ts.map +1 -1
  59. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.js +14 -2
  60. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.d.ts +33 -16
  61. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.d.ts.map +1 -1
  62. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.js +80 -36
  63. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.d.ts +37 -1
  64. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.d.ts.map +1 -1
  65. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.js +84 -4
  66. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.d.ts +4 -0
  67. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.d.ts.map +1 -1
  68. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.js +19 -3
  69. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.d.ts +23 -0
  70. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.d.ts.map +1 -1
  71. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.js +47 -7
  72. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts +4 -3
  73. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts.map +1 -1
  74. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.d.ts +26 -0
  75. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.d.ts.map +1 -1
  76. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.js +71 -3
  77. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts +3 -3
  78. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts.map +1 -1
  79. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +5 -5
  80. package/build/esm/src/clients/composite-client.d.ts +5 -2
  81. package/build/esm/src/clients/composite-client.d.ts.map +1 -1
  82. package/build/esm/src/clients/composite-client.js +4 -4
  83. package/build/esm/src/clients/modules/composer.js +1 -1
  84. package/build/esm/src/clients/modules/get.d.ts +24 -18
  85. package/build/esm/src/clients/modules/get.d.ts.map +1 -1
  86. package/build/esm/src/clients/modules/get.js +45 -36
  87. package/build/esm/src/clients/modules/markets.d.ts +1 -0
  88. package/build/esm/src/clients/modules/markets.d.ts.map +1 -1
  89. package/build/esm/src/clients/modules/markets.js +5 -1
  90. package/build/esm/src/clients/modules/post.d.ts +6 -2
  91. package/build/esm/src/clients/modules/post.d.ts.map +1 -1
  92. package/build/esm/src/clients/modules/post.js +30 -10
  93. package/build/esm/src/clients/validator-client.d.ts +4 -1
  94. package/build/esm/src/clients/validator-client.d.ts.map +1 -1
  95. package/build/esm/src/clients/validator-client.js +3 -2
  96. package/build/esm/src/index.d.ts +0 -1
  97. package/build/esm/src/index.d.ts.map +1 -1
  98. package/build/esm/src/index.js +1 -2
  99. package/build/esm/src/lib/validation.d.ts +2 -2
  100. package/build/esm/src/lib/validation.d.ts.map +1 -1
  101. package/build/esm/src/lib/validation.js +1 -1
  102. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  103. package/package.json +2 -2
  104. package/ritbit-v4-client-js-2.2.5.tgz +0 -0
  105. package/scripts/publish-if-not-exists.sh +2 -2
  106. package/src/clients/composite-client.ts +9 -3
  107. package/src/clients/modules/composer.ts +2 -2
  108. package/src/clients/modules/get.ts +66 -43
  109. package/src/clients/modules/markets.ts +5 -0
  110. package/src/clients/modules/post.ts +32 -5
  111. package/src/clients/validator-client.ts +5 -2
  112. package/src/index.ts +0 -6
  113. package/src/lib/validation.ts +2 -2
  114. package/tsconfig.json +6 -0
  115. package/build/cjs/src/lib/vesting.js +0 -170
  116. package/build/esm/src/lib/vesting.d.ts +0 -42
  117. package/build/esm/src/lib/vesting.d.ts.map +0 -1
  118. package/build/esm/src/lib/vesting.js +0 -133
  119. package/ritbit-v4-client-js-2.2.1.tgz +0 -0
  120. package/src/lib/vesting.ts +0 -153
@@ -1,133 +0,0 @@
1
- import * as Vesting from 'cosmjs-types/cosmos/vesting/v1beta1/vesting';
2
- const VESTING_TYPE_URLS = [
3
- '/cosmos.vesting.v1beta1.ContinuousVestingAccount',
4
- '/cosmos.vesting.v1beta1.DelayedVestingAccount',
5
- '/cosmos.vesting.v1beta1.PeriodicVestingAccount',
6
- '/cosmos.vesting.v1beta1.BaseVestingAccount',
7
- ];
8
- function bigintToNumber(value) {
9
- if (value == null || value === undefined)
10
- return 0;
11
- return Number(value);
12
- }
13
- /**
14
- * Декодирует сырой аккаунт (Any из getAccountRaw) в VestingInfo.
15
- * Возвращает null, если тип аккаунта не vesting или нет original_vesting.
16
- */
17
- export function decodeVestingFromAny(raw) {
18
- var _a, _b, _c, _d;
19
- const { typeUrl, value } = raw;
20
- if (!VESTING_TYPE_URLS.some((u) => typeUrl === u)) {
21
- return null;
22
- }
23
- try {
24
- switch (typeUrl) {
25
- case '/cosmos.vesting.v1beta1.ContinuousVestingAccount': {
26
- const acc = Vesting.ContinuousVestingAccount.decode(value);
27
- const base = acc.baseVestingAccount;
28
- if (!((_a = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _a === void 0 ? void 0 : _a.length))
29
- return null;
30
- return {
31
- originalVesting: base.originalVesting.map((c) => ({
32
- denom: c.denom,
33
- amount: c.amount,
34
- })),
35
- startTimeSec: bigintToNumber(acc.startTime),
36
- endTimeSec: bigintToNumber(base.endTime),
37
- };
38
- }
39
- case '/cosmos.vesting.v1beta1.DelayedVestingAccount': {
40
- const acc = Vesting.DelayedVestingAccount.decode(value);
41
- const base = acc.baseVestingAccount;
42
- if (!((_b = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _b === void 0 ? void 0 : _b.length))
43
- return null;
44
- return {
45
- originalVesting: base.originalVesting.map((c) => ({
46
- denom: c.denom,
47
- amount: c.amount,
48
- })),
49
- startTimeSec: 0,
50
- endTimeSec: bigintToNumber(base.endTime),
51
- };
52
- }
53
- case '/cosmos.vesting.v1beta1.PeriodicVestingAccount': {
54
- const acc = Vesting.PeriodicVestingAccount.decode(value);
55
- const base = acc.baseVestingAccount;
56
- if (!((_c = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _c === void 0 ? void 0 : _c.length))
57
- return null;
58
- return {
59
- originalVesting: base.originalVesting.map((c) => ({
60
- denom: c.denom,
61
- amount: c.amount,
62
- })),
63
- startTimeSec: bigintToNumber(acc.startTime),
64
- endTimeSec: bigintToNumber(base.endTime),
65
- vestingPeriods: acc.vestingPeriods.map((p) => ({
66
- lengthSec: bigintToNumber(p.length),
67
- amount: p.amount.map((c) => ({ denom: c.denom, amount: c.amount })),
68
- })),
69
- };
70
- }
71
- case '/cosmos.vesting.v1beta1.BaseVestingAccount': {
72
- const base = Vesting.BaseVestingAccount.decode(value);
73
- if (!((_d = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _d === void 0 ? void 0 : _d.length))
74
- return null;
75
- return {
76
- originalVesting: base.originalVesting.map((c) => ({
77
- denom: c.denom,
78
- amount: c.amount,
79
- })),
80
- startTimeSec: 0,
81
- endTimeSec: bigintToNumber(base.endTime),
82
- };
83
- }
84
- default:
85
- return null;
86
- }
87
- }
88
- catch {
89
- return null;
90
- }
91
- }
92
- /**
93
- * Считает разблокированную сумму в base units для денома по VestingInfo.
94
- *
95
- * - Continuous / Delayed / Base: линейная разблокировка от startTimeSec до endTimeSec.
96
- * - Periodic: каждый период — клифф; сумма периода разблокируется целиком
97
- * по истечении его длительности (start + Σ lengths предыдущих + length текущего).
98
- */
99
- export function computeUnlockedAmount(info, denom) {
100
- var _a, _b, _c;
101
- const entry = info.originalVesting.find((c) => c.denom === denom);
102
- if (!entry)
103
- return undefined;
104
- const total = BigInt(entry.amount);
105
- const { startTimeSec, endTimeSec } = info;
106
- if (startTimeSec === 0 && endTimeSec === 0)
107
- return entry.amount;
108
- const nowSec = Math.floor(Date.now() / 1000);
109
- if (nowSec <= startTimeSec)
110
- return '0';
111
- if (nowSec >= endTimeSec)
112
- return entry.amount;
113
- // Periodic: считаем по периодам (клиффы)
114
- if ((_a = info.vestingPeriods) === null || _a === void 0 ? void 0 : _a.length) {
115
- let unlocked = BigInt(0);
116
- let periodStartSec = startTimeSec;
117
- for (const p of info.vestingPeriods) {
118
- const periodEndSec = periodStartSec + p.lengthSec;
119
- if (nowSec >= periodEndSec) {
120
- const periodAmount = (_c = (_b = p.amount.find((c) => c.denom === denom)) === null || _b === void 0 ? void 0 : _b.amount) !== null && _c !== void 0 ? _c : '0';
121
- unlocked += BigInt(periodAmount);
122
- }
123
- periodStartSec = periodEndSec;
124
- }
125
- return String(unlocked);
126
- }
127
- // Linear (Continuous / Delayed / Base)
128
- const period = endTimeSec - startTimeSec;
129
- const elapsed = nowSec - startTimeSec;
130
- const unlocked = (total * BigInt(elapsed)) / BigInt(period);
131
- return String(unlocked);
132
- }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLDZDQUE2QyxDQUFDO0FBeUJ2RSxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLGtEQUFrRDtJQUNsRCwrQ0FBK0M7SUFDL0MsZ0RBQWdEO0lBQ2hELDRDQUE0QztDQUNwQyxDQUFDO0FBRVgsU0FBUyxjQUFjLENBQUMsS0FBeUI7SUFDL0MsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFROztJQUMzQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxRQUFRLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLEtBQUssa0RBQWtELENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGVBQWUsMENBQUUsTUFBTSxDQUFBO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUNoRCxPQUFPO29C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
Binary file
@@ -1,153 +0,0 @@
1
- import { Any } from 'cosmjs-types/google/protobuf/any';
2
- import * as Vesting from 'cosmjs-types/cosmos/vesting/v1beta1/vesting';
3
-
4
- /** Один период вестинга (для PeriodicVestingAccount). */
5
- export interface VestingPeriod {
6
- /** Длительность периода в секундах. */
7
- lengthSec: number;
8
- /** Монеты, разблокируемые в конце периода. */
9
- amount: Array<{ denom: string; amount: string }>;
10
- }
11
-
12
- /**
13
- * Нормализованная информация о вестинг-аккаунте, достаточная для расчёта
14
- * разблокированной суммы. Типы Continuous/Delayed/Periodic/Base сводятся к этому виду.
15
- */
16
- export interface VestingInfo {
17
- /** Монеты original_vesting (деном + количество в base units). */
18
- originalVesting: Array<{ denom: string; amount: string }>;
19
- /** Начало вестинга (Unix секунды). */
20
- startTimeSec: number;
21
- /** Конец вестинга (Unix секунды). */
22
- endTimeSec: number;
23
- /** Периоды (только для PeriodicVestingAccount). */
24
- vestingPeriods?: VestingPeriod[];
25
- }
26
-
27
- const VESTING_TYPE_URLS = [
28
- '/cosmos.vesting.v1beta1.ContinuousVestingAccount',
29
- '/cosmos.vesting.v1beta1.DelayedVestingAccount',
30
- '/cosmos.vesting.v1beta1.PeriodicVestingAccount',
31
- '/cosmos.vesting.v1beta1.BaseVestingAccount',
32
- ] as const;
33
-
34
- function bigintToNumber(value: bigint | undefined): number {
35
- if (value == null || value === undefined) return 0;
36
- return Number(value);
37
- }
38
-
39
- /**
40
- * Декодирует сырой аккаунт (Any из getAccountRaw) в VestingInfo.
41
- * Возвращает null, если тип аккаунта не vesting или нет original_vesting.
42
- */
43
- export function decodeVestingFromAny(raw: Any): VestingInfo | null {
44
- const { typeUrl, value } = raw;
45
- if (!VESTING_TYPE_URLS.some((u) => typeUrl === u)) {
46
- return null;
47
- }
48
- try {
49
- switch (typeUrl) {
50
- case '/cosmos.vesting.v1beta1.ContinuousVestingAccount': {
51
- const acc = Vesting.ContinuousVestingAccount.decode(value);
52
- const base = acc.baseVestingAccount;
53
- if (!base?.originalVesting?.length) return null;
54
- return {
55
- originalVesting: base.originalVesting.map((c) => ({
56
- denom: c.denom,
57
- amount: c.amount,
58
- })),
59
- startTimeSec: bigintToNumber(acc.startTime),
60
- endTimeSec: bigintToNumber(base.endTime),
61
- };
62
- }
63
- case '/cosmos.vesting.v1beta1.DelayedVestingAccount': {
64
- const acc = Vesting.DelayedVestingAccount.decode(value);
65
- const base = acc.baseVestingAccount;
66
- if (!base?.originalVesting?.length) return null;
67
- return {
68
- originalVesting: base.originalVesting.map((c) => ({
69
- denom: c.denom,
70
- amount: c.amount,
71
- })),
72
- startTimeSec: 0,
73
- endTimeSec: bigintToNumber(base.endTime),
74
- };
75
- }
76
- case '/cosmos.vesting.v1beta1.PeriodicVestingAccount': {
77
- const acc = Vesting.PeriodicVestingAccount.decode(value);
78
- const base = acc.baseVestingAccount;
79
- if (!base?.originalVesting?.length) return null;
80
- return {
81
- originalVesting: base.originalVesting.map((c) => ({
82
- denom: c.denom,
83
- amount: c.amount,
84
- })),
85
- startTimeSec: bigintToNumber(acc.startTime),
86
- endTimeSec: bigintToNumber(base.endTime),
87
- vestingPeriods: acc.vestingPeriods.map((p) => ({
88
- lengthSec: bigintToNumber(p.length),
89
- amount: p.amount.map((c) => ({ denom: c.denom, amount: c.amount })),
90
- })),
91
- };
92
- }
93
- case '/cosmos.vesting.v1beta1.BaseVestingAccount': {
94
- const base = Vesting.BaseVestingAccount.decode(value);
95
- if (!base?.originalVesting?.length) return null;
96
- return {
97
- originalVesting: base.originalVesting.map((c) => ({
98
- denom: c.denom,
99
- amount: c.amount,
100
- })),
101
- startTimeSec: 0,
102
- endTimeSec: bigintToNumber(base.endTime),
103
- };
104
- }
105
- default:
106
- return null;
107
- }
108
- } catch {
109
- return null;
110
- }
111
- }
112
-
113
- /**
114
- * Считает разблокированную сумму в base units для денома по VestingInfo.
115
- *
116
- * - Continuous / Delayed / Base: линейная разблокировка от startTimeSec до endTimeSec.
117
- * - Periodic: каждый период — клифф; сумма периода разблокируется целиком
118
- * по истечении его длительности (start + Σ lengths предыдущих + length текущего).
119
- */
120
- export function computeUnlockedAmount(
121
- info: VestingInfo,
122
- denom: string
123
- ): string | undefined {
124
- const entry = info.originalVesting.find((c) => c.denom === denom);
125
- if (!entry) return undefined;
126
- const total = BigInt(entry.amount);
127
- const { startTimeSec, endTimeSec } = info;
128
- if (startTimeSec === 0 && endTimeSec === 0) return entry.amount;
129
- const nowSec = Math.floor(Date.now() / 1000);
130
- if (nowSec <= startTimeSec) return '0';
131
- if (nowSec >= endTimeSec) return entry.amount;
132
-
133
- // Periodic: считаем по периодам (клиффы)
134
- if (info.vestingPeriods?.length) {
135
- let unlocked = BigInt(0);
136
- let periodStartSec = startTimeSec;
137
- for (const p of info.vestingPeriods) {
138
- const periodEndSec = periodStartSec + p.lengthSec;
139
- if (nowSec >= periodEndSec) {
140
- const periodAmount = p.amount.find((c) => c.denom === denom)?.amount ?? '0';
141
- unlocked += BigInt(periodAmount);
142
- }
143
- periodStartSec = periodEndSec;
144
- }
145
- return String(unlocked);
146
- }
147
-
148
- // Linear (Continuous / Delayed / Base)
149
- const period = endTimeSec - startTimeSec;
150
- const elapsed = nowSec - startTimeSec;
151
- const unlocked = (total * BigInt(elapsed)) / BigInt(period);
152
- return String(unlocked);
153
- }