@mutinylabs/slip 0.2.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.
Files changed (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -0
  3. package/dist/ai.d.ts +70 -0
  4. package/dist/ai.d.ts.map +1 -0
  5. package/dist/ai.js +448 -0
  6. package/dist/ai.js.map +1 -0
  7. package/dist/anchor.d.ts +15 -0
  8. package/dist/anchor.d.ts.map +1 -0
  9. package/dist/anchor.js +15 -0
  10. package/dist/anchor.js.map +1 -0
  11. package/dist/client.d.ts +90 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +161 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/evidence.d.ts +13 -0
  16. package/dist/evidence.d.ts.map +1 -0
  17. package/dist/evidence.js +34 -0
  18. package/dist/evidence.js.map +1 -0
  19. package/dist/generated/accounts/index.d.ts +10 -0
  20. package/dist/generated/accounts/index.d.ts.map +1 -0
  21. package/dist/generated/accounts/index.js +10 -0
  22. package/dist/generated/accounts/index.js.map +1 -0
  23. package/dist/generated/accounts/market.d.ts +73 -0
  24. package/dist/generated/accounts/market.d.ts.map +1 -0
  25. package/dist/generated/accounts/market.js +105 -0
  26. package/dist/generated/accounts/market.js.map +1 -0
  27. package/dist/generated/accounts/marketTicket.d.ts +43 -0
  28. package/dist/generated/accounts/marketTicket.d.ts.map +1 -0
  29. package/dist/generated/accounts/marketTicket.js +69 -0
  30. package/dist/generated/accounts/marketTicket.js.map +1 -0
  31. package/dist/generated/errors/index.d.ts +9 -0
  32. package/dist/generated/errors/index.d.ts.map +1 -0
  33. package/dist/generated/errors/index.js +9 -0
  34. package/dist/generated/errors/index.js.map +1 -0
  35. package/dist/generated/errors/slip.d.ts +68 -0
  36. package/dist/generated/errors/slip.d.ts.map +1 -0
  37. package/dist/generated/errors/slip.js +96 -0
  38. package/dist/generated/errors/slip.js.map +1 -0
  39. package/dist/generated/index.d.ts +14 -0
  40. package/dist/generated/index.d.ts.map +1 -0
  41. package/dist/generated/index.js +14 -0
  42. package/dist/generated/index.js.map +1 -0
  43. package/dist/generated/instructions/buyTicket.d.ts +80 -0
  44. package/dist/generated/instructions/buyTicket.d.ts.map +1 -0
  45. package/dist/generated/instructions/buyTicket.js +149 -0
  46. package/dist/generated/instructions/buyTicket.js.map +1 -0
  47. package/dist/generated/instructions/claimTicket.d.ts +55 -0
  48. package/dist/generated/instructions/claimTicket.d.ts.map +1 -0
  49. package/dist/generated/instructions/claimTicket.js +87 -0
  50. package/dist/generated/instructions/claimTicket.js.map +1 -0
  51. package/dist/generated/instructions/createMarket.d.ts +105 -0
  52. package/dist/generated/instructions/createMarket.d.ts.map +1 -0
  53. package/dist/generated/instructions/createMarket.js +195 -0
  54. package/dist/generated/instructions/createMarket.js.map +1 -0
  55. package/dist/generated/instructions/index.d.ts +14 -0
  56. package/dist/generated/instructions/index.d.ts.map +1 -0
  57. package/dist/generated/instructions/index.js +14 -0
  58. package/dist/generated/instructions/index.js.map +1 -0
  59. package/dist/generated/instructions/resolveMarket.d.ts +75 -0
  60. package/dist/generated/instructions/resolveMarket.d.ts.map +1 -0
  61. package/dist/generated/instructions/resolveMarket.js +107 -0
  62. package/dist/generated/instructions/resolveMarket.js.map +1 -0
  63. package/dist/generated/instructions/resolveMarketV3.d.ts +78 -0
  64. package/dist/generated/instructions/resolveMarketV3.d.ts.map +1 -0
  65. package/dist/generated/instructions/resolveMarketV3.js +109 -0
  66. package/dist/generated/instructions/resolveMarketV3.js.map +1 -0
  67. package/dist/generated/instructions/voidMarket.d.ts +40 -0
  68. package/dist/generated/instructions/voidMarket.d.ts.map +1 -0
  69. package/dist/generated/instructions/voidMarket.js +64 -0
  70. package/dist/generated/instructions/voidMarket.js.map +1 -0
  71. package/dist/generated/pdas/index.d.ts +10 -0
  72. package/dist/generated/pdas/index.d.ts.map +1 -0
  73. package/dist/generated/pdas/index.js +10 -0
  74. package/dist/generated/pdas/index.js.map +1 -0
  75. package/dist/generated/pdas/market.d.ts +16 -0
  76. package/dist/generated/pdas/market.d.ts.map +1 -0
  77. package/dist/generated/pdas/market.js +20 -0
  78. package/dist/generated/pdas/market.js.map +1 -0
  79. package/dist/generated/pdas/ticket.d.ts +17 -0
  80. package/dist/generated/pdas/ticket.d.ts.map +1 -0
  81. package/dist/generated/pdas/ticket.js +21 -0
  82. package/dist/generated/pdas/ticket.js.map +1 -0
  83. package/dist/generated/programs/index.d.ts +9 -0
  84. package/dist/generated/programs/index.d.ts.map +1 -0
  85. package/dist/generated/programs/index.js +9 -0
  86. package/dist/generated/programs/index.js.map +1 -0
  87. package/dist/generated/programs/slip.d.ts +43 -0
  88. package/dist/generated/programs/slip.d.ts.map +1 -0
  89. package/dist/generated/programs/slip.js +106 -0
  90. package/dist/generated/programs/slip.js.map +1 -0
  91. package/dist/generated/shared/index.d.ts +50 -0
  92. package/dist/generated/shared/index.d.ts.map +1 -0
  93. package/dist/generated/shared/index.js +87 -0
  94. package/dist/generated/shared/index.js.map +1 -0
  95. package/dist/generated/types/binaryOp.d.ts +18 -0
  96. package/dist/generated/types/binaryOp.d.ts.map +1 -0
  97. package/dist/generated/types/binaryOp.js +24 -0
  98. package/dist/generated/types/binaryOp.js.map +1 -0
  99. package/dist/generated/types/index.d.ts +19 -0
  100. package/dist/generated/types/index.d.ts.map +1 -0
  101. package/dist/generated/types/index.js +19 -0
  102. package/dist/generated/types/index.js.map +1 -0
  103. package/dist/generated/types/marketExpression.d.ts +34 -0
  104. package/dist/generated/types/marketExpression.d.ts.map +1 -0
  105. package/dist/generated/types/marketExpression.js +37 -0
  106. package/dist/generated/types/marketExpression.js.map +1 -0
  107. package/dist/generated/types/marketState.d.ts +18 -0
  108. package/dist/generated/types/marketState.d.ts.map +1 -0
  109. package/dist/generated/types/marketState.js +24 -0
  110. package/dist/generated/types/marketState.js.map +1 -0
  111. package/dist/generated/types/multiProof.d.ts +28 -0
  112. package/dist/generated/types/multiProof.d.ts.map +1 -0
  113. package/dist/generated/types/multiProof.js +25 -0
  114. package/dist/generated/types/multiProof.js.map +1 -0
  115. package/dist/generated/types/outcomeBand.d.ts +26 -0
  116. package/dist/generated/types/outcomeBand.d.ts.map +1 -0
  117. package/dist/generated/types/outcomeBand.js +26 -0
  118. package/dist/generated/types/outcomeBand.js.map +1 -0
  119. package/dist/generated/types/proofNode.d.ts +17 -0
  120. package/dist/generated/types/proofNode.d.ts.map +1 -0
  121. package/dist/generated/types/proofNode.js +24 -0
  122. package/dist/generated/types/proofNode.js.map +1 -0
  123. package/dist/generated/types/provenStat.d.ts +21 -0
  124. package/dist/generated/types/provenStat.d.ts.map +1 -0
  125. package/dist/generated/types/provenStat.js +25 -0
  126. package/dist/generated/types/provenStat.js.map +1 -0
  127. package/dist/generated/types/scoreStatInput.d.ts +18 -0
  128. package/dist/generated/types/scoreStatInput.d.ts.map +1 -0
  129. package/dist/generated/types/scoreStatInput.js +26 -0
  130. package/dist/generated/types/scoreStatInput.js.map +1 -0
  131. package/dist/generated/types/settlementMode.d.ts +16 -0
  132. package/dist/generated/types/settlementMode.d.ts.map +1 -0
  133. package/dist/generated/types/settlementMode.js +22 -0
  134. package/dist/generated/types/settlementMode.js.map +1 -0
  135. package/dist/generated/types/sideSelector.d.ts +18 -0
  136. package/dist/generated/types/sideSelector.d.ts.map +1 -0
  137. package/dist/generated/types/sideSelector.js +24 -0
  138. package/dist/generated/types/sideSelector.js.map +1 -0
  139. package/dist/generated/types/summaryInput.d.ts +26 -0
  140. package/dist/generated/types/summaryInput.d.ts.map +1 -0
  141. package/dist/generated/types/summaryInput.js +30 -0
  142. package/dist/generated/types/summaryInput.js.map +1 -0
  143. package/dist/idl/slip.json +2418 -0
  144. package/dist/index.d.ts +9 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +9 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/market-reference.d.ts +9 -0
  149. package/dist/market-reference.d.ts.map +1 -0
  150. package/dist/market-reference.js +38 -0
  151. package/dist/market-reference.js.map +1 -0
  152. package/dist/market.d.ts +42 -0
  153. package/dist/market.d.ts.map +1 -0
  154. package/dist/market.js +267 -0
  155. package/dist/market.js.map +1 -0
  156. package/dist/merkle.d.ts +48 -0
  157. package/dist/merkle.d.ts.map +1 -0
  158. package/dist/merkle.js +67 -0
  159. package/dist/merkle.js.map +1 -0
  160. package/dist/pda.d.ts +12 -0
  161. package/dist/pda.d.ts.map +1 -0
  162. package/dist/pda.js +30 -0
  163. package/dist/pda.js.map +1 -0
  164. package/dist/proof.d.ts +40 -0
  165. package/dist/proof.d.ts.map +1 -0
  166. package/dist/proof.js +106 -0
  167. package/dist/proof.js.map +1 -0
  168. package/dist/public-client.d.ts +60 -0
  169. package/dist/public-client.d.ts.map +1 -0
  170. package/dist/public-client.js +487 -0
  171. package/dist/public-client.js.map +1 -0
  172. package/dist/public-math.d.ts +17 -0
  173. package/dist/public-math.d.ts.map +1 -0
  174. package/dist/public-math.js +57 -0
  175. package/dist/public-math.js.map +1 -0
  176. package/dist/public-types.d.ts +151 -0
  177. package/dist/public-types.d.ts.map +1 -0
  178. package/dist/public-types.js +2 -0
  179. package/dist/public-types.js.map +1 -0
  180. package/dist/rulebook-skills.d.ts +15 -0
  181. package/dist/rulebook-skills.d.ts.map +1 -0
  182. package/dist/rulebook-skills.js +155 -0
  183. package/dist/rulebook-skills.js.map +1 -0
  184. package/dist/rulebook.d.ts +17 -0
  185. package/dist/rulebook.d.ts.map +1 -0
  186. package/dist/rulebook.js +42 -0
  187. package/dist/rulebook.js.map +1 -0
  188. package/dist/transaction.d.ts +23 -0
  189. package/dist/transaction.d.ts.map +1 -0
  190. package/dist/transaction.js +51 -0
  191. package/dist/transaction.js.map +1 -0
  192. package/dist/txline.d.ts +55 -0
  193. package/dist/txline.d.ts.map +1 -0
  194. package/dist/txline.js +238 -0
  195. package/dist/txline.js.map +1 -0
  196. package/dist/types.d.ts +149 -0
  197. package/dist/types.d.ts.map +1 -0
  198. package/dist/types.js +10 -0
  199. package/dist/types.js.map +1 -0
  200. package/package.json +123 -0
@@ -0,0 +1,40 @@
1
+ import type { PublicKey } from "@solana/web3.js";
2
+ import type { MarketExpression, ScoresProofArg } from "./types.js";
3
+ /** Minimal HTTP surface — pass an authenticated axios-like client or a fetch wrapper. */
4
+ export interface HttpLike {
5
+ get(url: string, config?: {
6
+ params?: Record<string, unknown>;
7
+ }): Promise<{
8
+ data: any;
9
+ }>;
10
+ }
11
+ /** Select the newest status-bearing score update. TxLINE returns snapshots oldest-first and may
12
+ * append a higher-sequence `disconnected` record with no settlement status after `game_finalised`. */
13
+ export declare function latestScoreUpdate(value: unknown, fixtureId?: number): Record<string, any>;
14
+ export interface FetchedProof {
15
+ arg: ScoresProofArg;
16
+ raw: any;
17
+ rootsPda: PublicKey;
18
+ epochDay: number;
19
+ proofTsSecs: number;
20
+ values: {
21
+ a: number;
22
+ b: number | null;
23
+ };
24
+ tierA: {
25
+ seg1Match: boolean;
26
+ seg2Match: boolean;
27
+ dailyRoot: string;
28
+ };
29
+ }
30
+ export declare function isTerminalPeriod(period: number): boolean;
31
+ export declare function assertTerminalProof(proof: ScoresProofArg): void;
32
+ /** Map a raw stat-validation payload (single or two-stat) into the program argument. */
33
+ export declare function toScoresProofArg(v: any): ScoresProofArg;
34
+ /** Fetch the single- or two-stat proof needed by a market expression. */
35
+ export declare function fetchProofForMarket(http: HttpLike, expression: MarketExpression, seq: number): Promise<FetchedProof>;
36
+ /** Fetch an explicit single- or two-stat proof. */
37
+ export declare function fetchProof(http: HttpLike, fixtureId: number, seq: number, statKey: number, statKey2?: number): Promise<FetchedProof>;
38
+ /** Latest score sequence for a fixture, from a snapshot. */
39
+ export declare function latestSeq(http: HttpLike, fixtureId: number): Promise<number>;
40
+ //# sourceMappingURL=proof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,gBAAgB,EAAa,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9E,yFAAyF;AACzF,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CACzF;AAED;sGACsG;AACtG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkBzF;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACxC,KAAK,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAQ/D;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,cAAc,CAiBvD;AAED,yEAAyE;AACzE,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAK1H;AAED,mDAAmD;AACnD,wBAAsB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAK1I;AAmBD,4DAA4D;AAC5D,wBAAsB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIlF"}
package/dist/proof.js ADDED
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Proof fetcher — turns a TxLINE `/api/scores/stat-validation` payload into the program's
3
+ * `ScoresProof` claim argument, and verifies it independently (Tier A) before you spend a tx.
4
+ */
5
+ import { BN } from "@coral-xyz/anchor";
6
+ import { dailyScoresRootsPda } from "./pda.js";
7
+ import { verifyChain } from "./merkle.js";
8
+ /** Select the newest status-bearing score update. TxLINE returns snapshots oldest-first and may
9
+ * append a higher-sequence `disconnected` record with no settlement status after `game_finalised`. */
10
+ export function latestScoreUpdate(value, fixtureId) {
11
+ const values = Array.isArray(value) ? value : [value];
12
+ if (!values.length)
13
+ throw new Error(`TxLINE score snapshot${fixtureId ? ` for fixture ${fixtureId}` : ""} was empty`);
14
+ let latest = null;
15
+ let latestSeq = -1;
16
+ for (const candidate of values) {
17
+ if (!candidate || typeof candidate !== "object" || Array.isArray(candidate))
18
+ throw new Error("TxLINE score snapshot update must be an object");
19
+ const item = candidate;
20
+ const seq = item.Seq ?? item.seq;
21
+ if (typeof seq !== "number" || !Number.isSafeInteger(seq))
22
+ throw new Error("TxLINE score snapshot sequence must be a safe integer");
23
+ const status = item.StatusId ?? item.statusId;
24
+ const action = item.Action ?? item.action;
25
+ if ((typeof status === "number" && Number.isSafeInteger(status)) || action === "game_finalised") {
26
+ if (seq > latestSeq) {
27
+ latest = item;
28
+ latestSeq = seq;
29
+ }
30
+ }
31
+ }
32
+ if (!latest)
33
+ throw new Error(`TxLINE score snapshot${fixtureId ? ` for fixture ${fixtureId}` : ""} contained no status-bearing update`);
34
+ return latest;
35
+ }
36
+ const nodes = (arr) => arr.map((n) => ({ hash: n.hash, isRightSibling: n.isRightSibling }));
37
+ export function isTerminalPeriod(period) {
38
+ return period === 5 || period === 10 || period === 13 || period === 100;
39
+ }
40
+ export function assertTerminalProof(proof) {
41
+ const terminalPeriod = proof.statA.stat.period;
42
+ if (!isTerminalPeriod(terminalPeriod)) {
43
+ throw new Error(`TxLINE proof is from non-terminal match phase ${terminalPeriod}`);
44
+ }
45
+ if (proof.statB && proof.statB.stat.period !== terminalPeriod) {
46
+ throw new Error("TxLINE proof stats are not from the same terminal update");
47
+ }
48
+ }
49
+ /** Map a raw stat-validation payload (single or two-stat) into the program argument. */
50
+ export function toScoresProofArg(v) {
51
+ return {
52
+ eventStatRoot: v.eventStatRoot,
53
+ statA: { stat: { key: v.statToProve.key, value: v.statToProve.value, period: v.statToProve.period }, statProof: nodes(v.statProof) },
54
+ statB: v.statToProve2
55
+ ? { stat: { key: v.statToProve2.key, value: v.statToProve2.value, period: v.statToProve2.period }, statProof: nodes(v.statProof2) }
56
+ : null,
57
+ summary: {
58
+ fixtureId: new BN(v.summary.fixtureId),
59
+ updateCount: v.summary.updateStats.updateCount,
60
+ minTimestamp: new BN(v.summary.updateStats.minTimestamp),
61
+ maxTimestamp: new BN(v.summary.updateStats.maxTimestamp),
62
+ eventsSubTreeRoot: v.summary.eventStatsSubTreeRoot,
63
+ },
64
+ subTreeProof: nodes(v.subTreeProof),
65
+ mainTreeProof: nodes(v.mainTreeProof),
66
+ };
67
+ }
68
+ /** Fetch the single- or two-stat proof needed by a market expression. */
69
+ export async function fetchProofForMarket(http, expression, seq) {
70
+ const params = { fixtureId: expression.fixtureId, seq, statKey: expression.statAKey };
71
+ if (expression.statBKey != null)
72
+ params.statKey2 = expression.statBKey;
73
+ const { data: v } = await http.get("/scores/stat-validation", { params });
74
+ return finalize(v);
75
+ }
76
+ /** Fetch an explicit single- or two-stat proof. */
77
+ export async function fetchProof(http, fixtureId, seq, statKey, statKey2) {
78
+ const params = { fixtureId, seq, statKey };
79
+ if (statKey2 != null)
80
+ params.statKey2 = statKey2;
81
+ const { data: v } = await http.get("/scores/stat-validation", { params });
82
+ return finalize(v);
83
+ }
84
+ function finalize(v) {
85
+ const { pda, epochDay } = dailyScoresRootsPda(v.summary.updateStats.minTimestamp);
86
+ const tierA = verifyChain(v);
87
+ if (!tierA.seg1Match || !tierA.seg2Match) {
88
+ throw new Error("TxLINE proof failed independent Tier-A verification");
89
+ }
90
+ return {
91
+ arg: toScoresProofArg(v),
92
+ raw: v,
93
+ rootsPda: pda,
94
+ epochDay,
95
+ proofTsSecs: Math.floor(v.summary.updateStats.minTimestamp / 1000),
96
+ values: { a: v.statToProve.value, b: v.statToProve2?.value ?? null },
97
+ tierA,
98
+ };
99
+ }
100
+ /** Latest score sequence for a fixture, from a snapshot. */
101
+ export async function latestSeq(http, fixtureId) {
102
+ const { data } = await http.get(`/scores/snapshot/${fixtureId}`, { params: { asOf: Date.now() } });
103
+ const rec = latestScoreUpdate(data, fixtureId);
104
+ return rec.Seq ?? rec.seq;
105
+ }
106
+ //# sourceMappingURL=proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.js","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { type Address, type Instruction } from "@solana/kit";
2
+ import { type ResolveMarketInstructionDataArgs } from "./generated/index.js";
3
+ import type { BuyTicketRequest, ArchivedTxlineScoresProofV3, CompileRulebookRequest, CompiledRulebook, CreateMarketRequest, MarketInstructions, MarketReferenceV1, MarketSnapshot, SlipClientConfig, TicketInstructions, TicketSnapshot } from "./public-types.js";
4
+ export declare const FEE_TREASURY_ADDRESS: Address<"DZqzfMTmFyDvhLWamA4qjiEUUzS8LoTZ6d2KMkXwsiXh">;
5
+ type ScoresProofArgs = Omit<ResolveMarketInstructionDataArgs, "discriminator">;
6
+ export declare class SlipCompilerError extends Error {
7
+ readonly code: string;
8
+ readonly status: number;
9
+ constructor(message: string, code: string, status: number);
10
+ }
11
+ export declare class SlipClient {
12
+ #private;
13
+ readonly config: Readonly<SlipClientConfig>;
14
+ constructor(config: SlipClientConfig);
15
+ supportsUnifiedMarkets(): Promise<boolean>;
16
+ compileRulebook(request: CompileRulebookRequest, signal?: AbortSignal): Promise<CompiledRulebook>;
17
+ marketAddress(creator: Address, id: bigint): Promise<Address>;
18
+ ticketAddress(market: Address, owner: Address, nonce: bigint): Promise<Address>;
19
+ createMarket(request: CreateMarketRequest): Promise<MarketInstructions>;
20
+ buyTicket(request: BuyTicketRequest): Promise<TicketInstructions>;
21
+ claimTicket(input: {
22
+ market: Address;
23
+ ticket: Address;
24
+ caller: Address;
25
+ }): Promise<readonly Instruction[]>;
26
+ claimRefund(input: {
27
+ market: Address;
28
+ ticket: Address;
29
+ caller: Address;
30
+ }): Promise<readonly Instruction[]>;
31
+ voidMarket(input: {
32
+ market: Address;
33
+ caller: Address;
34
+ }): readonly Instruction[];
35
+ resolveMarket(input: {
36
+ market: Address;
37
+ resolver: Address;
38
+ dailyScoresRoots: Address;
39
+ proof: ScoresProofArgs;
40
+ }): Promise<readonly Instruction[]>;
41
+ /** Resolve from TxLINE's archived `/stat-validation-v3` JSON without rewriting the proof. */
42
+ resolveMarketV3(input: {
43
+ market: Address;
44
+ resolver: Address;
45
+ dailyScoresRoots: Address;
46
+ proof: ArchivedTxlineScoresProofV3;
47
+ }): Promise<readonly Instruction[]>;
48
+ getMarket(marketAddress: Address): Promise<MarketSnapshot>;
49
+ getTicket(ticketAddress: Address): Promise<TicketSnapshot>;
50
+ listMarkets(): Promise<MarketSnapshot[]>;
51
+ listWalletTickets(owner: Address): Promise<TicketSnapshot[]>;
52
+ verifyReference(input: unknown): Promise<{
53
+ reference: MarketReferenceV1;
54
+ market: MarketSnapshot;
55
+ }>;
56
+ watchMarket(market: Address, listener: (snapshot: MarketSnapshot) => void, onError?: (error: Error) => void): () => void;
57
+ }
58
+ export declare function createSlipClient(config: SlipClientConfig): SlipClient;
59
+ export {};
60
+ //# sourceMappingURL=public-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-client.d.ts","sourceRoot":"","sources":["../src/public-client.ts"],"names":[],"mappings":"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"}