@polyester/sdk 0.12.0 → 0.13.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 +10 -0
- package/dist/core-client.d.ts +3 -3
- package/dist/core-client.d.ts.map +1 -1
- package/dist/core-client.js +35 -50
- package/dist/core-client.js.map +1 -1
- package/dist/services/accounts/accounts.d.ts +2 -2
- package/dist/services/accounts/accounts.d.ts.map +1 -1
- package/dist/services/accounts/accounts.js +2 -2
- package/dist/services/accounts/accounts.js.map +1 -1
- package/dist/services/address-book/address-book.d.ts +2 -2
- package/dist/services/address-book/address-book.d.ts.map +1 -1
- package/dist/services/address-book/address-book.js +2 -2
- package/dist/services/address-book/address-book.js.map +1 -1
- package/dist/services/api-keys/api-keys.d.ts +2 -2
- package/dist/services/api-keys/api-keys.d.ts.map +1 -1
- package/dist/services/api-keys/api-keys.js +3 -3
- package/dist/services/api-keys/api-keys.js.map +1 -1
- package/dist/services/auth/account-signer-auth.d.ts +3 -2
- package/dist/services/auth/account-signer-auth.d.ts.map +1 -1
- package/dist/services/auth/account-signer-auth.js.map +1 -1
- package/dist/services/auth/auth.d.ts +3 -7
- package/dist/services/auth/auth.d.ts.map +1 -1
- package/dist/services/auth/auth.js +1 -1
- package/dist/services/auth/auth.js.map +1 -1
- package/dist/services/auth/profile/profile.d.ts +2 -2
- package/dist/services/auth/profile/profile.d.ts.map +1 -1
- package/dist/services/auth/profile/profile.js +2 -2
- package/dist/services/auth/profile/profile.js.map +1 -1
- package/dist/services/balances/balances.d.ts +2 -2
- package/dist/services/balances/balances.d.ts.map +1 -1
- package/dist/services/balances/balances.js +2 -2
- package/dist/services/balances/balances.js.map +1 -1
- package/dist/services/candles/candles.d.ts +2 -2
- package/dist/services/candles/candles.d.ts.map +1 -1
- package/dist/services/candles/candles.js +2 -2
- package/dist/services/candles/candles.js.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.d.ts +2 -2
- package/dist/services/chain-analytics/chain-analytics.d.ts.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.js +2 -2
- package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
- package/dist/services/deposit/deposit.d.ts +2 -2
- package/dist/services/deposit/deposit.d.ts.map +1 -1
- package/dist/services/deposit/deposit.js +2 -2
- package/dist/services/deposit/deposit.js.map +1 -1
- package/dist/services/fees/fees.d.ts +2 -2
- package/dist/services/fees/fees.d.ts.map +1 -1
- package/dist/services/fees/fees.js +2 -2
- package/dist/services/fees/fees.js.map +1 -1
- package/dist/services/guard-signer/guard-signer.d.ts +2 -2
- package/dist/services/guard-signer/guard-signer.d.ts.map +1 -1
- package/dist/services/guard-signer/guard-signer.js +2 -2
- package/dist/services/guard-signer/guard-signer.js.map +1 -1
- package/dist/services/heatmap/heatmap.d.ts +2 -2
- package/dist/services/heatmap/heatmap.d.ts.map +1 -1
- package/dist/services/heatmap/heatmap.js +2 -2
- package/dist/services/heatmap/heatmap.js.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.d.ts +2 -2
- package/dist/services/internal-transfers/internal-transfers.d.ts.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.js +2 -2
- package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.d.ts +2 -2
- package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
- package/dist/services/lifecycle/lifecycle.js +2 -2
- package/dist/services/lifecycle/lifecycle.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
- package/dist/services/market-data/market-data.d.ts +2 -2
- package/dist/services/market-data/market-data.d.ts.map +1 -1
- package/dist/services/market-data/market-data.js +2 -2
- package/dist/services/market-data/market-data.js.map +1 -1
- package/dist/services/market-overview/market-overview.d.ts +2 -2
- package/dist/services/market-overview/market-overview.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.js +2 -2
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/mfa/mfa.d.ts +2 -2
- package/dist/services/mfa/mfa.d.ts.map +1 -1
- package/dist/services/mfa/mfa.js +2 -2
- package/dist/services/mfa/mfa.js.map +1 -1
- package/dist/services/orderbook/orderbook.d.ts +2 -2
- package/dist/services/orderbook/orderbook.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.js +2 -2
- package/dist/services/orderbook/orderbook.js.map +1 -1
- package/dist/services/orders/orders-input.schemas.d.ts +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +6 -6
- package/dist/services/orders/orders.d.ts +2 -2
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +3 -3
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts +2 -2
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.js +2 -2
- package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +2 -2
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.js +2 -2
- package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
- package/dist/services/rate-limits/rate-limits.d.ts +2 -2
- package/dist/services/rate-limits/rate-limits.d.ts.map +1 -1
- package/dist/services/rate-limits/rate-limits.js.map +1 -1
- package/dist/services/social-verification/social-verification.d.ts +2 -2
- package/dist/services/social-verification/social-verification.d.ts.map +1 -1
- package/dist/services/social-verification/social-verification.js +2 -2
- package/dist/services/social-verification/social-verification.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.d.ts +3 -3
- package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.js +11 -9
- package/dist/services/subaccounts/subaccounts.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +4 -4
- package/dist/services/trades/trades.d.ts +2 -2
- package/dist/services/trades/trades.d.ts.map +1 -1
- package/dist/services/trades/trades.js +2 -2
- package/dist/services/trades/trades.js.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.d.ts +2 -2
- package/dist/services/trading-withdraws/trading-withdraws.d.ts.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.js +2 -2
- package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
- package/dist/services/transfers/transfers.d.ts +2 -2
- package/dist/services/transfers/transfers.d.ts.map +1 -1
- package/dist/services/transfers/transfers.js +2 -2
- package/dist/services/transfers/transfers.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +1 -1
- package/dist/services/triggers/triggers-output.schemas.d.ts +15 -15
- package/dist/services/triggers/triggers.d.ts +2 -2
- package/dist/services/triggers/triggers.d.ts.map +1 -1
- package/dist/services/triggers/triggers.js +2 -2
- package/dist/services/triggers/triggers.js.map +1 -1
- package/dist/services/vip/vip.d.ts +2 -2
- package/dist/services/vip/vip.js.map +1 -1
- package/dist/services/whiteboard/whiteboard.d.ts +2 -2
- package/dist/services/whiteboard/whiteboard.d.ts.map +1 -1
- package/dist/services/whiteboard/whiteboard.js +2 -2
- package/dist/services/whiteboard/whiteboard.js.map +1 -1
- package/dist/services/zipper/zipper.d.ts +2 -2
- package/dist/services/zipper/zipper.d.ts.map +1 -1
- package/dist/services/zipper/zipper.js +2 -2
- package/dist/services/zipper/zipper.js.map +1 -1
- package/dist/shared/transports.d.ts +7 -1
- package/dist/shared/transports.d.ts.map +1 -1
- package/dist/shared/transports.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @polyester/sdk
|
|
2
2
|
|
|
3
|
+
## 0.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- refactor(services): replace positional Connect transport constructor arguments with capability-scoped transport objects. Direct service construction now passes `{ authApi }`, `{ publicApi }`, or both as the first argument. ([#89](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/89))
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- fix(subaccounts): route `listRoles` through the public transport without authentication headers while keeping caller-effective permission reads authenticated. ([#89](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/89))
|
|
12
|
+
|
|
3
13
|
## 0.12.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
package/dist/core-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PolyesterEnvironment } from "./environment.js";
|
|
2
2
|
import { CatalogSnapshot, CatalogSnapshotCell, ClientCatalog } from "./catalogs/types.js";
|
|
3
3
|
import "./catalogs/index.js";
|
|
4
|
-
import { ApiKeyEd25519AuthProvider, JwtAuthProvider, Transports } from "./shared/transports.js";
|
|
4
|
+
import { ApiKeyEd25519AuthProvider, AuthAndPublicApiTransports, JwtAuthProvider, Transports } from "./shared/transports.js";
|
|
5
5
|
import { AccountsService } from "./services/accounts/accounts.js";
|
|
6
6
|
import "./services/accounts/index.js";
|
|
7
7
|
import { SubaccountResolver } from "./services/subaccount-resolver.js";
|
|
@@ -10,7 +10,7 @@ import { RealtimeConfig } from "./realtime/client.js";
|
|
|
10
10
|
import "./realtime/index.js";
|
|
11
11
|
import { ApiKeysService } from "./services/api-keys/api-keys.js";
|
|
12
12
|
import "./services/api-keys/index.js";
|
|
13
|
-
import { AuthService
|
|
13
|
+
import { AuthService } from "./services/auth/auth.js";
|
|
14
14
|
import { SubaccountsService } from "./services/subaccounts/subaccounts.js";
|
|
15
15
|
import "./services/subaccounts/index.js";
|
|
16
16
|
import { CandlesService } from "./services/candles/candles.js";
|
|
@@ -112,7 +112,7 @@ type PolyesterClientBaseConfig = PolyesterClientCommonConfig & PolyesterCatalogC
|
|
|
112
112
|
/** Configuration for the base Polyester client. */
|
|
113
113
|
type PolyesterClientConfig = PolyesterClientBaseConfig;
|
|
114
114
|
interface AuthServiceFactoryContext {
|
|
115
|
-
transports:
|
|
115
|
+
transports: AuthAndPublicApiTransports;
|
|
116
116
|
realtime: PolyesterRealtime;
|
|
117
117
|
subaccounts: SubaccountsService;
|
|
118
118
|
environment: PolyesterEnvironment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-client.d.ts","names":[],"sources":["../src/core-client.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"core-client.d.ts","names":[],"sources":["../src/core-client.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkHY,8BAA8B,KAAK;UAErC;EACN,aAAa;EACb,eAAe;EACf,OAAO,kBAAkB;EACzB,WAAW;;;;;EAKX;;;;;;;EAOA,aAAa;;;;;;EAMb,iBAAiB;;KAGhB;;EAGK,SAAS;EACT;EACA;;EAGA;;;;;;EAMA,kBAAkB;;;;;EAKlB,cAAc;;;KAIZ,4BAA4B,8BAA8B;;KAG1D,wBAAwB;UAc1B;EACN,YAAY;EACZ,UAAU;EACV,aAAa;EACb,aAAa;;UAGP;EACN,cAAc,SAAS,8BAA8B;;;;;;;;;cAqC5C;;qBACU,YAAY;EA8CnB,YAAA,QAAQ,uBAAuB,UAAS;MAyBhD,YAAY;MAoBZ,WAAW;MAwCX,QAAQ;MAaR,YAAY;MAIZ,WAAW;MAQX,eAAe;MAQf,WAAW;MAQX,kBAAkB;MAOlB,cAAc;MAQd,kBAAkB;MAQlB,aAAa;MAQb,WAAW;MAQX,aAAa;MAIb,UAAU;MASV,UAAU;MASV,YAAY;MASZ,YAAY;MASZ,aAAa;MAQb,qBAAqB;MAQrB,oBAAoB;MAapB,WAAW;MAIX,eAAe;MAQf,eAAe;MAIf,sBAAsB;MAItB,cAAc;MAId,UAAU;MAQV,OAAO;MAIP,OAAO;MAIP,QAAQ;MAIR,qBAAqB;;;;;YAWf,4BAA4B"}
|
package/dist/core-client.js
CHANGED
|
@@ -195,8 +195,8 @@ var PolyesterClient = class {
|
|
|
195
195
|
get catalog() {
|
|
196
196
|
if (!this.#catalog) if (this.#configCatalog) this.#catalog = this.#configCatalog;
|
|
197
197
|
else {
|
|
198
|
-
const catalogRefreshMarketData = new MarketDataService(this.transports
|
|
199
|
-
const catalogRefreshZipper = new ZipperService(this.transports
|
|
198
|
+
const catalogRefreshMarketData = new MarketDataService(this.transports, this.realtime, this.#getScales());
|
|
199
|
+
const catalogRefreshZipper = new ZipperService(this.transports);
|
|
200
200
|
this.#catalog = createPolyesterCatalog({
|
|
201
201
|
snapshot: this.#configCatalogSnapshot,
|
|
202
202
|
cell: this.#configCatalogCell,
|
|
@@ -220,112 +220,97 @@ var PolyesterClient = class {
|
|
|
220
220
|
return this.#resolver;
|
|
221
221
|
}
|
|
222
222
|
get auth() {
|
|
223
|
-
if (!this.#auth) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
},
|
|
230
|
-
realtime: this.realtime,
|
|
231
|
-
subaccounts: this.subaccounts,
|
|
232
|
-
environment: this.#environment
|
|
233
|
-
}) ?? new AuthService({
|
|
234
|
-
publicApi,
|
|
235
|
-
authApi
|
|
236
|
-
}, this.realtime);
|
|
237
|
-
}
|
|
223
|
+
if (!this.#auth) this.#auth = this.#createAuth?.({
|
|
224
|
+
transports: this.transports,
|
|
225
|
+
realtime: this.realtime,
|
|
226
|
+
subaccounts: this.subaccounts,
|
|
227
|
+
environment: this.#environment
|
|
228
|
+
}) ?? new AuthService(this.transports, this.realtime);
|
|
238
229
|
return this.#auth;
|
|
239
230
|
}
|
|
240
231
|
get accounts() {
|
|
241
|
-
return this.#accounts ??= new AccountsService(this.transports
|
|
232
|
+
return this.#accounts ??= new AccountsService(this.transports);
|
|
242
233
|
}
|
|
243
234
|
get apiKeys() {
|
|
244
|
-
return this.#apiKeys ??= new ApiKeysService(this.transports
|
|
235
|
+
return this.#apiKeys ??= new ApiKeysService(this.transports, this.realtime, this.#getResolver());
|
|
245
236
|
}
|
|
246
237
|
get subaccounts() {
|
|
247
|
-
return this.#subaccounts ??= new SubaccountsService(this.transports
|
|
238
|
+
return this.#subaccounts ??= new SubaccountsService(this.transports, this.realtime, this.#getResolver());
|
|
248
239
|
}
|
|
249
240
|
get candles() {
|
|
250
|
-
return this.#candles ??= new CandlesService(this.transports
|
|
241
|
+
return this.#candles ??= new CandlesService(this.transports, this.realtime, this.#getScales());
|
|
251
242
|
}
|
|
252
243
|
get chainAnalytics() {
|
|
253
|
-
return this.#chainAnalytics ??= new ChainAnalyticsService(this.transports
|
|
244
|
+
return this.#chainAnalytics ??= new ChainAnalyticsService(this.transports, this.#getScales());
|
|
254
245
|
}
|
|
255
246
|
get marketData() {
|
|
256
|
-
return this.#marketData ??= new MarketDataService(this.transports
|
|
247
|
+
return this.#marketData ??= new MarketDataService(this.transports, this.realtime, this.#getScales());
|
|
257
248
|
}
|
|
258
249
|
get marketOverview() {
|
|
259
|
-
return this.#marketOverview ??= new MarketOverviewService(this.transports
|
|
250
|
+
return this.#marketOverview ??= new MarketOverviewService(this.transports, this.realtime, this.#getScales());
|
|
260
251
|
}
|
|
261
252
|
get orderbook() {
|
|
262
|
-
return this.#orderbook ??= new OrderbookService(this.transports
|
|
253
|
+
return this.#orderbook ??= new OrderbookService(this.transports, this.realtime, this.#getScales());
|
|
263
254
|
}
|
|
264
255
|
get heatmap() {
|
|
265
|
-
return this.#heatmap ??= new HeatmapService(this.transports
|
|
256
|
+
return this.#heatmap ??= new HeatmapService(this.transports, this.realtime, this.#getScales());
|
|
266
257
|
}
|
|
267
258
|
get lifecycle() {
|
|
268
|
-
return this.#lifecycle ??= new LifecycleService(this.transports
|
|
259
|
+
return this.#lifecycle ??= new LifecycleService(this.transports, this.realtime);
|
|
269
260
|
}
|
|
270
261
|
get trades() {
|
|
271
|
-
return this.#trades ??= new TradesService(this.transports
|
|
262
|
+
return this.#trades ??= new TradesService(this.transports, this.realtime, this.#getResolver(), this.#getScales());
|
|
272
263
|
}
|
|
273
264
|
get orders() {
|
|
274
|
-
return this.#orders ??= new OrdersService(this.transports
|
|
265
|
+
return this.#orders ??= new OrdersService(this.transports, this.realtime, this.#getResolver(), this.#getScales());
|
|
275
266
|
}
|
|
276
267
|
get triggers() {
|
|
277
|
-
return this.#triggers ??= new TriggersService(this.transports
|
|
268
|
+
return this.#triggers ??= new TriggersService(this.transports, this.realtime, this.#getResolver(), this.#getScales());
|
|
278
269
|
}
|
|
279
270
|
get balances() {
|
|
280
|
-
return this.#balances ??= new BalancesService(this.transports
|
|
271
|
+
return this.#balances ??= new BalancesService(this.transports, this.realtime, this.#getResolver(), this.#getScales());
|
|
281
272
|
}
|
|
282
273
|
get transfers() {
|
|
283
|
-
return this.#transfers ??= new TransfersService(this.transports
|
|
274
|
+
return this.#transfers ??= new TransfersService(this.transports, this.realtime, this.#getResolver());
|
|
284
275
|
}
|
|
285
276
|
get internalTransfers() {
|
|
286
|
-
return this.#internalTransfers ??= new InternalTransfersService(this.transports
|
|
277
|
+
return this.#internalTransfers ??= new InternalTransfersService(this.transports, this.#getResolver(), this.#getScales());
|
|
287
278
|
}
|
|
288
279
|
get tradingWithdraws() {
|
|
289
|
-
return this.#tradingWithdraws ??= new TradingWithdrawsService(this.transports
|
|
280
|
+
return this.#tradingWithdraws ??= new TradingWithdrawsService(this.transports, this.#getResolver(), {
|
|
290
281
|
chainId: this.#environment.chain.id,
|
|
291
282
|
tradingGatewayAddress: this.#environment.contracts.tradingGatewayAddress
|
|
292
283
|
}, this.#getScales(), this.catalog);
|
|
293
284
|
}
|
|
294
285
|
get deposit() {
|
|
295
|
-
return this.#deposit ??= new DepositService(this.transports
|
|
286
|
+
return this.#deposit ??= new DepositService(this.transports, this.#getResolver());
|
|
296
287
|
}
|
|
297
288
|
get addressBook() {
|
|
298
|
-
return this.#addressBook ??= new AddressBookService(this.transports
|
|
289
|
+
return this.#addressBook ??= new AddressBookService(this.transports, this.realtime, this.#getResolver());
|
|
299
290
|
}
|
|
300
291
|
get guardSigner() {
|
|
301
|
-
return this.#guardSigner ??= new GuardSignerService(this.transports
|
|
292
|
+
return this.#guardSigner ??= new GuardSignerService(this.transports, this.#getResolver());
|
|
302
293
|
}
|
|
303
294
|
get socialVerification() {
|
|
304
|
-
return this.#socialVerification ??= new SocialVerificationService(this.transports
|
|
295
|
+
return this.#socialVerification ??= new SocialVerificationService(this.transports);
|
|
305
296
|
}
|
|
306
297
|
get whiteboard() {
|
|
307
|
-
return this.#whiteboard ??= new WhiteboardService(this.transports
|
|
298
|
+
return this.#whiteboard ??= new WhiteboardService(this.transports);
|
|
308
299
|
}
|
|
309
300
|
get zipper() {
|
|
310
|
-
return this.#zipper ??= new ZipperService(this.transports
|
|
301
|
+
return this.#zipper ??= new ZipperService(this.transports, this.realtime, this.#getScales());
|
|
311
302
|
}
|
|
312
303
|
get mfa() {
|
|
313
|
-
return this.#mfa ??= new MfaService(this.transports
|
|
304
|
+
return this.#mfa ??= new MfaService(this.transports);
|
|
314
305
|
}
|
|
315
306
|
get vip() {
|
|
316
|
-
return this.#vip ??= new VipService(
|
|
317
|
-
publicApi: this.transports.publicApi,
|
|
318
|
-
authApi: this.transports.authApi
|
|
319
|
-
});
|
|
307
|
+
return this.#vip ??= new VipService(this.transports);
|
|
320
308
|
}
|
|
321
309
|
get fees() {
|
|
322
|
-
return this.#fees ??= new FeesService(this.transports
|
|
310
|
+
return this.#fees ??= new FeesService(this.transports, this.#getResolver());
|
|
323
311
|
}
|
|
324
312
|
get tradingRateLimits() {
|
|
325
|
-
return this.#tradingRateLimits ??= new RateLimitService(
|
|
326
|
-
publicApi: this.transports.publicApi,
|
|
327
|
-
authApi: this.transports.authApi
|
|
328
|
-
}, this.#getResolver());
|
|
313
|
+
return this.#tradingRateLimits ??= new RateLimitService(this.transports, this.#getResolver());
|
|
329
314
|
}
|
|
330
315
|
/**
|
|
331
316
|
* Override in subclasses to provide a subaccount resolver.
|
package/dist/core-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-client.js","names":["#environment","#authProvider","#realtimeConfig","#configRealtimeClient","#configCatalog","#configCatalogSnapshot","#configCatalogCell","#createAuth","#realtime","#catalog","#getScales","#scales","#resolverInitialized","#resolver","#auth","#accounts","#apiKeys","#getResolver","#subaccounts","#candles","#chainAnalytics","#marketData","#marketOverview","#orderbook","#heatmap","#lifecycle","#trades","#orders","#triggers","#balances","#transfers","#internalTransfers","#tradingWithdraws","#deposit","#addressBook","#guardSigner","#socialVerification","#whiteboard","#zipper","#mfa","#vip","#fees","#tradingRateLimits"],"sources":["../src/core-client.ts"],"sourcesContent":["import type { Interceptor } from \"@connectrpc/connect\";\nimport { ConfigurationError } from \"./shared/errors.js\";\nimport {\n createApiKeyEd25519AuthHeaders,\n createTransports,\n resolveJwtToken,\n type Transports,\n type JwtAuthProvider,\n type ApiKeyEd25519AuthProvider,\n} from \"./shared/transports.js\";\nimport { parsePolyesterEnvironment, type PolyesterEnvironment } from \"./environment.js\";\nimport { AccountsService } from \"./services/accounts/index.js\";\nimport { ApiKeysService } from \"./services/api-keys/index.js\";\nimport { AuthService, type AuthServiceTransports } from \"./services/auth/auth.js\";\nimport { SubaccountsService } from \"./services/subaccounts/index.js\";\nimport { CandlesService } from \"./services/candles/index.js\";\nimport { ChainAnalyticsService } from \"./services/chain-analytics/index.js\";\nimport { MarketDataService } from \"./services/market-data/index.js\";\nimport { MarketOverviewService } from \"./services/market-overview/index.js\";\nimport { OrderbookService } from \"./services/orderbook/index.js\";\nimport { HeatmapService } from \"./services/heatmap/index.js\";\nimport { LifecycleService } from \"./services/lifecycle/index.js\";\nimport { TradesService } from \"./services/trades/index.js\";\nimport { OrdersService } from \"./services/orders/index.js\";\nimport { TriggersService } from \"./services/triggers/index.js\";\nimport { BalancesService } from \"./services/balances/index.js\";\nimport { TransfersService } from \"./services/transfers/index.js\";\nimport { InternalTransfersService } from \"./services/internal-transfers/index.js\";\nimport { TradingWithdrawsService } from \"./services/trading-withdraws/index.js\";\nimport { DepositService } from \"./services/deposit/index.js\";\nimport { AddressBookService } from \"./services/address-book/index.js\";\nimport { GuardSignerService } from \"./services/guard-signer/index.js\";\nimport { SocialVerificationService } from \"./services/social-verification/index.js\";\nimport { WhiteboardService } from \"./services/whiteboard/index.js\";\nimport { ZipperService } from \"./services/zipper/index.js\";\nimport { MfaService } from \"./services/mfa/index.js\";\nimport { VipService } from \"./services/vip/index.js\";\nimport { FeesService } from \"./services/fees/index.js\";\nimport { RateLimitService } from \"./services/rate-limits/index.js\";\nimport type { SubaccountResolver } from \"./services/subaccount-resolver.js\";\nimport {\n createPolyesterCatalog,\n type CatalogSnapshot,\n type CatalogSnapshotCell,\n type ClientCatalog,\n} from \"./catalogs/index.js\";\nimport { createCatalogSdkScales, type SdkScales } from \"./shared/decimal-surface.js\";\nimport { RealtimeClient, type PolyesterRealtime, type RealtimeConfig } from \"./realtime/index.js\";\n\nfunction realtimeAuthFromProvider(\n auth: JwtAuthProvider | ApiKeyEd25519AuthProvider | undefined,\n): Pick<RealtimeConfig, \"getAuthHeaders\" | \"hasAuth\"> {\n if (!auth) return {};\n if (auth.kind === \"jwt\") {\n type CachedTokenResolution =\n | { kind: \"value\"; value: ReturnType<JwtAuthProvider[\"getToken\"]> }\n | { kind: \"error\"; cause: unknown };\n\n let cachedTokenResolution: CachedTokenResolution | undefined;\n\n const prefetchToken = (): CachedTokenResolution => {\n if (cachedTokenResolution) return cachedTokenResolution;\n\n try {\n const value = auth.getToken();\n // Async providers cannot be preflighted synchronously. Attach a\n // rejection observer while the credential waits for the request.\n if (value !== null && typeof value !== \"string\") void value.catch(() => {});\n cachedTokenResolution = { kind: \"value\", value };\n } catch (cause) {\n cachedTokenResolution = { kind: \"error\", cause };\n }\n return cachedTokenResolution;\n };\n\n const consumeToken = (): ReturnType<JwtAuthProvider[\"getToken\"]> => {\n const resolution = cachedTokenResolution;\n cachedTokenResolution = undefined;\n\n if (!resolution) return auth.getToken();\n if (resolution.kind === \"error\") throw resolution.cause;\n return resolution.value;\n };\n const cachedAuth = { kind: \"jwt\", getToken: consumeToken } satisfies JwtAuthProvider;\n\n return {\n getAuthHeaders: async () => {\n const token = await resolveJwtToken(cachedAuth);\n const headers: Record<string, string> = {};\n if (token) headers.authorization = `Bearer ${token}`;\n return headers;\n },\n hasAuth: () => {\n const resolution = prefetchToken();\n if (resolution.kind === \"error\") return true;\n if (resolution.value !== null && typeof resolution.value !== \"string\") return true;\n\n const hasToken = resolution.value !== null && resolution.value.length > 0;\n if (!hasToken) cachedTokenResolution = undefined;\n return hasToken;\n },\n };\n }\n return {\n getAuthHeaders: (request) =>\n createApiKeyEd25519AuthHeaders(auth, {\n url: request.url,\n method: request.method,\n }),\n hasAuth: () => true,\n };\n}\n\nexport type PolyesterRealtimeAuthConfig = Pick<RealtimeConfig, \"getAuthHeaders\" | \"hasAuth\">;\n\ninterface PolyesterClientCommonConfig {\n environment: PolyesterEnvironment;\n interceptors?: Interceptor[];\n auth?: JwtAuthProvider | ApiKeyEd25519AuthProvider;\n realtime?: PolyesterRealtimeAuthConfig;\n /**\n * Connect wire format. Defaults to binary for production performance.\n * Use `json` for human-readable debugging.\n */\n wireFormat?: \"binary\" | \"json\";\n /**\n * Advanced: inject pre-built Connect transports (in-memory mocks, custom\n * stacks). When provided, the SDK does not build its own transports and the\n * built-in auth/error-mapping interceptors are NOT applied — the injected\n * transports own their full interceptor chain.\n */\n transports?: Transports;\n /**\n * Advanced: inject a realtime implementation (in-memory mocks, custom\n * stacks). When provided, the SDK skips constructing its Centrifuge-backed\n * realtime client and the `realtime` auth config is ignored.\n */\n realtimeClient?: PolyesterRealtime;\n}\n\ntype PolyesterCatalogConfig =\n | {\n /** Client-owned catalog store. */\n catalog: ClientCatalog;\n catalogSnapshot?: never;\n catalogCell?: never;\n }\n | {\n catalog?: never;\n /**\n * Explicit initial catalog snapshot, commonly hydrated from server-rendered data.\n * Combines with `catalogCell` as the cell's initial value without clobbering a\n * pre-populated cell.\n */\n catalogSnapshot?: CatalogSnapshot;\n /**\n * External snapshot storage for the client-built catalog. A cell backed by a\n * reactive source makes every catalog read reactive.\n */\n catalogCell?: CatalogSnapshotCell;\n };\n\n/** Configuration shared by every Polyester client. */\nexport type PolyesterClientBaseConfig = PolyesterClientCommonConfig & PolyesterCatalogConfig;\n\n/** Configuration for the base Polyester client. */\nexport type PolyesterClientConfig = PolyesterClientBaseConfig;\n\n/** Preserves the exclusive catalog configuration while projecting client config fields. */\nexport function pickPolyesterCatalogConfig(\n config: PolyesterClientBaseConfig,\n): PolyesterCatalogConfig {\n return config.catalog === undefined\n ? {\n catalogSnapshot: config.catalogSnapshot,\n catalogCell: config.catalogCell,\n }\n : { catalog: config.catalog };\n}\n\ninterface AuthServiceFactoryContext {\n transports: AuthServiceTransports;\n realtime: PolyesterRealtime;\n subaccounts: SubaccountsService;\n environment: PolyesterEnvironment;\n}\n\ninterface PolyesterClientRuntimeConfig {\n createAuth?: (context: AuthServiceFactoryContext) => AuthService;\n}\n\n/**\n * Parses the configuration shared by every public client constructor.\n */\nexport function parsePolyesterClientConfig<TConfig extends PolyesterClientBaseConfig>(\n config: TConfig,\n): TConfig {\n if (typeof config !== \"object\" || config === null || Array.isArray(config)) {\n throw new ConfigurationError(\"Client configuration must be an object.\");\n }\n const environment = parsePolyesterEnvironment(config.environment);\n if (\n config.wireFormat !== undefined &&\n config.wireFormat !== \"binary\" &&\n config.wireFormat !== \"json\"\n ) {\n throw new ConfigurationError('wireFormat must be either \"binary\" or \"json\".');\n }\n if (config.catalog && config.catalogSnapshot) {\n throw new ConfigurationError(\"Provide either catalog or catalogSnapshot, not both.\");\n }\n if (config.catalog && config.catalogCell) {\n throw new ConfigurationError(\"Provide either catalog or catalogCell, not both.\");\n }\n\n return Object.assign({}, config, { environment });\n}\n\n/**\n * Base SDK client that wires transports, realtime, catalogs, and all public service clients for a Polyester environment.\n *\n * Services are constructed lazily on first property access (and memoized) so\n * that creating a client — which happens for every SSR request in server\n * hooks — only pays for the services the caller actually touches.\n */\nexport class PolyesterClient {\n protected readonly transports: Transports;\n\n readonly #environment: PolyesterEnvironment;\n readonly #authProvider: JwtAuthProvider | ApiKeyEd25519AuthProvider | undefined;\n readonly #realtimeConfig: PolyesterRealtimeAuthConfig | undefined;\n readonly #configRealtimeClient: PolyesterRealtime | undefined;\n readonly #configCatalog: ClientCatalog | undefined;\n readonly #configCatalogSnapshot: CatalogSnapshot | undefined;\n readonly #configCatalogCell: CatalogSnapshotCell | undefined;\n readonly #createAuth: PolyesterClientRuntimeConfig[\"createAuth\"];\n\n #realtime: PolyesterRealtime | undefined;\n #catalog: ClientCatalog | undefined;\n #scales: SdkScales | undefined;\n #resolver: SubaccountResolver | undefined;\n #resolverInitialized = false;\n\n #auth: AuthService | undefined;\n #accounts: AccountsService | undefined;\n #apiKeys: ApiKeysService | undefined;\n #subaccounts: SubaccountsService | undefined;\n #candles: CandlesService | undefined;\n #chainAnalytics: ChainAnalyticsService | undefined;\n #marketData: MarketDataService | undefined;\n #marketOverview: MarketOverviewService | undefined;\n #orderbook: OrderbookService | undefined;\n #heatmap: HeatmapService | undefined;\n #lifecycle: LifecycleService | undefined;\n #trades: TradesService | undefined;\n #orders: OrdersService | undefined;\n #triggers: TriggersService | undefined;\n #balances: BalancesService | undefined;\n #transfers: TransfersService | undefined;\n #internalTransfers: InternalTransfersService | undefined;\n #tradingWithdraws: TradingWithdrawsService | undefined;\n #deposit: DepositService | undefined;\n #addressBook: AddressBookService | undefined;\n #guardSigner: GuardSignerService | undefined;\n #socialVerification: SocialVerificationService | undefined;\n #whiteboard: WhiteboardService | undefined;\n #zipper: ZipperService | undefined;\n #mfa: MfaService | undefined;\n #vip: VipService | undefined;\n #fees: FeesService | undefined;\n #tradingRateLimits: RateLimitService | undefined;\n\n constructor(config: PolyesterClientConfig, runtime: PolyesterClientRuntimeConfig = {}) {\n const parsedConfig = parsePolyesterClientConfig(config);\n config = parsedConfig;\n const interceptors = config.interceptors ?? [];\n const { environment } = config;\n\n this.transports =\n config.transports ??\n createTransports({\n apiUrl: environment.apiUrl,\n interceptors,\n auth: config.auth,\n wireFormat: config.wireFormat,\n });\n\n this.#environment = environment;\n this.#authProvider = config.auth;\n this.#realtimeConfig = config.realtime;\n this.#configRealtimeClient = config.realtimeClient;\n this.#configCatalog = config.catalog;\n this.#configCatalogSnapshot = config.catalogSnapshot;\n this.#configCatalogCell = config.catalogCell;\n this.#createAuth = runtime.createAuth;\n }\n\n get realtime(): PolyesterRealtime {\n if (!this.#realtime) {\n if (this.#configRealtimeClient) {\n this.#realtime = this.#configRealtimeClient;\n } else {\n const environment = this.#environment;\n const realtimeAuth = realtimeAuthFromProvider(this.#authProvider);\n this.#realtime = new RealtimeClient({\n wsUrl: environment.websocketUrl,\n tokenEndpoint: `${environment.apiUrl}/v1/rt/token`,\n subscribeEndpoint: `${environment.apiUrl}/v1/rt/subscribe`,\n getAuthHeaders:\n this.#realtimeConfig?.getAuthHeaders ?? realtimeAuth.getAuthHeaders,\n hasAuth: this.#realtimeConfig?.hasAuth ?? realtimeAuth.hasAuth,\n });\n }\n }\n return this.#realtime;\n }\n\n get catalog(): ClientCatalog {\n if (!this.#catalog) {\n if (this.#configCatalog) {\n this.#catalog = this.#configCatalog;\n } else {\n const catalogRefreshMarketData = new MarketDataService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n );\n const catalogRefreshZipper = new ZipperService(this.transports.publicApi);\n this.#catalog = createPolyesterCatalog({\n snapshot: this.#configCatalogSnapshot,\n cell: this.#configCatalogCell,\n refresh: {\n market: () => catalogRefreshMarketData.getSpotConfig(),\n zipper: () => catalogRefreshZipper.getDepositWithdrawConfig(),\n },\n });\n }\n }\n return this.#catalog;\n }\n\n #getScales(): SdkScales {\n // Lazy catalog binding: the resolver only dereferences `this.catalog` at\n // call time. getSpotConfig() (the catalog's own refresh source) never\n // awaits scale readiness.\n this.#scales ??= createCatalogSdkScales(() => this.catalog);\n return this.#scales;\n }\n\n #getResolver(): SubaccountResolver | undefined {\n if (!this.#resolverInitialized) {\n this.#resolverInitialized = true;\n this.#resolver = this.createSubaccountResolver();\n }\n return this.#resolver;\n }\n\n get auth(): AuthService {\n if (!this.#auth) {\n const { authApi, publicApi } = this.transports;\n this.#auth =\n this.#createAuth?.({\n transports: { publicApi, authApi },\n realtime: this.realtime,\n subaccounts: this.subaccounts,\n environment: this.#environment,\n }) ?? new AuthService({ publicApi, authApi }, this.realtime);\n }\n return this.#auth;\n }\n\n get accounts(): AccountsService {\n return (this.#accounts ??= new AccountsService(this.transports.authApi));\n }\n\n get apiKeys(): ApiKeysService {\n return (this.#apiKeys ??= new ApiKeysService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get subaccounts(): SubaccountsService {\n return (this.#subaccounts ??= new SubaccountsService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get candles(): CandlesService {\n return (this.#candles ??= new CandlesService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get chainAnalytics(): ChainAnalyticsService {\n return (this.#chainAnalytics ??= new ChainAnalyticsService(\n this.transports.publicApi,\n this.#getScales(),\n ));\n }\n\n get marketData(): MarketDataService {\n return (this.#marketData ??= new MarketDataService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get marketOverview(): MarketOverviewService {\n return (this.#marketOverview ??= new MarketOverviewService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get orderbook(): OrderbookService {\n return (this.#orderbook ??= new OrderbookService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get heatmap(): HeatmapService {\n return (this.#heatmap ??= new HeatmapService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get lifecycle(): LifecycleService {\n return (this.#lifecycle ??= new LifecycleService(this.transports.publicApi, this.realtime));\n }\n\n get trades(): TradesService {\n return (this.#trades ??= new TradesService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get orders(): OrdersService {\n return (this.#orders ??= new OrdersService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get triggers(): TriggersService {\n return (this.#triggers ??= new TriggersService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get balances(): BalancesService {\n return (this.#balances ??= new BalancesService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get transfers(): TransfersService {\n return (this.#transfers ??= new TransfersService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get internalTransfers(): InternalTransfersService {\n return (this.#internalTransfers ??= new InternalTransfersService(\n this.transports.authApi,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get tradingWithdraws(): TradingWithdrawsService {\n return (this.#tradingWithdraws ??= new TradingWithdrawsService(\n this.transports.authApi,\n this.#getResolver(),\n {\n chainId: this.#environment.chain.id,\n tradingGatewayAddress: this.#environment.contracts.tradingGatewayAddress,\n },\n this.#getScales(),\n this.catalog,\n ));\n }\n\n get deposit(): DepositService {\n return (this.#deposit ??= new DepositService(this.transports.authApi, this.#getResolver()));\n }\n\n get addressBook(): AddressBookService {\n return (this.#addressBook ??= new AddressBookService(\n this.transports.authApi,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get guardSigner(): GuardSignerService {\n return (this.#guardSigner ??= new GuardSignerService(\n this.transports.authApi,\n this.#getResolver(),\n ));\n }\n\n get socialVerification(): SocialVerificationService {\n return (this.#socialVerification ??= new SocialVerificationService(\n this.transports.authApi,\n ));\n }\n\n get whiteboard(): WhiteboardService {\n return (this.#whiteboard ??= new WhiteboardService(this.transports.authApi));\n }\n\n get zipper(): ZipperService {\n return (this.#zipper ??= new ZipperService(\n this.transports.publicApi,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get mfa(): MfaService {\n return (this.#mfa ??= new MfaService(this.transports.authApi));\n }\n\n get vip(): VipService {\n return (this.#vip ??= new VipService({\n publicApi: this.transports.publicApi,\n authApi: this.transports.authApi,\n }));\n }\n\n get fees(): FeesService {\n return (this.#fees ??= new FeesService(this.transports.authApi, this.#getResolver()));\n }\n\n get tradingRateLimits(): RateLimitService {\n return (this.#tradingRateLimits ??= new RateLimitService(\n {\n publicApi: this.transports.publicApi,\n authApi: this.transports.authApi,\n },\n this.#getResolver(),\n ));\n }\n\n /**\n * Override in subclasses to provide a subaccount resolver.\n * The resolver is called lazily when service methods are invoked.\n */\n protected createSubaccountResolver(): SubaccountResolver | undefined {\n return undefined;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core-client.js","names":["#environment","#authProvider","#realtimeConfig","#configRealtimeClient","#configCatalog","#configCatalogSnapshot","#configCatalogCell","#createAuth","#realtime","#catalog","#getScales","#scales","#resolverInitialized","#resolver","#auth","#accounts","#apiKeys","#getResolver","#subaccounts","#candles","#chainAnalytics","#marketData","#marketOverview","#orderbook","#heatmap","#lifecycle","#trades","#orders","#triggers","#balances","#transfers","#internalTransfers","#tradingWithdraws","#deposit","#addressBook","#guardSigner","#socialVerification","#whiteboard","#zipper","#mfa","#vip","#fees","#tradingRateLimits"],"sources":["../src/core-client.ts"],"sourcesContent":["import type { Interceptor } from \"@connectrpc/connect\";\nimport { ConfigurationError } from \"./shared/errors.js\";\nimport {\n createApiKeyEd25519AuthHeaders,\n createTransports,\n resolveJwtToken,\n type AuthAndPublicApiTransports,\n type Transports,\n type JwtAuthProvider,\n type ApiKeyEd25519AuthProvider,\n} from \"./shared/transports.js\";\nimport { parsePolyesterEnvironment, type PolyesterEnvironment } from \"./environment.js\";\nimport { AccountsService } from \"./services/accounts/index.js\";\nimport { ApiKeysService } from \"./services/api-keys/index.js\";\nimport { AuthService } from \"./services/auth/auth.js\";\nimport { SubaccountsService } from \"./services/subaccounts/index.js\";\nimport { CandlesService } from \"./services/candles/index.js\";\nimport { ChainAnalyticsService } from \"./services/chain-analytics/index.js\";\nimport { MarketDataService } from \"./services/market-data/index.js\";\nimport { MarketOverviewService } from \"./services/market-overview/index.js\";\nimport { OrderbookService } from \"./services/orderbook/index.js\";\nimport { HeatmapService } from \"./services/heatmap/index.js\";\nimport { LifecycleService } from \"./services/lifecycle/index.js\";\nimport { TradesService } from \"./services/trades/index.js\";\nimport { OrdersService } from \"./services/orders/index.js\";\nimport { TriggersService } from \"./services/triggers/index.js\";\nimport { BalancesService } from \"./services/balances/index.js\";\nimport { TransfersService } from \"./services/transfers/index.js\";\nimport { InternalTransfersService } from \"./services/internal-transfers/index.js\";\nimport { TradingWithdrawsService } from \"./services/trading-withdraws/index.js\";\nimport { DepositService } from \"./services/deposit/index.js\";\nimport { AddressBookService } from \"./services/address-book/index.js\";\nimport { GuardSignerService } from \"./services/guard-signer/index.js\";\nimport { SocialVerificationService } from \"./services/social-verification/index.js\";\nimport { WhiteboardService } from \"./services/whiteboard/index.js\";\nimport { ZipperService } from \"./services/zipper/index.js\";\nimport { MfaService } from \"./services/mfa/index.js\";\nimport { VipService } from \"./services/vip/index.js\";\nimport { FeesService } from \"./services/fees/index.js\";\nimport { RateLimitService } from \"./services/rate-limits/index.js\";\nimport type { SubaccountResolver } from \"./services/subaccount-resolver.js\";\nimport {\n createPolyesterCatalog,\n type CatalogSnapshot,\n type CatalogSnapshotCell,\n type ClientCatalog,\n} from \"./catalogs/index.js\";\nimport { createCatalogSdkScales, type SdkScales } from \"./shared/decimal-surface.js\";\nimport { RealtimeClient, type PolyesterRealtime, type RealtimeConfig } from \"./realtime/index.js\";\n\nfunction realtimeAuthFromProvider(\n auth: JwtAuthProvider | ApiKeyEd25519AuthProvider | undefined,\n): Pick<RealtimeConfig, \"getAuthHeaders\" | \"hasAuth\"> {\n if (!auth) return {};\n if (auth.kind === \"jwt\") {\n type CachedTokenResolution =\n | { kind: \"value\"; value: ReturnType<JwtAuthProvider[\"getToken\"]> }\n | { kind: \"error\"; cause: unknown };\n\n let cachedTokenResolution: CachedTokenResolution | undefined;\n\n const prefetchToken = (): CachedTokenResolution => {\n if (cachedTokenResolution) return cachedTokenResolution;\n\n try {\n const value = auth.getToken();\n // Async providers cannot be preflighted synchronously. Attach a\n // rejection observer while the credential waits for the request.\n if (value !== null && typeof value !== \"string\") void value.catch(() => {});\n cachedTokenResolution = { kind: \"value\", value };\n } catch (cause) {\n cachedTokenResolution = { kind: \"error\", cause };\n }\n return cachedTokenResolution;\n };\n\n const consumeToken = (): ReturnType<JwtAuthProvider[\"getToken\"]> => {\n const resolution = cachedTokenResolution;\n cachedTokenResolution = undefined;\n\n if (!resolution) return auth.getToken();\n if (resolution.kind === \"error\") throw resolution.cause;\n return resolution.value;\n };\n const cachedAuth = { kind: \"jwt\", getToken: consumeToken } satisfies JwtAuthProvider;\n\n return {\n getAuthHeaders: async () => {\n const token = await resolveJwtToken(cachedAuth);\n const headers: Record<string, string> = {};\n if (token) headers.authorization = `Bearer ${token}`;\n return headers;\n },\n hasAuth: () => {\n const resolution = prefetchToken();\n if (resolution.kind === \"error\") return true;\n if (resolution.value !== null && typeof resolution.value !== \"string\") return true;\n\n const hasToken = resolution.value !== null && resolution.value.length > 0;\n if (!hasToken) cachedTokenResolution = undefined;\n return hasToken;\n },\n };\n }\n return {\n getAuthHeaders: (request) =>\n createApiKeyEd25519AuthHeaders(auth, {\n url: request.url,\n method: request.method,\n }),\n hasAuth: () => true,\n };\n}\n\nexport type PolyesterRealtimeAuthConfig = Pick<RealtimeConfig, \"getAuthHeaders\" | \"hasAuth\">;\n\ninterface PolyesterClientCommonConfig {\n environment: PolyesterEnvironment;\n interceptors?: Interceptor[];\n auth?: JwtAuthProvider | ApiKeyEd25519AuthProvider;\n realtime?: PolyesterRealtimeAuthConfig;\n /**\n * Connect wire format. Defaults to binary for production performance.\n * Use `json` for human-readable debugging.\n */\n wireFormat?: \"binary\" | \"json\";\n /**\n * Advanced: inject pre-built Connect transports (in-memory mocks, custom\n * stacks). When provided, the SDK does not build its own transports and the\n * built-in auth/error-mapping interceptors are NOT applied — the injected\n * transports own their full interceptor chain.\n */\n transports?: Transports;\n /**\n * Advanced: inject a realtime implementation (in-memory mocks, custom\n * stacks). When provided, the SDK skips constructing its Centrifuge-backed\n * realtime client and the `realtime` auth config is ignored.\n */\n realtimeClient?: PolyesterRealtime;\n}\n\ntype PolyesterCatalogConfig =\n | {\n /** Client-owned catalog store. */\n catalog: ClientCatalog;\n catalogSnapshot?: never;\n catalogCell?: never;\n }\n | {\n catalog?: never;\n /**\n * Explicit initial catalog snapshot, commonly hydrated from server-rendered data.\n * Combines with `catalogCell` as the cell's initial value without clobbering a\n * pre-populated cell.\n */\n catalogSnapshot?: CatalogSnapshot;\n /**\n * External snapshot storage for the client-built catalog. A cell backed by a\n * reactive source makes every catalog read reactive.\n */\n catalogCell?: CatalogSnapshotCell;\n };\n\n/** Configuration shared by every Polyester client. */\nexport type PolyesterClientBaseConfig = PolyesterClientCommonConfig & PolyesterCatalogConfig;\n\n/** Configuration for the base Polyester client. */\nexport type PolyesterClientConfig = PolyesterClientBaseConfig;\n\n/** Preserves the exclusive catalog configuration while projecting client config fields. */\nexport function pickPolyesterCatalogConfig(\n config: PolyesterClientBaseConfig,\n): PolyesterCatalogConfig {\n return config.catalog === undefined\n ? {\n catalogSnapshot: config.catalogSnapshot,\n catalogCell: config.catalogCell,\n }\n : { catalog: config.catalog };\n}\n\ninterface AuthServiceFactoryContext {\n transports: AuthAndPublicApiTransports;\n realtime: PolyesterRealtime;\n subaccounts: SubaccountsService;\n environment: PolyesterEnvironment;\n}\n\ninterface PolyesterClientRuntimeConfig {\n createAuth?: (context: AuthServiceFactoryContext) => AuthService;\n}\n\n/**\n * Parses the configuration shared by every public client constructor.\n */\nexport function parsePolyesterClientConfig<TConfig extends PolyesterClientBaseConfig>(\n config: TConfig,\n): TConfig {\n if (typeof config !== \"object\" || config === null || Array.isArray(config)) {\n throw new ConfigurationError(\"Client configuration must be an object.\");\n }\n const environment = parsePolyesterEnvironment(config.environment);\n if (\n config.wireFormat !== undefined &&\n config.wireFormat !== \"binary\" &&\n config.wireFormat !== \"json\"\n ) {\n throw new ConfigurationError('wireFormat must be either \"binary\" or \"json\".');\n }\n if (config.catalog && config.catalogSnapshot) {\n throw new ConfigurationError(\"Provide either catalog or catalogSnapshot, not both.\");\n }\n if (config.catalog && config.catalogCell) {\n throw new ConfigurationError(\"Provide either catalog or catalogCell, not both.\");\n }\n\n return Object.assign({}, config, { environment });\n}\n\n/**\n * Base SDK client that wires transports, realtime, catalogs, and all public service clients for a Polyester environment.\n *\n * Services are constructed lazily on first property access (and memoized) so\n * that creating a client — which happens for every SSR request in server\n * hooks — only pays for the services the caller actually touches.\n */\nexport class PolyesterClient {\n protected readonly transports: Transports;\n\n readonly #environment: PolyesterEnvironment;\n readonly #authProvider: JwtAuthProvider | ApiKeyEd25519AuthProvider | undefined;\n readonly #realtimeConfig: PolyesterRealtimeAuthConfig | undefined;\n readonly #configRealtimeClient: PolyesterRealtime | undefined;\n readonly #configCatalog: ClientCatalog | undefined;\n readonly #configCatalogSnapshot: CatalogSnapshot | undefined;\n readonly #configCatalogCell: CatalogSnapshotCell | undefined;\n readonly #createAuth: PolyesterClientRuntimeConfig[\"createAuth\"];\n\n #realtime: PolyesterRealtime | undefined;\n #catalog: ClientCatalog | undefined;\n #scales: SdkScales | undefined;\n #resolver: SubaccountResolver | undefined;\n #resolverInitialized = false;\n\n #auth: AuthService | undefined;\n #accounts: AccountsService | undefined;\n #apiKeys: ApiKeysService | undefined;\n #subaccounts: SubaccountsService | undefined;\n #candles: CandlesService | undefined;\n #chainAnalytics: ChainAnalyticsService | undefined;\n #marketData: MarketDataService | undefined;\n #marketOverview: MarketOverviewService | undefined;\n #orderbook: OrderbookService | undefined;\n #heatmap: HeatmapService | undefined;\n #lifecycle: LifecycleService | undefined;\n #trades: TradesService | undefined;\n #orders: OrdersService | undefined;\n #triggers: TriggersService | undefined;\n #balances: BalancesService | undefined;\n #transfers: TransfersService | undefined;\n #internalTransfers: InternalTransfersService | undefined;\n #tradingWithdraws: TradingWithdrawsService | undefined;\n #deposit: DepositService | undefined;\n #addressBook: AddressBookService | undefined;\n #guardSigner: GuardSignerService | undefined;\n #socialVerification: SocialVerificationService | undefined;\n #whiteboard: WhiteboardService | undefined;\n #zipper: ZipperService | undefined;\n #mfa: MfaService | undefined;\n #vip: VipService | undefined;\n #fees: FeesService | undefined;\n #tradingRateLimits: RateLimitService | undefined;\n\n constructor(config: PolyesterClientConfig, runtime: PolyesterClientRuntimeConfig = {}) {\n const parsedConfig = parsePolyesterClientConfig(config);\n config = parsedConfig;\n const interceptors = config.interceptors ?? [];\n const { environment } = config;\n\n this.transports =\n config.transports ??\n createTransports({\n apiUrl: environment.apiUrl,\n interceptors,\n auth: config.auth,\n wireFormat: config.wireFormat,\n });\n\n this.#environment = environment;\n this.#authProvider = config.auth;\n this.#realtimeConfig = config.realtime;\n this.#configRealtimeClient = config.realtimeClient;\n this.#configCatalog = config.catalog;\n this.#configCatalogSnapshot = config.catalogSnapshot;\n this.#configCatalogCell = config.catalogCell;\n this.#createAuth = runtime.createAuth;\n }\n\n get realtime(): PolyesterRealtime {\n if (!this.#realtime) {\n if (this.#configRealtimeClient) {\n this.#realtime = this.#configRealtimeClient;\n } else {\n const environment = this.#environment;\n const realtimeAuth = realtimeAuthFromProvider(this.#authProvider);\n this.#realtime = new RealtimeClient({\n wsUrl: environment.websocketUrl,\n tokenEndpoint: `${environment.apiUrl}/v1/rt/token`,\n subscribeEndpoint: `${environment.apiUrl}/v1/rt/subscribe`,\n getAuthHeaders:\n this.#realtimeConfig?.getAuthHeaders ?? realtimeAuth.getAuthHeaders,\n hasAuth: this.#realtimeConfig?.hasAuth ?? realtimeAuth.hasAuth,\n });\n }\n }\n return this.#realtime;\n }\n\n get catalog(): ClientCatalog {\n if (!this.#catalog) {\n if (this.#configCatalog) {\n this.#catalog = this.#configCatalog;\n } else {\n const catalogRefreshMarketData = new MarketDataService(\n this.transports,\n this.realtime,\n this.#getScales(),\n );\n const catalogRefreshZipper = new ZipperService(this.transports);\n this.#catalog = createPolyesterCatalog({\n snapshot: this.#configCatalogSnapshot,\n cell: this.#configCatalogCell,\n refresh: {\n market: () => catalogRefreshMarketData.getSpotConfig(),\n zipper: () => catalogRefreshZipper.getDepositWithdrawConfig(),\n },\n });\n }\n }\n return this.#catalog;\n }\n\n #getScales(): SdkScales {\n // Lazy catalog binding: the resolver only dereferences `this.catalog` at\n // call time. getSpotConfig() (the catalog's own refresh source) never\n // awaits scale readiness.\n this.#scales ??= createCatalogSdkScales(() => this.catalog);\n return this.#scales;\n }\n\n #getResolver(): SubaccountResolver | undefined {\n if (!this.#resolverInitialized) {\n this.#resolverInitialized = true;\n this.#resolver = this.createSubaccountResolver();\n }\n return this.#resolver;\n }\n\n get auth(): AuthService {\n if (!this.#auth) {\n this.#auth =\n this.#createAuth?.({\n transports: this.transports,\n realtime: this.realtime,\n subaccounts: this.subaccounts,\n environment: this.#environment,\n }) ?? new AuthService(this.transports, this.realtime);\n }\n return this.#auth;\n }\n\n get accounts(): AccountsService {\n return (this.#accounts ??= new AccountsService(this.transports));\n }\n\n get apiKeys(): ApiKeysService {\n return (this.#apiKeys ??= new ApiKeysService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get subaccounts(): SubaccountsService {\n return (this.#subaccounts ??= new SubaccountsService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get candles(): CandlesService {\n return (this.#candles ??= new CandlesService(\n this.transports,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get chainAnalytics(): ChainAnalyticsService {\n return (this.#chainAnalytics ??= new ChainAnalyticsService(\n this.transports,\n this.#getScales(),\n ));\n }\n\n get marketData(): MarketDataService {\n return (this.#marketData ??= new MarketDataService(\n this.transports,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get marketOverview(): MarketOverviewService {\n return (this.#marketOverview ??= new MarketOverviewService(\n this.transports,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get orderbook(): OrderbookService {\n return (this.#orderbook ??= new OrderbookService(\n this.transports,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get heatmap(): HeatmapService {\n return (this.#heatmap ??= new HeatmapService(\n this.transports,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get lifecycle(): LifecycleService {\n return (this.#lifecycle ??= new LifecycleService(this.transports, this.realtime));\n }\n\n get trades(): TradesService {\n return (this.#trades ??= new TradesService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get orders(): OrdersService {\n return (this.#orders ??= new OrdersService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get triggers(): TriggersService {\n return (this.#triggers ??= new TriggersService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get balances(): BalancesService {\n return (this.#balances ??= new BalancesService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get transfers(): TransfersService {\n return (this.#transfers ??= new TransfersService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get internalTransfers(): InternalTransfersService {\n return (this.#internalTransfers ??= new InternalTransfersService(\n this.transports,\n this.#getResolver(),\n this.#getScales(),\n ));\n }\n\n get tradingWithdraws(): TradingWithdrawsService {\n return (this.#tradingWithdraws ??= new TradingWithdrawsService(\n this.transports,\n this.#getResolver(),\n {\n chainId: this.#environment.chain.id,\n tradingGatewayAddress: this.#environment.contracts.tradingGatewayAddress,\n },\n this.#getScales(),\n this.catalog,\n ));\n }\n\n get deposit(): DepositService {\n return (this.#deposit ??= new DepositService(this.transports, this.#getResolver()));\n }\n\n get addressBook(): AddressBookService {\n return (this.#addressBook ??= new AddressBookService(\n this.transports,\n this.realtime,\n this.#getResolver(),\n ));\n }\n\n get guardSigner(): GuardSignerService {\n return (this.#guardSigner ??= new GuardSignerService(this.transports, this.#getResolver()));\n }\n\n get socialVerification(): SocialVerificationService {\n return (this.#socialVerification ??= new SocialVerificationService(this.transports));\n }\n\n get whiteboard(): WhiteboardService {\n return (this.#whiteboard ??= new WhiteboardService(this.transports));\n }\n\n get zipper(): ZipperService {\n return (this.#zipper ??= new ZipperService(\n this.transports,\n this.realtime,\n this.#getScales(),\n ));\n }\n\n get mfa(): MfaService {\n return (this.#mfa ??= new MfaService(this.transports));\n }\n\n get vip(): VipService {\n return (this.#vip ??= new VipService(this.transports));\n }\n\n get fees(): FeesService {\n return (this.#fees ??= new FeesService(this.transports, this.#getResolver()));\n }\n\n get tradingRateLimits(): RateLimitService {\n return (this.#tradingRateLimits ??= new RateLimitService(\n this.transports,\n this.#getResolver(),\n ));\n }\n\n /**\n * Override in subclasses to provide a subaccount resolver.\n * The resolver is called lazily when service methods are invoked.\n */\n protected createSubaccountResolver(): SubaccountResolver | undefined {\n return undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,SAAS,yBACL,MACkD;CAClD,IAAI,CAAC,MAAM,OAAO,CAAC;CACnB,IAAI,KAAK,SAAS,OAAO;EAKrB,IAAI;EAEJ,MAAM,sBAA6C;GAC/C,IAAI,uBAAuB,OAAO;GAElC,IAAI;IACA,MAAM,QAAQ,KAAK,SAAS;IAG5B,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,MAAW,YAAY,CAAC,CAAC;IAC1E,wBAAwB;KAAE,MAAM;KAAS;IAAM;GACnD,SAAS,OAAO;IACZ,wBAAwB;KAAE,MAAM;KAAS;IAAM;GACnD;GACA,OAAO;EACX;EAEA,MAAM,qBAA8D;GAChE,MAAM,aAAa;GACnB,wBAAwB,KAAA;GAExB,IAAI,CAAC,YAAY,OAAO,KAAK,SAAS;GACtC,IAAI,WAAW,SAAS,SAAS,MAAM,WAAW;GAClD,OAAO,WAAW;EACtB;EACA,MAAM,aAAa;GAAE,MAAM;GAAO,UAAU;EAAa;EAEzD,OAAO;GACH,gBAAgB,YAAY;IACxB,MAAM,QAAQ,MAAM,gBAAgB,UAAU;IAC9C,MAAM,UAAkC,CAAC;IACzC,IAAI,OAAO,QAAQ,gBAAgB,UAAU;IAC7C,OAAO;GACX;GACA,eAAe;IACX,MAAM,aAAa,cAAc;IACjC,IAAI,WAAW,SAAS,SAAS,OAAO;IACxC,IAAI,WAAW,UAAU,QAAQ,OAAO,WAAW,UAAU,UAAU,OAAO;IAE9E,MAAM,WAAW,WAAW,UAAU,QAAQ,WAAW,MAAM,SAAS;IACxE,IAAI,CAAC,UAAU,wBAAwB,KAAA;IACvC,OAAO;GACX;EACJ;CACJ;CACA,OAAO;EACH,iBAAiB,YACb,+BAA+B,MAAM;GACjC,KAAK,QAAQ;GACb,QAAQ,QAAQ;EACpB,CAAC;EACL,eAAe;CACnB;AACJ;;AA0DA,SAAgB,2BACZ,QACsB;CACtB,OAAO,OAAO,YAAY,KAAA,IACpB;EACI,iBAAiB,OAAO;EACxB,aAAa,OAAO;CACxB,IACA,EAAE,SAAS,OAAO,QAAQ;AACpC;;;;AAgBA,SAAgB,2BACZ,QACO;CACP,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GACrE,MAAM,IAAI,mBAAmB,yCAAyC;CAE1E,MAAM,cAAc,0BAA0B,OAAO,WAAW;CAChE,IACI,OAAO,eAAe,KAAA,KACtB,OAAO,eAAe,YACtB,OAAO,eAAe,QAEtB,MAAM,IAAI,mBAAmB,mDAA+C;CAEhF,IAAI,OAAO,WAAW,OAAO,iBACzB,MAAM,IAAI,mBAAmB,sDAAsD;CAEvF,IAAI,OAAO,WAAW,OAAO,aACzB,MAAM,IAAI,mBAAmB,kDAAkD;CAGnF,OAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,EAAE,YAAY,CAAC;AACpD;;;;;;;;AASA,IAAa,kBAAb,MAA6B;CACzB;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA,uBAAuB;CAEvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,QAA+B,UAAwC,CAAC,GAAG;EAEnF,SADqB,2BAA2B,MAC5B;EACpB,MAAM,eAAe,OAAO,gBAAgB,CAAC;EAC7C,MAAM,EAAE,gBAAgB;EAExB,KAAK,aACD,OAAO,cACP,iBAAiB;GACb,QAAQ,YAAY;GACpB;GACA,MAAM,OAAO;GACb,YAAY,OAAO;EACvB,CAAC;EAEL,KAAKA,eAAe;EACpB,KAAKC,gBAAgB,OAAO;EAC5B,KAAKC,kBAAkB,OAAO;EAC9B,KAAKC,wBAAwB,OAAO;EACpC,KAAKC,iBAAiB,OAAO;EAC7B,KAAKC,yBAAyB,OAAO;EACrC,KAAKC,qBAAqB,OAAO;EACjC,KAAKC,cAAc,QAAQ;CAC/B;CAEA,IAAI,WAA8B;EAC9B,IAAI,CAAC,KAAKC,WACN,IAAI,KAAKL,uBACL,KAAKK,YAAY,KAAKL;OACnB;GACH,MAAM,cAAc,KAAKH;GACzB,MAAM,eAAe,yBAAyB,KAAKC,aAAa;GAChE,KAAKO,YAAY,IAAI,eAAe;IAChC,OAAO,YAAY;IACnB,eAAe,GAAG,YAAY,OAAO;IACrC,mBAAmB,GAAG,YAAY,OAAO;IACzC,gBACI,KAAKN,iBAAiB,kBAAkB,aAAa;IACzD,SAAS,KAAKA,iBAAiB,WAAW,aAAa;GAC3D,CAAC;EACL;EAEJ,OAAO,KAAKM;CAChB;CAEA,IAAI,UAAyB;EACzB,IAAI,CAAC,KAAKC,UACN,IAAI,KAAKL,gBACL,KAAKK,WAAW,KAAKL;OAClB;GACH,MAAM,2BAA2B,IAAI,kBACjC,KAAK,YACL,KAAK,UACL,KAAKM,WAAW,CACpB;GACA,MAAM,uBAAuB,IAAI,cAAc,KAAK,UAAU;GAC9D,KAAKD,WAAW,uBAAuB;IACnC,UAAU,KAAKJ;IACf,MAAM,KAAKC;IACX,SAAS;KACL,cAAc,yBAAyB,cAAc;KACrD,cAAc,qBAAqB,yBAAyB;IAChE;GACJ,CAAC;EACL;EAEJ,OAAO,KAAKG;CAChB;CAEA,aAAwB;EAIpB,KAAKE,YAAY,6BAA6B,KAAK,OAAO;EAC1D,OAAO,KAAKA;CAChB;CAEA,eAA+C;EAC3C,IAAI,CAAC,KAAKC,sBAAsB;GAC5B,KAAKA,uBAAuB;GAC5B,KAAKC,YAAY,KAAK,yBAAyB;EACnD;EACA,OAAO,KAAKA;CAChB;CAEA,IAAI,OAAoB;EACpB,IAAI,CAAC,KAAKC,OACN,KAAKA,QACD,KAAKP,cAAc;GACf,YAAY,KAAK;GACjB,UAAU,KAAK;GACf,aAAa,KAAK;GAClB,aAAa,KAAKP;EACtB,CAAC,KAAK,IAAI,YAAY,KAAK,YAAY,KAAK,QAAQ;EAE5D,OAAO,KAAKc;CAChB;CAEA,IAAI,WAA4B;EAC5B,OAAQ,KAAKC,cAAc,IAAI,gBAAgB,KAAK,UAAU;CAClE;CAEA,IAAI,UAA0B;EAC1B,OAAQ,KAAKC,aAAa,IAAI,eAC1B,KAAK,YACL,KAAK,UACL,KAAKC,aAAa,CACtB;CACJ;CAEA,IAAI,cAAkC;EAClC,OAAQ,KAAKC,iBAAiB,IAAI,mBAC9B,KAAK,YACL,KAAK,UACL,KAAKD,aAAa,CACtB;CACJ;CAEA,IAAI,UAA0B;EAC1B,OAAQ,KAAKE,aAAa,IAAI,eAC1B,KAAK,YACL,KAAK,UACL,KAAKT,WAAW,CACpB;CACJ;CAEA,IAAI,iBAAwC;EACxC,OAAQ,KAAKU,oBAAoB,IAAI,sBACjC,KAAK,YACL,KAAKV,WAAW,CACpB;CACJ;CAEA,IAAI,aAAgC;EAChC,OAAQ,KAAKW,gBAAgB,IAAI,kBAC7B,KAAK,YACL,KAAK,UACL,KAAKX,WAAW,CACpB;CACJ;CAEA,IAAI,iBAAwC;EACxC,OAAQ,KAAKY,oBAAoB,IAAI,sBACjC,KAAK,YACL,KAAK,UACL,KAAKZ,WAAW,CACpB;CACJ;CAEA,IAAI,YAA8B;EAC9B,OAAQ,KAAKa,eAAe,IAAI,iBAC5B,KAAK,YACL,KAAK,UACL,KAAKb,WAAW,CACpB;CACJ;CAEA,IAAI,UAA0B;EAC1B,OAAQ,KAAKc,aAAa,IAAI,eAC1B,KAAK,YACL,KAAK,UACL,KAAKd,WAAW,CACpB;CACJ;CAEA,IAAI,YAA8B;EAC9B,OAAQ,KAAKe,eAAe,IAAI,iBAAiB,KAAK,YAAY,KAAK,QAAQ;CACnF;CAEA,IAAI,SAAwB;EACxB,OAAQ,KAAKC,YAAY,IAAI,cACzB,KAAK,YACL,KAAK,UACL,KAAKT,aAAa,GAClB,KAAKP,WAAW,CACpB;CACJ;CAEA,IAAI,SAAwB;EACxB,OAAQ,KAAKiB,YAAY,IAAI,cACzB,KAAK,YACL,KAAK,UACL,KAAKV,aAAa,GAClB,KAAKP,WAAW,CACpB;CACJ;CAEA,IAAI,WAA4B;EAC5B,OAAQ,KAAKkB,cAAc,IAAI,gBAC3B,KAAK,YACL,KAAK,UACL,KAAKX,aAAa,GAClB,KAAKP,WAAW,CACpB;CACJ;CAEA,IAAI,WAA4B;EAC5B,OAAQ,KAAKmB,cAAc,IAAI,gBAC3B,KAAK,YACL,KAAK,UACL,KAAKZ,aAAa,GAClB,KAAKP,WAAW,CACpB;CACJ;CAEA,IAAI,YAA8B;EAC9B,OAAQ,KAAKoB,eAAe,IAAI,iBAC5B,KAAK,YACL,KAAK,UACL,KAAKb,aAAa,CACtB;CACJ;CAEA,IAAI,oBAA8C;EAC9C,OAAQ,KAAKc,uBAAuB,IAAI,yBACpC,KAAK,YACL,KAAKd,aAAa,GAClB,KAAKP,WAAW,CACpB;CACJ;CAEA,IAAI,mBAA4C;EAC5C,OAAQ,KAAKsB,sBAAsB,IAAI,wBACnC,KAAK,YACL,KAAKf,aAAa,GAClB;GACI,SAAS,KAAKjB,aAAa,MAAM;GACjC,uBAAuB,KAAKA,aAAa,UAAU;EACvD,GACA,KAAKU,WAAW,GAChB,KAAK,OACT;CACJ;CAEA,IAAI,UAA0B;EAC1B,OAAQ,KAAKuB,aAAa,IAAI,eAAe,KAAK,YAAY,KAAKhB,aAAa,CAAC;CACrF;CAEA,IAAI,cAAkC;EAClC,OAAQ,KAAKiB,iBAAiB,IAAI,mBAC9B,KAAK,YACL,KAAK,UACL,KAAKjB,aAAa,CACtB;CACJ;CAEA,IAAI,cAAkC;EAClC,OAAQ,KAAKkB,iBAAiB,IAAI,mBAAmB,KAAK,YAAY,KAAKlB,aAAa,CAAC;CAC7F;CAEA,IAAI,qBAAgD;EAChD,OAAQ,KAAKmB,wBAAwB,IAAI,0BAA0B,KAAK,UAAU;CACtF;CAEA,IAAI,aAAgC;EAChC,OAAQ,KAAKC,gBAAgB,IAAI,kBAAkB,KAAK,UAAU;CACtE;CAEA,IAAI,SAAwB;EACxB,OAAQ,KAAKC,YAAY,IAAI,cACzB,KAAK,YACL,KAAK,UACL,KAAK5B,WAAW,CACpB;CACJ;CAEA,IAAI,MAAkB;EAClB,OAAQ,KAAK6B,SAAS,IAAI,WAAW,KAAK,UAAU;CACxD;CAEA,IAAI,MAAkB;EAClB,OAAQ,KAAKC,SAAS,IAAI,WAAW,KAAK,UAAU;CACxD;CAEA,IAAI,OAAoB;EACpB,OAAQ,KAAKC,UAAU,IAAI,YAAY,KAAK,YAAY,KAAKxB,aAAa,CAAC;CAC/E;CAEA,IAAI,oBAAsC;EACtC,OAAQ,KAAKyB,uBAAuB,IAAI,iBACpC,KAAK,YACL,KAAKzB,aAAa,CACtB;CACJ;;;;;CAMA,2BAAqE,CAErE;AACJ"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import { AuthApiTransports } from "../../shared/transports.js";
|
|
1
2
|
import { PolyesterRequestOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { ResolveAccountInput, ResolvedAccount } from "./accounts.schemas.js";
|
|
3
|
-
import { Transport } from "@connectrpc/connect";
|
|
4
4
|
//#region src/services/accounts/accounts.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Resolves user-entered account identifiers into transfer/shareable root or subaccount destinations.
|
|
7
7
|
*/
|
|
8
8
|
declare class AccountsService {
|
|
9
9
|
#private;
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(transports: AuthApiTransports);
|
|
11
11
|
/**
|
|
12
12
|
* Resolves a username, opaque account/subaccount ID, or smart-account address into matching destination accounts; set includeSubaccounts for internal-transfer flows that may target subaccounts.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../src/services/accounts/accounts.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../src/services/accounts/accounts.ts"],"mappings":";;;;;;;cAkBa;;EAGG,YAAA,YAAY;;;;EAOlB,QACF,OAAO,qBACP,UAAU,0BACX,QAAQ"}
|
|
@@ -9,8 +9,8 @@ import { createClient } from "@connectrpc/connect";
|
|
|
9
9
|
*/
|
|
10
10
|
var AccountsService = class {
|
|
11
11
|
#client;
|
|
12
|
-
constructor(
|
|
13
|
-
this.#client = createClient(ResolveService,
|
|
12
|
+
constructor(transports) {
|
|
13
|
+
this.#client = createClient(ResolveService, transports.authApi);
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Resolves a username, opaque account/subaccount ID, or smart-account address into matching destination accounts; set includeSubaccounts for internal-transfer flows that may target subaccounts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","names":["#client","ProtoResolve.ResolveService"],"sources":["../../../src/services/accounts/accounts.ts"],"sourcesContent":["import { createClient, type Client
|
|
1
|
+
{"version":3,"file":"accounts.js","names":["#client","ProtoResolve.ResolveService"],"sources":["../../../src/services/accounts/accounts.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as ProtoResolve from \"../../gen/auth/v1/resolve_pb.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n ResolveAccountInputSchema,\n ResolvedAccountArraySchema,\n type ResolveAccountInput,\n type ResolvedAccount,\n} from \"./accounts.schemas.js\";\n\n/**\n * Resolves user-entered account identifiers into transfer/shareable root or subaccount destinations.\n */\nexport class AccountsService {\n #client: Client<typeof ProtoResolve.ResolveService>;\n\n constructor(transports: AuthApiTransports) {\n this.#client = createClient(ProtoResolve.ResolveService, transports.authApi);\n }\n\n /**\n * Resolves a username, opaque account/subaccount ID, or smart-account address into matching destination accounts; set includeSubaccounts for internal-transfer flows that may target subaccounts.\n */\n async resolve(\n input: ResolveAccountInput,\n options?: PolyesterRequestOptions,\n ): Promise<ResolvedAccount[]> {\n const validatedInput = parse(ResolveAccountInputSchema, input);\n const res = await this.#client.resolveAccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n\n return parse(ResolvedAccountArraySchema, res.matches);\n }\n}\n"],"mappings":";;;;;;;;;AAkBA,IAAa,kBAAb,MAA6B;CACzB;CAEA,YAAY,YAA+B;EACvC,KAAKA,UAAU,aAAaC,gBAA6B,WAAW,OAAO;CAC/E;;;;CAKA,MAAM,QACF,OACA,SAC0B;EAC1B,MAAM,iBAAiB,MAAM,2BAA2B,KAAK;EAC7D,MAAM,MAAM,MAAM,KAAKD,QAAQ,eAC3B,gBACA,qBAAqB,OAAO,CAChC;EAEA,OAAO,MAAM,4BAA4B,IAAI,OAAO;CACxD;AACJ"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { AuthApiTransports } from "../../shared/transports.js";
|
|
1
2
|
import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { SubaccountResolver } from "../subaccount-resolver.js";
|
|
3
4
|
import { PolyesterRealtime } from "../../realtime/types.js";
|
|
4
5
|
import { BaseSubscribeInput } from "../../shared/types.js";
|
|
5
6
|
import { AddressBook, AddressBookEntries, AddressBookEntry, AddressBookTag, AddressBookView, AddressBookViewInvalidated, CopyAddressBookEntryInput, CreateAddressBookEntryInput, CreateAddressBookTagInput, DeleteAddressBookEntryInput, DeleteAddressBookTagInput, GetAddressBookViewInput, InternalTransferWhitelistEntries, ListAddressBookEntriesInput, ListInternalTransferWhitelistEntriesInput, ListTransferCounterpartiesInput, ListTransferDestinationsInput, SubaccountScopedInput, TransferCounterparties, TransferDestinations, UpdateAddressBookEntryInput, UpdateAddressBookTagInput, WithdrawWhitelistView } from "./address-book.schemas.js";
|
|
6
|
-
import { Transport } from "@connectrpc/connect";
|
|
7
7
|
//#region src/services/address-book/address-book.d.ts
|
|
8
8
|
interface SubscribeViewInvalidationsInput extends BaseSubscribeInput<AddressBookViewInvalidated> {
|
|
9
9
|
rootAccountPublicId: string;
|
|
@@ -13,7 +13,7 @@ interface SubscribeViewInvalidationsInput extends BaseSubscribeInput<AddressBook
|
|
|
13
13
|
*/
|
|
14
14
|
declare class AddressBookService {
|
|
15
15
|
#private;
|
|
16
|
-
constructor(
|
|
16
|
+
constructor(transports: AuthApiTransports, realtime: PolyesterRealtime, resolver?: SubaccountResolver);
|
|
17
17
|
/**
|
|
18
18
|
* Returns the root and subaccount address books visible to the caller, including caller role and display metadata.
|
|
19
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-book.d.ts","names":[],"sources":["../../../src/services/address-book/address-book.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"address-book.d.ts","names":[],"sources":["../../../src/services/address-book/address-book.ts"],"mappings":";;;;;;;UA+DU,wCAAwC,mBAAmB;EACjE;;;;;cAMS;;EAML,YAAA,YAAY,mBACZ,UAAU,mBACV,WAAW;;;;EAUT,UAAU,UAAU,0BAA0B,QAAQ;;;;EAQtD,YACF,QAAO,6BACP,UAAU,0BACX;IAAU,SAAS;IAAoB;;;;;EAepC,YACF,OAAO,6BACP,UAAU,2BACX,QAAQ;;;;EAYL,YACF,OAAO,6BACP,UAAU,2BACX,QAAQ;;;;EAYL,YACF,OAAO,6BACP,UAAU,2BACX;;;;EAQG,UACF,OAAO,2BACP,UAAU,2BACX,QAAQ;;;;EAYL,UACF,OAAO,2BACP,UAAU,2BACX,QAAQ;;;;EAYL,UACF,OAAO,2BACP,UAAU,2BACX,QAAQ;;;;EAYL,UACF,OAAO,2BACP,UAAU,2BACX;;;;EAQG,2BACF,QAAO,iCACP,UAAU,0BACX;IAAU,gBAAgB;IAAwB;;;;;EAe/C,yBACF,QAAO,+BACP,UAAU,0BACX;IAAU,cAAc;IAAsB;;;;;EAe3C,qCACF,QAAO,2CACP,UAAU,0BACX;IAAU,SAAS;IAAkC;;;;;EAkBlD,yBACF,QAAO,uBACP,UAAU,0BACX,QAAQ;;;;;;EAcL,QACF,QAAO,yBACP,UAAU,0BACX,QAAQ;;;;;;EAcX,2BAA2B,OAAO;UAe1B"}
|
|
@@ -13,8 +13,8 @@ var AddressBookService = class {
|
|
|
13
13
|
#client;
|
|
14
14
|
#realtime;
|
|
15
15
|
#resolver;
|
|
16
|
-
constructor(
|
|
17
|
-
this.#client = createClient(AddressBookService$1,
|
|
16
|
+
constructor(transports, realtime, resolver) {
|
|
17
|
+
this.#client = createClient(AddressBookService$1, transports.authApi);
|
|
18
18
|
this.#realtime = realtime;
|
|
19
19
|
this.#resolver = resolver;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-book.js","names":["#client","Proto.AddressBookService","#realtime","#resolver","Proto.AddressBookViewInvalidatedSchema","AddressBookViewInvalidatedSchema"],"sources":["../../../src/services/address-book/address-book.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/address_book_pb.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n AddressBookEntriesSchema,\n AddressBookEntrySchema,\n AddressBookSchema,\n AddressBookTagSchema,\n AddressBookViewSchema,\n AddressBookViewInvalidatedSchema,\n CopyAddressBookEntryInputSchema,\n CreateAddressBookEntryInputSchema,\n CreateAddressBookTagInputSchema,\n DeleteAddressBookEntryInputSchema,\n DeleteAddressBookTagInputSchema,\n GetAddressBookViewInputSchema,\n InternalTransferWhitelistEntriesSchema,\n ListAddressBookEntriesInputSchema,\n ListInternalTransferWhitelistEntriesInputSchema,\n ListTransferCounterpartiesInputSchema,\n ListTransferDestinationsInputSchema,\n SubaccountScopedInputSchema,\n TransferCounterpartiesSchema,\n TransferDestinationsSchema,\n UpdateAddressBookEntryInputSchema,\n UpdateAddressBookTagInputSchema,\n WithdrawWhitelistViewSchema,\n type AddressBook,\n type AddressBookEntries,\n type AddressBookEntry,\n type AddressBookTag,\n type AddressBookView,\n type AddressBookViewInvalidated,\n type CopyAddressBookEntryInput,\n type CreateAddressBookEntryInput,\n type CreateAddressBookTagInput,\n type DeleteAddressBookEntryInput,\n type DeleteAddressBookTagInput,\n type GetAddressBookViewInput,\n type InternalTransferWhitelistEntries,\n type ListAddressBookEntriesInput,\n type ListInternalTransferWhitelistEntriesInput,\n type ListTransferCounterpartiesInput,\n type ListTransferDestinationsInput,\n type SubaccountScopedInput,\n type TransferCounterparties,\n type TransferDestinations,\n type UpdateAddressBookEntryInput,\n type UpdateAddressBookTagInput,\n type WithdrawWhitelistView,\n} from \"./address-book.schemas.js\";\n\ninterface SubscribeViewInvalidationsInput extends BaseSubscribeInput<AddressBookViewInvalidated> {\n rootAccountPublicId: string;\n}\n\n/**\n * Manages saved transfer destinations, tags, whitelist views, and recent counterparties for root or subaccount-scoped address books.\n */\nexport class AddressBookService {\n #client: Client<typeof Proto.AddressBookService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.AddressBookService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n }\n\n /**\n * Returns the root and subaccount address books visible to the caller, including caller role and display metadata.\n */\n async listBooks(options?: PolyesterRequestOptions): Promise<AddressBook[]> {\n const response = await this.#client.listAddressBooks({}, toConnectCallOptions(options));\n return response.books.map((book) => parse(AddressBookSchema, book));\n }\n\n /**\n * Returns saved address-book entries for the resolved subaccount scope, optionally filtered by external-chain or internal-account destination kind.\n */\n async listEntries(\n input: ListAddressBookEntriesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ entries: AddressBookEntries; nextPageToken: string }> {\n const request = parse(ListAddressBookEntriesInputSchema, this.resolveInput(input));\n const response = await this.#client.listAddressBookEntries(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n entries: parse(AddressBookEntriesSchema, response.entries),\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Creates a saved external withdrawal or internal transfer destination in the resolved address book, optionally attaching existing tags and creating new tags in the same request.\n */\n async createEntry(\n input: CreateAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookEntry | null> {\n const request = parse(CreateAddressBookEntryInputSchema, this.resolveInput(input));\n const response = await this.#client.createAddressBookEntry(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.entry ? parse(AddressBookEntrySchema, response.entry) : null;\n }\n\n /**\n * Updates selected saved-destination metadata using optimistic concurrency, optionally creating and attaching tags in the same request.\n */\n async updateEntry(\n input: UpdateAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookEntry | null> {\n const request = parse(UpdateAddressBookEntryInputSchema, input);\n const response = await this.#client.updateAddressBookEntry(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.entry ? parse(AddressBookEntrySchema, response.entry) : null;\n }\n\n /**\n * Deletes one saved destination from the selected address book.\n */\n async deleteEntry(\n input: DeleteAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const request = parse(DeleteAddressBookEntryInputSchema, input);\n await this.#client.deleteAddressBookEntry(request, toConnectCallOptions(options));\n }\n\n /**\n * Copies a saved destination into another visible root or subaccount address book.\n */\n async copyEntry(\n input: CopyAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookEntry | null> {\n const request = parse(CopyAddressBookEntryInputSchema, input);\n const response = await this.#client.copyAddressBookEntry(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.entry ? parse(AddressBookEntrySchema, response.entry) : null;\n }\n\n /**\n * Creates a tag in the resolved address book scope for organizing saved destinations.\n */\n async createTag(\n input: CreateAddressBookTagInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookTag | null> {\n const request = parse(CreateAddressBookTagInputSchema, this.resolveInput(input));\n const response = await this.#client.createAddressBookTag(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.tag ? parse(AddressBookTagSchema, response.tag) : null;\n }\n\n /**\n * Updates a tag's name and optional color token.\n */\n async updateTag(\n input: UpdateAddressBookTagInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookTag | null> {\n const request = parse(UpdateAddressBookTagInputSchema, input);\n const response = await this.#client.updateAddressBookTag(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.tag ? parse(AddressBookTagSchema, response.tag) : null;\n }\n\n /**\n * Deletes a tag and detaches it from any address-book entries.\n */\n async deleteTag(\n input: DeleteAddressBookTagInput,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const request = parse(DeleteAddressBookTagInputSchema, input);\n await this.#client.deleteAddressBookTag(request, toConnectCallOptions(options));\n }\n\n /**\n * Returns recent transfer counterparties, including unsaved destinations, with direction, kind, use count, and first/last seen timestamps.\n */\n async listTransferCounterparties(\n input: ListTransferCounterpartiesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ counterparties: TransferCounterparties; truncated: boolean }> {\n const request = parse(ListTransferCounterpartiesInputSchema, this.resolveInput(input));\n const response = await this.#client.listTransferCounterparties(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n counterparties: parse(TransferCounterpartiesSchema, response.counterparties),\n truncated: response.truncated,\n };\n }\n\n /**\n * Returns saved and whitelisted destinations available for transfer flows in the resolved address book scope.\n */\n async listTransferDestinations(\n input: ListTransferDestinationsInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ destinations: TransferDestinations; nextPageToken: string }> {\n const request = parse(ListTransferDestinationsInputSchema, this.resolveInput(input));\n const response = await this.#client.listTransferDestinations(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n destinations: parse(TransferDestinationsSchema, response.destinations),\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Returns internal-transfer whitelist entries for the resolved scope, including target account metadata and resolution status.\n */\n async listInternalTransferWhitelistEntries(\n input: ListInternalTransferWhitelistEntriesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ entries: InternalTransferWhitelistEntries; nextPageToken: string }> {\n const request = parse(\n ListInternalTransferWhitelistEntriesInputSchema,\n this.resolveInput(input),\n );\n const response = await this.#client.listInternalTransferWhitelistEntries(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n entries: parse(InternalTransferWhitelistEntriesSchema, response.entries),\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Returns external and internal withdrawal whitelist requirements plus active mirrored external whitelist entries for the resolved scope.\n */\n async getWithdrawWhitelistView(\n input: SubaccountScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<WithdrawWhitelistView | null> {\n const request = parse(SubaccountScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.getWithdrawWhitelistView(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.view ? parse(WithdrawWhitelistViewSchema, response.view) : null;\n }\n\n /**\n * Fetches the combined address-book view used by dashboards: books, saved entries, recent destinations, tags, and withdrawal whitelist status.\n *\n * Pass `minimumViewRevision` (from an invalidation event's `viewRevision`) to make the server wait for its projection to reach that revision instead of returning an older view.\n */\n async getView(\n input: GetAddressBookViewInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<AddressBookView> {\n const request = parse(GetAddressBookViewInputSchema, this.resolveInput(input));\n const response = await this.#client.getAddressBookView(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(AddressBookViewSchema, response);\n }\n\n /**\n * Subscribes to scoped address-book view invalidation signals for a root account.\n *\n * Use `scope` and `invalidatedAt` for diagnostics and ordering, then refetch `getView` for the canonical aggregate (entries, tags, recent destinations, whitelist), passing the event's `viewRevision` as `minimumViewRevision` to avoid reading an older view. Do not patch individual rows from these events.\n */\n subscribeViewInvalidations(input: SubscribeViewInvalidationsInput): () => void {\n const channel = `private:auth:address-books:${input.rootAccountPublicId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.AddressBookViewInvalidatedSchema,\n onPublication: (data) => {\n input.onEvent(parse(AddressBookViewInvalidatedSchema, data));\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n private resolveInput<TInput extends AccountScopedInput>(input: TInput): TInput {\n return resolveAccountScopedInput(input, this.#resolver);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"address-book.js","names":["#client","Proto.AddressBookService","#realtime","#resolver","Proto.AddressBookViewInvalidatedSchema","AddressBookViewInvalidatedSchema"],"sources":["../../../src/services/address-book/address-book.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/address_book_pb.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n AddressBookEntriesSchema,\n AddressBookEntrySchema,\n AddressBookSchema,\n AddressBookTagSchema,\n AddressBookViewSchema,\n AddressBookViewInvalidatedSchema,\n CopyAddressBookEntryInputSchema,\n CreateAddressBookEntryInputSchema,\n CreateAddressBookTagInputSchema,\n DeleteAddressBookEntryInputSchema,\n DeleteAddressBookTagInputSchema,\n GetAddressBookViewInputSchema,\n InternalTransferWhitelistEntriesSchema,\n ListAddressBookEntriesInputSchema,\n ListInternalTransferWhitelistEntriesInputSchema,\n ListTransferCounterpartiesInputSchema,\n ListTransferDestinationsInputSchema,\n SubaccountScopedInputSchema,\n TransferCounterpartiesSchema,\n TransferDestinationsSchema,\n UpdateAddressBookEntryInputSchema,\n UpdateAddressBookTagInputSchema,\n WithdrawWhitelistViewSchema,\n type AddressBook,\n type AddressBookEntries,\n type AddressBookEntry,\n type AddressBookTag,\n type AddressBookView,\n type AddressBookViewInvalidated,\n type CopyAddressBookEntryInput,\n type CreateAddressBookEntryInput,\n type CreateAddressBookTagInput,\n type DeleteAddressBookEntryInput,\n type DeleteAddressBookTagInput,\n type GetAddressBookViewInput,\n type InternalTransferWhitelistEntries,\n type ListAddressBookEntriesInput,\n type ListInternalTransferWhitelistEntriesInput,\n type ListTransferCounterpartiesInput,\n type ListTransferDestinationsInput,\n type SubaccountScopedInput,\n type TransferCounterparties,\n type TransferDestinations,\n type UpdateAddressBookEntryInput,\n type UpdateAddressBookTagInput,\n type WithdrawWhitelistView,\n} from \"./address-book.schemas.js\";\n\ninterface SubscribeViewInvalidationsInput extends BaseSubscribeInput<AddressBookViewInvalidated> {\n rootAccountPublicId: string;\n}\n\n/**\n * Manages saved transfer destinations, tags, whitelist views, and recent counterparties for root or subaccount-scoped address books.\n */\nexport class AddressBookService {\n #client: Client<typeof Proto.AddressBookService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver?: SubaccountResolver,\n ) {\n this.#client = createClient(Proto.AddressBookService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n }\n\n /**\n * Returns the root and subaccount address books visible to the caller, including caller role and display metadata.\n */\n async listBooks(options?: PolyesterRequestOptions): Promise<AddressBook[]> {\n const response = await this.#client.listAddressBooks({}, toConnectCallOptions(options));\n return response.books.map((book) => parse(AddressBookSchema, book));\n }\n\n /**\n * Returns saved address-book entries for the resolved subaccount scope, optionally filtered by external-chain or internal-account destination kind.\n */\n async listEntries(\n input: ListAddressBookEntriesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ entries: AddressBookEntries; nextPageToken: string }> {\n const request = parse(ListAddressBookEntriesInputSchema, this.resolveInput(input));\n const response = await this.#client.listAddressBookEntries(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n entries: parse(AddressBookEntriesSchema, response.entries),\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Creates a saved external withdrawal or internal transfer destination in the resolved address book, optionally attaching existing tags and creating new tags in the same request.\n */\n async createEntry(\n input: CreateAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookEntry | null> {\n const request = parse(CreateAddressBookEntryInputSchema, this.resolveInput(input));\n const response = await this.#client.createAddressBookEntry(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.entry ? parse(AddressBookEntrySchema, response.entry) : null;\n }\n\n /**\n * Updates selected saved-destination metadata using optimistic concurrency, optionally creating and attaching tags in the same request.\n */\n async updateEntry(\n input: UpdateAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookEntry | null> {\n const request = parse(UpdateAddressBookEntryInputSchema, input);\n const response = await this.#client.updateAddressBookEntry(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.entry ? parse(AddressBookEntrySchema, response.entry) : null;\n }\n\n /**\n * Deletes one saved destination from the selected address book.\n */\n async deleteEntry(\n input: DeleteAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const request = parse(DeleteAddressBookEntryInputSchema, input);\n await this.#client.deleteAddressBookEntry(request, toConnectCallOptions(options));\n }\n\n /**\n * Copies a saved destination into another visible root or subaccount address book.\n */\n async copyEntry(\n input: CopyAddressBookEntryInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookEntry | null> {\n const request = parse(CopyAddressBookEntryInputSchema, input);\n const response = await this.#client.copyAddressBookEntry(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.entry ? parse(AddressBookEntrySchema, response.entry) : null;\n }\n\n /**\n * Creates a tag in the resolved address book scope for organizing saved destinations.\n */\n async createTag(\n input: CreateAddressBookTagInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookTag | null> {\n const request = parse(CreateAddressBookTagInputSchema, this.resolveInput(input));\n const response = await this.#client.createAddressBookTag(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.tag ? parse(AddressBookTagSchema, response.tag) : null;\n }\n\n /**\n * Updates a tag's name and optional color token.\n */\n async updateTag(\n input: UpdateAddressBookTagInput,\n options?: PolyesterMutationOptions,\n ): Promise<AddressBookTag | null> {\n const request = parse(UpdateAddressBookTagInputSchema, input);\n const response = await this.#client.updateAddressBookTag(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.tag ? parse(AddressBookTagSchema, response.tag) : null;\n }\n\n /**\n * Deletes a tag and detaches it from any address-book entries.\n */\n async deleteTag(\n input: DeleteAddressBookTagInput,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const request = parse(DeleteAddressBookTagInputSchema, input);\n await this.#client.deleteAddressBookTag(request, toConnectCallOptions(options));\n }\n\n /**\n * Returns recent transfer counterparties, including unsaved destinations, with direction, kind, use count, and first/last seen timestamps.\n */\n async listTransferCounterparties(\n input: ListTransferCounterpartiesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ counterparties: TransferCounterparties; truncated: boolean }> {\n const request = parse(ListTransferCounterpartiesInputSchema, this.resolveInput(input));\n const response = await this.#client.listTransferCounterparties(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n counterparties: parse(TransferCounterpartiesSchema, response.counterparties),\n truncated: response.truncated,\n };\n }\n\n /**\n * Returns saved and whitelisted destinations available for transfer flows in the resolved address book scope.\n */\n async listTransferDestinations(\n input: ListTransferDestinationsInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ destinations: TransferDestinations; nextPageToken: string }> {\n const request = parse(ListTransferDestinationsInputSchema, this.resolveInput(input));\n const response = await this.#client.listTransferDestinations(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n destinations: parse(TransferDestinationsSchema, response.destinations),\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Returns internal-transfer whitelist entries for the resolved scope, including target account metadata and resolution status.\n */\n async listInternalTransferWhitelistEntries(\n input: ListInternalTransferWhitelistEntriesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ entries: InternalTransferWhitelistEntries; nextPageToken: string }> {\n const request = parse(\n ListInternalTransferWhitelistEntriesInputSchema,\n this.resolveInput(input),\n );\n const response = await this.#client.listInternalTransferWhitelistEntries(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return {\n entries: parse(InternalTransferWhitelistEntriesSchema, response.entries),\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Returns external and internal withdrawal whitelist requirements plus active mirrored external whitelist entries for the resolved scope.\n */\n async getWithdrawWhitelistView(\n input: SubaccountScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<WithdrawWhitelistView | null> {\n const request = parse(SubaccountScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.getWithdrawWhitelistView(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.view ? parse(WithdrawWhitelistViewSchema, response.view) : null;\n }\n\n /**\n * Fetches the combined address-book view used by dashboards: books, saved entries, recent destinations, tags, and withdrawal whitelist status.\n *\n * Pass `minimumViewRevision` (from an invalidation event's `viewRevision`) to make the server wait for its projection to reach that revision instead of returning an older view.\n */\n async getView(\n input: GetAddressBookViewInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<AddressBookView> {\n const request = parse(GetAddressBookViewInputSchema, this.resolveInput(input));\n const response = await this.#client.getAddressBookView(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(AddressBookViewSchema, response);\n }\n\n /**\n * Subscribes to scoped address-book view invalidation signals for a root account.\n *\n * Use `scope` and `invalidatedAt` for diagnostics and ordering, then refetch `getView` for the canonical aggregate (entries, tags, recent destinations, whitelist), passing the event's `viewRevision` as `minimumViewRevision` to avoid reading an older view. Do not patch individual rows from these events.\n */\n subscribeViewInvalidations(input: SubscribeViewInvalidationsInput): () => void {\n const channel = `private:auth:address-books:${input.rootAccountPublicId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.AddressBookViewInvalidatedSchema,\n onPublication: (data) => {\n input.onEvent(parse(AddressBookViewInvalidatedSchema, data));\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n private resolveInput<TInput extends AccountScopedInput>(input: TInput): TInput {\n return resolveAccountScopedInput(input, this.#resolver);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthApiTransports } from "../../shared/transports.js";
|
|
1
2
|
import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { SubaccountResolver } from "../subaccount-resolver.js";
|
|
3
4
|
import { PolyesterRealtime } from "../../realtime/types.js";
|
|
@@ -6,7 +7,6 @@ import { BaseSubscribeInput } from "../../shared/types.js";
|
|
|
6
7
|
import { ApiKeyPoliciesService } from "../policies/api-key-policies/api-key-policies.js";
|
|
7
8
|
import "../policies/api-key-policies/index.js";
|
|
8
9
|
import { ApiKey, ApiKeyIdInputSchema, ApiKeysCreateInputSchema, ApiKeysListInputSchema, ApiKeysUpdateInputSchema } from "./api-keys.schemas.js";
|
|
9
|
-
import { Transport } from "@connectrpc/connect";
|
|
10
10
|
import * as v from "valibot";
|
|
11
11
|
//#region src/services/api-keys/api-keys.d.ts
|
|
12
12
|
interface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {
|
|
@@ -18,7 +18,7 @@ interface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {
|
|
|
18
18
|
declare class ApiKeysService {
|
|
19
19
|
#private;
|
|
20
20
|
readonly policies: ApiKeyPoliciesService;
|
|
21
|
-
constructor(
|
|
21
|
+
constructor(transports: AuthApiTransports, realtime: PolyesterRealtime, resolver?: SubaccountResolver);
|
|
22
22
|
/**
|
|
23
23
|
* Returns non-revoked API keys owned by the caller, newest first, optionally scoped through an explicit or resolver-provided subaccount ID.
|
|
24
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.d.ts","names":[],"sources":["../../../src/services/api-keys/api-keys.ts"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"api-keys.d.ts","names":[],"sources":["../../../src/services/api-keys/api-keys.ts"],"mappings":";;;;;;;;;;;UA2BU,8BAA8B,mBAAmB;EACvD;;;;;cAMS;;WACA,UAAU;EAOf,YAAA,YAAY,mBACZ,UAAU,mBACV,WAAW;;;;EAWT,KACF,SAAQ,EAAE,kBAAkB,yBAC5B,UAAU,0BACX,QAAQ;;;;EAcL,IACF,OAAO,EAAE,kBAAkB,sBAC3B,UAAU,0BACX,QAAQ;;;;EASL,OACF,SAAS,EAAE,kBAAkB,2BAC7B,UAAU,2BACX,QAAQ;;;;EAaL,OACF,OAAO,EAAE,kBAAkB,sBAC3B,UAAU,2BACX;;;;EAQG,OACF,SAAS,EAAE,kBAAkB,2BAC7B,UAAU,2BACX,QAAQ;;;;EAYL,mBAAmB;IACrB;MAAa;MAAa,OAAO;;IACjC;MAAa;MAAa,OAAO;;;;;;EAkBrC,UAAU,OAAO"}
|
|
@@ -17,9 +17,9 @@ var ApiKeysService = class {
|
|
|
17
17
|
#client;
|
|
18
18
|
#realtime;
|
|
19
19
|
#resolver;
|
|
20
|
-
constructor(
|
|
21
|
-
this.policies = new ApiKeyPoliciesService(
|
|
22
|
-
this.#client = createClient(ApiKeyService,
|
|
20
|
+
constructor(transports, realtime, resolver) {
|
|
21
|
+
this.policies = new ApiKeyPoliciesService(transports);
|
|
22
|
+
this.#client = createClient(ApiKeyService, transports.authApi);
|
|
23
23
|
this.#realtime = realtime;
|
|
24
24
|
this.#resolver = resolver;
|
|
25
25
|
}
|