@polyester/sdk 0.23.1 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/account-signer/types.d.ts +1 -1
  3. package/dist/account-signer/types.js.map +1 -1
  4. package/dist/core-client.d.ts.map +1 -1
  5. package/dist/core-client.js +18 -45
  6. package/dist/core-client.js.map +1 -1
  7. package/dist/gen/orders/v1/orders_read_pb.d.ts +136 -13
  8. package/dist/gen/orders/v1/orders_read_pb.d.ts.map +1 -1
  9. package/dist/gen/orders/v1/orders_read_pb.js +22 -16
  10. package/dist/gen/orders/v1/orders_read_pb.js.map +1 -1
  11. package/dist/index.d.ts +4 -3
  12. package/dist/realtime/client.js +45 -26
  13. package/dist/realtime/client.js.map +1 -1
  14. package/dist/services/auth/account-signer-auth.js +1 -1
  15. package/dist/services/auth/account-signer-auth.js.map +1 -1
  16. package/dist/services/candles/candles.schemas.d.ts +10 -10
  17. package/dist/services/heatmap/heatmap.schemas.d.ts +13 -13
  18. package/dist/services/market-overview/market-overview.js +5 -4
  19. package/dist/services/market-overview/market-overview.js.map +1 -1
  20. package/dist/services/market-overview/market-overview.schemas.d.ts +3 -3
  21. package/dist/services/orderbook/orderbook.schemas.d.ts +1 -1
  22. package/dist/services/orders/index.d.ts +4 -3
  23. package/dist/services/orders/order-lineage.schemas.d.ts +11 -0
  24. package/dist/services/orders/order-lineage.schemas.d.ts.map +1 -0
  25. package/dist/services/orders/order-lineage.schemas.js +13 -0
  26. package/dist/services/orders/order-lineage.schemas.js.map +1 -0
  27. package/dist/services/orders/orders-batch.schemas.d.ts +14 -14
  28. package/dist/services/orders/orders-batch.schemas.js +1 -1
  29. package/dist/services/orders/orders-input.schemas.d.ts +24 -1
  30. package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
  31. package/dist/services/orders/orders-input.schemas.js +5 -2
  32. package/dist/services/orders/orders-input.schemas.js.map +1 -1
  33. package/dist/services/orders/orders-modify.schemas.js +1 -1
  34. package/dist/services/orders/orders-output.schemas.d.ts +63 -20
  35. package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
  36. package/dist/services/orders/orders-output.schemas.js +7 -1
  37. package/dist/services/orders/orders-output.schemas.js.map +1 -1
  38. package/dist/services/orders/orders.d.ts +6 -2
  39. package/dist/services/orders/orders.d.ts.map +1 -1
  40. package/dist/services/orders/orders.js +6 -2
  41. package/dist/services/orders/orders.js.map +1 -1
  42. package/dist/services/orders/orders.schemas.d.ts +4 -3
  43. package/dist/services/orders/orders.types.d.ts +4 -3
  44. package/dist/services/subaccounts/subaccounts.schemas.d.ts +5 -5
  45. package/dist/services/trades/trades.d.ts +4 -0
  46. package/dist/services/trades/trades.d.ts.map +1 -1
  47. package/dist/services/trades/trades.js +4 -0
  48. package/dist/services/trades/trades.js.map +1 -1
  49. package/dist/services/trades/trades.schemas.d.ts +248 -4
  50. package/dist/services/trades/trades.schemas.d.ts.map +1 -1
  51. package/dist/services/trades/trades.schemas.js +52 -12
  52. package/dist/services/trades/trades.schemas.js.map +1 -1
  53. package/dist/services/triggers/trigger-input.schemas.d.ts +3 -3
  54. package/dist/services/triggers/triggers-output.schemas.d.ts +23 -23
  55. package/dist/shared/connect-error-mapping.d.ts.map +1 -1
  56. package/dist/shared/connect-error-mapping.js +15 -5
  57. package/dist/shared/connect-error-mapping.js.map +1 -1
  58. package/dist/shared/transports.d.ts +5 -1
  59. package/dist/shared/transports.d.ts.map +1 -1
  60. package/dist/shared/transports.js.map +1 -1
  61. package/dist/utils/errors.d.ts.map +1 -1
  62. package/dist/utils/errors.js +1 -0
  63. package/dist/utils/errors.js.map +1 -1
  64. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @polyester/sdk
2
2
 
3
+ ## 0.24.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Notify consumers of terminal realtime server disconnects and unsubscribes with their code and reason, and remove stopped channels from active tracking. ([#148](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/148))
8
+
9
+ - Read the current JWT provider value for every realtime token request so additional subscribers cannot retain stale credentials after token rotation or logout. ([#149](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/149))
10
+
11
+ - Declare the account signer's `ownerAddress` (the connected EOA) as the LOGIN challenge `signerAddress` instead of the Safe `accountAddress`, so wallet login and session refresh authenticate a Safe smart account with a distinct EOA signer. Subaccount creation challenges are unchanged. ([#151](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/151))
12
+
13
+ ## 0.24.0
14
+
15
+ ### Minor Changes
16
+
17
+ - Add order lineage, paginated execution history, and settlement transfers to order and trade reads. ([#143](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/143))
18
+
19
+ ### Patch Changes
20
+
21
+ - Honor market overview subscription symbol filters in live and buffered updates. ([#144](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/144))
22
+
23
+ - Normalize caller transport cancellations so `isAbortError` recognizes them, prevent pre-aborted requests from starting, and format cancellations as "Request canceled." ([#145](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/145))
24
+
3
25
  ## 0.23.1
4
26
 
5
27
  ### Patch Changes
@@ -12,7 +12,7 @@ interface AccountSigner {
12
12
  readonly environmentFingerprint: string;
13
13
  /** The smart account address (used for authentication and trading) */
14
14
  readonly accountAddress: HexAddress;
15
- /** The owner/EOA address (optional metadata about the controlling signer) */
15
+ /** The owner/EOA address. Declared as the LOGIN challenge signer when present; otherwise accountAddress signs. */
16
16
  readonly ownerAddress?: HexAddress;
17
17
  /** Sign the exact UTF-8 message with EIP-191 semantics for accountAddress (including smart-account wrapping when required). */
18
18
  signMessage(message: string): Promise<Hex>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/account-signer/types.ts"],"sourcesContent":["import type { Hex } from \"viem\";\nimport { isEvmAddress } from \"../utils/evm.js\";\nimport { ConfigurationError } from \"../shared/errors.js\";\n\nexport type HexAddress = `0x${string}`;\n\n/**\n * Minimal account signer interface for SDK operations.\n *\n * The SDK authenticates the Polyester smart account address. The owner address\n * is optional metadata about the EOA or custody provider that controls it.\n */\nexport interface AccountSigner {\n /** Fingerprint of the PolyesterEnvironment this signer was created for */\n readonly environmentFingerprint: string;\n\n /** The smart account address (used for authentication and trading) */\n readonly accountAddress: HexAddress;\n\n /** The owner/EOA address (optional metadata about the controlling signer) */\n readonly ownerAddress?: HexAddress;\n\n /** Sign the exact UTF-8 message with EIP-191 semantics for accountAddress (including smart-account wrapping when required). */\n signMessage(message: string): Promise<Hex>;\n}\n\n/**\n * Factory function type for lazy account signer initialization.\n * Useful when the signer might not be available at client creation time.\n */\nexport type AccountSignerFactory = () => AccountSigner | null | Promise<AccountSigner | null>;\n\n/**\n * Account signer configuration for the client.\n * Can be a signer instance or a factory for lazy initialization.\n */\nexport type AccountSignerConfig = AccountSigner | AccountSignerFactory;\n\n/**\n * Helper to check if an account signer config is a factory function.\n */\nexport function isAccountSignerFactory(\n config: AccountSignerConfig,\n): config is AccountSignerFactory {\n return typeof config === \"function\";\n}\n\n/**\n * Asserts that a value implements the account signer contract.\n */\nexport function assertAccountSigner(value: AccountSigner): void {\n if (typeof value !== \"object\" || value === null) {\n throw new ConfigurationError(\"Account signer must be an object or factory function.\");\n }\n if (!value.environmentFingerprint) {\n throw new ConfigurationError(\"Account signer must include an environmentFingerprint.\");\n }\n if (!isEvmAddress(value.accountAddress)) {\n throw new ConfigurationError(\"Account signer must include a valid accountAddress.\");\n }\n if (value.ownerAddress && !isEvmAddress(value.ownerAddress)) {\n throw new ConfigurationError(\"Account signer ownerAddress must be a valid address.\");\n }\n if (typeof value.signMessage !== \"function\") {\n throw new ConfigurationError(\"Account signer must include a signMessage function.\");\n }\n}\n\n/**\n * Helper to resolve an account signer from config.\n */\nexport async function resolveAccountSigner(\n config: AccountSignerConfig | undefined,\n): Promise<AccountSigner | null> {\n if (!config) return null;\n const accountSigner = isAccountSignerFactory(config) ? await config() : config;\n if (accountSigner) assertAccountSigner(accountSigner);\n return accountSigner;\n}\n"],"mappings":";;;;;;AAyCA,SAAgB,uBACZ,QAC8B;CAC9B,OAAO,OAAO,WAAW;AAC7B;;;;AAKA,SAAgB,oBAAoB,OAA4B;CAC5D,IAAI,OAAO,UAAU,YAAY,UAAU,MACvC,MAAM,IAAI,mBAAmB,uDAAuD;CAExF,IAAI,CAAC,MAAM,wBACP,MAAM,IAAI,mBAAmB,wDAAwD;CAEzF,IAAI,CAAC,aAAa,MAAM,cAAc,GAClC,MAAM,IAAI,mBAAmB,qDAAqD;CAEtF,IAAI,MAAM,gBAAgB,CAAC,aAAa,MAAM,YAAY,GACtD,MAAM,IAAI,mBAAmB,sDAAsD;CAEvF,IAAI,OAAO,MAAM,gBAAgB,YAC7B,MAAM,IAAI,mBAAmB,qDAAqD;AAE1F;;;;AAKA,eAAsB,qBAClB,QAC6B;CAC7B,IAAI,CAAC,QAAQ,OAAO;CACpB,MAAM,gBAAgB,uBAAuB,MAAM,IAAI,MAAM,OAAO,IAAI;CACxE,IAAI,eAAe,oBAAoB,aAAa;CACpD,OAAO;AACX"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/account-signer/types.ts"],"sourcesContent":["import type { Hex } from \"viem\";\nimport { isEvmAddress } from \"../utils/evm.js\";\nimport { ConfigurationError } from \"../shared/errors.js\";\n\nexport type HexAddress = `0x${string}`;\n\n/**\n * Minimal account signer interface for SDK operations.\n *\n * The SDK authenticates the Polyester smart account address. The owner address\n * is optional metadata about the EOA or custody provider that controls it.\n */\nexport interface AccountSigner {\n /** Fingerprint of the PolyesterEnvironment this signer was created for */\n readonly environmentFingerprint: string;\n\n /** The smart account address (used for authentication and trading) */\n readonly accountAddress: HexAddress;\n\n /** The owner/EOA address. Declared as the LOGIN challenge signer when present; otherwise accountAddress signs. */\n readonly ownerAddress?: HexAddress;\n\n /** Sign the exact UTF-8 message with EIP-191 semantics for accountAddress (including smart-account wrapping when required). */\n signMessage(message: string): Promise<Hex>;\n}\n\n/**\n * Factory function type for lazy account signer initialization.\n * Useful when the signer might not be available at client creation time.\n */\nexport type AccountSignerFactory = () => AccountSigner | null | Promise<AccountSigner | null>;\n\n/**\n * Account signer configuration for the client.\n * Can be a signer instance or a factory for lazy initialization.\n */\nexport type AccountSignerConfig = AccountSigner | AccountSignerFactory;\n\n/**\n * Helper to check if an account signer config is a factory function.\n */\nexport function isAccountSignerFactory(\n config: AccountSignerConfig,\n): config is AccountSignerFactory {\n return typeof config === \"function\";\n}\n\n/**\n * Asserts that a value implements the account signer contract.\n */\nexport function assertAccountSigner(value: AccountSigner): void {\n if (typeof value !== \"object\" || value === null) {\n throw new ConfigurationError(\"Account signer must be an object or factory function.\");\n }\n if (!value.environmentFingerprint) {\n throw new ConfigurationError(\"Account signer must include an environmentFingerprint.\");\n }\n if (!isEvmAddress(value.accountAddress)) {\n throw new ConfigurationError(\"Account signer must include a valid accountAddress.\");\n }\n if (value.ownerAddress && !isEvmAddress(value.ownerAddress)) {\n throw new ConfigurationError(\"Account signer ownerAddress must be a valid address.\");\n }\n if (typeof value.signMessage !== \"function\") {\n throw new ConfigurationError(\"Account signer must include a signMessage function.\");\n }\n}\n\n/**\n * Helper to resolve an account signer from config.\n */\nexport async function resolveAccountSigner(\n config: AccountSignerConfig | undefined,\n): Promise<AccountSigner | null> {\n if (!config) return null;\n const accountSigner = isAccountSignerFactory(config) ? await config() : config;\n if (accountSigner) assertAccountSigner(accountSigner);\n return accountSigner;\n}\n"],"mappings":";;;;;;AAyCA,SAAgB,uBACZ,QAC8B;CAC9B,OAAO,OAAO,WAAW;AAC7B;;;;AAKA,SAAgB,oBAAoB,OAA4B;CAC5D,IAAI,OAAO,UAAU,YAAY,UAAU,MACvC,MAAM,IAAI,mBAAmB,uDAAuD;CAExF,IAAI,CAAC,MAAM,wBACP,MAAM,IAAI,mBAAmB,wDAAwD;CAEzF,IAAI,CAAC,aAAa,MAAM,cAAc,GAClC,MAAM,IAAI,mBAAmB,qDAAqD;CAEtF,IAAI,MAAM,gBAAgB,CAAC,aAAa,MAAM,YAAY,GACtD,MAAM,IAAI,mBAAmB,sDAAsD;CAEvF,IAAI,OAAO,MAAM,gBAAgB,YAC7B,MAAM,IAAI,mBAAmB,qDAAqD;AAE1F;;;;AAKA,eAAsB,qBAClB,QAC6B;CAC7B,IAAI,CAAC,QAAQ,OAAO;CACpB,MAAM,gBAAgB,uBAAuB,MAAM,IAAI,MAAM,OAAO,IAAI;CACxE,IAAI,eAAe,oBAAoB,aAAa;CACpD,OAAO;AACX"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"core-client.d.ts","names":[],"sources":["../src/core-client.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwFY,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"}
@@ -35,53 +35,26 @@ import { RealtimeClient } from "./realtime/client.js";
35
35
  //#region src/core-client.ts
36
36
  function realtimeAuthFromProvider(auth) {
37
37
  if (!auth) return {};
38
- if (auth.kind === "jwt") {
39
- let cachedTokenResolution;
40
- const prefetchToken = () => {
41
- if (cachedTokenResolution) return cachedTokenResolution;
38
+ if (auth.kind === "jwt") return {
39
+ getAuthHeaders: async () => {
40
+ const token = await resolveJwtToken(auth);
41
+ const headers = {};
42
+ if (token) headers.authorization = `Bearer ${token}`;
43
+ return headers;
44
+ },
45
+ hasAuth: () => {
42
46
  try {
43
- const value = auth.getToken();
44
- if (value !== null && typeof value !== "string") value.catch(() => {});
45
- cachedTokenResolution = {
46
- kind: "value",
47
- value
48
- };
49
- } catch (cause) {
50
- cachedTokenResolution = {
51
- kind: "error",
52
- cause
53
- };
54
- }
55
- return cachedTokenResolution;
56
- };
57
- const consumeToken = () => {
58
- const resolution = cachedTokenResolution;
59
- cachedTokenResolution = void 0;
60
- if (!resolution) return auth.getToken();
61
- if (resolution.kind === "error") throw resolution.cause;
62
- return resolution.value;
63
- };
64
- const cachedAuth = {
65
- kind: "jwt",
66
- getToken: consumeToken
67
- };
68
- return {
69
- getAuthHeaders: async () => {
70
- const token = await resolveJwtToken(cachedAuth);
71
- const headers = {};
72
- if (token) headers.authorization = `Bearer ${token}`;
73
- return headers;
74
- },
75
- hasAuth: () => {
76
- const resolution = prefetchToken();
77
- if (resolution.kind === "error") return true;
78
- if (resolution.value !== null && typeof resolution.value !== "string") return true;
79
- const hasToken = resolution.value !== null && resolution.value.length > 0;
80
- if (!hasToken) cachedTokenResolution = void 0;
81
- return hasToken;
47
+ const token = auth.getToken();
48
+ if (token !== null && typeof token !== "string") {
49
+ token.catch(() => {});
50
+ return true;
51
+ }
52
+ return token !== null && token.length > 0;
53
+ } catch {
54
+ return true;
82
55
  }
83
- };
84
- }
56
+ }
57
+ };
85
58
  return {
86
59
  getAuthHeaders: (request) => createApiKeyEd25519AuthHeaders(auth, {
87
60
  url: request.url,
@@ -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 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":"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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 return {\n getAuthHeaders: async () => {\n const token = await resolveJwtToken(auth);\n const headers: Record<string, string> = {};\n if (token) headers.authorization = `Bearer ${token}`;\n return headers;\n },\n hasAuth: () => {\n try {\n const token = auth.getToken();\n if (token !== null && typeof token !== \"string\") {\n // Async credentials are validated by the token request.\n void token.catch(() => {});\n return true;\n }\n return token !== null && token.length > 0;\n } catch {\n // Let the token request report provider failures as AuthenticationError.\n return true;\n }\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":"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"}
@@ -4,7 +4,7 @@ import { BatchReplaceAdmissionStatus, FeeAsset, OrderType, SelfTradePreventionMo
4
4
  import { Message } from "@bufbuild/protobuf";
5
5
  import { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  declare namespace orders_read_pb_d_exports {
7
- export { AttachedRisk, AttachedRiskLegState, AttachedRiskLegStateSchema, AttachedRiskLegState_Status, AttachedRiskLegState_StatusSchema, AttachedRiskSchema, AttachedRiskStopLoss, AttachedRiskStopLossSchema, AttachedRiskTakeProfit, AttachedRiskTakeProfitSchema, AttachedRiskTrailingStop, AttachedRiskTrailingStopSchema, BatchReplacePhase, BatchReplacePhaseSchema, BatchReplaceStatusItem, BatchReplaceStatusItemSchema, GetBatchReplaceStatusRequest, GetBatchReplaceStatusRequestSchema, GetBatchReplaceStatusResponse, GetBatchReplaceStatusResponseSchema, GetOpenOrdersRequest, GetOpenOrdersRequestSchema, GetOpenOrdersResponse, GetOpenOrdersResponseSchema, GetOrderHistoryRequest, GetOrderHistoryRequestSchema, GetOrderHistoryResponse, GetOrderHistoryResponseSchema, GetOrderRequest, GetOrderRequestSchema, GetOrderResponse, GetOrderResponseSchema, GetUserTradesRequest, GetUserTradesRequestSchema, GetUserTradesResponse, GetUserTradesResponseSchema, Order, OrderOrigin, OrderOriginSchema, OrderOriginScope, OrderOriginScopeSchema, OrderSchema, OrderStatus, OrderStatusSchema, OrderTransfer, OrderTransferSchema, OrderTriggerType, OrderTriggerTypeSchema, OrdersReadService, UserTrade, UserTradeSchema, file_orders_v1_orders_read };
7
+ export { AttachedRisk, AttachedRiskLegState, AttachedRiskLegStateSchema, AttachedRiskLegState_Status, AttachedRiskLegState_StatusSchema, AttachedRiskSchema, AttachedRiskStopLoss, AttachedRiskStopLossSchema, AttachedRiskTakeProfit, AttachedRiskTakeProfitSchema, AttachedRiskTrailingStop, AttachedRiskTrailingStopSchema, BatchReplacePhase, BatchReplacePhaseSchema, BatchReplaceStatusItem, BatchReplaceStatusItemSchema, GetBatchReplaceStatusRequest, GetBatchReplaceStatusRequestSchema, GetBatchReplaceStatusResponse, GetBatchReplaceStatusResponseSchema, GetOpenOrdersRequest, GetOpenOrdersRequestSchema, GetOpenOrdersResponse, GetOpenOrdersResponseSchema, GetOrderHistoryRequest, GetOrderHistoryRequestSchema, GetOrderHistoryResponse, GetOrderHistoryResponseSchema, GetOrderRequest, GetOrderRequestSchema, GetOrderResponse, GetOrderResponseSchema, GetUserTradesRequest, GetUserTradesRequestSchema, GetUserTradesResponse, GetUserTradesResponseSchema, Order, OrderLineage, OrderLineageSchema, OrderOrigin, OrderOriginSchema, OrderOriginScope, OrderOriginScopeSchema, OrderSchema, OrderStatus, OrderStatusSchema, OrderTransfer, OrderTransferSchema, OrderTriggerType, OrderTriggerTypeSchema, OrdersReadService, UserTrade, UserTradeSchema, file_orders_v1_orders_read };
8
8
  }
9
9
  /**
10
10
  * Describes the file orders/v1/orders_read.proto.
@@ -274,6 +274,31 @@ type AttachedRisk = Message<"orders.v1.AttachedRisk"> & {
274
274
  * Use `create(AttachedRiskSchema)` to create a new message.
275
275
  */
276
276
  declare const AttachedRiskSchema: GenMessage<AttachedRisk>;
277
+ /**
278
+ * OrderLineage identifies a logical order and one of its accepted generations.
279
+ *
280
+ * @generated from message orders.v1.OrderLineage
281
+ */
282
+ type OrderLineage = Message<"orders.v1.OrderLineage"> & {
283
+ /**
284
+ * Stable logical-order ID: the first generation's public order ID.
285
+ * Replace preserves this ID; an independent new order starts a new lineage.
286
+ *
287
+ * @generated from field: fixed64 id = 1;
288
+ */
289
+ id: bigint;
290
+ /**
291
+ * One-based replacement generation, distinct from per-order state version.
292
+ *
293
+ * @generated from field: uint32 generation = 2;
294
+ */
295
+ generation: number;
296
+ };
297
+ /**
298
+ * Describes the message orders.v1.OrderLineage.
299
+ * Use `create(OrderLineageSchema)` to create a new message.
300
+ */
301
+ declare const OrderLineageSchema: GenMessage<OrderLineage>;
277
302
  /**
278
303
  * Order is the Connect-facing order view with compact binary fields.
279
304
  *
@@ -349,8 +374,8 @@ type Order = Message<"orders.v1.Order"> & {
349
374
  */
350
375
  origQtyScaled: bigint;
351
376
  /**
352
- * Cumulative filled quantity scaled by the pair's base_quantity_scale from
353
- * GetSpotConfig for symbol_id.
377
+ * Cumulative filled quantity across the lineage through this generation,
378
+ * scaled by the pair's base_quantity_scale from GetSpotConfig for symbol_id.
354
379
  *
355
380
  * @generated from field: int64 cum_qty_scaled = 13;
356
381
  */
@@ -363,7 +388,8 @@ type Order = Message<"orders.v1.Order"> & {
363
388
  */
364
389
  leavesQtyScaled: bigint;
365
390
  /**
366
- * Average fill price in quote units scaled by 1e6. Zero if no fills.
391
+ * Average execution price across the lineage through this generation,
392
+ * in quote units scaled by 1e6. Zero if no fills.
367
393
  *
368
394
  * @generated from field: int64 avg_price_ticks = 14;
369
395
  */
@@ -452,6 +478,12 @@ type Order = Message<"orders.v1.Order"> & {
452
478
  * @generated from field: optional int64 submitted_max_quote_debit_scaled = 28;
453
479
  */
454
480
  submittedMaxQuoteDebitScaled?: bigint | undefined;
481
+ /**
482
+ * Logical-order identity and requested generation. Always populated by order reads.
483
+ *
484
+ * @generated from field: orders.v1.OrderLineage lineage = 31;
485
+ */
486
+ lineage?: OrderLineage | undefined;
455
487
  };
456
488
  /**
457
489
  * Describes the message orders.v1.Order.
@@ -537,6 +569,13 @@ type UserTrade = Message<"orders.v1.UserTrade"> & {
537
569
  * @generated from field: bool fee_is_rebate = 14;
538
570
  */
539
571
  feeIsRebate: boolean;
572
+ /**
573
+ * Logical-order identity and the generation that executed this fill.
574
+ * Always populated by execution reads; order_id retains its original identity.
575
+ *
576
+ * @generated from field: orders.v1.OrderLineage lineage = 17;
577
+ */
578
+ lineage?: OrderLineage | undefined;
540
579
  };
541
580
  /**
542
581
  * Describes the message orders.v1.UserTrade.
@@ -550,11 +589,17 @@ declare const UserTradeSchema: GenMessage<UserTrade>;
550
589
  */
551
590
  type OrderTransfer = Message<"orders.v1.OrderTransfer"> & {
552
591
  /**
553
- * Match identifier that linked this transfer to an execution.
592
+ * Match identifier that linked this transfer to an execution, scoped by symbol_id.
554
593
  *
555
594
  * @generated from field: uint64 match_id = 1;
556
595
  */
557
596
  matchId: bigint;
597
+ /**
598
+ * Market of the execution; together with match_id identifies its match.
599
+ *
600
+ * @generated from field: uint32 symbol_id = 10;
601
+ */
602
+ symbolId: number;
558
603
  /**
559
604
  * Asset identifier for the transferred asset.
560
605
  *
@@ -853,6 +898,44 @@ type GetUserTradesRequest = Message<"orders.v1.GetUserTradesRequest"> & {
853
898
  * @generated from field: optional uint64 after_match_id = 14;
854
899
  */
855
900
  afterMatchId?: bigint | undefined;
901
+ /**
902
+ * Optional execution scope. Omitting it returns all matching account fills.
903
+ *
904
+ * @generated from oneof orders.v1.GetUserTradesRequest.execution_scope
905
+ */
906
+ executionScope: {
907
+ /**
908
+ * Exactly this physical order's executions; never includes predecessors.
909
+ *
910
+ * @generated from field: fixed64 order_id = 15;
911
+ */
912
+ value: bigint;
913
+ case: "orderId";
914
+ } | {
915
+ /**
916
+ * Executions across this logical order's accepted generations.
917
+ *
918
+ * @generated from field: fixed64 lineage_id = 16;
919
+ */
920
+ value: bigint;
921
+ case: "lineageId";
922
+ } | {
923
+ case: undefined;
924
+ value?: undefined;
925
+ };
926
+ /**
927
+ * Inclusive generation ceiling. Does not freeze an actively filling generation.
928
+ *
929
+ * @generated from field: optional uint32 through_generation = 17;
930
+ */
931
+ throughGeneration?: number | undefined;
932
+ /**
933
+ * Include account settlement legs linked to matches on this page.
934
+ * Legs may repeat across pages when two fills share a match; deduplicate by tx_id.
935
+ *
936
+ * @generated from field: bool include_transfers = 18;
937
+ */
938
+ includeTransfers: boolean;
856
939
  };
857
940
  /**
858
941
  * Describes the message orders.v1.GetUserTradesRequest.
@@ -866,7 +949,8 @@ declare const GetUserTradesRequestSchema: GenMessage<GetUserTradesRequest>;
866
949
  */
867
950
  type GetUserTradesResponse = Message<"orders.v1.GetUserTradesResponse"> & {
868
951
  /**
869
- * Trades ordered newest-first.
952
+ * Trades ordered by timestamp, symbol, match and physical order, descending.
953
+ * Projection is eventual: an empty page is not proof of order-state reconciliation.
870
954
  *
871
955
  * @generated from field: repeated orders.v1.UserTrade trades = 1;
872
956
  */
@@ -877,6 +961,12 @@ type GetUserTradesResponse = Message<"orders.v1.GetUserTradesResponse"> & {
877
961
  * @generated from field: string next_page_token = 2;
878
962
  */
879
963
  nextPageToken: string;
964
+ /**
965
+ * Settlement legs for matches represented on this page, when requested.
966
+ *
967
+ * @generated from field: repeated orders.v1.OrderTransfer transfers = 3;
968
+ */
969
+ transfers: OrderTransfer[];
880
970
  };
881
971
  /**
882
972
  * Describes the message orders.v1.GetUserTradesResponse.
@@ -884,7 +974,7 @@ type GetUserTradesResponse = Message<"orders.v1.GetUserTradesResponse"> & {
884
974
  */
885
975
  declare const GetUserTradesResponseSchema: GenMessage<GetUserTradesResponse>;
886
976
  /**
887
- * GetOrderRequest retrieves a single order and related execution context.
977
+ * GetOrderRequest retrieves one physical order and a bounded page of its lineage executions.
888
978
  *
889
979
  * @generated from message orders.v1.GetOrderRequest
890
980
  */
@@ -932,6 +1022,26 @@ type GetOrderRequest = Message<"orders.v1.GetOrderRequest"> & {
932
1022
  * @generated from field: optional bool include_attached_risk_state = 11;
933
1023
  */
934
1024
  includeAttachedRiskState?: boolean | undefined;
1025
+ /**
1026
+ * Include a page of lineage trades and their settlement transfers (default true).
1027
+ * Set false for state-only polling; limit and page_token must then be omitted.
1028
+ *
1029
+ * @generated from field: optional bool include_execution_history = 12;
1030
+ */
1031
+ includeExecutionHistory?: boolean | undefined;
1032
+ /**
1033
+ * Maximum executions to return (1-1000, default 100).
1034
+ *
1035
+ * @generated from field: optional uint32 limit = 13;
1036
+ */
1037
+ limit?: number | undefined;
1038
+ /**
1039
+ * Execution cursor from this order's previous response. Use order_id rather
1040
+ * than a reused client_order_id to keep the requested generation stable.
1041
+ *
1042
+ * @generated from field: string page_token = 14;
1043
+ */
1044
+ pageToken: string;
935
1045
  };
936
1046
  /**
937
1047
  * Describes the message orders.v1.GetOrderRequest.
@@ -939,7 +1049,9 @@ type GetOrderRequest = Message<"orders.v1.GetOrderRequest"> & {
939
1049
  */
940
1050
  declare const GetOrderRequestSchema: GenMessage<GetOrderRequest>;
941
1051
  /**
942
- * GetOrderResponse returns the order plus related trades and transfer legs.
1052
+ * GetOrderResponse returns order details and a bounded execution page.
1053
+ * Order state, trades and transfers are eventually consistent;
1054
+ * one page's execution quantities need not equal the order's cumulative quantity.
943
1055
  *
944
1056
  * @generated from message orders.v1.GetOrderResponse
945
1057
  */
@@ -951,17 +1063,26 @@ type GetOrderResponse = Message<"orders.v1.GetOrderResponse"> & {
951
1063
  */
952
1064
  order?: Order | undefined;
953
1065
  /**
954
- * User trade fills for the order, ordered newest-first.
1066
+ * Lineage executions through the requested generation, newest first, retaining
1067
+ * original executing order IDs. Omitted when execution history is disabled.
955
1068
  *
956
1069
  * @generated from field: repeated orders.v1.UserTrade trades = 2;
957
1070
  */
958
1071
  trades: UserTrade[];
959
1072
  /**
960
- * Transfer legs linked to the order's matches, ordered newest-first.
1073
+ * Account settlement legs for matches on this page. Deduplicate by tx_id when
1074
+ * multiple execution pages contain legs of the same match.
961
1075
  *
962
1076
  * @generated from field: repeated orders.v1.OrderTransfer transfers = 3;
963
1077
  */
964
1078
  transfers: OrderTransfer[];
1079
+ /**
1080
+ * Cursor for the next execution page. Empty when no further rows are visible;
1081
+ * this is not a settlement or order-state reconciliation watermark.
1082
+ *
1083
+ * @generated from field: string next_page_token = 6;
1084
+ */
1085
+ nextPageToken: string;
965
1086
  };
966
1087
  /**
967
1088
  * Describes the message orders.v1.GetOrderResponse.
@@ -1310,7 +1431,8 @@ declare const OrdersReadService: GenService<{
1310
1431
  };
1311
1432
  /**
1312
1433
  * Retrieve per-user trade fills for an account.
1313
- * Supports optional subaccount, symbol, side, and time-range filters with cursor pagination.
1434
+ * Supports exact physical-order or logical-lineage scope, an inclusive generation
1435
+ * cutoff, and subaccount, symbol, side and time filters with cursor pagination.
1314
1436
  *
1315
1437
  * @generated from rpc orders.v1.OrdersReadService.GetUserTrades
1316
1438
  */
@@ -1320,7 +1442,8 @@ declare const OrdersReadService: GenService<{
1320
1442
  output: typeof GetUserTradesResponseSchema;
1321
1443
  };
1322
1444
  /**
1323
- * Retrieve a single order by order ID or client order ID, including related user trades and ledger transfers.
1445
+ * Retrieve order state and a bounded page of its lineage executions by order or client order ID.
1446
+ * Use GetUserTrades for paginated execution history and optional settlement legs.
1324
1447
  * Recent accepted orders may wait briefly for read availability; retry UNAVAILABLE with the same lookup key.
1325
1448
  *
1326
1449
  * @generated from rpc orders.v1.OrdersReadService.GetOrder
@@ -1342,5 +1465,5 @@ declare const OrdersReadService: GenService<{
1342
1465
  };
1343
1466
  }>;
1344
1467
  //#endregion
1345
- export { AttachedRisk, AttachedRiskLegState, AttachedRiskLegStateSchema, AttachedRiskLegState_Status, AttachedRiskLegState_StatusSchema, AttachedRiskSchema, AttachedRiskStopLoss, AttachedRiskStopLossSchema, AttachedRiskTakeProfit, AttachedRiskTakeProfitSchema, AttachedRiskTrailingStop, AttachedRiskTrailingStopSchema, BatchReplacePhase, BatchReplacePhaseSchema, BatchReplaceStatusItem, BatchReplaceStatusItemSchema, GetBatchReplaceStatusRequest, GetBatchReplaceStatusRequestSchema, GetBatchReplaceStatusResponse, GetBatchReplaceStatusResponseSchema, GetOpenOrdersRequest, GetOpenOrdersRequestSchema, GetOpenOrdersResponse, GetOpenOrdersResponseSchema, GetOrderHistoryRequest, GetOrderHistoryRequestSchema, GetOrderHistoryResponse, GetOrderHistoryResponseSchema, GetOrderRequest, GetOrderRequestSchema, GetOrderResponse, GetOrderResponseSchema, GetUserTradesRequest, GetUserTradesRequestSchema, GetUserTradesResponse, GetUserTradesResponseSchema, Order, OrderOrigin, OrderOriginSchema, OrderOriginScope, OrderOriginScopeSchema, OrderSchema, OrderStatus, OrderStatusSchema, OrderTransfer, OrderTransferSchema, OrderTriggerType, OrderTriggerTypeSchema, OrdersReadService, UserTrade, UserTradeSchema, file_orders_v1_orders_read, orders_read_pb_d_exports };
1468
+ export { AttachedRisk, AttachedRiskLegState, AttachedRiskLegStateSchema, AttachedRiskLegState_Status, AttachedRiskLegState_StatusSchema, AttachedRiskSchema, AttachedRiskStopLoss, AttachedRiskStopLossSchema, AttachedRiskTakeProfit, AttachedRiskTakeProfitSchema, AttachedRiskTrailingStop, AttachedRiskTrailingStopSchema, BatchReplacePhase, BatchReplacePhaseSchema, BatchReplaceStatusItem, BatchReplaceStatusItemSchema, GetBatchReplaceStatusRequest, GetBatchReplaceStatusRequestSchema, GetBatchReplaceStatusResponse, GetBatchReplaceStatusResponseSchema, GetOpenOrdersRequest, GetOpenOrdersRequestSchema, GetOpenOrdersResponse, GetOpenOrdersResponseSchema, GetOrderHistoryRequest, GetOrderHistoryRequestSchema, GetOrderHistoryResponse, GetOrderHistoryResponseSchema, GetOrderRequest, GetOrderRequestSchema, GetOrderResponse, GetOrderResponseSchema, GetUserTradesRequest, GetUserTradesRequestSchema, GetUserTradesResponse, GetUserTradesResponseSchema, Order, OrderLineage, OrderLineageSchema, OrderOrigin, OrderOriginSchema, OrderOriginScope, OrderOriginScopeSchema, OrderSchema, OrderStatus, OrderStatusSchema, OrderTransfer, OrderTransferSchema, OrderTriggerType, OrderTriggerTypeSchema, OrdersReadService, UserTrade, UserTradeSchema, file_orders_v1_orders_read, orders_read_pb_d_exports };
1346
1469
  //# sourceMappingURL=orders_read_pb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders_read_pb.d.ts","names":[],"sources":["../../../../src/gen/orders/v1/orders_read_pb.ts"],"mappings":"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"}
1
+ {"version":3,"file":"orders_read_pb.d.ts","names":[],"sources":["../../../../src/gen/orders/v1/orders_read_pb.ts"],"mappings":"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"}