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.
- package/dist/accounts/filllog.d.ts +5 -0
- package/dist/accounts/filllog.d.ts.map +1 -0
- package/dist/accounts/filllog.js +30 -0
- package/dist/accounts/filllog.js.map +1 -0
- package/dist/accounts/index.d.ts +42 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +81 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/market.d.ts +14 -0
- package/dist/accounts/market.d.ts.map +1 -0
- package/dist/accounts/market.js +104 -0
- package/dist/accounts/market.js.map +1 -0
- package/dist/accounts/marketinfo.d.ts +9 -0
- package/dist/accounts/marketinfo.d.ts.map +1 -0
- package/dist/accounts/marketinfo.js +29 -0
- package/dist/accounts/marketinfo.js.map +1 -0
- package/dist/accounts/order.d.ts +11 -0
- package/dist/accounts/order.d.ts.map +1 -0
- package/dist/accounts/order.js +50 -0
- package/dist/accounts/order.js.map +1 -0
- package/dist/accounts/orderbook.d.ts +5 -0
- package/dist/accounts/orderbook.d.ts.map +1 -0
- package/dist/accounts/orderbook.js +80 -0
- package/dist/accounts/orderbook.js.map +1 -0
- package/dist/accounts/position.d.ts +11 -0
- package/dist/accounts/position.d.ts.map +1 -0
- package/dist/accounts/position.js +48 -0
- package/dist/accounts/position.js.map +1 -0
- package/dist/accounts/resolution.d.ts +13 -0
- package/dist/accounts/resolution.d.ts.map +1 -0
- package/dist/accounts/resolution.js +91 -0
- package/dist/accounts/resolution.js.map +1 -0
- package/dist/client.d.ts +50 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +63 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +28 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +32 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +85 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +186 -0
- package/dist/errors.js.map +1 -0
- package/dist/events/index.d.ts +22 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +78 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/parser.d.ts +4 -0
- package/dist/events/parser.d.ts.map +1 -0
- package/dist/events/parser.js +111 -0
- package/dist/events/parser.js.map +1 -0
- package/dist/events/types.d.ts +85 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +3 -0
- package/dist/events/types.js.map +1 -0
- package/dist/idl/pred_market.d.ts +4809 -0
- package/dist/idl/pred_market.d.ts.map +1 -0
- package/dist/idl/pred_market.js +3 -0
- package/dist/idl/pred_market.js.map +1 -0
- package/dist/idl/pred_market.json +4802 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions/admin.d.ts +20 -0
- package/dist/instructions/admin.d.ts.map +1 -0
- package/dist/instructions/admin.js +89 -0
- package/dist/instructions/admin.js.map +1 -0
- package/dist/instructions/index.d.ts +14 -0
- package/dist/instructions/index.d.ts.map +1 -0
- package/dist/instructions/index.js +18 -0
- package/dist/instructions/index.js.map +1 -0
- package/dist/instructions/market-creation.d.ts +48 -0
- package/dist/instructions/market-creation.d.ts.map +1 -0
- package/dist/instructions/market-creation.js +270 -0
- package/dist/instructions/market-creation.js.map +1 -0
- package/dist/instructions/market-info.d.ts +48 -0
- package/dist/instructions/market-info.d.ts.map +1 -0
- package/dist/instructions/market-info.js +138 -0
- package/dist/instructions/market-info.js.map +1 -0
- package/dist/instructions/positions.d.ts +42 -0
- package/dist/instructions/positions.d.ts.map +1 -0
- package/dist/instructions/positions.js +122 -0
- package/dist/instructions/positions.js.map +1 -0
- package/dist/instructions/resolution.d.ts +32 -0
- package/dist/instructions/resolution.d.ts.map +1 -0
- package/dist/instructions/resolution.js +107 -0
- package/dist/instructions/resolution.js.map +1 -0
- package/dist/instructions/trading.d.ts +81 -0
- package/dist/instructions/trading.d.ts.map +1 -0
- package/dist/instructions/trading.js +195 -0
- package/dist/instructions/trading.js.map +1 -0
- package/dist/instructions/vote-resolution.d.ts +20 -0
- package/dist/instructions/vote-resolution.d.ts.map +1 -0
- package/dist/instructions/vote-resolution.js +58 -0
- package/dist/instructions/vote-resolution.js.map +1 -0
- package/dist/pda.d.ts +11 -0
- package/dist/pda.d.ts.map +1 -0
- package/dist/pda.js +68 -0
- package/dist/pda.js.map +1 -0
- package/dist/price.d.ts +48 -0
- package/dist/price.d.ts.map +1 -0
- package/dist/price.js +90 -0
- package/dist/price.js.map +1 -0
- package/dist/types.d.ts +198 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +92 -0
- package/dist/types.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MarketInfoModule = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
class MarketInfoModule {
|
|
7
|
+
/** @internal */
|
|
8
|
+
constructor(program) {
|
|
9
|
+
this.program = program;
|
|
10
|
+
}
|
|
11
|
+
/** Create a new MarketInfo account */
|
|
12
|
+
async createMarketInfo(params) {
|
|
13
|
+
const keypair = web3_js_1.Keypair.generate();
|
|
14
|
+
const sig = await this.program.methods
|
|
15
|
+
.createMarketInfo((0, types_1.toAnchorMarketInfoType)(params.marketType), (0, types_1.toAnchorResolverType)(params.resolverType))
|
|
16
|
+
.accounts({
|
|
17
|
+
marketInfo: keypair.publicKey,
|
|
18
|
+
creator: this.program.provider.publicKey,
|
|
19
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
20
|
+
})
|
|
21
|
+
.signers([keypair])
|
|
22
|
+
.rpc();
|
|
23
|
+
return {
|
|
24
|
+
marketInfoPda: keypair.publicKey,
|
|
25
|
+
keypair,
|
|
26
|
+
signature: sig,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a MarketInfo and populate it with text fields.
|
|
31
|
+
* Convenience method that combines createMarketInfo + set text fields.
|
|
32
|
+
*/
|
|
33
|
+
async createPopulatedMarketInfo(params) {
|
|
34
|
+
const result = await this.createMarketInfo({
|
|
35
|
+
marketType: params.marketType,
|
|
36
|
+
resolverType: params.resolverType,
|
|
37
|
+
});
|
|
38
|
+
if (params.marketQuestion) {
|
|
39
|
+
await this.setMarketQuestion(result.marketInfoPda, params.marketQuestion);
|
|
40
|
+
}
|
|
41
|
+
if (params.description) {
|
|
42
|
+
await this.setDescription(result.marketInfoPda, params.description);
|
|
43
|
+
}
|
|
44
|
+
if (params.rules) {
|
|
45
|
+
await this.setRules(result.marketInfoPda, params.rules);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/** Set the market question (replaces existing) */
|
|
50
|
+
async setMarketQuestion(marketInfo, question) {
|
|
51
|
+
return this.program.methods
|
|
52
|
+
.setMarketQuestion(question)
|
|
53
|
+
.accounts({
|
|
54
|
+
marketInfo,
|
|
55
|
+
authority: this.program.provider.publicKey,
|
|
56
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
57
|
+
})
|
|
58
|
+
.rpc();
|
|
59
|
+
}
|
|
60
|
+
/** Append to the market question */
|
|
61
|
+
async appendMarketQuestion(marketInfo, chunk) {
|
|
62
|
+
return this.program.methods
|
|
63
|
+
.appendMarketQuestion(chunk)
|
|
64
|
+
.accounts({
|
|
65
|
+
marketInfo,
|
|
66
|
+
authority: this.program.provider.publicKey,
|
|
67
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
68
|
+
})
|
|
69
|
+
.rpc();
|
|
70
|
+
}
|
|
71
|
+
/** Set the description (replaces existing) */
|
|
72
|
+
async setDescription(marketInfo, description) {
|
|
73
|
+
return this.program.methods
|
|
74
|
+
.setDescription(description)
|
|
75
|
+
.accounts({
|
|
76
|
+
marketInfo,
|
|
77
|
+
authority: this.program.provider.publicKey,
|
|
78
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
79
|
+
})
|
|
80
|
+
.rpc();
|
|
81
|
+
}
|
|
82
|
+
/** Append to the description */
|
|
83
|
+
async appendDescription(marketInfo, chunk) {
|
|
84
|
+
return this.program.methods
|
|
85
|
+
.appendDescription(chunk)
|
|
86
|
+
.accounts({
|
|
87
|
+
marketInfo,
|
|
88
|
+
authority: this.program.provider.publicKey,
|
|
89
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
90
|
+
})
|
|
91
|
+
.rpc();
|
|
92
|
+
}
|
|
93
|
+
/** Set the rules (replaces existing) */
|
|
94
|
+
async setRules(marketInfo, rules) {
|
|
95
|
+
return this.program.methods
|
|
96
|
+
.setRules(rules)
|
|
97
|
+
.accounts({
|
|
98
|
+
marketInfo,
|
|
99
|
+
authority: this.program.provider.publicKey,
|
|
100
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
101
|
+
})
|
|
102
|
+
.rpc();
|
|
103
|
+
}
|
|
104
|
+
/** Append to the rules */
|
|
105
|
+
async appendRules(marketInfo, chunk) {
|
|
106
|
+
return this.program.methods
|
|
107
|
+
.appendRules(chunk)
|
|
108
|
+
.accounts({
|
|
109
|
+
marketInfo,
|
|
110
|
+
authority: this.program.provider.publicKey,
|
|
111
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
112
|
+
})
|
|
113
|
+
.rpc();
|
|
114
|
+
}
|
|
115
|
+
/** Set the market type */
|
|
116
|
+
async setMarketType(marketInfo, marketType) {
|
|
117
|
+
return this.program.methods
|
|
118
|
+
.setMarketType((0, types_1.toAnchorMarketInfoType)(marketType))
|
|
119
|
+
.accounts({
|
|
120
|
+
marketInfo,
|
|
121
|
+
authority: this.program.provider.publicKey,
|
|
122
|
+
})
|
|
123
|
+
.rpc();
|
|
124
|
+
}
|
|
125
|
+
/** Set the resolver type */
|
|
126
|
+
async setResolverType(marketInfo, resolverType) {
|
|
127
|
+
return this.program.methods
|
|
128
|
+
.setResolverType((0, types_1.toAnchorResolverType)(resolverType))
|
|
129
|
+
.accounts({
|
|
130
|
+
marketInfo,
|
|
131
|
+
authority: this.program.provider.publicKey,
|
|
132
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
133
|
+
})
|
|
134
|
+
.rpc();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.MarketInfoModule = MarketInfoModule;
|
|
138
|
+
//# sourceMappingURL=market-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-info.js","sourceRoot":"","sources":["../../src/instructions/market-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Program, BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { PredMarket } from "../idl/pred_market";
|
|
4
|
+
import { Side } from "../types";
|
|
5
|
+
export interface ClaimPositionParams {
|
|
6
|
+
market: PublicKey;
|
|
7
|
+
index?: number;
|
|
8
|
+
orderPda: PublicKey;
|
|
9
|
+
orderSide: Side;
|
|
10
|
+
}
|
|
11
|
+
export interface MergeSharesParams {
|
|
12
|
+
market: PublicKey;
|
|
13
|
+
index?: number;
|
|
14
|
+
/** Number of YES+NO pairs to merge (receives $1.00 per pair) */
|
|
15
|
+
amount: BN;
|
|
16
|
+
}
|
|
17
|
+
export interface CancelOrderParams {
|
|
18
|
+
market: PublicKey;
|
|
19
|
+
index?: number;
|
|
20
|
+
orderPda: PublicKey;
|
|
21
|
+
}
|
|
22
|
+
export interface RedeemPositionParams {
|
|
23
|
+
market: PublicKey;
|
|
24
|
+
index?: number;
|
|
25
|
+
side: Side;
|
|
26
|
+
}
|
|
27
|
+
export declare class PositionModule {
|
|
28
|
+
private readonly program;
|
|
29
|
+
/** @internal */
|
|
30
|
+
constructor(program: Program<PredMarket>);
|
|
31
|
+
/** @internal */
|
|
32
|
+
private getLeg;
|
|
33
|
+
/** Claim filled shares from a limit order */
|
|
34
|
+
claimPosition(params: ClaimPositionParams): Promise<string>;
|
|
35
|
+
/** Merge equal YES + NO shares back into USDC ($1.00 per pair) */
|
|
36
|
+
mergeShares(params: MergeSharesParams): Promise<string>;
|
|
37
|
+
/** Cancel an unfilled limit order */
|
|
38
|
+
cancelOrder(params: CancelOrderParams): Promise<string>;
|
|
39
|
+
/** Redeem a position after market resolution */
|
|
40
|
+
redeemPosition(params: RedeemPositionParams): Promise<string>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=positions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positions.d.ts","sourceRoot":"","sources":["../../src/instructions/positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAK3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAgB,MAAM,UAAU,CAAC;AAK9C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,EAAE,EAAE,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,qBAAa,cAAc;IAEb,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,gBAAgB;gBACa,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IAEzD,gBAAgB;YACF,MAAM;IAMpB,6CAA6C;IACvC,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BjE,kEAAkE;IAC5D,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB7D,qCAAqC;IAC/B,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B7D,gDAAgD;IAC1C,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBpE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PositionModule = 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
|
+
class PositionModule {
|
|
11
|
+
/** @internal */
|
|
12
|
+
constructor(program) {
|
|
13
|
+
this.program = program;
|
|
14
|
+
}
|
|
15
|
+
/** @internal */
|
|
16
|
+
async getLeg(market, index) {
|
|
17
|
+
const m = await (0, market_1.fetchMarket)(this.program, market);
|
|
18
|
+
if (!m)
|
|
19
|
+
throw new Error(`Market not found: ${market.toBase58()}`);
|
|
20
|
+
return m.legs[index];
|
|
21
|
+
}
|
|
22
|
+
/** Claim filled shares from a limit order */
|
|
23
|
+
async claimPosition(params) {
|
|
24
|
+
const index = params.index ?? 0;
|
|
25
|
+
const user = this.program.provider.publicKey;
|
|
26
|
+
const leg = await this.getLeg(params.market, index);
|
|
27
|
+
const sideNum = (0, types_1.toSideNumber)(params.orderSide);
|
|
28
|
+
const [userPosition] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, sideNum);
|
|
29
|
+
const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
|
|
30
|
+
return this.program.methods
|
|
31
|
+
.claimPosition(index)
|
|
32
|
+
.accounts({
|
|
33
|
+
user,
|
|
34
|
+
market: params.market,
|
|
35
|
+
vault: leg.vault,
|
|
36
|
+
yesOrderBook: leg.yesOrderBook,
|
|
37
|
+
noOrderBook: leg.noOrderBook,
|
|
38
|
+
yesFillLog: leg.yesFillLog,
|
|
39
|
+
noFillLog: leg.noFillLog,
|
|
40
|
+
userAta,
|
|
41
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
42
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
43
|
+
order: params.orderPda,
|
|
44
|
+
userPosition,
|
|
45
|
+
})
|
|
46
|
+
.rpc();
|
|
47
|
+
}
|
|
48
|
+
/** Merge equal YES + NO shares back into USDC ($1.00 per pair) */
|
|
49
|
+
async mergeShares(params) {
|
|
50
|
+
const index = params.index ?? 0;
|
|
51
|
+
const user = this.program.provider.publicKey;
|
|
52
|
+
const leg = await this.getLeg(params.market, index);
|
|
53
|
+
const [yesPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 0);
|
|
54
|
+
const [noPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 1);
|
|
55
|
+
const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
|
|
56
|
+
return this.program.methods
|
|
57
|
+
.mergeShares(index, params.amount)
|
|
58
|
+
.accounts({
|
|
59
|
+
user,
|
|
60
|
+
market: params.market,
|
|
61
|
+
vault: leg.vault,
|
|
62
|
+
yesOrderBook: leg.yesOrderBook,
|
|
63
|
+
noOrderBook: leg.noOrderBook,
|
|
64
|
+
userAta,
|
|
65
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
66
|
+
yesPosition: yesPos,
|
|
67
|
+
noPosition: noPos,
|
|
68
|
+
})
|
|
69
|
+
.rpc();
|
|
70
|
+
}
|
|
71
|
+
/** Cancel an unfilled limit order */
|
|
72
|
+
async cancelOrder(params) {
|
|
73
|
+
const index = params.index ?? 0;
|
|
74
|
+
const user = this.program.provider.publicKey;
|
|
75
|
+
const leg = await this.getLeg(params.market, index);
|
|
76
|
+
const [yesPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 0);
|
|
77
|
+
const [noPos] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, 1);
|
|
78
|
+
const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
|
|
79
|
+
return this.program.methods
|
|
80
|
+
.cancelOrder(index)
|
|
81
|
+
.accounts({
|
|
82
|
+
user,
|
|
83
|
+
market: params.market,
|
|
84
|
+
vault: leg.vault,
|
|
85
|
+
yesOrderBook: leg.yesOrderBook,
|
|
86
|
+
noOrderBook: leg.noOrderBook,
|
|
87
|
+
yesFillLog: leg.yesFillLog,
|
|
88
|
+
noFillLog: leg.noFillLog,
|
|
89
|
+
userAta,
|
|
90
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
91
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
92
|
+
order: params.orderPda,
|
|
93
|
+
yesPosition: yesPos,
|
|
94
|
+
noPosition: noPos,
|
|
95
|
+
})
|
|
96
|
+
.rpc();
|
|
97
|
+
}
|
|
98
|
+
/** Redeem a position after market resolution */
|
|
99
|
+
async redeemPosition(params) {
|
|
100
|
+
const index = params.index ?? 0;
|
|
101
|
+
const user = this.program.provider.publicKey;
|
|
102
|
+
const leg = await this.getLeg(params.market, index);
|
|
103
|
+
const sideNum = (0, types_1.toSideNumber)(params.side);
|
|
104
|
+
const [positionPda] = (0, pda_1.getPositionPda)(this.program.programId, params.market, index, user, sideNum);
|
|
105
|
+
const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
|
|
106
|
+
return this.program.methods
|
|
107
|
+
.redeemPosition(index)
|
|
108
|
+
.accounts({
|
|
109
|
+
user,
|
|
110
|
+
market: params.market,
|
|
111
|
+
vault: leg.vault,
|
|
112
|
+
yesOrderBook: leg.yesOrderBook,
|
|
113
|
+
noOrderBook: leg.noOrderBook,
|
|
114
|
+
userAta,
|
|
115
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
116
|
+
position: positionPda,
|
|
117
|
+
})
|
|
118
|
+
.rpc();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.PositionModule = PositionModule;
|
|
122
|
+
//# sourceMappingURL=positions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positions.js","sourceRoot":"","sources":["../../src/instructions/positions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { PredMarket } from "../idl/pred_market";
|
|
4
|
+
export interface ProposeResolutionParams {
|
|
5
|
+
market: PublicKey;
|
|
6
|
+
index?: number;
|
|
7
|
+
proposedOutcome: "yes" | "no";
|
|
8
|
+
}
|
|
9
|
+
export interface FinalizeResolutionParams {
|
|
10
|
+
market: PublicKey;
|
|
11
|
+
index?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ClaimDisputeWinningsParams {
|
|
14
|
+
market: PublicKey;
|
|
15
|
+
index?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare class ResolutionModule {
|
|
18
|
+
private readonly program;
|
|
19
|
+
/** @internal */
|
|
20
|
+
constructor(program: Program<PredMarket>);
|
|
21
|
+
/** @internal */
|
|
22
|
+
private getLeg;
|
|
23
|
+
/** Propose a resolution for a market (deposits bond) */
|
|
24
|
+
proposeResolution(params: ProposeResolutionParams): Promise<string>;
|
|
25
|
+
/** Finalize a resolution after the dispute window expires */
|
|
26
|
+
finalizeResolution(market: PublicKey, index?: number): Promise<string>;
|
|
27
|
+
/** Claim dispute winnings after resolution */
|
|
28
|
+
claimDisputeWinnings(market: PublicKey, index?: number): Promise<string>;
|
|
29
|
+
/** Resolve an expired market to a 50/50 split */
|
|
30
|
+
resolveExpiredMarket(market: PublicKey, index?: number): Promise<string>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolution.d.ts","sourceRoot":"","sources":["../../src/instructions/resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAM,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAK3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,KAAK,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAEf,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,gBAAgB;gBACa,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IAEzD,gBAAgB;YACF,MAAM;IAMpB,wDAAwD;IAClD,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCzE,6DAA6D;IACvD,kBAAkB,CACtB,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,CAAC;IAgClB,8CAA8C;IACxC,oBAAoB,CACxB,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,CAAC;IA+BlB,iDAAiD;IAC3C,oBAAoB,CACxB,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,CAAC;CAQnB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResolutionModule = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
6
|
+
const pda_1 = require("../pda");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const market_1 = require("../accounts/market");
|
|
9
|
+
class ResolutionModule {
|
|
10
|
+
/** @internal */
|
|
11
|
+
constructor(program) {
|
|
12
|
+
this.program = program;
|
|
13
|
+
}
|
|
14
|
+
/** @internal */
|
|
15
|
+
async getLeg(market, index) {
|
|
16
|
+
const m = await (0, market_1.fetchMarket)(this.program, market);
|
|
17
|
+
if (!m)
|
|
18
|
+
throw new Error(`Market not found: ${market.toBase58()}`);
|
|
19
|
+
return { market: m, leg: m.legs[index] };
|
|
20
|
+
}
|
|
21
|
+
/** Propose a resolution for a market (deposits bond) */
|
|
22
|
+
async proposeResolution(params) {
|
|
23
|
+
const index = params.index ?? 0;
|
|
24
|
+
const user = this.program.provider.publicKey;
|
|
25
|
+
const { market, leg } = await this.getLeg(params.market, index);
|
|
26
|
+
const [proposalPda] = (0, pda_1.getResolutionProposalPda)(this.program.programId, params.market, index);
|
|
27
|
+
const [bondVault] = (0, pda_1.getBondVaultPda)(this.program.programId, params.market, index);
|
|
28
|
+
const userAta = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, user);
|
|
29
|
+
const proposedOutcome = params.proposedOutcome === "yes" ? 1 : 2;
|
|
30
|
+
return this.program.methods
|
|
31
|
+
.proposeResolution(index, { proposedOutcome })
|
|
32
|
+
.accounts({
|
|
33
|
+
proposer: user,
|
|
34
|
+
market: params.market,
|
|
35
|
+
marketInfo: market.marketInfo,
|
|
36
|
+
yesOrderBook: leg.yesOrderBook,
|
|
37
|
+
noOrderBook: leg.noOrderBook,
|
|
38
|
+
proposerTokenAccount: userAta,
|
|
39
|
+
bondVault,
|
|
40
|
+
resolutionProposal: proposalPda,
|
|
41
|
+
usdcMint: constants_1.USDC_MINT,
|
|
42
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
43
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
44
|
+
})
|
|
45
|
+
.rpc();
|
|
46
|
+
}
|
|
47
|
+
/** Finalize a resolution after the dispute window expires */
|
|
48
|
+
async finalizeResolution(market, index = 0) {
|
|
49
|
+
const { market: mkt, leg } = await this.getLeg(market, index);
|
|
50
|
+
const [proposalPda] = (0, pda_1.getResolutionProposalPda)(this.program.programId, market, index);
|
|
51
|
+
const [bondVault] = (0, pda_1.getBondVaultPda)(this.program.programId, market, index);
|
|
52
|
+
// The proposer's ATA is needed to return the bond
|
|
53
|
+
const proposal = await this.program.account.resolutionProposal.fetch(proposalPda);
|
|
54
|
+
const proposerTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, proposal.proposer);
|
|
55
|
+
return this.program.methods
|
|
56
|
+
.finalizeResolution(index)
|
|
57
|
+
.accounts({
|
|
58
|
+
payer: this.program.provider.publicKey,
|
|
59
|
+
market,
|
|
60
|
+
marketInfo: mkt.marketInfo,
|
|
61
|
+
yesOrderBook: leg.yesOrderBook,
|
|
62
|
+
noOrderBook: leg.noOrderBook,
|
|
63
|
+
resolutionProposal: proposalPda,
|
|
64
|
+
bondVault,
|
|
65
|
+
proposerTokenAccount,
|
|
66
|
+
usdcMint: constants_1.USDC_MINT,
|
|
67
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
68
|
+
})
|
|
69
|
+
.rpc();
|
|
70
|
+
}
|
|
71
|
+
/** Claim dispute winnings after resolution */
|
|
72
|
+
async claimDisputeWinnings(market, index = 0) {
|
|
73
|
+
const { leg } = await this.getLeg(market, index);
|
|
74
|
+
const [proposalPda] = (0, pda_1.getResolutionProposalPda)(this.program.programId, market, index);
|
|
75
|
+
const [bondVault] = (0, pda_1.getBondVaultPda)(this.program.programId, market, index);
|
|
76
|
+
// Fetch proposal to find the winner's token account
|
|
77
|
+
const proposal = await this.program.account.resolutionProposal.fetch(proposalPda);
|
|
78
|
+
const winner = proposal.proposer;
|
|
79
|
+
const winnerTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, winner);
|
|
80
|
+
return this.program.methods
|
|
81
|
+
.claimDisputeWinnings(index)
|
|
82
|
+
.accounts({
|
|
83
|
+
payer: this.program.provider.publicKey,
|
|
84
|
+
market,
|
|
85
|
+
yesOrderBook: leg.yesOrderBook,
|
|
86
|
+
noOrderBook: leg.noOrderBook,
|
|
87
|
+
resolutionProposal: proposalPda,
|
|
88
|
+
bondVault,
|
|
89
|
+
winnerTokenAccount,
|
|
90
|
+
treasuryTokenAccount: constants_1.PROTOCOL_USDC_ACCOUNT,
|
|
91
|
+
usdcMint: constants_1.USDC_MINT,
|
|
92
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
93
|
+
})
|
|
94
|
+
.rpc();
|
|
95
|
+
}
|
|
96
|
+
/** Resolve an expired market to a 50/50 split */
|
|
97
|
+
async resolveExpiredMarket(market, index = 0) {
|
|
98
|
+
return this.program.methods
|
|
99
|
+
.resolveExpiredMarket(index)
|
|
100
|
+
.accounts({
|
|
101
|
+
market,
|
|
102
|
+
})
|
|
103
|
+
.rpc();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.ResolutionModule = ResolutionModule;
|
|
107
|
+
//# sourceMappingURL=resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolution.js","sourceRoot":"","sources":["../../src/instructions/resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Program, BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { PredMarket } from "../idl/pred_market";
|
|
4
|
+
import { Side, OrderResult, CoveredByType } from "../types";
|
|
5
|
+
export interface LimitBidParams {
|
|
6
|
+
market: PublicKey;
|
|
7
|
+
index?: number;
|
|
8
|
+
side: Side;
|
|
9
|
+
/** Price in ticks (1-999). E.g., 500 = $0.50 per share. */
|
|
10
|
+
price: number;
|
|
11
|
+
/** USDC amount to spend */
|
|
12
|
+
usdcAmount: BN;
|
|
13
|
+
seed?: number;
|
|
14
|
+
/** Whether to match against existing resting orders (default: true) */
|
|
15
|
+
matchExisting?: boolean;
|
|
16
|
+
referralAccount?: PublicKey;
|
|
17
|
+
}
|
|
18
|
+
export interface LimitAskParams {
|
|
19
|
+
market: PublicKey;
|
|
20
|
+
index?: number;
|
|
21
|
+
/** The side you are selling */
|
|
22
|
+
side: Side;
|
|
23
|
+
/** The price you want to receive per share (1-999) */
|
|
24
|
+
price: number;
|
|
25
|
+
/** Number of shares to sell */
|
|
26
|
+
shares: BN;
|
|
27
|
+
seed?: number;
|
|
28
|
+
/** Whether to match against existing resting orders (default: true) */
|
|
29
|
+
matchExisting?: boolean;
|
|
30
|
+
referralAccount?: PublicKey;
|
|
31
|
+
}
|
|
32
|
+
export interface CoveredBidParams {
|
|
33
|
+
market: PublicKey;
|
|
34
|
+
index?: number;
|
|
35
|
+
side: Side;
|
|
36
|
+
price: number;
|
|
37
|
+
shares: BN;
|
|
38
|
+
seed?: number;
|
|
39
|
+
coveredBy: CoveredByType;
|
|
40
|
+
/** Whether to match against existing resting orders (default: true) */
|
|
41
|
+
matchExisting?: boolean;
|
|
42
|
+
referralAccount?: PublicKey;
|
|
43
|
+
}
|
|
44
|
+
export interface MarketBuyParams {
|
|
45
|
+
market: PublicKey;
|
|
46
|
+
index?: number;
|
|
47
|
+
side: Side;
|
|
48
|
+
/** Maximum USDC to spend */
|
|
49
|
+
maxUsdc: BN;
|
|
50
|
+
/** Minimum shares to receive (slippage protection) */
|
|
51
|
+
minShares: BN;
|
|
52
|
+
referralAccount?: PublicKey;
|
|
53
|
+
}
|
|
54
|
+
export interface MarketSellParams {
|
|
55
|
+
market: PublicKey;
|
|
56
|
+
index?: number;
|
|
57
|
+
side: Side;
|
|
58
|
+
/** Number of shares to sell */
|
|
59
|
+
shares: BN;
|
|
60
|
+
/** Minimum USDC to receive (slippage protection) */
|
|
61
|
+
minUsdc: BN;
|
|
62
|
+
referralAccount?: PublicKey;
|
|
63
|
+
}
|
|
64
|
+
export declare class TradingModule {
|
|
65
|
+
private readonly program;
|
|
66
|
+
/** @internal */
|
|
67
|
+
constructor(program: Program<PredMarket>);
|
|
68
|
+
/** @internal */
|
|
69
|
+
private resolveMarket;
|
|
70
|
+
/** Place a limit bid (USDC-backed buy order) */
|
|
71
|
+
limitBid(params: LimitBidParams): Promise<OrderResult>;
|
|
72
|
+
/** Place a limit ask (sell shares at a specific price) */
|
|
73
|
+
limitAsk(params: LimitAskParams): Promise<OrderResult>;
|
|
74
|
+
/** Place a covered bid (backed by USDC or existing shares) */
|
|
75
|
+
coveredBid(params: CoveredBidParams): Promise<OrderResult>;
|
|
76
|
+
/** Execute a market buy (immediate execution) */
|
|
77
|
+
marketBuy(params: MarketBuyParams): Promise<string>;
|
|
78
|
+
/** Execute a market sell (immediate execution) */
|
|
79
|
+
marketSell(params: MarketSellParams): Promise<string>;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=trading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trading.d.ts","sourceRoot":"","sources":["../../src/instructions/trading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAK3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,IAAI,EACJ,WAAW,EAKX,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,UAAU,EAAE,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,MAAM,EAAE,EAAE,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,EAAE,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,aAAa,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,4BAA4B;IAC5B,OAAO,EAAE,EAAE,CAAC;IACZ,sDAAsD;IACtD,SAAS,EAAE,EAAE,CAAC;IACd,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,+BAA+B;IAC/B,MAAM,EAAE,EAAE,CAAC;IACX,oDAAoD;IACpD,OAAO,EAAE,EAAE,CAAC;IACZ,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAOD,qBAAa,aAAa;IAEZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,gBAAgB;gBACa,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IAEzD,gBAAgB;YACF,aAAa;IAM3B,gDAAgD;IAC1C,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IA+C5D,0DAA0D;IACpD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAiD5D,8DAA8D;IACxD,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAgDhE,iDAAiD;IAC3C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCzD,kDAAkD;IAC5C,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;CAiC5D"}
|