@invonetwork/web-sdk 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +9 -1
- package/dist/index.cjs +53 -0
- package/dist/index.d.cts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.js +53 -0
- package/dist/server.d.cts +2 -2
- package/dist/server.d.ts +2 -2
- package/dist/{types-v8bDu2_p.d.cts → types-Bi_NMSkN.d.cts} +44 -1
- package/dist/{types-v8bDu2_p.d.ts → types-Bi_NMSkN.d.ts} +44 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to `@invonetwork/web-sdk` are documented here. This project
|
|
|
4
4
|
[Semantic Versioning](https://semver.org/). Releases are managed with
|
|
5
5
|
[changesets](https://github.com/changesets/changesets).
|
|
6
6
|
|
|
7
|
+
## [0.7.0] — 2026-07-01
|
|
8
|
+
|
|
9
|
+
Start of the **discovery layer** for send/transfer UIs.
|
|
10
|
+
|
|
11
|
+
- **`InvoClient.getDestinations({ direction })`** — one player-token call
|
|
12
|
+
(`GET /api/sdk/destinations`) returns every game the player can send/transfer to, with
|
|
13
|
+
all display metadata **inline** (game name, icon, currency name/symbol, min/max transfer
|
|
14
|
+
limits) — no per-game lookup. Includes source game/currency info and `transferMode`
|
|
15
|
+
(`universal`/`linked` + `linkedGameIds`).
|
|
16
|
+
- _(Coming in 0.7.x: `getBalance` single-game player-token read; `getLinkedIdentities`
|
|
17
|
+
server-side.)_
|
|
18
|
+
|
|
7
19
|
## [0.6.0] — 2026-07-01
|
|
8
20
|
|
|
9
21
|
Three additive browser flows the dashboard needed, built to the live backend contracts.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
First-party TypeScript SDK for integrating **INVO** into partner **web** platforms (storefronts, web games, dashboards). It wraps INVO's web money flows behind a typed, versioned API — the web analog of the Unity/Unreal plugins.
|
|
4
4
|
|
|
5
|
-
> **Status:** `v0.
|
|
5
|
+
> **Status:** `v0.7.0`, published on npm. The backend it wraps is **live** on sandbox + production, so you can build and test against sandbox today.
|
|
6
6
|
> Canonical partner reference: **https://docs.invo.network/docs/currency-purchase** and **https://docs.invo.network/docs/game-developer-integration**.
|
|
7
7
|
|
|
8
8
|
## What it does
|
|
@@ -251,6 +251,13 @@ Move already-owned game currency from one player to another, authorized by the *
|
|
|
251
251
|
| Approve (browser) | `approveSend` | `approveTransfer` — also returns the sender's **claim code** |
|
|
252
252
|
| Recipient claim (browser) | `confirmReceiptSend` | `confirmReceiptTransfer` |
|
|
253
253
|
|
|
254
|
+
**Where can I send? (browser, v0.7.0+)** — before a player can move value, populate the "pick a destination" UI with `client.getDestinations({ direction: "transfer" | "send" })`. One player-token call returns every reachable game with display metadata inline — no per-game lookup:
|
|
255
|
+
|
|
256
|
+
```ts
|
|
257
|
+
const { availableGames, sourceCurrencyName } = await client.getDestinations({ direction: "transfer" });
|
|
258
|
+
// each: { gameId, gameName, gameIcon, currencyName, currencySymbol, minimumTransfer, maximumTransfer, … }
|
|
259
|
+
```
|
|
260
|
+
|
|
254
261
|
```ts
|
|
255
262
|
// 1. SERVER — initiate, then branch on how the sender must verify
|
|
256
263
|
const t = await server.initiateTransfer({
|
|
@@ -490,6 +497,7 @@ Every method also accepts an optional final `{ signal }` (`AbortSignal`) for can
|
|
|
490
497
|
| `confirmReceiptSend(txnId)` / `confirmReceiptTransfer(txnId)` | `{ status, holdReason?, raw }` |
|
|
491
498
|
| `linkDevice(linkId)` | `{ status, raw }` |
|
|
492
499
|
| `getPendingCollect()` | `{ pending, raw }` — the player's own pending-to-collect list (player-token) |
|
|
500
|
+
| `getDestinations({ direction? })` | `{ availableGames, sourceGameName, transferMode, … }` — where the player can send/transfer, metadata inline |
|
|
493
501
|
|
|
494
502
|
Every method throws `InvoError` on failure and takes an optional final `{ signal }`. Full inline types ship with the package.
|
|
495
503
|
|
package/dist/index.cjs
CHANGED
|
@@ -355,6 +355,29 @@ function toPendingCollectItem(row) {
|
|
|
355
355
|
raw: row
|
|
356
356
|
};
|
|
357
357
|
}
|
|
358
|
+
function toDestinationGame(row) {
|
|
359
|
+
const s = (k) => row[k] === void 0 || row[k] === null ? void 0 : String(row[k]);
|
|
360
|
+
return {
|
|
361
|
+
gameId: row["game_id"] ?? "",
|
|
362
|
+
gameName: String(row["game_name"] ?? ""),
|
|
363
|
+
tenantType: s("tenant_type"),
|
|
364
|
+
developerName: s("developer_name"),
|
|
365
|
+
publisherName: s("publisher_name"),
|
|
366
|
+
genre: s("genre"),
|
|
367
|
+
platform: s("platform"),
|
|
368
|
+
gameStatus: s("game_status"),
|
|
369
|
+
gameIcon: s("game_icon"),
|
|
370
|
+
gamePoster: s("game_poster"),
|
|
371
|
+
gameUrl: s("game_url"),
|
|
372
|
+
gameDescription: s("game_description"),
|
|
373
|
+
currencyName: String(row["currency_name"] ?? ""),
|
|
374
|
+
currencySymbol: String(row["currency_symbol"] ?? ""),
|
|
375
|
+
currencySymbolUrl: s("currency_symbol_url"),
|
|
376
|
+
minimumTransfer: String(row["minimum_transfer"] ?? ""),
|
|
377
|
+
maximumTransfer: String(row["maximum_transfer"] ?? ""),
|
|
378
|
+
raw: row
|
|
379
|
+
};
|
|
380
|
+
}
|
|
358
381
|
var InvoClient = class {
|
|
359
382
|
constructor(config) {
|
|
360
383
|
if (!config.token) throw new Error("InvoClient requires a player `token`.");
|
|
@@ -463,6 +486,36 @@ var InvoClient = class {
|
|
|
463
486
|
return { pending: rows.map(toPendingCollectItem), raw };
|
|
464
487
|
});
|
|
465
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* List the games/tenants this player can send/transfer to, with display metadata
|
|
491
|
+
* inline (name, icon, currency, min/max limits) — one call, no per-game lookup.
|
|
492
|
+
* Source game is the token's own game. Player-token (browser).
|
|
493
|
+
*/
|
|
494
|
+
async getDestinations(query, opts) {
|
|
495
|
+
const direction = query?.direction ?? "transfer";
|
|
496
|
+
return this.withTokenRetry(async () => {
|
|
497
|
+
const raw = await this.get(
|
|
498
|
+
`/api/sdk/destinations?direction=${encodeURIComponent(direction)}`,
|
|
499
|
+
opts?.signal
|
|
500
|
+
);
|
|
501
|
+
const games = Array.isArray(raw["available_games"]) ? raw["available_games"] : [];
|
|
502
|
+
return {
|
|
503
|
+
status: String(raw["status"] ?? ""),
|
|
504
|
+
sourceGameId: raw["source_game_id"] ?? "",
|
|
505
|
+
sourceGameName: String(raw["source_game_name"] ?? ""),
|
|
506
|
+
sourceGameIcon: raw["source_game_icon"],
|
|
507
|
+
sourceCurrencyName: String(raw["source_currency_name"] ?? ""),
|
|
508
|
+
sourceCurrencyIcon: raw["source_currency_icon"],
|
|
509
|
+
universalTransfers: raw["universal_transfers"] === true,
|
|
510
|
+
transferMode: String(raw["transfer_mode"] ?? ""),
|
|
511
|
+
availableGames: games.map(toDestinationGame),
|
|
512
|
+
totalDestinations: Number(raw["total_destinations"] ?? games.length),
|
|
513
|
+
direction: String(raw["direction"] ?? direction),
|
|
514
|
+
linkedGameIds: Array.isArray(raw["linked_game_ids"]) ? raw["linked_game_ids"] : void 0,
|
|
515
|
+
raw
|
|
516
|
+
};
|
|
517
|
+
});
|
|
518
|
+
}
|
|
466
519
|
/**
|
|
467
520
|
* First-enrollment OTP grant (§4.2). When `enrollPasskey()` throws
|
|
468
521
|
* `ENROLLMENT_REQUIRES_AUTHORIZATION` (`err.isEnrollmentAuthorizationRequired`), call
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ClientConfig, a as CallOptions, A as ApproveResult, b as ConfirmReceiptResult, L as LinkDeviceResult, P as PendingCollectResult, E as EnrollmentBeginResult,
|
|
2
|
-
export { I as InvoError,
|
|
1
|
+
import { C as ClientConfig, a as CallOptions, A as ApproveResult, b as ConfirmReceiptResult, L as LinkDeviceResult, P as PendingCollectResult, D as DestinationsQuery, c as DestinationsResult, E as EnrollmentBeginResult, d as EnrollmentVerifyResult } from './types-Bi_NMSkN.cjs';
|
|
2
|
+
export { e as DestinationGame, I as InvoError, f as InvoErrorInfo, g as InvoHooks, h as InvoRequestInfo, i as InvoResponseInfo, j as PendingCollectItem, R as Rail, V as VerificationMethod } from './types-Bi_NMSkN.cjs';
|
|
3
3
|
|
|
4
4
|
declare class InvoClient {
|
|
5
5
|
private readonly http;
|
|
@@ -39,6 +39,12 @@ declare class InvoClient {
|
|
|
39
39
|
* code or phone (those are only on the server-side `getInboundPending`).
|
|
40
40
|
*/
|
|
41
41
|
getPendingCollect(opts?: CallOptions): Promise<PendingCollectResult>;
|
|
42
|
+
/**
|
|
43
|
+
* List the games/tenants this player can send/transfer to, with display metadata
|
|
44
|
+
* inline (name, icon, currency, min/max limits) — one call, no per-game lookup.
|
|
45
|
+
* Source game is the token's own game. Player-token (browser).
|
|
46
|
+
*/
|
|
47
|
+
getDestinations(query?: DestinationsQuery, opts?: CallOptions): Promise<DestinationsResult>;
|
|
42
48
|
/**
|
|
43
49
|
* First-enrollment OTP grant (§4.2). When `enrollPasskey()` throws
|
|
44
50
|
* `ENROLLMENT_REQUIRES_AUTHORIZATION` (`err.isEnrollmentAuthorizationRequired`), call
|
|
@@ -68,4 +74,4 @@ declare class InvoClient {
|
|
|
68
74
|
private confirmReceipt;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
|
-
export { ApproveResult, CallOptions, ClientConfig, ConfirmReceiptResult, EnrollmentBeginResult, EnrollmentVerifyResult, InvoClient, LinkDeviceResult, PendingCollectResult };
|
|
77
|
+
export { ApproveResult, CallOptions, ClientConfig, ConfirmReceiptResult, DestinationsQuery, DestinationsResult, EnrollmentBeginResult, EnrollmentVerifyResult, InvoClient, LinkDeviceResult, PendingCollectResult };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ClientConfig, a as CallOptions, A as ApproveResult, b as ConfirmReceiptResult, L as LinkDeviceResult, P as PendingCollectResult, E as EnrollmentBeginResult,
|
|
2
|
-
export { I as InvoError,
|
|
1
|
+
import { C as ClientConfig, a as CallOptions, A as ApproveResult, b as ConfirmReceiptResult, L as LinkDeviceResult, P as PendingCollectResult, D as DestinationsQuery, c as DestinationsResult, E as EnrollmentBeginResult, d as EnrollmentVerifyResult } from './types-Bi_NMSkN.js';
|
|
2
|
+
export { e as DestinationGame, I as InvoError, f as InvoErrorInfo, g as InvoHooks, h as InvoRequestInfo, i as InvoResponseInfo, j as PendingCollectItem, R as Rail, V as VerificationMethod } from './types-Bi_NMSkN.js';
|
|
3
3
|
|
|
4
4
|
declare class InvoClient {
|
|
5
5
|
private readonly http;
|
|
@@ -39,6 +39,12 @@ declare class InvoClient {
|
|
|
39
39
|
* code or phone (those are only on the server-side `getInboundPending`).
|
|
40
40
|
*/
|
|
41
41
|
getPendingCollect(opts?: CallOptions): Promise<PendingCollectResult>;
|
|
42
|
+
/**
|
|
43
|
+
* List the games/tenants this player can send/transfer to, with display metadata
|
|
44
|
+
* inline (name, icon, currency, min/max limits) — one call, no per-game lookup.
|
|
45
|
+
* Source game is the token's own game. Player-token (browser).
|
|
46
|
+
*/
|
|
47
|
+
getDestinations(query?: DestinationsQuery, opts?: CallOptions): Promise<DestinationsResult>;
|
|
42
48
|
/**
|
|
43
49
|
* First-enrollment OTP grant (§4.2). When `enrollPasskey()` throws
|
|
44
50
|
* `ENROLLMENT_REQUIRES_AUTHORIZATION` (`err.isEnrollmentAuthorizationRequired`), call
|
|
@@ -68,4 +74,4 @@ declare class InvoClient {
|
|
|
68
74
|
private confirmReceipt;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
|
-
export { ApproveResult, CallOptions, ClientConfig, ConfirmReceiptResult, EnrollmentBeginResult, EnrollmentVerifyResult, InvoClient, LinkDeviceResult, PendingCollectResult };
|
|
77
|
+
export { ApproveResult, CallOptions, ClientConfig, ConfirmReceiptResult, DestinationsQuery, DestinationsResult, EnrollmentBeginResult, EnrollmentVerifyResult, InvoClient, LinkDeviceResult, PendingCollectResult };
|
package/dist/index.js
CHANGED
|
@@ -98,6 +98,29 @@ function toPendingCollectItem(row) {
|
|
|
98
98
|
raw: row
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
+
function toDestinationGame(row) {
|
|
102
|
+
const s = (k) => row[k] === void 0 || row[k] === null ? void 0 : String(row[k]);
|
|
103
|
+
return {
|
|
104
|
+
gameId: row["game_id"] ?? "",
|
|
105
|
+
gameName: String(row["game_name"] ?? ""),
|
|
106
|
+
tenantType: s("tenant_type"),
|
|
107
|
+
developerName: s("developer_name"),
|
|
108
|
+
publisherName: s("publisher_name"),
|
|
109
|
+
genre: s("genre"),
|
|
110
|
+
platform: s("platform"),
|
|
111
|
+
gameStatus: s("game_status"),
|
|
112
|
+
gameIcon: s("game_icon"),
|
|
113
|
+
gamePoster: s("game_poster"),
|
|
114
|
+
gameUrl: s("game_url"),
|
|
115
|
+
gameDescription: s("game_description"),
|
|
116
|
+
currencyName: String(row["currency_name"] ?? ""),
|
|
117
|
+
currencySymbol: String(row["currency_symbol"] ?? ""),
|
|
118
|
+
currencySymbolUrl: s("currency_symbol_url"),
|
|
119
|
+
minimumTransfer: String(row["minimum_transfer"] ?? ""),
|
|
120
|
+
maximumTransfer: String(row["maximum_transfer"] ?? ""),
|
|
121
|
+
raw: row
|
|
122
|
+
};
|
|
123
|
+
}
|
|
101
124
|
var InvoClient = class {
|
|
102
125
|
constructor(config) {
|
|
103
126
|
if (!config.token) throw new Error("InvoClient requires a player `token`.");
|
|
@@ -206,6 +229,36 @@ var InvoClient = class {
|
|
|
206
229
|
return { pending: rows.map(toPendingCollectItem), raw };
|
|
207
230
|
});
|
|
208
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* List the games/tenants this player can send/transfer to, with display metadata
|
|
234
|
+
* inline (name, icon, currency, min/max limits) — one call, no per-game lookup.
|
|
235
|
+
* Source game is the token's own game. Player-token (browser).
|
|
236
|
+
*/
|
|
237
|
+
async getDestinations(query, opts) {
|
|
238
|
+
const direction = query?.direction ?? "transfer";
|
|
239
|
+
return this.withTokenRetry(async () => {
|
|
240
|
+
const raw = await this.get(
|
|
241
|
+
`/api/sdk/destinations?direction=${encodeURIComponent(direction)}`,
|
|
242
|
+
opts?.signal
|
|
243
|
+
);
|
|
244
|
+
const games = Array.isArray(raw["available_games"]) ? raw["available_games"] : [];
|
|
245
|
+
return {
|
|
246
|
+
status: String(raw["status"] ?? ""),
|
|
247
|
+
sourceGameId: raw["source_game_id"] ?? "",
|
|
248
|
+
sourceGameName: String(raw["source_game_name"] ?? ""),
|
|
249
|
+
sourceGameIcon: raw["source_game_icon"],
|
|
250
|
+
sourceCurrencyName: String(raw["source_currency_name"] ?? ""),
|
|
251
|
+
sourceCurrencyIcon: raw["source_currency_icon"],
|
|
252
|
+
universalTransfers: raw["universal_transfers"] === true,
|
|
253
|
+
transferMode: String(raw["transfer_mode"] ?? ""),
|
|
254
|
+
availableGames: games.map(toDestinationGame),
|
|
255
|
+
totalDestinations: Number(raw["total_destinations"] ?? games.length),
|
|
256
|
+
direction: String(raw["direction"] ?? direction),
|
|
257
|
+
linkedGameIds: Array.isArray(raw["linked_game_ids"]) ? raw["linked_game_ids"] : void 0,
|
|
258
|
+
raw
|
|
259
|
+
};
|
|
260
|
+
});
|
|
261
|
+
}
|
|
209
262
|
/**
|
|
210
263
|
* First-enrollment OTP grant (§4.2). When `enrollPasskey()` throws
|
|
211
264
|
* `ENROLLMENT_REQUIRES_AUTHORIZATION` (`err.isEnrollmentAuthorizationRequired`), call
|
package/dist/server.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I as InvoError, S as ServerConfig, a as CallOptions,
|
|
2
|
-
export {
|
|
1
|
+
import { I as InvoError, S as ServerConfig, a as CallOptions, k as PlayerToken, l as InitiateSendInput, m as InitiateResult, n as InitiateTransferInput, o as CreateCheckoutInput, p as CreateCheckoutResult, q as PurchaseInput, r as PurchaseResult, s as ConfirmPaymentResult, O as OrderDetailsResult, t as PurchaseItemInput, u as PurchaseItemResult, v as ItemHistoryQuery, w as ItemHistoryResult, x as ItemOrderQuery, y as PlayerBalanceQuery, z as PlayerBalanceResult, B as InboundPendingQuery, F as InboundPendingResult } from './types-Bi_NMSkN.cjs';
|
|
2
|
+
export { G as CurrencyBalance, H as InboundPendingItem, f as InvoErrorInfo, g as InvoHooks, h as InvoRequestInfo, i as InvoResponseInfo, R as Rail, V as VerificationMethod } from './types-Bi_NMSkN.cjs';
|
|
3
3
|
|
|
4
4
|
interface VerifyWebhookOptions {
|
|
5
5
|
/** Max age of the signed timestamp, in seconds. Default 300 (5 min). */
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I as InvoError, S as ServerConfig, a as CallOptions,
|
|
2
|
-
export {
|
|
1
|
+
import { I as InvoError, S as ServerConfig, a as CallOptions, k as PlayerToken, l as InitiateSendInput, m as InitiateResult, n as InitiateTransferInput, o as CreateCheckoutInput, p as CreateCheckoutResult, q as PurchaseInput, r as PurchaseResult, s as ConfirmPaymentResult, O as OrderDetailsResult, t as PurchaseItemInput, u as PurchaseItemResult, v as ItemHistoryQuery, w as ItemHistoryResult, x as ItemOrderQuery, y as PlayerBalanceQuery, z as PlayerBalanceResult, B as InboundPendingQuery, F as InboundPendingResult } from './types-Bi_NMSkN.js';
|
|
2
|
+
export { G as CurrencyBalance, H as InboundPendingItem, f as InvoErrorInfo, g as InvoHooks, h as InvoRequestInfo, i as InvoResponseInfo, R as Rail, V as VerificationMethod } from './types-Bi_NMSkN.js';
|
|
3
3
|
|
|
4
4
|
interface VerifyWebhookOptions {
|
|
5
5
|
/** Max age of the signed timestamp, in seconds. Default 300 (5 min). */
|
|
@@ -357,6 +357,49 @@ interface PendingCollectResult {
|
|
|
357
357
|
pending: PendingCollectItem[];
|
|
358
358
|
raw: Record<string, unknown>;
|
|
359
359
|
}
|
|
360
|
+
interface DestinationsQuery {
|
|
361
|
+
/** "transfer" | "send". Defaults "transfer" (the set is identical for both today). */
|
|
362
|
+
direction?: "transfer" | "send";
|
|
363
|
+
}
|
|
364
|
+
/** A game/tenant this player can send/transfer to, with display metadata inline. */
|
|
365
|
+
interface DestinationGame {
|
|
366
|
+
gameId: string | number;
|
|
367
|
+
gameName: string;
|
|
368
|
+
tenantType?: string;
|
|
369
|
+
developerName?: string;
|
|
370
|
+
publisherName?: string;
|
|
371
|
+
genre?: string;
|
|
372
|
+
platform?: string;
|
|
373
|
+
gameStatus?: string;
|
|
374
|
+
gameIcon?: string;
|
|
375
|
+
gamePoster?: string;
|
|
376
|
+
gameUrl?: string;
|
|
377
|
+
gameDescription?: string;
|
|
378
|
+
currencyName: string;
|
|
379
|
+
currencySymbol: string;
|
|
380
|
+
currencySymbolUrl?: string;
|
|
381
|
+
/** Limits are decimal strings. */
|
|
382
|
+
minimumTransfer: string;
|
|
383
|
+
maximumTransfer: string;
|
|
384
|
+
raw: Record<string, unknown>;
|
|
385
|
+
}
|
|
386
|
+
interface DestinationsResult {
|
|
387
|
+
status: string;
|
|
388
|
+
sourceGameId: string | number;
|
|
389
|
+
sourceGameName: string;
|
|
390
|
+
sourceGameIcon?: string;
|
|
391
|
+
sourceCurrencyName: string;
|
|
392
|
+
sourceCurrencyIcon?: string;
|
|
393
|
+
universalTransfers: boolean;
|
|
394
|
+
/** "universal" (every live tenant) | "linked" (intersect linkedGameIds). */
|
|
395
|
+
transferMode: string;
|
|
396
|
+
availableGames: DestinationGame[];
|
|
397
|
+
totalDestinations: number;
|
|
398
|
+
direction: string;
|
|
399
|
+
/** Present in "linked" mode. */
|
|
400
|
+
linkedGameIds?: (string | number)[];
|
|
401
|
+
raw: Record<string, unknown>;
|
|
402
|
+
}
|
|
360
403
|
interface EnrollmentBeginResult {
|
|
361
404
|
status: string;
|
|
362
405
|
/** Channels the OTP was sent to, e.g. ["sms","email"]. */
|
|
@@ -373,4 +416,4 @@ interface LinkDeviceResult {
|
|
|
373
416
|
raw: Record<string, unknown>;
|
|
374
417
|
}
|
|
375
418
|
|
|
376
|
-
export { type ApproveResult as A, type
|
|
419
|
+
export { type ApproveResult as A, type InboundPendingQuery as B, type ClientConfig as C, type DestinationsQuery as D, type EnrollmentBeginResult as E, type InboundPendingResult as F, type CurrencyBalance as G, type InboundPendingItem as H, InvoError as I, type LinkDeviceResult as L, type OrderDetailsResult as O, type PendingCollectResult as P, type Rail as R, type ServerConfig as S, type VerificationMethod as V, type CallOptions as a, type ConfirmReceiptResult as b, type DestinationsResult as c, type EnrollmentVerifyResult as d, type DestinationGame as e, type InvoErrorInfo as f, type InvoHooks as g, type InvoRequestInfo as h, type InvoResponseInfo as i, type PendingCollectItem as j, type PlayerToken as k, type InitiateSendInput as l, type InitiateResult as m, type InitiateTransferInput as n, type CreateCheckoutInput as o, type CreateCheckoutResult as p, type PurchaseInput as q, type PurchaseResult as r, type ConfirmPaymentResult as s, type PurchaseItemInput as t, type PurchaseItemResult as u, type ItemHistoryQuery as v, type ItemHistoryResult as w, type ItemOrderQuery as x, type PlayerBalanceQuery as y, type PlayerBalanceResult as z };
|
|
@@ -357,6 +357,49 @@ interface PendingCollectResult {
|
|
|
357
357
|
pending: PendingCollectItem[];
|
|
358
358
|
raw: Record<string, unknown>;
|
|
359
359
|
}
|
|
360
|
+
interface DestinationsQuery {
|
|
361
|
+
/** "transfer" | "send". Defaults "transfer" (the set is identical for both today). */
|
|
362
|
+
direction?: "transfer" | "send";
|
|
363
|
+
}
|
|
364
|
+
/** A game/tenant this player can send/transfer to, with display metadata inline. */
|
|
365
|
+
interface DestinationGame {
|
|
366
|
+
gameId: string | number;
|
|
367
|
+
gameName: string;
|
|
368
|
+
tenantType?: string;
|
|
369
|
+
developerName?: string;
|
|
370
|
+
publisherName?: string;
|
|
371
|
+
genre?: string;
|
|
372
|
+
platform?: string;
|
|
373
|
+
gameStatus?: string;
|
|
374
|
+
gameIcon?: string;
|
|
375
|
+
gamePoster?: string;
|
|
376
|
+
gameUrl?: string;
|
|
377
|
+
gameDescription?: string;
|
|
378
|
+
currencyName: string;
|
|
379
|
+
currencySymbol: string;
|
|
380
|
+
currencySymbolUrl?: string;
|
|
381
|
+
/** Limits are decimal strings. */
|
|
382
|
+
minimumTransfer: string;
|
|
383
|
+
maximumTransfer: string;
|
|
384
|
+
raw: Record<string, unknown>;
|
|
385
|
+
}
|
|
386
|
+
interface DestinationsResult {
|
|
387
|
+
status: string;
|
|
388
|
+
sourceGameId: string | number;
|
|
389
|
+
sourceGameName: string;
|
|
390
|
+
sourceGameIcon?: string;
|
|
391
|
+
sourceCurrencyName: string;
|
|
392
|
+
sourceCurrencyIcon?: string;
|
|
393
|
+
universalTransfers: boolean;
|
|
394
|
+
/** "universal" (every live tenant) | "linked" (intersect linkedGameIds). */
|
|
395
|
+
transferMode: string;
|
|
396
|
+
availableGames: DestinationGame[];
|
|
397
|
+
totalDestinations: number;
|
|
398
|
+
direction: string;
|
|
399
|
+
/** Present in "linked" mode. */
|
|
400
|
+
linkedGameIds?: (string | number)[];
|
|
401
|
+
raw: Record<string, unknown>;
|
|
402
|
+
}
|
|
360
403
|
interface EnrollmentBeginResult {
|
|
361
404
|
status: string;
|
|
362
405
|
/** Channels the OTP was sent to, e.g. ["sms","email"]. */
|
|
@@ -373,4 +416,4 @@ interface LinkDeviceResult {
|
|
|
373
416
|
raw: Record<string, unknown>;
|
|
374
417
|
}
|
|
375
418
|
|
|
376
|
-
export { type ApproveResult as A, type
|
|
419
|
+
export { type ApproveResult as A, type InboundPendingQuery as B, type ClientConfig as C, type DestinationsQuery as D, type EnrollmentBeginResult as E, type InboundPendingResult as F, type CurrencyBalance as G, type InboundPendingItem as H, InvoError as I, type LinkDeviceResult as L, type OrderDetailsResult as O, type PendingCollectResult as P, type Rail as R, type ServerConfig as S, type VerificationMethod as V, type CallOptions as a, type ConfirmReceiptResult as b, type DestinationsResult as c, type EnrollmentVerifyResult as d, type DestinationGame as e, type InvoErrorInfo as f, type InvoHooks as g, type InvoRequestInfo as h, type InvoResponseInfo as i, type PendingCollectItem as j, type PlayerToken as k, type InitiateSendInput as l, type InitiateResult as m, type InitiateTransferInput as n, type CreateCheckoutInput as o, type CreateCheckoutResult as p, type PurchaseInput as q, type PurchaseResult as r, type ConfirmPaymentResult as s, type PurchaseItemInput as t, type PurchaseItemResult as u, type ItemHistoryQuery as v, type ItemHistoryResult as w, type ItemOrderQuery as x, type PlayerBalanceQuery as y, type PlayerBalanceResult as z };
|
package/package.json
CHANGED