@xmodeai/sdk 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.
@@ -0,0 +1,288 @@
1
+ import { A as KnownImageModel, B as SucceededGenerationRecord, C as GenerationListParams, D as ImageRecord, E as ImageModel, F as QueuedGenerationRecord, G as VideoModel, H as UnblockEndUserResponse, I as QueuedVideoRecord, J as VideoResolution, K as VideoRecord, L as ResponseFormat, M as KnownVideoModel, N as ProcessingGenerationRecord, O as ImageSize, P as ProcessingVideoRecord, R as SizePreset, S as GenerationError, T as GenerationRecord, U as VideoCost, V as SucceededVideoRecord, W as VideoError, _ as ExpiredGenerationRecord, a as BalanceHistoryResponse, b as FailedVideoRecord, c as BalanceLedgerType, d as CreateGenerationInput, f as CreateVideoInput, g as EndUserRecord, h as EndUserListResponse, i as BalanceHistoryParams, j as KnownStatus, k as KnownApiErrorCode, l as BalanceResponse, m as EndUserListParams, n as ApiErrorCode, o as BalanceLedgerEntry, p as DeleteEndUserResponse, q as VideoRecordItem, r as AspectRatio, s as BalanceLedgerReason, t as ApiErrorBody, u as BlockEndUserResponse, v as ExpiredVideoRecord, w as GenerationListResponse, x as GenerationCost, y as FailedGenerationRecord, z as Status } from "./types-BLVayOx3.js";
2
+
3
+ //#region src/core/request.d.ts
4
+ type HttpMethod = 'GET' | 'POST' | 'DELETE';
5
+ /**
6
+ * Retry policy for a request:
7
+ * - `'idempotent'` — safe to retry on network errors / 408 / 429 / 5xx.
8
+ * - `'create'` — non-idempotent (debits xTokens, no idempotency key);
9
+ * retried ONLY on 429 (rejected before any debit).
10
+ */
11
+ type RetryPolicy = 'idempotent' | 'create';
12
+ type QueryParams = Record<string, string | number | boolean | undefined>;
13
+ /** Per-call overrides accepted by every resource method. */
14
+ interface RequestOptions {
15
+ signal?: AbortSignal;
16
+ /** Per-attempt timeout in ms. Defaults to the client `timeout`. */
17
+ timeout?: number;
18
+ /** Overrides the client `maxRetries` for this call. */
19
+ maxRetries?: number;
20
+ /** Extra headers merged on top of the defaults. */
21
+ headers?: Record<string, string>;
22
+ }
23
+ /** Arguments for the low-level escape hatch `client.request()`. */
24
+ interface RequestArgs extends RequestOptions {
25
+ method: HttpMethod;
26
+ path: string;
27
+ body?: unknown;
28
+ query?: QueryParams;
29
+ /** Defaults to `'idempotent'` for GET, `'create'` for POST/DELETE. */
30
+ policy?: RetryPolicy;
31
+ }
32
+ //#endregion
33
+ //#region src/core/pagination.d.ts
34
+ interface ListShape<T> {
35
+ items: T[];
36
+ page: number;
37
+ pageSize: number;
38
+ hasMore: boolean;
39
+ }
40
+ type PageFetcher<T> = (query: QueryParams) => Promise<ListShape<T>>;
41
+ /**
42
+ * One page of a paginated list, plus the ability to fetch the next page and to
43
+ * iterate every item across all pages with `for await`.
44
+ */
45
+ declare class Page<T> implements AsyncIterable<T> {
46
+ readonly items: T[];
47
+ readonly page: number;
48
+ readonly pageSize: number;
49
+ readonly hasMore: boolean;
50
+ private readonly fetcher;
51
+ private readonly query;
52
+ constructor(data: ListShape<T>, fetcher: PageFetcher<T>, query: QueryParams);
53
+ /** Fetch the next page, or `null` when there are no more. */
54
+ getNextPage(): Promise<Page<T> | null>;
55
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
56
+ }
57
+ /**
58
+ * The return type of `list()` methods. `await` it to get the first {@link Page};
59
+ * `for await (... of ...)` it to stream every item across all pages.
60
+ */
61
+ declare class PagePromise<T> extends Promise<Page<T>> implements AsyncIterable<T> {
62
+ static get [Symbol.species](): PromiseConstructor;
63
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
64
+ }
65
+ //#endregion
66
+ //#region src/resources/balance.d.ts
67
+ declare class Balance {
68
+ private readonly client;
69
+ constructor(client: XMode);
70
+ /** Current xTokens balance. */
71
+ get(options?: RequestOptions): Promise<BalanceResponse>;
72
+ /** Paginated ledger of balance changes. `await` for one page, or `for await` for all. */
73
+ history(params?: BalanceHistoryParams, options?: RequestOptions): PagePromise<BalanceLedgerEntry>;
74
+ }
75
+ //#endregion
76
+ //#region src/resources/end-users.d.ts
77
+ declare class EndUsers {
78
+ private readonly client;
79
+ constructor(client: XMode);
80
+ /** List your downstream end-users. `await` for one page, or `for await` for all. */
81
+ list(params?: EndUserListParams, options?: RequestOptions): PagePromise<EndUserRecord>;
82
+ /** Block an end-user. New generations are refused; pending ones still finish. */
83
+ block(email: string, options?: RequestOptions): Promise<BlockEndUserResponse>;
84
+ /** Unblock a previously blocked end-user. */
85
+ unblock(email: string, options?: RequestOptions): Promise<UnblockEndUserResponse>;
86
+ /**
87
+ * Delete an end-user and all their generations and stored media. Fails with a
88
+ * `ConflictError` (409) if the end-user still has pending generations.
89
+ */
90
+ delete(email: string, options?: RequestOptions): Promise<DeleteEndUserResponse>;
91
+ }
92
+ //#endregion
93
+ //#region src/core/poll.d.ts
94
+ interface WaitOptions {
95
+ /** How often to poll, in ms. Defaults to 5000 (the recommended interval). */
96
+ pollInterval?: number;
97
+ /** Overall budget before giving up, in ms. */
98
+ timeout?: number;
99
+ /** Abort the wait early. */
100
+ signal?: AbortSignal;
101
+ }
102
+ declare const DEFAULT_POLL_INTERVAL_MS = 5000;
103
+ declare const DEFAULT_POLL_TIMEOUT_MS: number;
104
+ /** True once a record reaches a status from which it will not change. */
105
+ declare function isTerminal(record: {
106
+ status: string;
107
+ }): boolean;
108
+ /**
109
+ * Poll `fetchRecord` until it returns a terminal record, then resolve with it.
110
+ *
111
+ * Tolerant of statuses this SDK version does not know: anything outside the
112
+ * terminal set is treated as "still in progress", so a server-added status
113
+ * never aborts a wait. Throws {@link XModePollTimeoutError} (carrying the last
114
+ * record seen) if the budget elapses first.
115
+ */
116
+ declare function pollUntilTerminal<T extends {
117
+ status: string;
118
+ }>(fetchRecord: () => Promise<T>, options?: WaitOptions): Promise<T>;
119
+ //#endregion
120
+ //#region src/resources/generations.d.ts
121
+ declare class Generations {
122
+ private readonly client;
123
+ constructor(client: XMode);
124
+ /** Enqueue an image generation. Resolves with the `queued` record (202). */
125
+ create(input: CreateGenerationInput, options?: RequestOptions): Promise<QueuedGenerationRecord>;
126
+ /** Fetch the current state of a generation. */
127
+ get(requestId: string, options?: RequestOptions): Promise<GenerationRecord>;
128
+ /** List generations. `await` for the first page, or `for await` to stream all items. */
129
+ list(params?: GenerationListParams, options?: RequestOptions): PagePromise<GenerationRecord>;
130
+ /** Create a generation and poll until it reaches a terminal status. */
131
+ createAndWait(input: CreateGenerationInput, options?: WaitOptions): Promise<GenerationRecord>;
132
+ /** Poll an existing generation until it reaches a terminal status. */
133
+ wait(requestId: string, options?: WaitOptions): Promise<GenerationRecord>;
134
+ }
135
+ //#endregion
136
+ //#region src/resources/videos.d.ts
137
+ declare class Videos {
138
+ private readonly client;
139
+ constructor(client: XMode);
140
+ /** Enqueue a video generation. Resolves with the `queued` record (202). */
141
+ create(input: CreateVideoInput, options?: RequestOptions): Promise<QueuedVideoRecord>;
142
+ /** Fetch the current state of a video. */
143
+ get(requestId: string, options?: RequestOptions): Promise<VideoRecord>;
144
+ /** Create a video and poll until it reaches a terminal status. */
145
+ createAndWait(input: CreateVideoInput, options?: WaitOptions): Promise<VideoRecord>;
146
+ /** Poll an existing video until it reaches a terminal status. */
147
+ wait(requestId: string, options?: WaitOptions): Promise<VideoRecord>;
148
+ }
149
+ //#endregion
150
+ //#region src/client.d.ts
151
+ interface ClientOptions {
152
+ /** API key (`xm_live_...`). Defaults to the `XMODE_API_KEY` environment variable. */
153
+ apiKey?: string;
154
+ /** API base URL. Defaults to `https://api.xmode.ai`. */
155
+ baseUrl?: string;
156
+ /** Per-attempt request timeout in ms. Defaults to 30000. */
157
+ timeout?: number;
158
+ /** Max automatic retries for retryable requests. Defaults to 2. */
159
+ maxRetries?: number;
160
+ /** Custom fetch implementation (for tests or runtimes without a global fetch). */
161
+ fetch?: typeof fetch;
162
+ /** Extra headers sent with every request. */
163
+ defaultHeaders?: Record<string, string>;
164
+ }
165
+ /**
166
+ * The xMode API client.
167
+ *
168
+ * ```ts
169
+ * import XMode from '@xmodeai/sdk';
170
+ * const client = new XMode({ apiKey: process.env.XMODE_API_KEY });
171
+ * const result = await client.generations.createAndWait({
172
+ * endUserEmail: 'alice@your-product.com',
173
+ * model: 'xSD4.5',
174
+ * prompt: 'a red panda astronaut, studio lighting',
175
+ * });
176
+ * ```
177
+ */
178
+ declare class XMode {
179
+ readonly generations: Generations;
180
+ readonly videos: Videos;
181
+ readonly balance: Balance;
182
+ readonly endUsers: EndUsers;
183
+ private readonly config;
184
+ constructor(options?: ClientOptions);
185
+ /**
186
+ * Low-level escape hatch. Call any endpoint / pass any body before a typed
187
+ * method exists for it (e.g. a brand-new model parameter). Applies the same
188
+ * auth, retry and error handling as the typed resource methods.
189
+ *
190
+ * ```ts
191
+ * await client.request({
192
+ * method: 'POST',
193
+ * path: '/v1/videos',
194
+ * body: { endUserEmail, model: 'xSV2.0', prompt, image, cameraMotion: 'orbit' },
195
+ * });
196
+ * ```
197
+ */
198
+ request<T = unknown>(args: RequestArgs): Promise<T>;
199
+ }
200
+ //#endregion
201
+ //#region src/core/errors.d.ts
202
+ /** Base class for every error thrown by the SDK. */
203
+ declare class XModeError extends Error {
204
+ constructor(message: string);
205
+ }
206
+ interface XModeAPIErrorInit {
207
+ status: number;
208
+ code: string;
209
+ message: string;
210
+ fields?: Record<string, string>;
211
+ requestId?: string;
212
+ retryAfter?: number;
213
+ }
214
+ /**
215
+ * An error response from the API. The concrete subclass is chosen by the stable
216
+ * `error.code` contract; an unrecognized code yields a plain `XModeAPIError`
217
+ * (forward-compat — a new server code never crashes error handling).
218
+ */
219
+ declare class XModeAPIError extends XModeError {
220
+ readonly status: number;
221
+ readonly code: string;
222
+ readonly fields?: Record<string, string>;
223
+ /** Value of the `X-XMode-Request-Id` response header, when present. */
224
+ readonly requestId?: string;
225
+ constructor(init: XModeAPIErrorInit);
226
+ }
227
+ /** 400 `validation_error` — request failed schema validation. `fields` lists offending paths. */
228
+ declare class ValidationError extends XModeAPIError {
229
+ constructor(init: XModeAPIErrorInit);
230
+ }
231
+ /** 401 `unauthorized` — missing or invalid API key. */
232
+ declare class AuthenticationError extends XModeAPIError {
233
+ constructor(init: XModeAPIErrorInit);
234
+ }
235
+ /** 403 `forbidden` / `account_blocked` — the action is not allowed. */
236
+ declare class PermissionDeniedError extends XModeAPIError {
237
+ constructor(init: XModeAPIErrorInit);
238
+ }
239
+ /** 404 `not_found` — the resource does not exist (scoped to your account). */
240
+ declare class NotFoundError extends XModeAPIError {
241
+ constructor(init: XModeAPIErrorInit);
242
+ }
243
+ /** 409 `conflict` — e.g. deleting an end-user that still has pending generations. */
244
+ declare class ConflictError extends XModeAPIError {
245
+ constructor(init: XModeAPIErrorInit);
246
+ }
247
+ /** 429 `rate_limited` — too many requests. `retryAfter` (seconds) set when provided. */
248
+ declare class RateLimitError extends XModeAPIError {
249
+ readonly retryAfter?: number;
250
+ constructor(init: XModeAPIErrorInit);
251
+ }
252
+ /** 402 `payment_required` — insufficient xTokens balance. */
253
+ declare class PaymentRequiredError extends XModeAPIError {
254
+ constructor(init: XModeAPIErrorInit);
255
+ }
256
+ /** 422 `content_policy` — the prompt or inputs were rejected by the content filter. */
257
+ declare class ContentPolicyError extends XModeAPIError {
258
+ constructor(init: XModeAPIErrorInit);
259
+ }
260
+ /** `provider_error` / `provider_timeout` — upstream generation failed; safe to retry. */
261
+ declare class ProviderError extends XModeAPIError {
262
+ constructor(init: XModeAPIErrorInit);
263
+ }
264
+ /** `internal_error` — unexpected server-side failure. */
265
+ declare class InternalServerError extends XModeAPIError {
266
+ constructor(init: XModeAPIErrorInit);
267
+ }
268
+ /** A network-level failure (DNS, connection reset, fetch threw) before a response was received. */
269
+ declare class APIConnectionError extends XModeError {
270
+ readonly cause?: unknown;
271
+ constructor(message?: string, cause?: unknown);
272
+ }
273
+ /** The request exceeded the configured `timeout` before a response arrived. */
274
+ declare class APIConnectionTimeoutError extends APIConnectionError {
275
+ constructor(message?: string);
276
+ }
277
+ /** A `*.wait` / `*.createAndWait` poll did not reach a terminal status in time. */
278
+ declare class XModePollTimeoutError extends XModeError {
279
+ /** The most recent record observed before the timeout. */
280
+ readonly lastRecord: GenerationRecord | VideoRecord;
281
+ constructor(message: string, lastRecord: GenerationRecord | VideoRecord);
282
+ }
283
+ //#endregion
284
+ //#region src/version.d.ts
285
+ declare const VERSION: string;
286
+ //#endregion
287
+ export { APIConnectionError, APIConnectionTimeoutError, ApiErrorBody, ApiErrorCode, AspectRatio, AuthenticationError, BalanceHistoryParams, BalanceHistoryResponse, BalanceLedgerEntry, BalanceLedgerReason, BalanceLedgerType, BalanceResponse, BlockEndUserResponse, type ClientOptions, ConflictError, ContentPolicyError, CreateGenerationInput, CreateVideoInput, DEFAULT_POLL_INTERVAL_MS, DEFAULT_POLL_TIMEOUT_MS, DeleteEndUserResponse, EndUserListParams, EndUserListResponse, EndUserRecord, ExpiredGenerationRecord, ExpiredVideoRecord, FailedGenerationRecord, FailedVideoRecord, GenerationCost, GenerationError, GenerationListParams, GenerationListResponse, GenerationRecord, type HttpMethod, ImageModel, ImageRecord, ImageSize, InternalServerError, KnownApiErrorCode, KnownImageModel, KnownStatus, KnownVideoModel, NotFoundError, Page, PagePromise, PaymentRequiredError, PermissionDeniedError, ProcessingGenerationRecord, ProcessingVideoRecord, ProviderError, type QueryParams, QueuedGenerationRecord, QueuedVideoRecord, RateLimitError, type RequestArgs, type RequestOptions, ResponseFormat, type RetryPolicy, SizePreset, Status, SucceededGenerationRecord, SucceededVideoRecord, UnblockEndUserResponse, VERSION, ValidationError, VideoCost, VideoError, VideoModel, VideoRecord, VideoRecordItem, VideoResolution, type WaitOptions, XMode, XMode as default, XModeAPIError, XModeError, XModePollTimeoutError, isTerminal, pollUntilTerminal };
288
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/core/request.ts","../src/core/pagination.ts","../src/resources/balance.ts","../src/resources/end-users.ts","../src/core/poll.ts","../src/resources/generations.ts","../src/resources/videos.ts","../src/client.ts","../src/core/errors.ts","../src/version.ts"],"mappings":"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"}