@playmos/sdk 0.3.7 → 0.3.8

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/README.md CHANGED
@@ -11,7 +11,7 @@ Stablecoin payments for games on Base. One SDK for in-app purchases (1%), skill-
11
11
  npm i @playmos/sdk
12
12
  ```
13
13
 
14
- Requires **Node 18 / 20 / 22 LTS** for the monorepo toolchains (Hardhat/service). See repo `docs/TOOLCHAIN.md` (issue #5).
14
+ Requires **Node 18 / 20 / 22 LTS** for local development and CI toolchains. Full toolchain notes live in the private monorepo; third parties only need a current Node LTS and `npm i @playmos/sdk`.
15
15
 
16
16
  ## Browser vs server entry
17
17
 
@@ -134,7 +134,7 @@ Fields match the table above (`from` optional → defaults to the signer; `feeBp
134
134
 
135
135
  ### In-game economies — the Playmos Town golden path
136
136
 
137
- **In-game economies** = commerce between **players, NPCs, and agents** (AI or scripted). The money primitive is **`transfer()`** (entity-agnostic); NPC/agent wallets use **`agents.*`** (API names unchanged). This is the loop the [Playmos Town example](https://github.com/playmos-labs/playmos-sdk/blob/main/docs/examples/playmos-town-sdk.mjs) runs end to end: give each NPC a wallet, fund it, then move value with a per-call fee — P2P (5%), a monster bounty (0%), a shop sale (100%). Proven on **Base Sepolia** (transfer layer) — not a claim that a full MMO product is shipped.
137
+ **In-game economies** = commerce between **players, NPCs, and agents** (AI or scripted). The money primitive is **`transfer()`** (entity-agnostic); NPC/agent wallets use **`agents.*`** (API names unchanged). This is the loop the **Playmos Town** pattern runs end to end (described in public docs — Path C / in-game economies): give each NPC a wallet, fund it, then move value with a per-call fee — P2P (5%), a monster bounty (0%), a shop sale (100%). Proven on **Base Sepolia** (transfer layer) — not a claim that a full MMO product is shipped.
138
138
 
139
139
  **Agents need a SECRET test key — `sk_test_`, not `pk_test_`.** Assigning NPC wallets and transferring *from* an NPC are privileged, server-side actions, so they require an `sk_test_` key kept on **your backend** — not the public `pk_test_playmos_sandbox`. `pk_test_` runs the no-wallet `pay()` / `enterRound()` demos above; `sk_test_` unlocks `agents.*` and NPC-funded `transfer`.
140
140
 
@@ -185,7 +185,7 @@ t.status; // "settled" (or "failed") — already terminal, no follow-up call
185
185
 
186
186
  The sandbox throttles (5 req/min per key), so back-to-back legs can `429`. **Retries are automatic** — the SDK backs off and retries a `429` up to twice by default, and every write carries an idempotency key so a retry never double-broadcasts (tune with `new Playmos({ apiKey, retry: { maxRetries } })`, or `retry: false` to opt out).
187
187
 
188
- The full 5-NPC walkthrough — create → fund → P2P / shop / bounty, each confirmed on-chain — is [`docs/examples/playmos-town-sdk.mjs`](https://github.com/playmos-labs/playmos-sdk/blob/main/docs/examples/playmos-town-sdk.mjs):
188
+ The full 5-NPC walkthrough — create → fund → P2P / shop / bounty, each confirmed on-chain — is summarized in the public developer docs (in-game economies / agents). Example script names below are for monorepo operators only:
189
189
 
190
190
  ```bash
191
191
  PLAYMOS_SK_TEST=sk_test_… PLAYMOS_FEE_SINK=0x… node docs/examples/playmos-town-sdk.mjs
@@ -36,11 +36,25 @@ var WalletConnectionError = class extends PlaymosError {
36
36
  super("wallet_connection", message, detail);
37
37
  }
38
38
  };
39
+ var WalletTimeoutError = class extends PlaymosError {
40
+ constructor(message = "The wallet did not respond in time. Ask the player to approve the prompt, or retry.", detail) {
41
+ super("wallet_timeout", message, detail);
42
+ }
43
+ };
39
44
  var PaymentFailedError = class extends PlaymosError {
40
45
  constructor(message = "The on-chain payment did not complete.", detail) {
41
46
  super("payment_failed", message, detail);
42
47
  }
43
48
  };
49
+ var AlreadyEnteredError = class extends PlaymosError {
50
+ constructor(detail) {
51
+ super(
52
+ "already_entered",
53
+ "This identity already entered this round on-chain. For pay-per-play, pass a unique identity per attempt (not just the wallet address).",
54
+ detail
55
+ );
56
+ }
57
+ };
44
58
  var AuthError = class extends PlaymosError {
45
59
  constructor(message = "Invalid or missing API key.", detail) {
46
60
  super("auth", message, detail);
@@ -66,4 +80,4 @@ var NothingToWithdrawError = class extends PlaymosError {
66
80
  }
67
81
  };
68
82
 
69
- export { ApiError, AuthError, ConfigError, InsufficientGasError, InvalidAmountError, MissingFieldError, NothingToWithdrawError, PaymentFailedError, PlaymosError, WalletConnectionError };
83
+ export { AlreadyEnteredError, ApiError, AuthError, ConfigError, InsufficientGasError, InvalidAmountError, MissingFieldError, NothingToWithdrawError, PaymentFailedError, PlaymosError, WalletConnectionError, WalletTimeoutError };
@@ -28,6 +28,7 @@ interface WalletConfig {
28
28
  /**
29
29
  * Pre-built EIP-1193 provider. If omitted, `injected` uses globalThis.ethereum
30
30
  * and `base-account` expects a provider supplied by the Base Account SDK host.
31
+ * A raw provider is still **timeout-wrapped** on resolve (#462) — not a no-op passthrough.
31
32
  */
32
33
  provider?: Eip1193Provider;
33
34
  }
@@ -73,6 +74,13 @@ interface PlaymosConfig {
73
74
  * retry: { maxRetries } → tune attempts / backoff (0 also opts out)
74
75
  */
75
76
  retry?: boolean | RetryOptions;
77
+ /**
78
+ * Timeout for **connect / `eth_requestAccounts` only** (#462). Default 20_000.
79
+ * Does **not** bound the payment confirmation sheet (`wallet_sendCalls`) — a short
80
+ * guess there can take the player's USDC without recording the entry (PR #463 residual).
81
+ * Machine RPCs (status polls, balance, chainId) use a separate internal 20s bound.
82
+ */
83
+ connectTimeoutMs?: number;
76
84
  }
77
85
  /** Tuning for the automatic 429 retry (all optional; sane defaults). */
78
86
  interface RetryOptions {
@@ -152,9 +160,12 @@ interface EnterRoundInput {
152
160
  */
153
161
  roundKey?: string;
154
162
  /**
155
- * Advanced: the EXACT on-chain identity for this paid attempt (e.g.
156
- * "0xWallet#nonce"). Overrides the server-generated identity so the on-chain
157
- * entry and your server's `hasEntered` check line up. One entry per identity.
163
+ * On-chain entrant id for this paid attempt (e.g. `"0xWallet#nonce"`).
164
+ * **Required on the client-signed (player wallet) path** so hub `hasEntered`
165
+ * matches (#374 / #466). **One entry per identity** — use a **unique value per
166
+ * paid attempt** (pay-per-play); reusing the same identity hits AlreadyEntered.
167
+ * Omit only on no-wallet sandbox server-settle smoke (service may derive).
168
+ * `entryProvider().payEntry` always supplies the kit identity.
158
169
  */
159
170
  identity?: string;
160
171
  }
@@ -532,11 +543,34 @@ interface ActiveForSeriesResult {
532
543
  via: "chain" | "cache";
533
544
  active: ActiveSeriesRound | null;
534
545
  }
535
- /** Result of `playmos.rounds.cancel` — may be async 202 cancelling (#346). */
546
+ /**
547
+ * Input to `playmos.rounds.cancel` (#346 / #376).
548
+ *
549
+ * Default is **submit-only**: returns `status: "cancelling"` after broadcast without
550
+ * inventing success. Pass `confirm: true` to poll until `cancelled` or timeout
551
+ * (still returns honest `cancelling` on timeout — never pretends terminal).
552
+ */
553
+ interface RoundCancelInput {
554
+ roundId: string;
555
+ gameId?: string;
556
+ /**
557
+ * When true, poll re-POST cancel + GET until `cancelled` or `timeoutMs`.
558
+ * Default **false** so hub fire-and-reconcile stays fast (hub #55).
559
+ */
560
+ confirm?: boolean;
561
+ /** Max poll ms when `confirm: true` (default 20_000, under hub 25s). */
562
+ timeoutMs?: number;
563
+ /** Poll interval ms when confirming (default 1000). */
564
+ intervalMs?: number;
565
+ }
566
+ /** Result of `playmos.rounds.cancel` — may be async 202 cancelling (#346 / #376). */
536
567
  interface CancelRoundResult {
537
568
  roundId: string;
538
569
  txHash: `0x${string}` | null;
539
- /** `"cancelling"` = broadcast accepted; `"cancelled"` = chain Cancelled(4) finalized. */
570
+ /**
571
+ * `"cancelling"` = broadcast accepted, **not** terminal success (series latch may
572
+ * still be held). `"cancelled"` = chain Cancelled(4) finalized — only then forget latch.
573
+ */
540
574
  status: "cancelling" | "cancelled";
541
575
  round?: RoundState;
542
576
  }
@@ -561,6 +595,12 @@ interface WithdrawResult {
561
595
  amountMicro: string;
562
596
  txHash?: `0x${string}`;
563
597
  status: "confirmed" | "failed" | "pending";
598
+ /**
599
+ * EIP-5792 calls id when the claim was submitted but not yet confirmed (#462).
600
+ * Present on `status: "pending"` so the studio can reconcile later — never treat
601
+ * a slow mining claim as a hard failure.
602
+ */
603
+ callsId?: string;
564
604
  }
565
605
  interface RoundSettleInput {
566
606
  roundId: string;
@@ -573,6 +613,14 @@ interface RoundSettleInput {
573
613
  amount: string;
574
614
  }[];
575
615
  };
616
+ /**
617
+ * Max ms to poll after async `status: "settling"` before returning honest non-terminal.
618
+ * Default **20_000** — below hub SdkEscrow op timeout (25s) so the answer can reach
619
+ * the hub before the outer race kills the call (#422).
620
+ */
621
+ timeoutMs?: number;
622
+ /** Poll interval ms while reconciling (default 1000, same as `transfers.wait`). */
623
+ intervalMs?: number;
576
624
  }
577
625
  /**
578
626
  * Result of `playmos.rounds.settle`.
@@ -603,7 +651,7 @@ interface SettleRoundResult {
603
651
  * EARLIEST possible layer: input errors fire client-side before any network or
604
652
  * chain call, so a studio never pays gas to discover a typo.
605
653
  */
606
- type PlaymosErrorCode = "invalid_amount" | "missing_field" | "insufficient_gas" | "wallet_connection" | "payment_failed" | "auth" | "api_error" | "config" | "nothing_to_withdraw";
654
+ type PlaymosErrorCode = "invalid_amount" | "missing_field" | "insufficient_gas" | "wallet_connection" | "wallet_timeout" | "payment_failed" | "already_entered" | "auth" | "api_error" | "config" | "nothing_to_withdraw";
607
655
  declare class PlaymosError extends Error {
608
656
  readonly code: PlaymosErrorCode;
609
657
  /** Optional machine context (e.g. the offending field, the http status). */
@@ -626,10 +674,27 @@ declare class InsufficientGasError extends PlaymosError {
626
674
  declare class WalletConnectionError extends PlaymosError {
627
675
  constructor(message?: string, detail?: Record<string, unknown>);
628
676
  }
677
+ /**
678
+ * A wallet `provider.request` call exceeded the per-request deadline (#462).
679
+ * Distinct from {@link WalletConnectionError}: provider is present but the sheet
680
+ * hung / popup was blocked / request never returned. Must NOT be treated as
681
+ * "no wallet" (that would silently route to server-settle).
682
+ */
683
+ declare class WalletTimeoutError extends PlaymosError {
684
+ constructor(message?: string, detail?: Record<string, unknown>);
685
+ }
629
686
  /** The on-chain settlement reverted, was cancelled, or timed out. */
630
687
  declare class PaymentFailedError extends PlaymosError {
631
688
  constructor(message?: string, detail?: Record<string, unknown>);
632
689
  }
690
+ /**
691
+ * PrizePool already has an entry for this `(roundId, identity)` (#462 pay-per-play).
692
+ * Studios using the same identity (e.g. bare wallet) for every attempt hit this on
693
+ * the second paid play — pass a per-attempt identity for pay-per-play.
694
+ */
695
+ declare class AlreadyEnteredError extends PlaymosError {
696
+ constructor(detail?: Record<string, unknown>);
697
+ }
633
698
  /** Bad, missing, or wrong-environment API key (e.g. a pk_test_ key on a live route). */
634
699
  declare class AuthError extends PlaymosError {
635
700
  constructor(message?: string, detail?: Record<string, unknown>);
@@ -650,4 +715,4 @@ declare class NothingToWithdrawError extends PlaymosError {
650
715
  constructor(detail?: Record<string, unknown>);
651
716
  }
652
717
 
653
- export { WalletConnectionError as $, type ActiveSeriesRound as A, InvalidAmountError as B, type CancelRoundResult as C, type ListingStatus as D, type EscrowHoldInput as E, type MarketplaceItem as F, type GasConfig as G, type MarketplaceSale as H, InsufficientGasError as I, MissingFieldError as J, NothingToWithdrawError as K, type Listing as L, type MarketplaceListInput as M, type Network as N, PaymentFailedError as O, type PlaymosConfig as P, type PaymentStatus as Q, type RoundOpenInput as R, type SettleRoundResult as S, type TransferResult as T, PlaymosError as U, type VerifyResult as V, type WebhookEvent as W, type PlaymosErrorCode as X, type RetryOptions as Y, type RoundStatus as Z, type WalletConfig as _, type RoundState as a, type WalletConnector as a0, type WebhookEventType as a1, type RoundSettleInput as b, type PrizeBalance as c, type WithdrawResult as d, type AgentWallet as e, type AgentFundResult as f, type EscrowHoldResult as g, type EscrowResolveResult as h, type MarketplaceSaleResult as i, type MarketplaceGetResult as j, type PayInput as k, type Payment as l, type EnterRoundInput as m, type TransferReconcile as n, type WaitOptions as o, type TransferInput as p, type TransferConfirmOptions as q, type PayoutRule as r, type ActiveForSeriesResult as s, type AgentEconomyConfig as t, ApiError as u, AuthError as v, ConfigError as w, type ContractConfig as x, type Eip1193Provider as y, type GasMode as z };
718
+ export { type RoundStatus as $, type ActiveSeriesRound as A, type Eip1193Provider as B, type CancelRoundResult as C, type GasMode as D, type EscrowHoldInput as E, InvalidAmountError as F, type GasConfig as G, type ListingStatus as H, InsufficientGasError as I, type MarketplaceItem as J, type MarketplaceSale as K, type Listing as L, type MarketplaceListInput as M, type Network as N, MissingFieldError as O, type PlaymosConfig as P, NothingToWithdrawError as Q, type RoundOpenInput as R, type SettleRoundResult as S, type TransferResult as T, PaymentFailedError as U, type VerifyResult as V, type WebhookEvent as W, type PaymentStatus as X, PlaymosError as Y, type PlaymosErrorCode as Z, type RetryOptions as _, type RoundState as a, type WalletConfig as a0, WalletConnectionError as a1, type WalletConnector as a2, WalletTimeoutError as a3, type WebhookEventType as a4, type RoundSettleInput as b, type RoundCancelInput as c, type PrizeBalance as d, type WithdrawResult as e, type AgentWallet as f, type AgentFundResult as g, type EscrowHoldResult as h, type EscrowResolveResult as i, type MarketplaceSaleResult as j, type MarketplaceGetResult as k, type PayInput as l, type Payment as m, type EnterRoundInput as n, type TransferReconcile as o, type WaitOptions as p, type TransferInput as q, type TransferConfirmOptions as r, type PayoutRule as s, type ActiveForSeriesResult as t, type AgentEconomyConfig as u, AlreadyEnteredError as v, ApiError as w, AuthError as x, ConfigError as y, type ContractConfig as z };
@@ -28,6 +28,7 @@ interface WalletConfig {
28
28
  /**
29
29
  * Pre-built EIP-1193 provider. If omitted, `injected` uses globalThis.ethereum
30
30
  * and `base-account` expects a provider supplied by the Base Account SDK host.
31
+ * A raw provider is still **timeout-wrapped** on resolve (#462) — not a no-op passthrough.
31
32
  */
32
33
  provider?: Eip1193Provider;
33
34
  }
@@ -73,6 +74,13 @@ interface PlaymosConfig {
73
74
  * retry: { maxRetries } → tune attempts / backoff (0 also opts out)
74
75
  */
75
76
  retry?: boolean | RetryOptions;
77
+ /**
78
+ * Timeout for **connect / `eth_requestAccounts` only** (#462). Default 20_000.
79
+ * Does **not** bound the payment confirmation sheet (`wallet_sendCalls`) — a short
80
+ * guess there can take the player's USDC without recording the entry (PR #463 residual).
81
+ * Machine RPCs (status polls, balance, chainId) use a separate internal 20s bound.
82
+ */
83
+ connectTimeoutMs?: number;
76
84
  }
77
85
  /** Tuning for the automatic 429 retry (all optional; sane defaults). */
78
86
  interface RetryOptions {
@@ -152,9 +160,12 @@ interface EnterRoundInput {
152
160
  */
153
161
  roundKey?: string;
154
162
  /**
155
- * Advanced: the EXACT on-chain identity for this paid attempt (e.g.
156
- * "0xWallet#nonce"). Overrides the server-generated identity so the on-chain
157
- * entry and your server's `hasEntered` check line up. One entry per identity.
163
+ * On-chain entrant id for this paid attempt (e.g. `"0xWallet#nonce"`).
164
+ * **Required on the client-signed (player wallet) path** so hub `hasEntered`
165
+ * matches (#374 / #466). **One entry per identity** — use a **unique value per
166
+ * paid attempt** (pay-per-play); reusing the same identity hits AlreadyEntered.
167
+ * Omit only on no-wallet sandbox server-settle smoke (service may derive).
168
+ * `entryProvider().payEntry` always supplies the kit identity.
158
169
  */
159
170
  identity?: string;
160
171
  }
@@ -532,11 +543,34 @@ interface ActiveForSeriesResult {
532
543
  via: "chain" | "cache";
533
544
  active: ActiveSeriesRound | null;
534
545
  }
535
- /** Result of `playmos.rounds.cancel` — may be async 202 cancelling (#346). */
546
+ /**
547
+ * Input to `playmos.rounds.cancel` (#346 / #376).
548
+ *
549
+ * Default is **submit-only**: returns `status: "cancelling"` after broadcast without
550
+ * inventing success. Pass `confirm: true` to poll until `cancelled` or timeout
551
+ * (still returns honest `cancelling` on timeout — never pretends terminal).
552
+ */
553
+ interface RoundCancelInput {
554
+ roundId: string;
555
+ gameId?: string;
556
+ /**
557
+ * When true, poll re-POST cancel + GET until `cancelled` or `timeoutMs`.
558
+ * Default **false** so hub fire-and-reconcile stays fast (hub #55).
559
+ */
560
+ confirm?: boolean;
561
+ /** Max poll ms when `confirm: true` (default 20_000, under hub 25s). */
562
+ timeoutMs?: number;
563
+ /** Poll interval ms when confirming (default 1000). */
564
+ intervalMs?: number;
565
+ }
566
+ /** Result of `playmos.rounds.cancel` — may be async 202 cancelling (#346 / #376). */
536
567
  interface CancelRoundResult {
537
568
  roundId: string;
538
569
  txHash: `0x${string}` | null;
539
- /** `"cancelling"` = broadcast accepted; `"cancelled"` = chain Cancelled(4) finalized. */
570
+ /**
571
+ * `"cancelling"` = broadcast accepted, **not** terminal success (series latch may
572
+ * still be held). `"cancelled"` = chain Cancelled(4) finalized — only then forget latch.
573
+ */
540
574
  status: "cancelling" | "cancelled";
541
575
  round?: RoundState;
542
576
  }
@@ -561,6 +595,12 @@ interface WithdrawResult {
561
595
  amountMicro: string;
562
596
  txHash?: `0x${string}`;
563
597
  status: "confirmed" | "failed" | "pending";
598
+ /**
599
+ * EIP-5792 calls id when the claim was submitted but not yet confirmed (#462).
600
+ * Present on `status: "pending"` so the studio can reconcile later — never treat
601
+ * a slow mining claim as a hard failure.
602
+ */
603
+ callsId?: string;
564
604
  }
565
605
  interface RoundSettleInput {
566
606
  roundId: string;
@@ -573,6 +613,14 @@ interface RoundSettleInput {
573
613
  amount: string;
574
614
  }[];
575
615
  };
616
+ /**
617
+ * Max ms to poll after async `status: "settling"` before returning honest non-terminal.
618
+ * Default **20_000** — below hub SdkEscrow op timeout (25s) so the answer can reach
619
+ * the hub before the outer race kills the call (#422).
620
+ */
621
+ timeoutMs?: number;
622
+ /** Poll interval ms while reconciling (default 1000, same as `transfers.wait`). */
623
+ intervalMs?: number;
576
624
  }
577
625
  /**
578
626
  * Result of `playmos.rounds.settle`.
@@ -603,7 +651,7 @@ interface SettleRoundResult {
603
651
  * EARLIEST possible layer: input errors fire client-side before any network or
604
652
  * chain call, so a studio never pays gas to discover a typo.
605
653
  */
606
- type PlaymosErrorCode = "invalid_amount" | "missing_field" | "insufficient_gas" | "wallet_connection" | "payment_failed" | "auth" | "api_error" | "config" | "nothing_to_withdraw";
654
+ type PlaymosErrorCode = "invalid_amount" | "missing_field" | "insufficient_gas" | "wallet_connection" | "wallet_timeout" | "payment_failed" | "already_entered" | "auth" | "api_error" | "config" | "nothing_to_withdraw";
607
655
  declare class PlaymosError extends Error {
608
656
  readonly code: PlaymosErrorCode;
609
657
  /** Optional machine context (e.g. the offending field, the http status). */
@@ -626,10 +674,27 @@ declare class InsufficientGasError extends PlaymosError {
626
674
  declare class WalletConnectionError extends PlaymosError {
627
675
  constructor(message?: string, detail?: Record<string, unknown>);
628
676
  }
677
+ /**
678
+ * A wallet `provider.request` call exceeded the per-request deadline (#462).
679
+ * Distinct from {@link WalletConnectionError}: provider is present but the sheet
680
+ * hung / popup was blocked / request never returned. Must NOT be treated as
681
+ * "no wallet" (that would silently route to server-settle).
682
+ */
683
+ declare class WalletTimeoutError extends PlaymosError {
684
+ constructor(message?: string, detail?: Record<string, unknown>);
685
+ }
629
686
  /** The on-chain settlement reverted, was cancelled, or timed out. */
630
687
  declare class PaymentFailedError extends PlaymosError {
631
688
  constructor(message?: string, detail?: Record<string, unknown>);
632
689
  }
690
+ /**
691
+ * PrizePool already has an entry for this `(roundId, identity)` (#462 pay-per-play).
692
+ * Studios using the same identity (e.g. bare wallet) for every attempt hit this on
693
+ * the second paid play — pass a per-attempt identity for pay-per-play.
694
+ */
695
+ declare class AlreadyEnteredError extends PlaymosError {
696
+ constructor(detail?: Record<string, unknown>);
697
+ }
633
698
  /** Bad, missing, or wrong-environment API key (e.g. a pk_test_ key on a live route). */
634
699
  declare class AuthError extends PlaymosError {
635
700
  constructor(message?: string, detail?: Record<string, unknown>);
@@ -650,4 +715,4 @@ declare class NothingToWithdrawError extends PlaymosError {
650
715
  constructor(detail?: Record<string, unknown>);
651
716
  }
652
717
 
653
- export { WalletConnectionError as $, type ActiveSeriesRound as A, InvalidAmountError as B, type CancelRoundResult as C, type ListingStatus as D, type EscrowHoldInput as E, type MarketplaceItem as F, type GasConfig as G, type MarketplaceSale as H, InsufficientGasError as I, MissingFieldError as J, NothingToWithdrawError as K, type Listing as L, type MarketplaceListInput as M, type Network as N, PaymentFailedError as O, type PlaymosConfig as P, type PaymentStatus as Q, type RoundOpenInput as R, type SettleRoundResult as S, type TransferResult as T, PlaymosError as U, type VerifyResult as V, type WebhookEvent as W, type PlaymosErrorCode as X, type RetryOptions as Y, type RoundStatus as Z, type WalletConfig as _, type RoundState as a, type WalletConnector as a0, type WebhookEventType as a1, type RoundSettleInput as b, type PrizeBalance as c, type WithdrawResult as d, type AgentWallet as e, type AgentFundResult as f, type EscrowHoldResult as g, type EscrowResolveResult as h, type MarketplaceSaleResult as i, type MarketplaceGetResult as j, type PayInput as k, type Payment as l, type EnterRoundInput as m, type TransferReconcile as n, type WaitOptions as o, type TransferInput as p, type TransferConfirmOptions as q, type PayoutRule as r, type ActiveForSeriesResult as s, type AgentEconomyConfig as t, ApiError as u, AuthError as v, ConfigError as w, type ContractConfig as x, type Eip1193Provider as y, type GasMode as z };
718
+ export { type RoundStatus as $, type ActiveSeriesRound as A, type Eip1193Provider as B, type CancelRoundResult as C, type GasMode as D, type EscrowHoldInput as E, InvalidAmountError as F, type GasConfig as G, type ListingStatus as H, InsufficientGasError as I, type MarketplaceItem as J, type MarketplaceSale as K, type Listing as L, type MarketplaceListInput as M, type Network as N, MissingFieldError as O, type PlaymosConfig as P, NothingToWithdrawError as Q, type RoundOpenInput as R, type SettleRoundResult as S, type TransferResult as T, PaymentFailedError as U, type VerifyResult as V, type WebhookEvent as W, type PaymentStatus as X, PlaymosError as Y, type PlaymosErrorCode as Z, type RetryOptions as _, type RoundState as a, type WalletConfig as a0, WalletConnectionError as a1, type WalletConnector as a2, WalletTimeoutError as a3, type WebhookEventType as a4, type RoundSettleInput as b, type RoundCancelInput as c, type PrizeBalance as d, type WithdrawResult as e, type AgentWallet as f, type AgentFundResult as g, type EscrowHoldResult as h, type EscrowResolveResult as i, type MarketplaceSaleResult as j, type MarketplaceGetResult as k, type PayInput as l, type Payment as m, type EnterRoundInput as n, type TransferReconcile as o, type WaitOptions as p, type TransferInput as q, type TransferConfirmOptions as r, type PayoutRule as s, type ActiveForSeriesResult as t, type AgentEconomyConfig as u, AlreadyEnteredError as v, ApiError as w, AuthError as x, ConfigError as y, type ContractConfig as z };