@stocklayer/sdk 0.0.0-stage → 0.1.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/dist/index.js ADDED
@@ -0,0 +1,259 @@
1
+ export { ROBINHOOD_CHAIN_ID } from './types.js';
2
+ /** The API version this SDK release targets. */
3
+ export const API_VERSION = 'v0';
4
+ /** Keep in sync with `package.json`; verified by the test suite. */
5
+ export const SDK_VERSION = '0.1.0';
6
+ export class StocklayerApiError extends Error {
7
+ status;
8
+ code;
9
+ retryable;
10
+ details;
11
+ requestId;
12
+ constructor(options) {
13
+ super(options.message);
14
+ this.name = 'StocklayerApiError';
15
+ this.status = options.status;
16
+ this.code = options.code;
17
+ this.retryable = options.retryable ?? false;
18
+ this.details = options.details ?? null;
19
+ this.requestId = options.requestId ?? null;
20
+ }
21
+ }
22
+ function numberHeader(headers, name) {
23
+ const value = headers.get(name);
24
+ if (value === null)
25
+ return null;
26
+ const parsed = Number(value);
27
+ return Number.isFinite(parsed) ? parsed : null;
28
+ }
29
+ export function readResponseInfo(response) {
30
+ const headers = response.headers;
31
+ const environment = headers.get('x-stocklayer-environment');
32
+ const limit = numberHeader(headers, 'x-ratelimit-limit');
33
+ const remaining = numberHeader(headers, 'x-ratelimit-remaining');
34
+ const resetAt = numberHeader(headers, 'x-ratelimit-reset');
35
+ const monthlyLimit = numberHeader(headers, 'x-stocklayer-monthly-limit');
36
+ const monthlyRemaining = numberHeader(headers, 'x-stocklayer-monthly-remaining');
37
+ return {
38
+ requestId: headers.get('x-request-id'),
39
+ status: response.status,
40
+ sandbox: headers.get('x-stocklayer-sandbox') === 'on',
41
+ plan: headers.get('x-stocklayer-plan'),
42
+ environment: environment === 'test' || environment === 'live' ? environment : null,
43
+ rateLimit: limit !== null && remaining !== null && resetAt !== null
44
+ ? { limit, remaining, resetAt }
45
+ : null,
46
+ monthly: monthlyLimit !== null && monthlyRemaining !== null
47
+ ? { limit: monthlyLimit, remaining: monthlyRemaining }
48
+ : null,
49
+ };
50
+ }
51
+ function normalizedTimeout(value, fallback) {
52
+ const timeout = value ?? fallback;
53
+ if (!Number.isSafeInteger(timeout) || timeout < 0) {
54
+ throw new TypeError('timeoutMs must be a non-negative integer');
55
+ }
56
+ return timeout;
57
+ }
58
+ function delay(ms, signal) {
59
+ return new Promise((resolve, reject) => {
60
+ if (signal?.aborted) {
61
+ reject(signal.reason);
62
+ return;
63
+ }
64
+ const timer = setTimeout(() => {
65
+ signal?.removeEventListener('abort', onAbort);
66
+ resolve();
67
+ }, ms);
68
+ const onAbort = () => {
69
+ clearTimeout(timer);
70
+ reject(signal?.reason);
71
+ };
72
+ signal?.addEventListener('abort', onAbort, { once: true });
73
+ });
74
+ }
75
+ export class StocklayerClient {
76
+ system;
77
+ assets;
78
+ prices;
79
+ corporateActions;
80
+ portfolios;
81
+ quotes;
82
+ trades;
83
+ transactions;
84
+ /** Metadata from the most recent response, including limits and sandbox state. */
85
+ lastResponse = null;
86
+ baseUrl;
87
+ apiKey;
88
+ scenario;
89
+ retries;
90
+ timeoutMs;
91
+ requestFetch;
92
+ constructor(options) {
93
+ this.baseUrl = options.baseUrl.replace(/\/$/, '');
94
+ this.apiKey = options.apiKey;
95
+ this.scenario = options.scenario;
96
+ this.retries = options.retries ?? 2;
97
+ if (!Number.isSafeInteger(this.retries) || this.retries < 0) {
98
+ throw new TypeError('retries must be a non-negative integer');
99
+ }
100
+ this.timeoutMs = normalizedTimeout(options.timeoutMs, 30_000);
101
+ this.requestFetch = options.fetch ?? globalThis.fetch;
102
+ this.system = {
103
+ index: (requestOptions) => this.request('', { requestOptions }),
104
+ health: (requestOptions) => this.request('/health', { requestOptions }),
105
+ };
106
+ this.assets = {
107
+ list: (options = {}, requestOptions) => this.request('/assets', { query: options, requestOptions }),
108
+ get: (symbol, requestOptions) => this.request(`/assets/${encodeURIComponent(symbol)}`, {
109
+ requestOptions,
110
+ }),
111
+ };
112
+ this.prices = {
113
+ get: (symbol, requestOptions) => this.request(`/prices/${encodeURIComponent(symbol)}`, {
114
+ requestOptions,
115
+ }),
116
+ };
117
+ this.corporateActions = {
118
+ list: (options = {}, requestOptions) => this.request('/corporate-actions', {
119
+ query: options,
120
+ requestOptions,
121
+ }),
122
+ };
123
+ this.portfolios = {
124
+ get: (wallet, options = {}, requestOptions) => this.request(`/portfolios/${encodeURIComponent(wallet)}`, {
125
+ query: {
126
+ symbols: options.symbols?.join(','),
127
+ includeZero: options.includeZero,
128
+ },
129
+ requestOptions,
130
+ }),
131
+ };
132
+ this.quotes = {
133
+ create: (body, requestOptions) => this.request('/quotes', {
134
+ method: 'POST',
135
+ body,
136
+ requestOptions,
137
+ }),
138
+ };
139
+ this.trades = {
140
+ plan: (body, options = {}) => {
141
+ const idempotencyKey = options.idempotencyKey ?? crypto.randomUUID();
142
+ return this.request('/trades/plan', {
143
+ method: 'POST',
144
+ body,
145
+ headers: { 'idempotency-key': idempotencyKey },
146
+ idempotent: true,
147
+ requestOptions: options,
148
+ });
149
+ },
150
+ get: (planId, requestOptions) => this.request(`/trade-plans/${encodeURIComponent(planId)}`, {
151
+ requestOptions,
152
+ }),
153
+ };
154
+ this.transactions = {
155
+ simulate: (body, requestOptions) => this.request('/transactions/simulate', {
156
+ method: 'POST',
157
+ body,
158
+ requestOptions,
159
+ }),
160
+ };
161
+ }
162
+ async request(path, options = {}) {
163
+ const method = options.method ?? 'GET';
164
+ const url = new URL(`${this.baseUrl}${path}`);
165
+ for (const [key, value] of Object.entries(options.query ?? {})) {
166
+ if (value !== undefined)
167
+ url.searchParams.set(key, String(value));
168
+ }
169
+ const attempts = method === 'GET' || options.idempotent ? this.retries + 1 : 1;
170
+ let lastError = null;
171
+ const timeoutMs = normalizedTimeout(options.requestOptions?.timeoutMs, this.timeoutMs);
172
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
173
+ const timeoutSignal = timeoutMs > 0 ? AbortSignal.timeout(timeoutMs) : undefined;
174
+ const signal = timeoutSignal && options.requestOptions?.signal
175
+ ? AbortSignal.any([timeoutSignal, options.requestOptions.signal])
176
+ : (timeoutSignal ?? options.requestOptions?.signal);
177
+ let response;
178
+ let envelope = null;
179
+ try {
180
+ response = await this.requestFetch(url, {
181
+ method,
182
+ signal,
183
+ headers: {
184
+ accept: 'application/json',
185
+ ...(options.body ? { 'content-type': 'application/json' } : {}),
186
+ ...(this.apiKey ? { authorization: `Bearer ${this.apiKey}` } : {}),
187
+ ...(this.scenario ? { 'x-stocklayer-scenario': this.scenario } : {}),
188
+ ...options.headers,
189
+ },
190
+ body: options.body ? JSON.stringify(options.body) : undefined,
191
+ });
192
+ this.lastResponse = readResponseInfo(response);
193
+ try {
194
+ const body = await response.json();
195
+ if (body && typeof body === 'object' && !Array.isArray(body)) {
196
+ envelope = body;
197
+ }
198
+ }
199
+ catch (error) {
200
+ if (signal?.aborted)
201
+ throw error;
202
+ }
203
+ }
204
+ catch (error) {
205
+ if (!signal?.aborted)
206
+ throw error;
207
+ const cancelled = options.requestOptions?.signal?.aborted === true;
208
+ lastError = new StocklayerApiError({
209
+ status: 0,
210
+ code: cancelled ? 'REQUEST_ABORTED' : 'REQUEST_TIMEOUT',
211
+ message: cancelled
212
+ ? 'Stocklayer request was cancelled'
213
+ : 'Stocklayer request timed out',
214
+ retryable: !cancelled,
215
+ });
216
+ const isLast = attempt === attempts - 1;
217
+ if (!lastError.retryable || isLast)
218
+ throw lastError;
219
+ continue;
220
+ }
221
+ const info = readResponseInfo(response);
222
+ this.lastResponse = info;
223
+ if (response.ok &&
224
+ envelope &&
225
+ Object.hasOwn(envelope, 'data') &&
226
+ !envelope.error) {
227
+ return envelope.data;
228
+ }
229
+ lastError = new StocklayerApiError({
230
+ status: response.status,
231
+ code: envelope?.error?.code ?? 'API_ERROR',
232
+ message: envelope?.error?.message ??
233
+ (response.ok
234
+ ? 'Stocklayer API returned an invalid response envelope'
235
+ : `Stocklayer API returned HTTP ${response.status}`),
236
+ retryable: envelope?.error?.retryable ??
237
+ (response.status === 429 || response.status >= 500),
238
+ details: envelope?.error?.details,
239
+ requestId: envelope?.meta?.requestId ?? info.requestId,
240
+ });
241
+ const isLast = attempt === attempts - 1;
242
+ if (!lastError.retryable || isLast)
243
+ throw lastError;
244
+ const retryAfter = numberHeader(response.headers, 'retry-after');
245
+ try {
246
+ await delay(retryAfter !== null ? retryAfter * 1000 : 250 * 2 ** attempt, options.requestOptions?.signal);
247
+ }
248
+ catch {
249
+ throw new StocklayerApiError({
250
+ status: 0,
251
+ code: 'REQUEST_ABORTED',
252
+ message: 'Stocklayer request was cancelled',
253
+ });
254
+ }
255
+ }
256
+ throw lastError ?? new Error('unreachable');
257
+ }
258
+ }
259
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,377 @@
1
+ /**
2
+ * Public request and response models for the Stocklayer V0 API.
3
+ *
4
+ * This file is the single source of truth for the wire contract. The
5
+ * application re-exports it from `src/core/types.ts`, so services, route
6
+ * handlers, the OpenAPI document, and the SDK all describe the same shapes.
7
+ * It has no runtime imports so it can ship inside the SDK unchanged.
8
+ */
9
+ export type Address = `0x${string}`;
10
+ export type Hex = `0x${string}`;
11
+ export declare const ROBINHOOD_CHAIN_ID = 4663;
12
+ export type RobinhoodChainId = typeof ROBINHOOD_CHAIN_ID;
13
+ export type ApiVersion = 'v0';
14
+ export interface ApiMeta {
15
+ requestId: string;
16
+ version: ApiVersion;
17
+ generatedAt: string;
18
+ }
19
+ export interface ApiSuccess<T> {
20
+ data: T;
21
+ meta: ApiMeta;
22
+ }
23
+ export interface ApiErrorBody {
24
+ code: string;
25
+ message: string;
26
+ retryable: boolean;
27
+ details: unknown;
28
+ }
29
+ export interface ApiFailure {
30
+ error: ApiErrorBody;
31
+ meta: ApiMeta;
32
+ }
33
+ export type AssetStatus = 'active' | 'inactive' | 'unspecified';
34
+ export interface AssetDeployment {
35
+ chainId: number;
36
+ contractAddress: Address;
37
+ }
38
+ export interface CanonicalAsset {
39
+ id: string;
40
+ symbol: string;
41
+ name: string;
42
+ status: AssetStatus;
43
+ currentMultiplier: string;
44
+ pendingMultiplier: string | null;
45
+ pendingMultiplierEffectiveTime: string | null;
46
+ deployments: AssetDeployment[];
47
+ logoUrl: string | null;
48
+ tradingCapabilities: Record<string, unknown> | null;
49
+ provenance: {
50
+ source: 'robinhood';
51
+ sourceUrl: string;
52
+ retrievedAt: string;
53
+ };
54
+ }
55
+ export interface AssetList {
56
+ assets: CanonicalAsset[];
57
+ next: string | null;
58
+ total: number;
59
+ }
60
+ export type CorporateActionType = 'forward_split' | 'reverse_split' | 'cash_dividend' | 'stock_dividend' | 'spin_off' | 'cash_merger' | 'stock_merger' | 'stock_and_cash_merger' | 'redemption' | 'name_change' | 'worthless_removal' | 'rights_distribution' | 'unit_split' | 'unspecified';
61
+ export type CorporateActionStatus = 'in_progress' | 'completed' | 'unspecified';
62
+ export interface CorporateAction {
63
+ id: string;
64
+ type: CorporateActionType;
65
+ /** Original Robinhood enum, retained for forward compatibility. */
66
+ sourceType: string;
67
+ status: CorporateActionStatus;
68
+ /** ISO calendar date (YYYY-MM-DD), or null when Robinhood has not scheduled it. */
69
+ processDate: string | null;
70
+ asset: {
71
+ symbol: string;
72
+ deployments: AssetDeployment[];
73
+ };
74
+ /** Exactly one Robinhood-defined variant is present for known action types. */
75
+ details: Record<string, unknown>;
76
+ provenance: {
77
+ source: 'robinhood';
78
+ sourceUrl: string;
79
+ retrievedAt: string;
80
+ };
81
+ }
82
+ export interface CorporateActionList {
83
+ actions: CorporateAction[];
84
+ total: number;
85
+ }
86
+ export interface SystemToken {
87
+ kind: 'system';
88
+ symbol: string;
89
+ name: string;
90
+ address: Address;
91
+ decimals: number;
92
+ chainId: number;
93
+ }
94
+ export interface MarketToken {
95
+ kind: 'market';
96
+ symbol: string;
97
+ name: string;
98
+ address: Address;
99
+ decimals: number;
100
+ chainId: number;
101
+ asset: CanonicalAsset;
102
+ }
103
+ export type ResolvedToken = SystemToken | MarketToken;
104
+ export interface PriceObservation {
105
+ asset: Pick<CanonicalAsset, 'id' | 'symbol' | 'name' | 'status'>;
106
+ currency: string;
107
+ rawUnderlying: {
108
+ bid: string;
109
+ ask: string;
110
+ mid: string;
111
+ source: 'robinhood-rest';
112
+ };
113
+ tokenEquivalent: {
114
+ bid: string;
115
+ ask: string;
116
+ mid: string;
117
+ multiplier: string;
118
+ calculation: 'underlying_price_x_current_multiplier';
119
+ };
120
+ isTradingHalt: boolean;
121
+ dailyTradingVolume: string;
122
+ generatedAt: string;
123
+ retrievedAt: string;
124
+ }
125
+ export interface PortfolioPosition {
126
+ asset: {
127
+ kind: 'system' | 'market';
128
+ symbol: string;
129
+ name: string;
130
+ contractAddress: Address;
131
+ decimals: number;
132
+ };
133
+ balance: {
134
+ raw: string;
135
+ formatted: string;
136
+ };
137
+ /** Underlying quantity for market tokens (`balance × currentMultiplier`); null for system tokens. */
138
+ underlyingQuantity: string | null;
139
+ }
140
+ export interface Portfolio {
141
+ wallet: Address;
142
+ chainId: RobinhoodChainId;
143
+ blockNumber: string;
144
+ nativeBalance: {
145
+ symbol: 'ETH';
146
+ raw: string;
147
+ formatted: string;
148
+ };
149
+ positions: PortfolioPosition[];
150
+ scannedAssets: number;
151
+ partial: boolean;
152
+ warning: string | null;
153
+ }
154
+ export interface UnsignedTransaction {
155
+ chainId: number;
156
+ from: Address;
157
+ to: Address;
158
+ data: Hex;
159
+ value: string;
160
+ gasLimit?: string;
161
+ maxFeePerGas?: string;
162
+ maxPriorityFeePerGas?: string;
163
+ gasPrice?: string;
164
+ }
165
+ /** Client-supplied transaction for simulation; `from` may come from `wallet`. */
166
+ export interface SimulateTransactionInput {
167
+ chainId?: number;
168
+ from?: string;
169
+ to: string;
170
+ data?: string;
171
+ value?: string;
172
+ gasLimit?: string;
173
+ gasPrice?: string;
174
+ maxFeePerGas?: string;
175
+ maxPriorityFeePerGas?: string;
176
+ }
177
+ export interface SimulateRequest {
178
+ wallet?: string;
179
+ transactions: SimulateTransactionInput[];
180
+ }
181
+ export interface SimulationCallResult {
182
+ index: number;
183
+ status: 'passed' | 'failed' | 'not_run';
184
+ gasUsed: string | null;
185
+ returnData: string | null;
186
+ error: string | null;
187
+ }
188
+ export interface SimulationResult {
189
+ status: 'passed' | 'failed' | 'partial';
190
+ mode: 'sequential' | 'independent';
191
+ blockNumber: string;
192
+ calls: SimulationCallResult[];
193
+ warning: string | null;
194
+ }
195
+ export interface ExactInputTradeIntent {
196
+ type: 'exact_input';
197
+ tokenIn?: string;
198
+ tokenOut: string;
199
+ amountIn: string;
200
+ }
201
+ export interface ExactOutputTradeIntent {
202
+ type: 'exact_output';
203
+ tokenIn?: string;
204
+ tokenOut: string;
205
+ amountOut: string;
206
+ }
207
+ /** Preferred public request body for `POST /quotes` and `POST /trades/plan`. */
208
+ export interface IntentTradeRequest {
209
+ wallet: string;
210
+ intent: ExactInputTradeIntent | ExactOutputTradeIntent;
211
+ /** Percent, 0.01–5. Defaults to 0.5. */
212
+ slippageTolerance?: number;
213
+ }
214
+ /** V0 compatibility shape. New integrations should use `IntentTradeRequest`. */
215
+ export interface LegacyTradeRequest {
216
+ wallet: string;
217
+ tokenOut: string;
218
+ input: {
219
+ /** Defaults to USDG. */
220
+ tokenIn?: string;
221
+ /** Positive decimal string with at most 18 decimal places. */
222
+ amount: string;
223
+ };
224
+ /** Percent, 0.01–5. Defaults to 0.5. */
225
+ slippageTolerance?: number;
226
+ }
227
+ export type TradeRequest = IntentTradeRequest | LegacyTradeRequest;
228
+ export interface Quote {
229
+ id: string;
230
+ requestType: 'exact_input' | 'exact_output';
231
+ routing: string;
232
+ tokenIn: ResolvedToken;
233
+ tokenOut: ResolvedToken;
234
+ amountIn: string;
235
+ amountInBaseUnits: string;
236
+ /** Maximum input the wallet can spend after applying the requested slippage tolerance. */
237
+ maximumAmountIn: string;
238
+ maximumAmountInBaseUnits: string;
239
+ amountOut: string | null;
240
+ amountOutBaseUnits: string | null;
241
+ /** Minimum output the transaction is required to deliver. */
242
+ minimumAmountOut: string;
243
+ minimumAmountOutBaseUnits: string;
244
+ slippageTolerance: number;
245
+ receivedAt: string;
246
+ expiresAt: string;
247
+ provider: '0x-swap-api' | 'uniswap-trading-api';
248
+ providerRequestId: string | null;
249
+ rawQuote: Record<string, unknown>;
250
+ permitData: Record<string, unknown> | null;
251
+ }
252
+ export type TradePlanStepKind = 'cancel_approval' | 'approve' | 'swap';
253
+ export interface TradePlanStep {
254
+ index: number;
255
+ kind: TradePlanStepKind;
256
+ transaction: UnsignedTransaction;
257
+ }
258
+ export type PolicyVerdict = 'allow' | 'warn' | 'block';
259
+ export interface PolicyCheck {
260
+ source: 'rail_safety' | 'project_policy' | 'project_configuration';
261
+ verdict: PolicyVerdict;
262
+ code: string;
263
+ message: string;
264
+ evidence: Record<string, string | number | boolean | null>;
265
+ }
266
+ export interface TradePlanVerdict {
267
+ outcome: PolicyVerdict;
268
+ policyVersion: {
269
+ id: string;
270
+ version: number;
271
+ schemaVersion: 1;
272
+ } | null;
273
+ checks: PolicyCheck[];
274
+ }
275
+ export interface TokenTradeSizeLimit {
276
+ token: string;
277
+ warnAbove?: string;
278
+ blockAbove?: string;
279
+ }
280
+ export interface PolicyThresholds {
281
+ warnAbove?: number;
282
+ blockAbove?: number;
283
+ }
284
+ export interface ProjectPolicyRulesV1 {
285
+ schemaVersion: 1;
286
+ allowedOutputAssets?: string[];
287
+ blockedOutputAssets?: string[];
288
+ allowedInputTokens?: string[];
289
+ tradeSizeLimits?: TokenTradeSizeLimit[];
290
+ slippageTolerance?: PolicyThresholds;
291
+ }
292
+ export interface ProjectPolicyVersion {
293
+ id: string;
294
+ projectId: string;
295
+ version: number;
296
+ schemaVersion: 1;
297
+ rules: ProjectPolicyRulesV1;
298
+ createdAt: number;
299
+ active: boolean;
300
+ }
301
+ export interface TradePlan {
302
+ id: string;
303
+ status: 'ready' | 'review_required' | 'blocked';
304
+ chainId: RobinhoodChainId;
305
+ wallet: Address;
306
+ createdAt: string;
307
+ expiresAt: string;
308
+ intent: {
309
+ type: 'swap_exact_input';
310
+ tokenIn: string;
311
+ tokenOut: string;
312
+ amountIn: string;
313
+ } | {
314
+ type: 'swap_exact_output';
315
+ tokenIn: string;
316
+ tokenOut: string;
317
+ amountOut: string;
318
+ };
319
+ quote: Quote;
320
+ walletContext: {
321
+ inputBalance: {
322
+ raw: string;
323
+ formatted: string;
324
+ decimals: number;
325
+ };
326
+ sufficientBalance: true;
327
+ };
328
+ steps: TradePlanStep[];
329
+ simulation: SimulationResult;
330
+ verdict: TradePlanVerdict;
331
+ signing: {
332
+ mode: 'wallet_controlled';
333
+ submittedByRail: false;
334
+ unsignedTransactions: UnsignedTransaction[];
335
+ };
336
+ }
337
+ export interface ApiIndex {
338
+ name: string;
339
+ version: ApiVersion;
340
+ chainId: RobinhoodChainId;
341
+ documentation: string;
342
+ endpoints: Record<string, string>;
343
+ }
344
+ export interface HealthReport {
345
+ status: 'ok' | 'degraded';
346
+ chainId: RobinhoodChainId;
347
+ services: {
348
+ robinhoodAssets: {
349
+ configured: boolean;
350
+ };
351
+ robinhoodPrices: {
352
+ configured: boolean;
353
+ };
354
+ robinhoodRpc: {
355
+ configured: boolean;
356
+ provider: string;
357
+ };
358
+ uniswapTradingApi: {
359
+ configured: boolean;
360
+ };
361
+ zeroExSwapApi: {
362
+ configured: boolean;
363
+ };
364
+ platformDatabase: {
365
+ configured: boolean;
366
+ schema: 'current' | 'behind' | 'not_configured';
367
+ };
368
+ stocklayerApiAuthentication: {
369
+ enabled: boolean;
370
+ mode: 'project_keys' | 'disabled';
371
+ keyVerifierConfigured: boolean;
372
+ };
373
+ };
374
+ }
375
+ /** Scenario names accepted by `x-stocklayer-scenario` on test-environment keys. */
376
+ export type SandboxScenario = 'funded' | 'approved' | 'insufficient_balance' | 'zero_balance' | 'simulation_failed' | 'provider_degraded';
377
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Public request and response models for the Stocklayer V0 API.
3
+ *
4
+ * This file is the single source of truth for the wire contract. The
5
+ * application re-exports it from `src/core/types.ts`, so services, route
6
+ * handlers, the OpenAPI document, and the SDK all describe the same shapes.
7
+ * It has no runtime imports so it can ship inside the SDK unchanged.
8
+ */
9
+ export const ROBINHOOD_CHAIN_ID = 4663;
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC"}