@kehtus/proportion-sdk 0.1.1 → 0.1.2

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.
@@ -19,9 +19,9 @@ export declare const hyperEvm: {
19
19
  };
20
20
  };
21
21
  export declare const ADDRESSES: {
22
- readonly MAIN_VAULT: "0xA89F85eC9350e64295B199ee8011454d891e19B1";
23
- readonly FACTORY: "0xE056F0D2A476CCd9A24230C7DB7c9d6AF44a0161";
24
- readonly FORWARDER: "0x4fDc2489dE19BECC9FAeA59672F377bf740E4ecF";
22
+ readonly MAIN_VAULT: "0x3A8cD3feb02959B2AB622Fcebe40A477c73f9488";
23
+ readonly FACTORY: "0x04B71DC7414Bfa940D1c11f839011B6a11031D2E";
24
+ readonly FORWARDER: "0x5961880B2C461F9733EC71720528461840881f4E";
25
25
  readonly USDC: "0xb88339CB7199b77E23DB6E890353E22632Ba630f";
26
26
  };
27
27
  export declare const BPS = 10000n;
package/dist/constants.js CHANGED
@@ -9,9 +9,9 @@ export const hyperEvm = {
9
9
  },
10
10
  };
11
11
  export const ADDRESSES = {
12
- MAIN_VAULT: "0xA89F85eC9350e64295B199ee8011454d891e19B1",
13
- FACTORY: "0xE056F0D2A476CCd9A24230C7DB7c9d6AF44a0161",
14
- FORWARDER: "0x4fDc2489dE19BECC9FAeA59672F377bf740E4ecF",
12
+ MAIN_VAULT: "0x3A8cD3feb02959B2AB622Fcebe40A477c73f9488",
13
+ FACTORY: "0x04B71DC7414Bfa940D1c11f839011B6a11031D2E",
14
+ FORWARDER: "0x5961880B2C461F9733EC71720528461840881f4E",
15
15
  USDC: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
16
16
  };
17
17
  // BPS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kehtus/proportion-sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/constants.ts CHANGED
@@ -13,9 +13,9 @@ export const hyperEvm = {
13
13
  } as const satisfies Chain;
14
14
 
15
15
  export const ADDRESSES = {
16
- MAIN_VAULT: "0xA89F85eC9350e64295B199ee8011454d891e19B1",
17
- FACTORY: "0xE056F0D2A476CCd9A24230C7DB7c9d6AF44a0161",
18
- FORWARDER: "0x4fDc2489dE19BECC9FAeA59672F377bf740E4ecF",
16
+ MAIN_VAULT: "0x3A8cD3feb02959B2AB622Fcebe40A477c73f9488",
17
+ FACTORY: "0x04B71DC7414Bfa940D1c11f839011B6a11031D2E",
18
+ FORWARDER: "0x5961880B2C461F9733EC71720528461840881f4E",
19
19
  USDC: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
20
20
  } as const;
21
21
 
@@ -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-зависимые тесты не считаются источником истины, пока локальные контракты не задеплоены.