@ritbit/v4-client-js 2.2.2 → 2.2.3
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/build/cjs/src/lib/vesting.js +25 -2
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/esm/src/lib/vesting.d.ts +16 -1
- package/build/esm/src/lib/vesting.d.ts.map +1 -1
- package/build/esm/src/lib/vesting.js +25 -2
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/lib/vesting.ts +35 -1
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { Any } from 'cosmjs-types/google/protobuf/any';
|
|
2
|
+
/** Один период вестинга (для PeriodicVestingAccount). */
|
|
3
|
+
export interface VestingPeriod {
|
|
4
|
+
/** Длительность периода в секундах. */
|
|
5
|
+
lengthSec: number;
|
|
6
|
+
/** Монеты, разблокируемые в конце периода. */
|
|
7
|
+
amount: Array<{
|
|
8
|
+
denom: string;
|
|
9
|
+
amount: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
2
12
|
/**
|
|
3
13
|
* Нормализованная информация о вестинг-аккаунте, достаточная для расчёта
|
|
4
14
|
* разблокированной суммы. Типы Continuous/Delayed/Periodic/Base сводятся к этому виду.
|
|
@@ -13,6 +23,8 @@ export interface VestingInfo {
|
|
|
13
23
|
startTimeSec: number;
|
|
14
24
|
/** Конец вестинга (Unix секунды). */
|
|
15
25
|
endTimeSec: number;
|
|
26
|
+
/** Периоды (только для PeriodicVestingAccount). */
|
|
27
|
+
vestingPeriods?: VestingPeriod[];
|
|
16
28
|
}
|
|
17
29
|
/**
|
|
18
30
|
* Декодирует сырой аккаунт (Any из getAccountRaw) в VestingInfo.
|
|
@@ -21,7 +33,10 @@ export interface VestingInfo {
|
|
|
21
33
|
export declare function decodeVestingFromAny(raw: Any): VestingInfo | null;
|
|
22
34
|
/**
|
|
23
35
|
* Считает разблокированную сумму в base units для денома по VestingInfo.
|
|
24
|
-
*
|
|
36
|
+
*
|
|
37
|
+
* - Continuous / Delayed / Base: линейная разблокировка от startTimeSec до endTimeSec.
|
|
38
|
+
* - Periodic: каждый период — клифф; сумма периода разблокируется целиком
|
|
39
|
+
* по истечении его длительности (start + Σ lengths предыдущих + length текущего).
|
|
25
40
|
*/
|
|
26
41
|
export declare function computeUnlockedAmount(info: VestingInfo, denom: string): string | undefined;
|
|
27
42
|
//# sourceMappingURL=vesting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vesting.d.ts","sourceRoot":"","sources":["../../../../src/lib/vesting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAGvD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vesting.d.ts","sourceRoot":"","sources":["../../../../src/lib/vesting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAGvD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAcD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI,CAoEjE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CA8BpB"}
|
|
@@ -62,6 +62,10 @@ export function decodeVestingFromAny(raw) {
|
|
|
62
62
|
})),
|
|
63
63
|
startTimeSec: bigintToNumber(acc.startTime),
|
|
64
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
|
+
})),
|
|
65
69
|
};
|
|
66
70
|
}
|
|
67
71
|
case '/cosmos.vesting.v1beta1.BaseVestingAccount': {
|
|
@@ -87,9 +91,13 @@ export function decodeVestingFromAny(raw) {
|
|
|
87
91
|
}
|
|
88
92
|
/**
|
|
89
93
|
* Считает разблокированную сумму в base units для денома по VestingInfo.
|
|
90
|
-
*
|
|
94
|
+
*
|
|
95
|
+
* - Continuous / Delayed / Base: линейная разблокировка от startTimeSec до endTimeSec.
|
|
96
|
+
* - Periodic: каждый период — клифф; сумма периода разблокируется целиком
|
|
97
|
+
* по истечении его длительности (start + Σ lengths предыдущих + length текущего).
|
|
91
98
|
*/
|
|
92
99
|
export function computeUnlockedAmount(info, denom) {
|
|
100
|
+
var _a, _b, _c;
|
|
93
101
|
const entry = info.originalVesting.find((c) => c.denom === denom);
|
|
94
102
|
if (!entry)
|
|
95
103
|
return undefined;
|
|
@@ -102,9 +110,24 @@ export function computeUnlockedAmount(info, denom) {
|
|
|
102
110
|
return '0';
|
|
103
111
|
if (nowSec >= endTimeSec)
|
|
104
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)
|
|
105
128
|
const period = endTimeSec - startTimeSec;
|
|
106
129
|
const elapsed = nowSec - startTimeSec;
|
|
107
130
|
const unlocked = (total * BigInt(elapsed)) / BigInt(period);
|
|
108
131
|
return String(unlocked);
|
|
109
132
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLDZDQUE2QyxDQUFDO0FBeUJ2RSxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLGtEQUFrRDtJQUNsRCwrQ0FBK0M7SUFDL0MsZ0RBQWdEO0lBQ2hELDRDQUE0QztDQUNwQyxDQUFDO0FBRVgsU0FBUyxjQUFjLENBQUMsS0FBeUI7SUFDL0MsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFROztJQUMzQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxRQUFRLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLEtBQUssa0RBQWtELENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGVBQWUsMENBQUUsTUFBTSxDQUFBO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUNoRCxPQUFPO29C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
|