yosoku 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/accounts/filllog.d.ts +5 -0
  2. package/dist/accounts/filllog.d.ts.map +1 -0
  3. package/dist/accounts/filllog.js +30 -0
  4. package/dist/accounts/filllog.js.map +1 -0
  5. package/dist/accounts/index.d.ts +42 -0
  6. package/dist/accounts/index.d.ts.map +1 -0
  7. package/dist/accounts/index.js +81 -0
  8. package/dist/accounts/index.js.map +1 -0
  9. package/dist/accounts/market.d.ts +14 -0
  10. package/dist/accounts/market.d.ts.map +1 -0
  11. package/dist/accounts/market.js +104 -0
  12. package/dist/accounts/market.js.map +1 -0
  13. package/dist/accounts/marketinfo.d.ts +9 -0
  14. package/dist/accounts/marketinfo.d.ts.map +1 -0
  15. package/dist/accounts/marketinfo.js +29 -0
  16. package/dist/accounts/marketinfo.js.map +1 -0
  17. package/dist/accounts/order.d.ts +11 -0
  18. package/dist/accounts/order.d.ts.map +1 -0
  19. package/dist/accounts/order.js +50 -0
  20. package/dist/accounts/order.js.map +1 -0
  21. package/dist/accounts/orderbook.d.ts +5 -0
  22. package/dist/accounts/orderbook.d.ts.map +1 -0
  23. package/dist/accounts/orderbook.js +80 -0
  24. package/dist/accounts/orderbook.js.map +1 -0
  25. package/dist/accounts/position.d.ts +11 -0
  26. package/dist/accounts/position.d.ts.map +1 -0
  27. package/dist/accounts/position.js +48 -0
  28. package/dist/accounts/position.js.map +1 -0
  29. package/dist/accounts/resolution.d.ts +13 -0
  30. package/dist/accounts/resolution.d.ts.map +1 -0
  31. package/dist/accounts/resolution.js +91 -0
  32. package/dist/accounts/resolution.js.map +1 -0
  33. package/dist/client.d.ts +50 -0
  34. package/dist/client.d.ts.map +1 -0
  35. package/dist/client.js +63 -0
  36. package/dist/client.js.map +1 -0
  37. package/dist/constants.d.ts +28 -0
  38. package/dist/constants.d.ts.map +1 -0
  39. package/dist/constants.js +32 -0
  40. package/dist/constants.js.map +1 -0
  41. package/dist/errors.d.ts +85 -0
  42. package/dist/errors.d.ts.map +1 -0
  43. package/dist/errors.js +186 -0
  44. package/dist/errors.js.map +1 -0
  45. package/dist/events/index.d.ts +22 -0
  46. package/dist/events/index.d.ts.map +1 -0
  47. package/dist/events/index.js +78 -0
  48. package/dist/events/index.js.map +1 -0
  49. package/dist/events/parser.d.ts +4 -0
  50. package/dist/events/parser.d.ts.map +1 -0
  51. package/dist/events/parser.js +111 -0
  52. package/dist/events/parser.js.map +1 -0
  53. package/dist/events/types.d.ts +85 -0
  54. package/dist/events/types.d.ts.map +1 -0
  55. package/dist/events/types.js +3 -0
  56. package/dist/events/types.js.map +1 -0
  57. package/dist/idl/pred_market.d.ts +4809 -0
  58. package/dist/idl/pred_market.d.ts.map +1 -0
  59. package/dist/idl/pred_market.js +3 -0
  60. package/dist/idl/pred_market.js.map +1 -0
  61. package/dist/idl/pred_market.json +4802 -0
  62. package/dist/index.d.ts +15 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +47 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/instructions/admin.d.ts +20 -0
  67. package/dist/instructions/admin.d.ts.map +1 -0
  68. package/dist/instructions/admin.js +89 -0
  69. package/dist/instructions/admin.js.map +1 -0
  70. package/dist/instructions/index.d.ts +14 -0
  71. package/dist/instructions/index.d.ts.map +1 -0
  72. package/dist/instructions/index.js +18 -0
  73. package/dist/instructions/index.js.map +1 -0
  74. package/dist/instructions/market-creation.d.ts +48 -0
  75. package/dist/instructions/market-creation.d.ts.map +1 -0
  76. package/dist/instructions/market-creation.js +270 -0
  77. package/dist/instructions/market-creation.js.map +1 -0
  78. package/dist/instructions/market-info.d.ts +48 -0
  79. package/dist/instructions/market-info.d.ts.map +1 -0
  80. package/dist/instructions/market-info.js +138 -0
  81. package/dist/instructions/market-info.js.map +1 -0
  82. package/dist/instructions/positions.d.ts +42 -0
  83. package/dist/instructions/positions.d.ts.map +1 -0
  84. package/dist/instructions/positions.js +122 -0
  85. package/dist/instructions/positions.js.map +1 -0
  86. package/dist/instructions/resolution.d.ts +32 -0
  87. package/dist/instructions/resolution.d.ts.map +1 -0
  88. package/dist/instructions/resolution.js +107 -0
  89. package/dist/instructions/resolution.js.map +1 -0
  90. package/dist/instructions/trading.d.ts +81 -0
  91. package/dist/instructions/trading.d.ts.map +1 -0
  92. package/dist/instructions/trading.js +195 -0
  93. package/dist/instructions/trading.js.map +1 -0
  94. package/dist/instructions/vote-resolution.d.ts +20 -0
  95. package/dist/instructions/vote-resolution.d.ts.map +1 -0
  96. package/dist/instructions/vote-resolution.js +58 -0
  97. package/dist/instructions/vote-resolution.js.map +1 -0
  98. package/dist/pda.d.ts +11 -0
  99. package/dist/pda.d.ts.map +1 -0
  100. package/dist/pda.js +68 -0
  101. package/dist/pda.js.map +1 -0
  102. package/dist/price.d.ts +48 -0
  103. package/dist/price.d.ts.map +1 -0
  104. package/dist/price.js +90 -0
  105. package/dist/price.js.map +1 -0
  106. package/dist/types.d.ts +198 -0
  107. package/dist/types.d.ts.map +1 -0
  108. package/dist/types.js +92 -0
  109. package/dist/types.js.map +1 -0
  110. package/package.json +40 -0
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TradingModule = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const spl_token_1 = require("@solana/spl-token");
6
+ const types_1 = require("../types");
7
+ const pda_1 = require("../pda");
8
+ const constants_1 = require("../constants");
9
+ const market_1 = require("../accounts/market");
10
+ /** @internal */
11
+ function generateSeed() {
12
+ return Math.floor(Math.random() * 2000000000);
13
+ }
14
+ class TradingModule {
15
+ /** @internal */
16
+ constructor(program) {
17
+ this.program = program;
18
+ }
19
+ /** @internal */
20
+ async resolveMarket(address) {
21
+ const m = await (0, market_1.fetchMarket)(this.program, address);
22
+ if (!m)
23
+ throw new Error(`Market not found: ${address.toBase58()}`);
24
+ return m;
25
+ }
26
+ /** Place a limit bid (USDC-backed buy order) */
27
+ async limitBid(params) {
28
+ const index = params.index ?? 0;
29
+ const user = this.program.provider.publicKey;
30
+ const seed = params.seed ?? generateSeed();
31
+ const market = await this.resolveMarket(params.market);
32
+ const leg = market.legs[index];
33
+ const [orderPda] = (0, pda_1.getOrderPda)(this.program.programId, params.market, index, user, params.price, seed);
34
+ const [yesPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 0);
35
+ const [noPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 1);
36
+ const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
37
+ const [creatorVault] = (0, pda_1.getCreatorVaultPda)(this.program.programId, params.market);
38
+ const sig = await this.program.methods
39
+ .limitBid(index, (0, types_1.toAnchorSide)(params.side), params.price, params.usdcAmount, seed, params.matchExisting ?? true)
40
+ .accounts({
41
+ user,
42
+ market: params.market,
43
+ vault: leg.vault,
44
+ creatorVault,
45
+ yesOrderBook: leg.yesOrderBook,
46
+ noOrderBook: leg.noOrderBook,
47
+ yesFillLog: leg.yesFillLog,
48
+ noFillLog: leg.noFillLog,
49
+ userAta,
50
+ protocolTreasury: constants_1.PROTOCOL_USDC_ACCOUNT,
51
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
52
+ systemProgram: web3_js_1.SystemProgram.programId,
53
+ order: orderPda,
54
+ yesPosition: yesPos,
55
+ noPosition: noPos,
56
+ referralAccount: params.referralAccount ?? web3_js_1.SystemProgram.programId,
57
+ })
58
+ .rpc();
59
+ return { orderPda, signature: sig };
60
+ }
61
+ /** Place a limit ask (sell shares at a specific price) */
62
+ async limitAsk(params) {
63
+ const index = params.index ?? 0;
64
+ const user = this.program.provider.publicKey;
65
+ const seed = params.seed ?? generateSeed();
66
+ const market = await this.resolveMarket(params.market);
67
+ const leg = market.legs[index];
68
+ // The program's seeds constraint uses the price arg as-is;
69
+ // complement conversion happens inside the function body.
70
+ const [orderPda] = (0, pda_1.getOrderPda)(this.program.programId, params.market, index, user, params.price, seed);
71
+ const [yesPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 0);
72
+ const [noPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 1);
73
+ const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
74
+ const [creatorVault] = (0, pda_1.getCreatorVaultPda)(this.program.programId, params.market);
75
+ const sig = await this.program.methods
76
+ .limitAsk(index, (0, types_1.toAnchorSide)(params.side), params.price, params.shares, seed, params.matchExisting ?? true)
77
+ .accounts({
78
+ user,
79
+ market: params.market,
80
+ vault: leg.vault,
81
+ creatorVault,
82
+ yesOrderBook: leg.yesOrderBook,
83
+ noOrderBook: leg.noOrderBook,
84
+ yesFillLog: leg.yesFillLog,
85
+ noFillLog: leg.noFillLog,
86
+ userAta,
87
+ protocolTreasury: constants_1.PROTOCOL_USDC_ACCOUNT,
88
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
89
+ systemProgram: web3_js_1.SystemProgram.programId,
90
+ order: orderPda,
91
+ yesPosition: yesPos,
92
+ noPosition: noPos,
93
+ referralAccount: params.referralAccount ?? web3_js_1.SystemProgram.programId,
94
+ })
95
+ .rpc();
96
+ return { orderPda, signature: sig };
97
+ }
98
+ /** Place a covered bid (backed by USDC or existing shares) */
99
+ async coveredBid(params) {
100
+ const index = params.index ?? 0;
101
+ const user = this.program.provider.publicKey;
102
+ const seed = params.seed ?? generateSeed();
103
+ const market = await this.resolveMarket(params.market);
104
+ const leg = market.legs[index];
105
+ const [orderPda] = (0, pda_1.getOrderPda)(this.program.programId, params.market, index, user, params.price, seed);
106
+ const [yesPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 0);
107
+ const [noPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 1);
108
+ const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
109
+ const [creatorVault] = (0, pda_1.getCreatorVaultPda)(this.program.programId, params.market);
110
+ const sig = await this.program.methods
111
+ .coveredBid(index, (0, types_1.toAnchorSide)(params.side), params.price, params.shares, seed, (0, types_1.toAnchorCoveredBy)(params.coveredBy), params.matchExisting ?? true)
112
+ .accounts({
113
+ user,
114
+ market: params.market,
115
+ vault: leg.vault,
116
+ creatorVault,
117
+ yesOrderBook: leg.yesOrderBook,
118
+ noOrderBook: leg.noOrderBook,
119
+ yesFillLog: leg.yesFillLog,
120
+ noFillLog: leg.noFillLog,
121
+ userAta,
122
+ protocolTreasury: constants_1.PROTOCOL_USDC_ACCOUNT,
123
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
124
+ systemProgram: web3_js_1.SystemProgram.programId,
125
+ order: orderPda,
126
+ yesPosition: yesPos,
127
+ noPosition: noPos,
128
+ referralAccount: params.referralAccount ?? web3_js_1.SystemProgram.programId,
129
+ })
130
+ .rpc();
131
+ return { orderPda, signature: sig };
132
+ }
133
+ /** Execute a market buy (immediate execution) */
134
+ async marketBuy(params) {
135
+ const index = params.index ?? 0;
136
+ const user = this.program.provider.publicKey;
137
+ const market = await this.resolveMarket(params.market);
138
+ const leg = market.legs[index];
139
+ const sideNum = (0, types_1.toSideNumber)(params.side);
140
+ const [userPosition] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, sideNum);
141
+ const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
142
+ const [creatorVault] = (0, pda_1.getCreatorVaultPda)(this.program.programId, params.market);
143
+ return this.program.methods
144
+ .marketBuy(index, (0, types_1.toAnchorSide)(params.side), params.maxUsdc, params.minShares)
145
+ .accounts({
146
+ user,
147
+ market: params.market,
148
+ vault: leg.vault,
149
+ yesOrderBook: leg.yesOrderBook,
150
+ noOrderBook: leg.noOrderBook,
151
+ yesFillLog: leg.yesFillLog,
152
+ noFillLog: leg.noFillLog,
153
+ userAta,
154
+ creatorVault,
155
+ protocolTreasury: constants_1.PROTOCOL_USDC_ACCOUNT,
156
+ referralAccount: params.referralAccount ?? web3_js_1.SystemProgram.programId,
157
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
158
+ systemProgram: web3_js_1.SystemProgram.programId,
159
+ userPosition,
160
+ })
161
+ .rpc();
162
+ }
163
+ /** Execute a market sell (immediate execution) */
164
+ async marketSell(params) {
165
+ const index = params.index ?? 0;
166
+ const user = this.program.provider.publicKey;
167
+ const market = await this.resolveMarket(params.market);
168
+ const leg = market.legs[index];
169
+ const sideNum = (0, types_1.toSideNumber)(params.side);
170
+ const [userPosition] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, sideNum);
171
+ const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
172
+ const [creatorVault] = (0, pda_1.getCreatorVaultPda)(this.program.programId, params.market);
173
+ return this.program.methods
174
+ .marketSell(index, (0, types_1.toAnchorSide)(params.side), params.shares, params.minUsdc)
175
+ .accounts({
176
+ user,
177
+ market: params.market,
178
+ vault: leg.vault,
179
+ yesOrderBook: leg.yesOrderBook,
180
+ noOrderBook: leg.noOrderBook,
181
+ yesFillLog: leg.yesFillLog,
182
+ noFillLog: leg.noFillLog,
183
+ userAta,
184
+ creatorVault,
185
+ protocolTreasury: constants_1.PROTOCOL_USDC_ACCOUNT,
186
+ referralAccount: params.referralAccount ?? web3_js_1.SystemProgram.programId,
187
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
188
+ systemProgram: web3_js_1.SystemProgram.programId,
189
+ userPosition,
190
+ })
191
+ .rpc();
192
+ }
193
+ }
194
+ exports.TradingModule = TradingModule;
195
+ //# sourceMappingURL=trading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trading.js","sourceRoot":"","sources":["../../src/instructions/trading.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ export interface VoteResolutionParams {
5
+ market: PublicKey;
6
+ index?: number;
7
+ vote: "yes" | "no";
8
+ }
9
+ export declare class VoteResolutionModule {
10
+ private readonly program;
11
+ /** @internal */
12
+ constructor(program: Program<PredMarket>);
13
+ /** @internal */
14
+ private getLeg;
15
+ /** Cast a vote on market resolution (WalletVoteResolver only) */
16
+ voteResolution(params: VoteResolutionParams): Promise<string>;
17
+ /** Finalize vote resolution after deadline (anyone can call) */
18
+ finalizeVoteResolution(market: PublicKey, index?: number): Promise<string>;
19
+ }
20
+ //# sourceMappingURL=vote-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote-resolution.d.ts","sourceRoot":"","sources":["../../src/instructions/vote-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAM,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,gBAAgB;gBACa,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IAEzD,gBAAgB;YACF,MAAM;IAMpB,iEAAiE;IAC3D,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBnE,gEAAgE;IAC1D,sBAAsB,CAC1B,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,CAAC;CAoBnB"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VoteResolutionModule = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const pda_1 = require("../pda");
6
+ const market_1 = require("../accounts/market");
7
+ class VoteResolutionModule {
8
+ /** @internal */
9
+ constructor(program) {
10
+ this.program = program;
11
+ }
12
+ /** @internal */
13
+ async getLeg(market, index) {
14
+ const m = await (0, market_1.fetchMarket)(this.program, market);
15
+ if (!m)
16
+ throw new Error(`Market not found: ${market.toBase58()}`);
17
+ return { market: m, leg: m.legs[index] };
18
+ }
19
+ /** Cast a vote on market resolution (WalletVoteResolver only) */
20
+ async voteResolution(params) {
21
+ const index = params.index ?? 0;
22
+ const user = this.program.provider.publicKey;
23
+ const { market, leg } = await this.getLeg(params.market, index);
24
+ const [voteStatePda] = (0, pda_1.getVoteStatePda)(this.program.programId, params.market, index);
25
+ const vote = params.vote === "yes" ? 1 : 2;
26
+ return this.program.methods
27
+ .voteResolution(index, { vote })
28
+ .accounts({
29
+ voter: user,
30
+ market: params.market,
31
+ marketInfo: market.marketInfo,
32
+ yesOrderBook: leg.yesOrderBook,
33
+ noOrderBook: leg.noOrderBook,
34
+ voteState: voteStatePda,
35
+ systemProgram: web3_js_1.SystemProgram.programId,
36
+ })
37
+ .rpc();
38
+ }
39
+ /** Finalize vote resolution after deadline (anyone can call) */
40
+ async finalizeVoteResolution(market, index = 0) {
41
+ const { market: mkt, leg } = await this.getLeg(market, index);
42
+ const [voteStatePda] = (0, pda_1.getVoteStatePda)(this.program.programId, market, index);
43
+ return this.program.methods
44
+ .finalizeVoteResolution(index)
45
+ .accounts({
46
+ payer: this.program.provider.publicKey,
47
+ market,
48
+ marketInfo: mkt.marketInfo,
49
+ yesOrderBook: leg.yesOrderBook,
50
+ noOrderBook: leg.noOrderBook,
51
+ voteState: voteStatePda,
52
+ systemProgram: web3_js_1.SystemProgram.programId,
53
+ })
54
+ .rpc();
55
+ }
56
+ }
57
+ exports.VoteResolutionModule = VoteResolutionModule;
58
+ //# sourceMappingURL=vote-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote-resolution.js","sourceRoot":"","sources":["../../src/instructions/vote-resolution.ts"],"names":[],"mappings":";;;AACA,6CAA2D;AAE3D,gCAAyC;AACzC,+CAAiD;AAQjD,MAAa,oBAAoB;IAC/B,gBAAgB;IAChB,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAE7D,gBAAgB;IACR,KAAK,CAAC,MAAM,CAAC,MAAiB,EAAE,KAAa;QACnD,MAAM,CAAC,GAAG,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,cAAc,CAAC,MAA4B;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAU,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEhE,MAAM,CAAC,YAAY,CAAC,GAAG,IAAA,qBAAe,EACpC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAC7C,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;aACxB,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAS,CAAC;aACtC,QAAQ,CAAC;YACR,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,YAAY;YACvB,aAAa,EAAE,uBAAa,CAAC,SAAS;SACvC,CAAC;aACD,GAAG,EAAE,CAAC;IACX,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,sBAAsB,CAC1B,MAAiB,EACjB,QAAgB,CAAC;QAEjB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE9D,MAAM,CAAC,YAAY,CAAC,GAAG,IAAA,qBAAe,EACpC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CACtC,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;aACxB,sBAAsB,CAAC,KAAK,CAAC;aAC7B,QAAQ,CAAC;YACR,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAU;YACvC,MAAM;YACN,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,YAAY;YACvB,aAAa,EAAE,uBAAa,CAAC,SAAS;SACvC,CAAC;aACD,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AA7DD,oDA6DC"}
package/dist/pda.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function getMarketPda(programId: PublicKey, marketId: bigint): [PublicKey, number];
3
+ export declare function getPositionPda(programId: PublicKey, market: PublicKey, index: number, user: PublicKey, side: number): [PublicKey, number];
4
+ export declare function getOrderPda(programId: PublicKey, market: PublicKey, index: number, user: PublicKey, price: number, seed: number): [PublicKey, number];
5
+ export declare function getVaultPda(programId: PublicKey, market: PublicKey, index: number): [PublicKey, number];
6
+ export declare function getCreatorVaultPda(programId: PublicKey, market: PublicKey): [PublicKey, number];
7
+ export declare function getResolutionProposalPda(programId: PublicKey, market: PublicKey, index: number): [PublicKey, number];
8
+ export declare function getBondVaultPda(programId: PublicKey, market: PublicKey, index: number): [PublicKey, number];
9
+ export declare function getFillLogPda(programId: PublicKey, market: PublicKey, index: number, side: number): [PublicKey, number];
10
+ export declare function getVoteStatePda(programId: PublicKey, market: PublicKey, index: number): [PublicKey, number];
11
+ //# sourceMappingURL=pda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,GACf,CAAC,SAAS,EAAE,MAAM,CAAC,CAOrB;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GACX,CAAC,SAAS,EAAE,MAAM,CAAC,CAWrB;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,CAAC,SAAS,EAAE,MAAM,CAAC,CAgBrB;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,GAChB,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,CAAC,SAAS,EAAE,MAAM,CAAC,CAUrB;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB"}
package/dist/pda.js ADDED
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarketPda = getMarketPda;
4
+ exports.getPositionPda = getPositionPda;
5
+ exports.getOrderPda = getOrderPda;
6
+ exports.getVaultPda = getVaultPda;
7
+ exports.getCreatorVaultPda = getCreatorVaultPda;
8
+ exports.getResolutionProposalPda = getResolutionProposalPda;
9
+ exports.getBondVaultPda = getBondVaultPda;
10
+ exports.getFillLogPda = getFillLogPda;
11
+ exports.getVoteStatePda = getVoteStatePda;
12
+ const web3_js_1 = require("@solana/web3.js");
13
+ function getMarketPda(programId, marketId) {
14
+ const buffer = Buffer.alloc(8);
15
+ buffer.writeBigUInt64LE(marketId);
16
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("market"), buffer], programId);
17
+ }
18
+ function getPositionPda(programId, market, index, user, side) {
19
+ return web3_js_1.PublicKey.findProgramAddressSync([
20
+ Buffer.from("position"),
21
+ market.toBuffer(),
22
+ Buffer.from([index]),
23
+ user.toBuffer(),
24
+ Buffer.from([side]),
25
+ ], programId);
26
+ }
27
+ function getOrderPda(programId, market, index, user, price, seed) {
28
+ const priceBuffer = Buffer.alloc(2);
29
+ priceBuffer.writeUInt16LE(price);
30
+ const seedBuffer = Buffer.alloc(4);
31
+ seedBuffer.writeUInt32LE(seed);
32
+ return web3_js_1.PublicKey.findProgramAddressSync([
33
+ Buffer.from("order"),
34
+ market.toBuffer(),
35
+ Buffer.from([index]),
36
+ user.toBuffer(),
37
+ priceBuffer,
38
+ seedBuffer,
39
+ ], programId);
40
+ }
41
+ function getVaultPda(programId, market, index) {
42
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("vault"), market.toBuffer(), Buffer.from([index])], programId);
43
+ }
44
+ function getCreatorVaultPda(programId, market) {
45
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("creator-vault"), market.toBuffer()], programId);
46
+ }
47
+ function getResolutionProposalPda(programId, market, index) {
48
+ return web3_js_1.PublicKey.findProgramAddressSync([
49
+ Buffer.from("resolution_proposal"),
50
+ market.toBuffer(),
51
+ Buffer.from([index]),
52
+ ], programId);
53
+ }
54
+ function getBondVaultPda(programId, market, index) {
55
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("bond_vault"), market.toBuffer(), Buffer.from([index])], programId);
56
+ }
57
+ function getFillLogPda(programId, market, index, side) {
58
+ return web3_js_1.PublicKey.findProgramAddressSync([
59
+ Buffer.from("fill_log"),
60
+ market.toBuffer(),
61
+ Buffer.from([index]),
62
+ Buffer.from([side]),
63
+ ], programId);
64
+ }
65
+ function getVoteStatePda(programId, market, index) {
66
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("vote_state"), market.toBuffer(), Buffer.from([index])], programId);
67
+ }
68
+ //# sourceMappingURL=pda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.js","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ /** Full price: YES + NO = 1000 ticks = $1.00 */
3
+ export declare const FULL_PRICE = 1000;
4
+ /** Half price: $0.50 (used for split outcomes) */
5
+ export declare const HALF_PRICE = 500;
6
+ /**
7
+ * Cost in USDC base units for one share at a given tick price.
8
+ * E.g., tick 500 = $0.50 = 500,000 base units per share.
9
+ */
10
+ export declare function costPerShare(priceTick: number): bigint;
11
+ /**
12
+ * Calculate how many shares can be bought with a given USDC amount at a given tick.
13
+ */
14
+ export declare function usdcToShares(usdcBaseUnits: bigint, priceTick: number): bigint;
15
+ /**
16
+ * Calculate the USDC cost for a given number of shares at a given tick.
17
+ */
18
+ export declare function sharesToUsdc(shares: bigint, priceTick: number): bigint;
19
+ /**
20
+ * Complement price: if YES is at price X, NO is at (1000 - X).
21
+ * YES + NO always equals $1.00.
22
+ */
23
+ export declare function complementPrice(priceTick: number): number;
24
+ /**
25
+ * Convert a tick price (1-999) to a dollar amount.
26
+ * E.g., 500 -> 0.50
27
+ */
28
+ export declare function tickToPrice(priceTick: number): number;
29
+ /**
30
+ * Convert a dollar amount to a tick price.
31
+ * E.g., 0.50 -> 500
32
+ */
33
+ export declare function priceToTick(price: number): number;
34
+ /**
35
+ * Check if a price tick is valid (between 1 and 999 inclusive).
36
+ */
37
+ export declare function isValidPrice(priceTick: number): boolean;
38
+ /**
39
+ * Format USDC base units to a display string.
40
+ * E.g., 1_500_000n -> "$1.50"
41
+ */
42
+ export declare function formatUsdc(baseUnits: bigint | BN): string;
43
+ /**
44
+ * Parse a display amount to USDC base units.
45
+ * E.g., "1.50" or 1.5 -> 1_500_000n
46
+ */
47
+ export declare function parseUsdc(displayAmount: string | number): bigint;
48
+ //# sourceMappingURL=price.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../src/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAGvC,gDAAgD;AAChD,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B,kDAAkD;AAClD,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,GAAG,MAAM,CAQzD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAUhE"}
package/dist/price.js ADDED
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HALF_PRICE = exports.FULL_PRICE = void 0;
4
+ exports.costPerShare = costPerShare;
5
+ exports.usdcToShares = usdcToShares;
6
+ exports.sharesToUsdc = sharesToUsdc;
7
+ exports.complementPrice = complementPrice;
8
+ exports.tickToPrice = tickToPrice;
9
+ exports.priceToTick = priceToTick;
10
+ exports.isValidPrice = isValidPrice;
11
+ exports.formatUsdc = formatUsdc;
12
+ exports.parseUsdc = parseUsdc;
13
+ const constants_1 = require("./constants");
14
+ /** Full price: YES + NO = 1000 ticks = $1.00 */
15
+ exports.FULL_PRICE = 1000;
16
+ /** Half price: $0.50 (used for split outcomes) */
17
+ exports.HALF_PRICE = 500;
18
+ /**
19
+ * Cost in USDC base units for one share at a given tick price.
20
+ * E.g., tick 500 = $0.50 = 500,000 base units per share.
21
+ */
22
+ function costPerShare(priceTick) {
23
+ return BigInt(priceTick) * BigInt(1000);
24
+ }
25
+ /**
26
+ * Calculate how many shares can be bought with a given USDC amount at a given tick.
27
+ */
28
+ function usdcToShares(usdcBaseUnits, priceTick) {
29
+ return usdcBaseUnits / costPerShare(priceTick);
30
+ }
31
+ /**
32
+ * Calculate the USDC cost for a given number of shares at a given tick.
33
+ */
34
+ function sharesToUsdc(shares, priceTick) {
35
+ return shares * costPerShare(priceTick);
36
+ }
37
+ /**
38
+ * Complement price: if YES is at price X, NO is at (1000 - X).
39
+ * YES + NO always equals $1.00.
40
+ */
41
+ function complementPrice(priceTick) {
42
+ return exports.FULL_PRICE - priceTick;
43
+ }
44
+ /**
45
+ * Convert a tick price (1-999) to a dollar amount.
46
+ * E.g., 500 -> 0.50
47
+ */
48
+ function tickToPrice(priceTick) {
49
+ return priceTick / exports.FULL_PRICE;
50
+ }
51
+ /**
52
+ * Convert a dollar amount to a tick price.
53
+ * E.g., 0.50 -> 500
54
+ */
55
+ function priceToTick(price) {
56
+ return Math.round(price * exports.FULL_PRICE);
57
+ }
58
+ /**
59
+ * Check if a price tick is valid (between 1 and 999 inclusive).
60
+ */
61
+ function isValidPrice(priceTick) {
62
+ return Number.isInteger(priceTick) && priceTick >= 1 && priceTick <= 999;
63
+ }
64
+ /**
65
+ * Format USDC base units to a display string.
66
+ * E.g., 1_500_000n -> "$1.50"
67
+ */
68
+ function formatUsdc(baseUnits) {
69
+ const units = typeof baseUnits === "bigint" ? baseUnits : BigInt(baseUnits.toString());
70
+ const divisor = BigInt(10 ** constants_1.USDC_DECIMALS);
71
+ const whole = units / divisor;
72
+ const frac = units % divisor;
73
+ const fracStr = frac.toString().padStart(constants_1.USDC_DECIMALS, "0").slice(0, 2);
74
+ return `$${whole}.${fracStr}`;
75
+ }
76
+ /**
77
+ * Parse a display amount to USDC base units.
78
+ * E.g., "1.50" or 1.5 -> 1_500_000n
79
+ */
80
+ function parseUsdc(displayAmount) {
81
+ const str = typeof displayAmount === "string"
82
+ ? displayAmount.replace("$", "")
83
+ : displayAmount.toString();
84
+ const parts = str.split(".");
85
+ const whole = BigInt(parts[0] || "0");
86
+ const fracStr = (parts[1] || "0").padEnd(constants_1.USDC_DECIMALS, "0").slice(0, constants_1.USDC_DECIMALS);
87
+ const frac = BigInt(fracStr);
88
+ return whole * BigInt(10 ** constants_1.USDC_DECIMALS) + frac;
89
+ }
90
+ //# sourceMappingURL=price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price.js","sourceRoot":"","sources":["../src/price.ts"],"names":[],"mappings":";;;AAaA,oCAEC;AAKD,oCAEC;AAKD,oCAEC;AAMD,0CAEC;AAMD,kCAEC;AAMD,kCAEC;AAKD,oCAEC;AAMD,gCAQC;AAMD,8BAUC;AAzFD,2CAA4C;AAE5C,gDAAgD;AACnC,QAAA,UAAU,GAAG,IAAI,CAAC;AAE/B,kDAAkD;AACrC,QAAA,UAAU,GAAG,GAAG,CAAC;AAE9B;;;GAGG;AACH,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,aAAqB,EAAE,SAAiB;IACnE,OAAO,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,MAAc,EAAE,SAAiB;IAC5D,OAAO,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,SAAiB;IAC/C,OAAO,kBAAU,GAAG,SAAS,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,SAAiB;IAC3C,OAAO,SAAS,GAAG,kBAAU,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAU,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,GAAG,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,SAAsB;IAC/C,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,yBAAa,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAa,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,aAA8B;IACtD,MAAM,GAAG,GACP,OAAO,aAAa,KAAK,QAAQ;QAC/B,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAChC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,yBAAa,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAa,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,yBAAa,CAAC,GAAG,IAAI,CAAC;AACpD,CAAC"}