@flayerlabs/gamemode-spec 0.2.0 → 0.3.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.
package/README.md CHANGED
@@ -19,7 +19,7 @@ The package exports these public entry points:
19
19
  | `@flayerlabs/gamemode-spec` | define a game module, commands, decisions, awards and views |
20
20
  | `@flayerlabs/gamemode-spec/round` | run or resume a game round with the shared round driver |
21
21
  | `@flayerlabs/gamemode-spec/schedule` | turn phase durations into fixed timestamps inside a round window |
22
- | `@flayerlabs/gamemode-spec/live` | share launch, economy, market, identity and live-room message types |
22
+ | `@flayerlabs/gamemode-spec/live` | share launch, round terms, economy, market, identity, player-ticket and live-room message types |
23
23
  | `@flayerlabs/gamemode-spec/embed` | parse registry and iframe data, then build canonical spend typed data |
24
24
 
25
25
  Import only the entry points you need:
@@ -48,6 +48,10 @@ if (!isLaunchContext(launch)) throw new Error('invalid launch context')
48
48
  Compare the parsed chain, coin and round with the trusted page selection as well. A valid shape does
49
49
  not prove that the response belongs to the coin the player opened.
50
50
 
51
+ `gateOrigin` is the default network surface for a registered game. A registration needs
52
+ `gameServerOrigins` only when a creator gameplay server uses a separate reviewed origin. The parser
53
+ accepts exact HTTPS origins and rejects wildcards, paths and credentials.
54
+
51
55
  ## Define game rules
52
56
 
53
57
  A `GameModule` owns action parsing, initial state, decisions, state changes, public views,
package/dist/embed.d.ts CHANGED
@@ -2,13 +2,26 @@ import type { PlayerId } from './index.js';
2
2
  import { type BuyFailure, type LaunchContext, type PlayerIdentity, type WireMarketState } from './live.js';
3
3
  export declare const EMBED_CHANNEL: "flaunch.game-mode";
4
4
  export declare const EMBED_PROTOCOL_VERSION: 1;
5
+ export declare const MAX_GAME_SERVER_ORIGINS = 4;
6
+ export interface GameSecurityProfile {
7
+ kind: 'game';
8
+ connect: {
9
+ https: string;
10
+ wss: string;
11
+ gameServerOrigins?: readonly string[];
12
+ };
13
+ }
5
14
  export interface GameRegistration {
6
15
  chainId: number;
7
16
  coin: string;
8
17
  gameId: string;
9
18
  gateOrigin: string;
10
19
  deployId: string;
20
+ /** Reviewed HTTPS origins for a creator-owned authoritative game server. */
21
+ gameServerOrigins?: readonly string[];
11
22
  }
23
+ /** Parse the optional reviewed game-server network surface into one canonical set. */
24
+ export declare function parseGameServerOrigins(input: unknown): readonly string[] | null;
12
25
  /** Parse the central registry response into the exact browser-safe shape the parent may trust. */
13
26
  export declare function parseGameRegistration(input: unknown): GameRegistration | null;
14
27
  export interface SpendAuthorisation {
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
package/dist/embed.js CHANGED
@@ -8,10 +8,41 @@ const DECIMAL = /^(?:0|[1-9][0-9]{0,77})$/;
8
8
  const REQUEST_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
9
9
  const DEPLOY_ID = /^[0-9a-f]{32}$/;
10
10
  const PUBLIC_HOSTNAME = /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/;
11
+ export const MAX_GAME_SERVER_ORIGINS = 4;
12
+ /** Parse the optional reviewed game-server network surface into one canonical set. */
13
+ export function parseGameServerOrigins(input) {
14
+ if (input === undefined)
15
+ return Object.freeze([]);
16
+ if (!Array.isArray(input) || input.length > MAX_GAME_SERVER_ORIGINS)
17
+ return null;
18
+ const origins = [];
19
+ const seen = new Set();
20
+ for (const value of input) {
21
+ if (typeof value !== 'string' || value.length > 253 || /[^\x20-\x7e]/.test(value))
22
+ return null;
23
+ try {
24
+ const origin = new URL(value);
25
+ if (origin.protocol !== 'https:' ||
26
+ origin.origin !== value ||
27
+ !PUBLIC_HOSTNAME.test(origin.hostname) ||
28
+ seen.has(value)) {
29
+ return null;
30
+ }
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ seen.add(value);
36
+ origins.push(value);
37
+ }
38
+ return Object.freeze(origins.sort());
39
+ }
11
40
  /** Parse the central registry response into the exact browser-safe shape the parent may trust. */
12
41
  export function parseGameRegistration(input) {
13
42
  const value = record(input);
43
+ const gameServerOrigins = parseGameServerOrigins(value?.gameServerOrigins);
14
44
  if (!value ||
45
+ gameServerOrigins === null ||
15
46
  !Number.isSafeInteger(value.chainId) ||
16
47
  value.chainId <= 0 ||
17
48
  typeof value.coin !== 'string' ||
@@ -45,6 +76,7 @@ export function parseGameRegistration(input) {
45
76
  gameId: value.gameId,
46
77
  gateOrigin: value.gateOrigin,
47
78
  deployId: value.deployId,
79
+ ...(gameServerOrigins.length === 0 ? {} : { gameServerOrigins }),
48
80
  };
49
81
  }
50
82
  const SPEND_AUTHORIZATION_TYPES = {
package/dist/embed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
package/dist/live.d.ts CHANGED
@@ -12,6 +12,12 @@ export interface LaunchContext {
12
12
  /** The chart/standings settlement tail may outlive gameplay and claim issuance. */
13
13
  readonly booksCloseAt: number;
14
14
  }
15
+ /** Short-lived proof that the SDK gate authenticated a wallet for an external game server. */
16
+ export interface PlayerJoinTicket {
17
+ ticket: string;
18
+ expiresAt: number;
19
+ }
20
+ export declare function isPlayerJoinTicket(input: unknown): input is PlayerJoinTicket;
15
21
  /** Check an untrusted launch response before using it to choose a room or trusted service. */
16
22
  export declare function isLaunchContext(input: unknown): input is LaunchContext;
17
23
  export type ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'superseded' | 'ended';
@@ -99,6 +105,46 @@ export type WireEconomyBalance = {
99
105
  } & {
100
106
  holdExpiresAt: number | null;
101
107
  };
108
+ /**
109
+ * The immutable economic terms of one round.
110
+ *
111
+ * Fixed when the gate adopted the launch, and never recomputed. A game's menu, its own server and
112
+ * its browser all read the same numbers from here rather than each deriving them from a live ETH
113
+ * price, which is the bug class `resolveEconomy` exists to prevent.
114
+ *
115
+ * `pointsPerDollar` and `usdPerEth` are frozen provenance from adoption time. They explain how the
116
+ * gate arrived at `weiPerPoint`; they are not live process settings and must not be recomputed.
117
+ */
118
+ export interface RoundTerms {
119
+ /** The most one wallet can earn here. The gate refuses an award that would pass it. */
120
+ readonly maxPointsPerPlayer: number;
121
+ /** The pool's on-chain per-wallet spending ceiling. The chain enforces this whatever we do. */
122
+ readonly walletCapWei: bigint;
123
+ /**
124
+ * Wei per point for this round.
125
+ *
126
+ * The same number {@link EconomyBalance} carries. It is repeated there because a balance has to
127
+ * be readable on its own, and it is here because a main menu needs the rate before any player
128
+ * has a balance at all.
129
+ */
130
+ readonly weiPerPoint: bigint;
131
+ /**
132
+ * The creator's one knob, as it stood when this round was adopted. 100 means a dollar buys 100
133
+ * points.
134
+ *
135
+ * Recorded so a round can explain its own rate, not so anyone can recompute it. Both this and
136
+ * `usdPerEth` are gate-process settings that an operator may change between rounds, and neither
137
+ * moves `weiPerPoint` once a round exists.
138
+ */
139
+ readonly pointsPerDollar: number;
140
+ /** The operator's ETH price at adoption. A quote that was true then, not a live one. */
141
+ readonly usdPerEth: number;
142
+ }
143
+ /** JSON-safe form. The wei fields cross as decimal strings, exactly as {@link WireEconomyBalance}. */
144
+ export type WireRoundTerms = Omit<RoundTerms, 'walletCapWei' | 'weiPerPoint'> & {
145
+ walletCapWei: string;
146
+ weiPerPoint: string;
147
+ };
102
148
  /** Keep cosmetic reaction identifiers bounded and safe to use as asset keys. */
103
149
  export declare function isReactionId(id: string): boolean;
104
150
  export declare const LIVE_PROTOCOL_VERSION: 1;
@@ -110,6 +156,7 @@ export type LiveServerFrame<PublicView, PlayerView> = {
110
156
  view: PublicView;
111
157
  you: PlayerView | null;
112
158
  economy: WireEconomyBalance;
159
+ terms: WireRoundTerms;
113
160
  launch: LaunchContext;
114
161
  presence: PresenceState;
115
162
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
package/dist/live.js CHANGED
@@ -1,3 +1,13 @@
1
+ export function isPlayerJoinTicket(input) {
2
+ if (typeof input !== 'object' || input === null)
3
+ return false;
4
+ const value = input;
5
+ return (typeof value.ticket === 'string' &&
6
+ value.ticket.length <= 2_048 &&
7
+ /^gmj1\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value.ticket) &&
8
+ Number.isSafeInteger(value.expiresAt) &&
9
+ value.expiresAt > 0);
10
+ }
1
11
  const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
2
12
  /** Check an untrusted launch response before using it to choose a room or trusted service. */
3
13
  export function isLaunchContext(input) {
package/dist/live.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,8FAA8F;AAC9F,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,OAAO,CACL,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG;QAC3B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG;QAC1B,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1G,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG;QACxB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;QACzB,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QACnG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,OAAkB,GAAI,KAAK,CAAC,QAAmB;QACrD,KAAK,CAAC,QAAmB,IAAK,KAAK,CAAC,YAAuB,CAC7D,CAAC;AACJ,CAAC;AAsGD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,OAAO,CACL,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK;QAC5B,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3D,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;QACpC,KAAK,CAAC,SAAoB,GAAG,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,8FAA8F;AAC9F,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,OAAO,CACL,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG;QAC3B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG;QAC1B,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1G,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG;QACxB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;QACzB,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QACnG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,OAAkB,GAAI,KAAK,CAAC,QAAmB;QACrD,KAAK,CAAC,QAAmB,IAAK,KAAK,CAAC,YAAuB,CAC7D,CAAC;AACJ,CAAC;AAgJD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flayerlabs/gamemode-spec",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Pure rules, round, scheduling, live-room and embed contracts for Flaunch Game Modes",
5
5
  "license": "MIT",
6
6
  "author": "Flayer Labs",
package/src/embed.ts CHANGED
@@ -11,6 +11,16 @@ const DECIMAL = /^(?:0|[1-9][0-9]{0,77})$/;
11
11
  const REQUEST_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
12
12
  const DEPLOY_ID = /^[0-9a-f]{32}$/;
13
13
  const PUBLIC_HOSTNAME = /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/;
14
+ export const MAX_GAME_SERVER_ORIGINS = 4;
15
+
16
+ export interface GameSecurityProfile {
17
+ kind: 'game';
18
+ connect: {
19
+ https: string;
20
+ wss: string;
21
+ gameServerOrigins?: readonly string[];
22
+ };
23
+ }
14
24
 
15
25
  export interface GameRegistration {
16
26
  chainId: number;
@@ -18,13 +28,46 @@ export interface GameRegistration {
18
28
  gameId: string;
19
29
  gateOrigin: string;
20
30
  deployId: string;
31
+ /** Reviewed HTTPS origins for a creator-owned authoritative game server. */
32
+ gameServerOrigins?: readonly string[];
33
+ }
34
+
35
+ /** Parse the optional reviewed game-server network surface into one canonical set. */
36
+ export function parseGameServerOrigins(input: unknown): readonly string[] | null {
37
+ if (input === undefined) return Object.freeze([]);
38
+ if (!Array.isArray(input) || input.length > MAX_GAME_SERVER_ORIGINS) return null;
39
+
40
+ const origins: string[] = [];
41
+ const seen = new Set<string>();
42
+ for (const value of input) {
43
+ if (typeof value !== 'string' || value.length > 253 || /[^\x20-\x7e]/.test(value)) return null;
44
+ try {
45
+ const origin = new URL(value);
46
+ if (
47
+ origin.protocol !== 'https:' ||
48
+ origin.origin !== value ||
49
+ !PUBLIC_HOSTNAME.test(origin.hostname) ||
50
+ seen.has(value)
51
+ ) {
52
+ return null;
53
+ }
54
+ } catch {
55
+ return null;
56
+ }
57
+ seen.add(value);
58
+ origins.push(value);
59
+ }
60
+
61
+ return Object.freeze(origins.sort());
21
62
  }
22
63
 
23
64
  /** Parse the central registry response into the exact browser-safe shape the parent may trust. */
24
65
  export function parseGameRegistration(input: unknown): GameRegistration | null {
25
66
  const value = record(input);
67
+ const gameServerOrigins = parseGameServerOrigins(value?.gameServerOrigins);
26
68
  if (
27
69
  !value ||
70
+ gameServerOrigins === null ||
28
71
  !Number.isSafeInteger(value.chainId) ||
29
72
  (value.chainId as number) <= 0 ||
30
73
  typeof value.coin !== 'string' ||
@@ -62,6 +105,7 @@ export function parseGameRegistration(input: unknown): GameRegistration | null {
62
105
  gameId: value.gameId,
63
106
  gateOrigin: value.gateOrigin,
64
107
  deployId: value.deployId,
108
+ ...(gameServerOrigins.length === 0 ? {} : { gameServerOrigins }),
65
109
  };
66
110
  }
67
111
 
package/src/live.ts CHANGED
@@ -14,6 +14,24 @@ export interface LaunchContext {
14
14
  readonly booksCloseAt: number;
15
15
  }
16
16
 
17
+ /** Short-lived proof that the SDK gate authenticated a wallet for an external game server. */
18
+ export interface PlayerJoinTicket {
19
+ ticket: string;
20
+ expiresAt: number;
21
+ }
22
+
23
+ export function isPlayerJoinTicket(input: unknown): input is PlayerJoinTicket {
24
+ if (typeof input !== 'object' || input === null) return false;
25
+ const value = input as Record<string, unknown>;
26
+ return (
27
+ typeof value.ticket === 'string' &&
28
+ value.ticket.length <= 2_048 &&
29
+ /^gmj1\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value.ticket) &&
30
+ Number.isSafeInteger(value.expiresAt) &&
31
+ (value.expiresAt as number) > 0
32
+ );
33
+ }
34
+
17
35
  const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
18
36
 
19
37
  /** Check an untrusted launch response before using it to choose a room or trusted service. */
@@ -141,6 +159,48 @@ export type WireEconomyBalance = {
141
159
  [Key in keyof Omit<EconomyBalance, 'holdExpiresAt'>]: string;
142
160
  } & { holdExpiresAt: number | null };
143
161
 
162
+ /**
163
+ * The immutable economic terms of one round.
164
+ *
165
+ * Fixed when the gate adopted the launch, and never recomputed. A game's menu, its own server and
166
+ * its browser all read the same numbers from here rather than each deriving them from a live ETH
167
+ * price, which is the bug class `resolveEconomy` exists to prevent.
168
+ *
169
+ * `pointsPerDollar` and `usdPerEth` are frozen provenance from adoption time. They explain how the
170
+ * gate arrived at `weiPerPoint`; they are not live process settings and must not be recomputed.
171
+ */
172
+ export interface RoundTerms {
173
+ /** The most one wallet can earn here. The gate refuses an award that would pass it. */
174
+ readonly maxPointsPerPlayer: number;
175
+ /** The pool's on-chain per-wallet spending ceiling. The chain enforces this whatever we do. */
176
+ readonly walletCapWei: bigint;
177
+ /**
178
+ * Wei per point for this round.
179
+ *
180
+ * The same number {@link EconomyBalance} carries. It is repeated there because a balance has to
181
+ * be readable on its own, and it is here because a main menu needs the rate before any player
182
+ * has a balance at all.
183
+ */
184
+ readonly weiPerPoint: bigint;
185
+ /**
186
+ * The creator's one knob, as it stood when this round was adopted. 100 means a dollar buys 100
187
+ * points.
188
+ *
189
+ * Recorded so a round can explain its own rate, not so anyone can recompute it. Both this and
190
+ * `usdPerEth` are gate-process settings that an operator may change between rounds, and neither
191
+ * moves `weiPerPoint` once a round exists.
192
+ */
193
+ readonly pointsPerDollar: number;
194
+ /** The operator's ETH price at adoption. A quote that was true then, not a live one. */
195
+ readonly usdPerEth: number;
196
+ }
197
+
198
+ /** JSON-safe form. The wei fields cross as decimal strings, exactly as {@link WireEconomyBalance}. */
199
+ export type WireRoundTerms = Omit<RoundTerms, 'walletCapWei' | 'weiPerPoint'> & {
200
+ walletCapWei: string;
201
+ weiPerPoint: string;
202
+ };
203
+
144
204
  /** Keep cosmetic reaction identifiers bounded and safe to use as asset keys. */
145
205
  export function isReactionId(id: string): boolean {
146
206
  return /^[A-Za-z0-9._:-]{1,64}$/.test(id);
@@ -157,6 +217,7 @@ export type LiveServerFrame<PublicView, PlayerView> =
157
217
  view: PublicView;
158
218
  you: PlayerView | null;
159
219
  economy: WireEconomyBalance;
220
+ terms: WireRoundTerms;
160
221
  launch: LaunchContext;
161
222
  presence: PresenceState;
162
223
  }