@kehtus/proportion-sdk 0.1.1 → 0.1.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.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/dist/abi/factory.d.ts +1 -0
  3. package/dist/abi/factory.d.ts.map +1 -0
  4. package/dist/abi/factory.js +1 -0
  5. package/dist/abi/factory.js.map +1 -0
  6. package/dist/abi/forwarder.d.ts +1 -0
  7. package/dist/abi/forwarder.d.ts.map +1 -0
  8. package/dist/abi/forwarder.js +1 -0
  9. package/dist/abi/forwarder.js.map +1 -0
  10. package/dist/abi/fundedAccount.d.ts +1 -0
  11. package/dist/abi/fundedAccount.d.ts.map +1 -0
  12. package/dist/abi/fundedAccount.js +1 -0
  13. package/dist/abi/fundedAccount.js.map +1 -0
  14. package/dist/abi/mainVault.d.ts +198 -16
  15. package/dist/abi/mainVault.d.ts.map +1 -0
  16. package/dist/abi/mainVault.js +253 -19
  17. package/dist/abi/mainVault.js.map +1 -0
  18. package/dist/account.d.ts +3 -2
  19. package/dist/account.d.ts.map +1 -0
  20. package/dist/account.js +46 -43
  21. package/dist/account.js.map +1 -0
  22. package/dist/base.d.ts +9 -0
  23. package/dist/base.d.ts.map +1 -0
  24. package/dist/base.js +19 -0
  25. package/dist/base.js.map +1 -0
  26. package/dist/constants.d.ts +5 -4
  27. package/dist/constants.d.ts.map +1 -0
  28. package/dist/constants.js +5 -4
  29. package/dist/constants.js.map +1 -0
  30. package/dist/factory.d.ts +1 -0
  31. package/dist/factory.d.ts.map +1 -0
  32. package/dist/factory.js +56 -10
  33. package/dist/factory.js.map +1 -0
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +1 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/indexer.d.ts +8 -3
  39. package/dist/indexer.d.ts.map +1 -0
  40. package/dist/indexer.js +81 -136
  41. package/dist/indexer.js.map +1 -0
  42. package/dist/sdk.d.ts +1 -0
  43. package/dist/sdk.d.ts.map +1 -0
  44. package/dist/sdk.js +1 -0
  45. package/dist/sdk.js.map +1 -0
  46. package/dist/types.d.ts +5 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +1 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/utils.d.ts +8 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +10 -0
  53. package/dist/utils.js.map +1 -0
  54. package/dist/vault.d.ts +7 -4
  55. package/dist/vault.d.ts.map +1 -0
  56. package/dist/vault.js +76 -51
  57. package/dist/vault.js.map +1 -0
  58. package/package.json +12 -1
  59. package/SDK_IMPROVEMENT_PLAN.md +0 -197
  60. package/arch.md +0 -455
  61. package/dist/__tests__/account.test.d.ts +0 -1
  62. package/dist/__tests__/account.test.js +0 -36
  63. package/dist/__tests__/indexer.test.d.ts +0 -1
  64. package/dist/__tests__/indexer.test.js +0 -230
  65. package/dist/__tests__/lifecycle.test.d.ts +0 -1
  66. package/dist/__tests__/lifecycle.test.js +0 -186
  67. package/dist/__tests__/reads.test.d.ts +0 -1
  68. package/dist/__tests__/reads.test.js +0 -184
  69. package/dist/__tests__/utils.test.d.ts +0 -1
  70. package/dist/__tests__/utils.test.js +0 -185
  71. package/src/__tests__/account.test.ts +0 -40
  72. package/src/__tests__/indexer.test.ts +0 -255
  73. package/src/__tests__/lifecycle.test.ts +0 -231
  74. package/src/__tests__/reads.test.ts +0 -208
  75. package/src/__tests__/utils.test.ts +0 -245
  76. package/src/abi/factory.ts +0 -417
  77. package/src/abi/forwarder.ts +0 -373
  78. package/src/abi/fundedAccount.ts +0 -1296
  79. package/src/abi/mainVault.ts +0 -1852
  80. package/src/account.ts +0 -325
  81. package/src/constants.ts +0 -51
  82. package/src/factory.ts +0 -157
  83. package/src/index.ts +0 -16
  84. package/src/indexer.ts +0 -636
  85. package/src/sdk.ts +0 -93
  86. package/src/types.ts +0 -421
  87. package/src/utils.ts +0 -143
  88. package/src/vault.ts +0 -479
  89. package/tsconfig.json +0 -19
  90. package/vitest.config.ts +0 -8
package/dist/vault.d.ts CHANGED
@@ -9,6 +9,8 @@ export declare class VaultModule {
9
9
  vault: Address;
10
10
  usdc: Address;
11
11
  });
12
+ private requireWallet;
13
+ private write;
12
14
  getStats(): Promise<VaultStats>;
13
15
  getLPPosition(account: Address): Promise<LPPosition>;
14
16
  getBuilderInfo(builder: Address): Promise<BuilderInfo>;
@@ -19,8 +21,6 @@ export declare class VaultModule {
19
21
  getRemainingCap(): Promise<bigint>;
20
22
  isFundedAccount(account: Address): Promise<boolean>;
21
23
  getDelegateBuilder(delegate: Address): Promise<Address>;
22
- private requireWallet;
23
- private write;
24
24
  deposit(amount: bigint): Promise<Hash>;
25
25
  withdraw(shares: bigint): Promise<Hash>;
26
26
  approveUsdc(amount: bigint): Promise<Hash>;
@@ -32,14 +32,15 @@ export declare class VaultModule {
32
32
  accountSize: bigint;
33
33
  drawdownBps: number;
34
34
  dailyDrawdownEnabled: boolean;
35
- hypeValue?: bigint;
36
35
  }): Promise<Hash>;
37
36
  pause(): Promise<Hash>;
38
37
  unpause(): Promise<Hash>;
39
38
  addAllowedPerp(index: number): Promise<Hash>;
40
39
  removeAllowedPerp(index: number): Promise<Hash>;
41
40
  setRelayer(addr: Address): Promise<Hash>;
42
- setFactory(addr: Address): Promise<Hash>;
41
+ queueFactoryChange(addr: Address): Promise<Hash>;
42
+ executeFactoryChange(): Promise<Hash>;
43
+ cancelFactoryChange(): Promise<Hash>;
43
44
  setProtocolFeeReceiver(addr: Address): Promise<Hash>;
44
45
  transferOwnership(newOwner: Address): Promise<Hash>;
45
46
  acceptOwnership(): Promise<Hash>;
@@ -57,4 +58,6 @@ export declare class VaultModule {
57
58
  setMaxUtilizationBps(value: bigint): Promise<Hash>;
58
59
  setMaxSingleAccountBps(value: bigint): Promise<Hash>;
59
60
  setDailyDdDiscountBps(value: number): Promise<Hash>;
61
+ withdrawHype(amount: bigint): Promise<Hash>;
60
62
  }
63
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}
package/dist/vault.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { mainVaultAbi } from "./abi/mainVault.js";
2
+ import { assertAllSuccess } from "./utils.js";
2
3
  const erc20Abi = [
3
4
  {
4
5
  type: "function",
@@ -22,6 +23,16 @@ export class VaultModule {
22
23
  this.chain = chain;
23
24
  this.addresses = addresses;
24
25
  }
26
+ requireWallet() {
27
+ if (!this.walletClient)
28
+ throw new Error("WalletClient required for write operations");
29
+ return this.walletClient;
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ async write(params) {
33
+ const wallet = this.requireWallet();
34
+ return wallet.writeContract({ chain: this.chain, ...params });
35
+ }
25
36
  // ── READS ───────────────────────────────────────────
26
37
  async getStats() {
27
38
  const contract = { address: this.addresses.vault, abi: mainVaultAbi };
@@ -55,37 +66,42 @@ export class VaultModule {
55
66
  { ...contract, functionName: "MAX_UTILIZATION_BPS" },
56
67
  { ...contract, functionName: "MAX_SINGLE_ACCOUNT_BPS" },
57
68
  { ...contract, functionName: "DAILY_DD_DISCOUNT_BPS" },
69
+ { ...contract, functionName: "pendingFactory" },
70
+ { ...contract, functionName: "factoryActivationTime" },
58
71
  ],
59
72
  });
73
+ const r = assertAllSuccess(results);
60
74
  return {
61
- totalAssets: results[0].result,
62
- sharePrice: results[1].result,
63
- utilizationBps: results[2].result,
64
- availableForAllocation: results[3].result,
65
- maxAccountSize: results[4].result,
66
- remainingCap: results[5].result,
67
- paused: results[6].result,
68
- feeMultiplier: results[7].result,
69
- subscriptionFeeMultiplier: results[8].result,
70
- totalShares: results[9].result,
71
- totalAllocated: results[10].result,
72
- owner: results[11].result,
73
- pendingOwner: results[12].result,
74
- relayer: results[13].result,
75
- protocolFeeReceiver: results[14].result,
76
- maxCap: results[15].result,
77
- hypeForSpot: results[16].result,
78
- factory: results[17].result,
79
- minBuilderShares: results[18].result,
80
- builderLeverage: results[19].result,
81
- protocolFeeBps: results[20].result,
82
- minAccountSize: results[21].result,
83
- maxAccountSizeLimit: results[22].result,
84
- minDrawdownBps: results[23].result,
85
- maxDrawdownBps: results[24].result,
86
- maxUtilizationBps: results[25].result,
87
- maxSingleAccountBps: results[26].result,
88
- dailyDdDiscountBps: results[27].result,
75
+ totalAssets: r[0],
76
+ sharePrice: r[1],
77
+ utilizationBps: r[2],
78
+ availableForAllocation: r[3],
79
+ maxAccountSize: r[4],
80
+ remainingCap: r[5],
81
+ paused: r[6],
82
+ feeMultiplier: r[7],
83
+ subscriptionFeeMultiplier: r[8],
84
+ totalShares: r[9],
85
+ totalAllocated: r[10],
86
+ owner: r[11],
87
+ pendingOwner: r[12],
88
+ relayer: r[13],
89
+ protocolFeeReceiver: r[14],
90
+ maxCap: r[15],
91
+ hypeForSpot: r[16],
92
+ factory: r[17],
93
+ minBuilderShares: r[18],
94
+ builderLeverage: r[19],
95
+ protocolFeeBps: r[20],
96
+ minAccountSize: r[21],
97
+ maxAccountSizeLimit: r[22],
98
+ minDrawdownBps: r[23],
99
+ maxDrawdownBps: r[24],
100
+ maxUtilizationBps: r[25],
101
+ maxSingleAccountBps: r[26],
102
+ dailyDdDiscountBps: r[27],
103
+ pendingFactory: r[28],
104
+ factoryActivationTime: r[29],
89
105
  };
90
106
  }
91
107
  async getLPPosition(account) {
@@ -97,10 +113,11 @@ export class VaultModule {
97
113
  { ...contract, functionName: "withdrawableShares", args: [account] },
98
114
  ],
99
115
  });
116
+ const r = assertAllSuccess(results);
100
117
  return {
101
- shares: results[0].result,
102
- sharesValue: results[1].result,
103
- withdrawableShares: results[2].result,
118
+ shares: r[0],
119
+ sharesValue: r[1],
120
+ withdrawableShares: r[2],
104
121
  };
105
122
  }
106
123
  async getBuilderInfo(builder) {
@@ -111,11 +128,12 @@ export class VaultModule {
111
128
  { ...contract, functionName: "builderAvailableFunded", args: [builder] },
112
129
  ],
113
130
  });
114
- const [active, activeFunded] = results[0].result;
131
+ const r = assertAllSuccess(results);
132
+ const [active, activeFunded] = r[0];
115
133
  return {
116
134
  active,
117
135
  activeFunded,
118
- availableFunded: results[1].result,
136
+ availableFunded: r[1],
119
137
  };
120
138
  }
121
139
  async getAllowedPerps() {
@@ -173,16 +191,6 @@ export class VaultModule {
173
191
  });
174
192
  }
175
193
  // ── WRITES ──────────────────────────────────────────
176
- requireWallet() {
177
- if (!this.walletClient)
178
- throw new Error("WalletClient required for write operations");
179
- return this.walletClient;
180
- }
181
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
182
- async write(params) {
183
- const wallet = this.requireWallet();
184
- return wallet.writeContract({ chain: this.chain, ...params });
185
- }
186
194
  async deposit(amount) {
187
195
  return this.write({
188
196
  address: this.addresses.vault,
@@ -231,17 +239,11 @@ export class VaultModule {
231
239
  });
232
240
  }
233
241
  async activateFunded(p) {
234
- const hypeValue = p.hypeValue ?? await this.publicClient.readContract({
235
- address: this.addresses.vault,
236
- abi: mainVaultAbi,
237
- functionName: "hypeForSpot",
238
- });
239
242
  return this.write({
240
243
  address: this.addresses.vault,
241
244
  abi: mainVaultAbi,
242
245
  functionName: "activateFunded",
243
246
  args: [p.trader, p.accountSize, p.drawdownBps, p.dailyDrawdownEnabled],
244
- value: hypeValue,
245
247
  });
246
248
  }
247
249
  // ── ADMIN ───────────────────────────────────────────
@@ -283,14 +285,28 @@ export class VaultModule {
283
285
  args: [addr],
284
286
  });
285
287
  }
286
- async setFactory(addr) {
288
+ async queueFactoryChange(addr) {
287
289
  return this.write({
288
290
  address: this.addresses.vault,
289
291
  abi: mainVaultAbi,
290
- functionName: "setFactory",
292
+ functionName: "queueFactoryChange",
291
293
  args: [addr],
292
294
  });
293
295
  }
296
+ async executeFactoryChange() {
297
+ return this.write({
298
+ address: this.addresses.vault,
299
+ abi: mainVaultAbi,
300
+ functionName: "executeFactoryChange",
301
+ });
302
+ }
303
+ async cancelFactoryChange() {
304
+ return this.write({
305
+ address: this.addresses.vault,
306
+ abi: mainVaultAbi,
307
+ functionName: "cancelFactoryChange",
308
+ });
309
+ }
294
310
  async setProtocolFeeReceiver(addr) {
295
311
  return this.write({
296
312
  address: this.addresses.vault,
@@ -426,4 +442,13 @@ export class VaultModule {
426
442
  args: [value],
427
443
  });
428
444
  }
445
+ async withdrawHype(amount) {
446
+ return this.write({
447
+ address: this.addresses.vault,
448
+ abi: mainVaultAbi,
449
+ functionName: "withdrawHype",
450
+ args: [amount],
451
+ });
452
+ }
429
453
  }
454
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,18 +1,29 @@
1
1
  {
2
2
  "name": "@kehtus/proportion-sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
+ "description": "TypeScript SDK for Proportion Protocol on Hyperliquid",
5
+ "license": "MIT",
6
+ "author": "Kehtus",
4
7
  "type": "module",
8
+ "sideEffects": false,
5
9
  "main": "dist/index.js",
6
10
  "types": "dist/index.d.ts",
11
+ "files": [
12
+ "dist"
13
+ ],
7
14
  "exports": {
8
15
  ".": {
9
16
  "types": "./dist/index.d.ts",
10
17
  "import": "./dist/index.js"
11
18
  }
12
19
  },
20
+ "engines": {
21
+ "node": ">=18"
22
+ },
13
23
  "scripts": {
14
24
  "build": "tsc",
15
25
  "check": "tsc --noEmit",
26
+ "prepublishOnly": "npm run build",
16
27
  "test": "vitest run --exclude src/__tests__/lifecycle.test.ts",
17
28
  "test:unit": "vitest run src/__tests__/utils.test.ts",
18
29
  "test:reads": "vitest run src/__tests__/reads.test.ts",
@@ -1,197 +0,0 @@
1
- # План улучшения Proportion SDK
2
-
3
- ## Статус после повторной сверки
4
-
5
- Этот документ обновлён после повторной проверки against:
6
-
7
- - `contracts/MainVault.sol`
8
- - `contracts/FundedAccount.sol`
9
- - `contracts/FundedAccountFactory.sol`
10
- - `prop-sdk/src/*`
11
- - критичные indexer-файлы `envio-funded/schema.graphql` и `envio-funded/src/EventHandlers.ts`
12
-
13
- Если этот план и Solidity расходятся, Solidity остаётся source of truth.
14
-
15
- ## Что уже закрыто
16
-
17
- ### Контрактная синхронизация
18
-
19
- - ABI в SDK синхронизированы с текущими локальными контрактами.
20
- - Формулы `activationFee`, `subscriptionFee`, `splitProfit`, `trailingFloor`, `dailyFloor` приведены к актуальной Solidity-логике.
21
- - `arch.md` обновлён и теперь описывает текущий surface SDK, а не старую версию контрактов.
22
-
23
- ### VaultModule
24
-
25
- - Добавлены admin setters для текущих mutable параметров vault:
26
- - `setFeeMultiplier`
27
- - `setSubscriptionFeeMultiplier`
28
- - `setHypeForSpot`
29
- - `setMaxCap`
30
- - `setMinBuilderShares`
31
- - `setBuilderLeverage`
32
- - `setProtocolFeeBps`
33
- - `setMinAccountSize`
34
- - `setMaxAccountSize`
35
- - `setMinDrawdownBps`
36
- - `setMaxDrawdownBps`
37
- - `setMaxUtilizationBps`
38
- - `setMaxSingleAccountBps`
39
- - `getStats()` расширен и читает текущий конфиг и runtime state vault.
40
- - Добавлены utility getters:
41
- - `isFundedAccount`
42
- - `getDelegateBuilder`
43
- - `getRemainingCap`
44
- - `activateFunded()` больше не полагается на stale native fee default и читает `hypeForSpot()` из vault.
45
-
46
- ### AccountModule
47
-
48
- - Добавлен `initiateCloseAdmin`.
49
- - Добавлен `getAccountConfig()`.
50
- - `getDetails()` теперь возвращает `subscriptionFeeMultiplier`, `checkpointIndex` и нормализованные checkpoints вместо сырого ring-buffer порядка.
51
- - Текущий write surface выровнен с локальным `FundedAccount.sol`.
52
-
53
- ### FactoryModule
54
-
55
- - SDK переведён на реальный on-chain surface новой фабрики:
56
- - `allAccounts(index)`
57
- - `allAccountsIndex(account)`
58
- - `traderBuilderNonce(owner, builder)`
59
- - `predictFundedAccountAddress(owner, builder)`
60
- - Сохранены совместимые helper-методы `getAccountsCount()` и `getAccounts()`, но теперь они реализованы поверх probing `allAccounts(index)`.
61
- - Добавлены safe helpers:
62
- - `hasAccount`
63
- - `findAccountIndex`
64
-
65
- ### Indexer Layer
66
-
67
- - GraphQL-типы приведены к реальной `schema.graphql`.
68
- - Разделены on-chain state labels и indexer state labels.
69
- - Учтён `POSITION_LEVERAGE`.
70
- - Учтены дополнительные индексируемые поля вроде `subscriptionFeeMultiplier`, `lastWithdrawalId`, `totalAllocated`, `totalShares`.
71
- - Vault analytics больше не должны опираться на жёстко зашитый 90/10 split: актуальны `protocolFeeReceiver`, mutable `PROTOCOL_FEE_BPS` и фактический amount, остающийся в vault.
72
- - Для service/backend use cases добавлена инъекция `fetchFn` и `webSocketCtor`, чтобы SDK не зависел жёстко от глобальных runtime объектов.
73
-
74
- ## Что в старом плане устарело
75
-
76
- ### Устаревшие статусы
77
-
78
- Следующие пункты были верны для прошлой версии SDK, но уже закрыты:
79
-
80
- - отсутствие `initiateCloseAdmin`
81
- - отсутствие `getAccountConfig`
82
- - отсутствие большинства admin setters в `VaultModule`
83
- - неполный `VaultStats`
84
- - отсутствие `isFundedAccount` и `getDelegateBuilder`
85
-
86
- ### Устаревшие константы
87
-
88
- В старом плане были значения, которые больше не совпадают с текущими контрактами:
89
-
90
- - `MIN_PROFIT_BPS` указан как `150`, но в текущем `FundedAccount.sol` он равен `50`
91
- - важные экспортируемые значения нужно сверять с локальной Solidity, а не со старым plan draft
92
-
93
- ### Необязательная рекомендация про отдельный `AdminModule`
94
-
95
- Идея отдельного `AdminModule` сама по себе нормальная, но сейчас это не must-have.
96
- Текущий `VaultModule` уже покрывает актуальный owner admin surface без архитектурного долга, который требовал бы срочного выделения нового модуля.
97
-
98
- ## Что остаётся актуальным
99
-
100
- ### Phase 2. Улучшения API и DX
101
-
102
- 1. Выровнять числовую модель SDK для service use cases.
103
- Сейчас часть helper-ов (`fromUsdc`, `from8Dec`, `formatUsd`) переводит `bigint` в `number`, что удобно для UI, но не идеально для финансовой серверной логики.
104
-
105
- 2. Выровнять timestamp-модель.
106
- Сейчас часть временных полей в `AccountDetails` хранится как `bigint`, часть как `number`. Лучше выбрать одну ясную стратегию API.
107
-
108
- 3. Добавить типы для параметризуемого admin-конфига.
109
- Практичный следующий шаг:
110
-
111
- ```ts
112
- export interface VaultParameters {
113
- feeMultiplier: number;
114
- subscriptionFeeMultiplier: number;
115
- minBuilderShares: bigint;
116
- builderLeverage: bigint;
117
- protocolFeeBps: bigint;
118
- minAccountSize: bigint;
119
- maxAccountSize: bigint;
120
- minDrawdownBps: number;
121
- maxDrawdownBps: number;
122
- maxUtilizationBps: bigint;
123
- maxSingleAccountBps: bigint;
124
- hypeForSpot: bigint;
125
- maxCap: bigint;
126
- }
127
- ```
128
-
129
- 4. Добавить validation helpers поверх текущего `VaultStats`.
130
- Это уже полезный SDK-level слой, который не зависит от деплоя:
131
-
132
- ```ts
133
- export function validateAccountSize(size: bigint, vaultStats: VaultStats): {
134
- valid: boolean;
135
- reason?: string;
136
- }
137
-
138
- export function validateDrawdownBps(bps: number, vaultStats: VaultStats): {
139
- valid: boolean;
140
- reason?: string;
141
- }
142
-
143
- export function canBuilderActivate(
144
- builderInfo: BuilderInfo,
145
- accountSize: bigint,
146
- vaultStats: VaultStats
147
- ): {
148
- canActivate: boolean;
149
- reason?: string;
150
- }
151
- ```
152
-
153
- ### Phase 3. Дополнительные helper-обёртки
154
-
155
- 1. Batch reads:
156
-
157
- ```ts
158
- async getMultipleLPPositions(addresses: Address[]): Promise<LPPosition[]>
159
- async getMultipleBuilderInfo(addresses: Address[]): Promise<BuilderInfo[]>
160
- async getMultipleAccountDetails(addresses: Address[]): Promise<AccountDetails[]>
161
- ```
162
-
163
- 2. Дополнительные indexer helpers:
164
-
165
- ```ts
166
- async getEventsByDateRange(
167
- accountAddress: Address,
168
- fromDate: Date,
169
- toDate: Date
170
- ): Promise<GqlAccountEvent[]>
171
-
172
- async getCheckpointHistory(
173
- accountAddress: Address,
174
- limit?: number
175
- ): Promise<GqlCheckpoint[]>
176
- ```
177
-
178
- 3. Higher-level admin ergonomics:
179
-
180
- - `getCurrentParameters()`
181
- - `validateParameters()`
182
- - опциональный bulk-update helper для owner workflows
183
-
184
- ## Рекомендуемый следующий порядок работ
185
-
186
- 1. Сначала привести numeric/timestamp API к более строгой и единообразной модели.
187
- 2. Затем добавить validation helpers поверх уже актуального `VaultStats`.
188
- 3. После этого расширять batch helpers и high-level admin ergonomics.
189
-
190
- ## Проверка
191
-
192
- После последних изменений:
193
-
194
- - `npm run check` проходит
195
- - `npm run test:unit` проходит
196
-
197
- RPC/GraphQL-зависимые тесты не считаются источником истины, пока локальные контракты не задеплоены.