@bench.games/conviction-markets 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/README.md +298 -0
- package/dist/constants.d.ts +29 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +29 -0
- package/dist/constants.js.map +1 -0
- package/dist/idl/conviction_market.d.ts +3760 -0
- package/dist/idl/conviction_market.d.ts.map +1 -0
- package/dist/idl/conviction_market.js +2 -0
- package/dist/idl/conviction_market.js.map +1 -0
- package/dist/idl/conviction_market.json +3753 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions/addMarketOption.d.ts +38 -0
- package/dist/instructions/addMarketOption.d.ts.map +1 -0
- package/dist/instructions/addMarketOption.js +30 -0
- package/dist/instructions/addMarketOption.js.map +1 -0
- package/dist/instructions/buyMarketShares.d.ts +47 -0
- package/dist/instructions/buyMarketShares.d.ts.map +1 -0
- package/dist/instructions/buyMarketShares.js +63 -0
- package/dist/instructions/buyMarketShares.js.map +1 -0
- package/dist/instructions/claimVoteTokens.d.ts +40 -0
- package/dist/instructions/claimVoteTokens.d.ts.map +1 -0
- package/dist/instructions/claimVoteTokens.js +49 -0
- package/dist/instructions/claimVoteTokens.js.map +1 -0
- package/dist/instructions/closeShareAccount.d.ts +36 -0
- package/dist/instructions/closeShareAccount.d.ts.map +1 -0
- package/dist/instructions/closeShareAccount.js +28 -0
- package/dist/instructions/closeShareAccount.js.map +1 -0
- package/dist/instructions/createMarket.d.ts +48 -0
- package/dist/instructions/createMarket.d.ts.map +1 -0
- package/dist/instructions/createMarket.js +64 -0
- package/dist/instructions/createMarket.js.map +1 -0
- package/dist/instructions/incrementOptionTally.d.ts +35 -0
- package/dist/instructions/incrementOptionTally.d.ts.map +1 -0
- package/dist/instructions/incrementOptionTally.js +27 -0
- package/dist/instructions/incrementOptionTally.js.map +1 -0
- package/dist/instructions/index.d.ts +13 -0
- package/dist/instructions/index.d.ts.map +1 -0
- package/dist/instructions/index.js +16 -0
- package/dist/instructions/index.js.map +1 -0
- package/dist/instructions/initShareAccount.d.ts +34 -0
- package/dist/instructions/initShareAccount.d.ts.map +1 -0
- package/dist/instructions/initShareAccount.js +33 -0
- package/dist/instructions/initShareAccount.js.map +1 -0
- package/dist/instructions/initVoteTokenAccount.d.ts +37 -0
- package/dist/instructions/initVoteTokenAccount.d.ts.map +1 -0
- package/dist/instructions/initVoteTokenAccount.js +48 -0
- package/dist/instructions/initVoteTokenAccount.js.map +1 -0
- package/dist/instructions/mintVoteTokens.d.ts +40 -0
- package/dist/instructions/mintVoteTokens.d.ts.map +1 -0
- package/dist/instructions/mintVoteTokens.js +49 -0
- package/dist/instructions/mintVoteTokens.js.map +1 -0
- package/dist/instructions/openMarket.d.ts +34 -0
- package/dist/instructions/openMarket.d.ts.map +1 -0
- package/dist/instructions/openMarket.js +29 -0
- package/dist/instructions/openMarket.js.map +1 -0
- package/dist/instructions/revealShares.d.ts +43 -0
- package/dist/instructions/revealShares.d.ts.map +1 -0
- package/dist/instructions/revealShares.js +47 -0
- package/dist/instructions/revealShares.js.map +1 -0
- package/dist/instructions/selectOption.d.ts +36 -0
- package/dist/instructions/selectOption.d.ts.map +1 -0
- package/dist/instructions/selectOption.js +28 -0
- package/dist/instructions/selectOption.js.map +1 -0
- package/dist/types/accounts.d.ts +104 -0
- package/dist/types/accounts.d.ts.map +1 -0
- package/dist/types/accounts.js +2 -0
- package/dist/types/accounts.js.map +1 -0
- package/dist/types/common.d.ts +21 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/arcium.d.ts +3 -0
- package/dist/utils/arcium.d.ts.map +1 -0
- package/dist/utils/arcium.js +6 -0
- package/dist/utils/arcium.js.map +1 -0
- package/dist/utils/awaitComputationFinalization.d.ts +37 -0
- package/dist/utils/awaitComputationFinalization.d.ts.map +1 -0
- package/dist/utils/awaitComputationFinalization.js +32 -0
- package/dist/utils/awaitComputationFinalization.js.map +1 -0
- package/dist/utils/computations.d.ts +27 -0
- package/dist/utils/computations.d.ts.map +1 -0
- package/dist/utils/computations.js +35 -0
- package/dist/utils/computations.js.map +1 -0
- package/dist/utils/encryption.d.ts +46 -0
- package/dist/utils/encryption.d.ts.map +1 -0
- package/dist/utils/encryption.js +53 -0
- package/dist/utils/encryption.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/keypairs.d.ts +20 -0
- package/dist/utils/keypairs.d.ts.map +1 -0
- package/dist/utils/keypairs.js +29 -0
- package/dist/utils/keypairs.js.map +1 -0
- package/dist/utils/pdas.d.ts +38 -0
- package/dist/utils/pdas.d.ts.map +1 -0
- package/dist/utils/pdas.js +57 -0
- package/dist/utils/pdas.js.map +1 -0
- package/package.json +45 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAG5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import { type Keypair, type PublicKey } from "@solana/web3.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for adding a market option
|
|
5
|
+
*/
|
|
6
|
+
export interface AddMarketOptionParams {
|
|
7
|
+
/** Market creator (must be the original creator) */
|
|
8
|
+
creator: Keypair;
|
|
9
|
+
/** Market PDA to add option to */
|
|
10
|
+
market: PublicKey;
|
|
11
|
+
/** Option index (1-based, must be sequential) */
|
|
12
|
+
optionIndex: number;
|
|
13
|
+
/** Human-readable name for the option (max 50 characters) */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Optional program ID (defaults to PROGRAM_ID) */
|
|
16
|
+
programId?: PublicKey;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Result from adding a market option
|
|
20
|
+
*/
|
|
21
|
+
export interface AddMarketOptionResult {
|
|
22
|
+
/** Transaction signature */
|
|
23
|
+
signature: string;
|
|
24
|
+
/** PDA of the created option account */
|
|
25
|
+
optionPda: PublicKey;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Adds a named option to a market
|
|
29
|
+
*
|
|
30
|
+
* Options must be added before opening the market. Option indices
|
|
31
|
+
* must be sequential starting from 1.
|
|
32
|
+
*
|
|
33
|
+
* @param provider - Anchor provider for connection and wallet
|
|
34
|
+
* @param params - Add market option parameters
|
|
35
|
+
* @returns Transaction signature and option PDA
|
|
36
|
+
*/
|
|
37
|
+
export declare function addMarketOption(provider: AnchorProvider, params: AddMarketOptionParams): Promise<AddMarketOptionResult>;
|
|
38
|
+
//# sourceMappingURL=addMarketOption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMarketOption.d.ts","sourceRoot":"","sources":["../../src/instructions/addMarketOption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAiB,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM9E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAuBhC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { SystemProgram } from "@solana/web3.js";
|
|
3
|
+
import { PROGRAM_ID } from "../constants";
|
|
4
|
+
import { deriveOptionPda } from "../utils";
|
|
5
|
+
import IDL from "../idl/conviction_market.json";
|
|
6
|
+
/**
|
|
7
|
+
* Adds a named option to a market
|
|
8
|
+
*
|
|
9
|
+
* Options must be added before opening the market. Option indices
|
|
10
|
+
* must be sequential starting from 1.
|
|
11
|
+
*
|
|
12
|
+
* @param provider - Anchor provider for connection and wallet
|
|
13
|
+
* @param params - Add market option parameters
|
|
14
|
+
* @returns Transaction signature and option PDA
|
|
15
|
+
*/
|
|
16
|
+
export async function addMarketOption(provider, params) {
|
|
17
|
+
const programId = params.programId ?? PROGRAM_ID;
|
|
18
|
+
const program = new Program(IDL, provider);
|
|
19
|
+
const [optionPda] = deriveOptionPda(params.market, params.optionIndex, programId);
|
|
20
|
+
const signature = await program.methods
|
|
21
|
+
.addMarketOption(params.optionIndex, params.name)
|
|
22
|
+
.accountsPartial({
|
|
23
|
+
market: params.market,
|
|
24
|
+
systemProgram: SystemProgram.programId,
|
|
25
|
+
})
|
|
26
|
+
.signers([params.creator])
|
|
27
|
+
.rpc();
|
|
28
|
+
return { signature, optionPda };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=addMarketOption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMarketOption.js","sourceRoot":"","sources":["../../src/instructions/addMarketOption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,GAAG,MAAM,+BAA+B,CAAC;AA6BhD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAwB,EACxB,MAA6B;IAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,GAAuB,EACvB,QAAQ,CACoB,CAAC;IAE/B,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CACjC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,SAAS,CACV,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO;SACpC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC;SAChD,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,aAAa,CAAC,SAAS;KACvC,CAAC;SACD,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzB,GAAG,EAAE,CAAC;IAET,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { BN, type AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import type { Keypair, PublicKey } from "@solana/web3.js";
|
|
3
|
+
import type { X25519Keypair } from "../types";
|
|
4
|
+
/**
|
|
5
|
+
* Parameters for buying market shares
|
|
6
|
+
*/
|
|
7
|
+
export interface BuyMarketSharesParams {
|
|
8
|
+
/** User buying shares */
|
|
9
|
+
signer: Keypair;
|
|
10
|
+
/** User's X25519 keypair for encryption */
|
|
11
|
+
userX25519Keypair: X25519Keypair;
|
|
12
|
+
/** Market PDA to buy shares in */
|
|
13
|
+
market: PublicKey;
|
|
14
|
+
/** Number of shares to buy (plain value, will be encrypted) */
|
|
15
|
+
amount: number | BN;
|
|
16
|
+
/** Selected option index (plain value, will be encrypted) */
|
|
17
|
+
selectedOption: number;
|
|
18
|
+
/** Optional authorized reader X25519 public key for disclosure */
|
|
19
|
+
authorizedReaderX25519Pubkey?: Uint8Array;
|
|
20
|
+
/** Optional program ID (defaults to PROGRAM_ID) */
|
|
21
|
+
programId?: PublicKey;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Result from buying market shares
|
|
25
|
+
*/
|
|
26
|
+
export interface BuyMarketSharesResult {
|
|
27
|
+
/** Transaction signature */
|
|
28
|
+
signature: string;
|
|
29
|
+
/** PDA of the share account */
|
|
30
|
+
shareAccountPda: PublicKey;
|
|
31
|
+
/** Computation offset (pass to awaitComputationFinalization) */
|
|
32
|
+
computationOffset: BN;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Buys market shares with encrypted input
|
|
36
|
+
*
|
|
37
|
+
* User purchases shares for a market option using encrypted computation.
|
|
38
|
+
* The amount and selected option are encrypted automatically.
|
|
39
|
+
* Deducts from vote token balance and stores encrypted share state.
|
|
40
|
+
* Only works during the staking period.
|
|
41
|
+
*
|
|
42
|
+
* @param provider - Anchor provider for connection and wallet
|
|
43
|
+
* @param params - Buy market shares parameters
|
|
44
|
+
* @returns Transaction signature, share account PDA, and await helper
|
|
45
|
+
*/
|
|
46
|
+
export declare function buyMarketShares(provider: AnchorProvider, params: BuyMarketSharesParams): Promise<BuyMarketSharesResult>;
|
|
47
|
+
//# sourceMappingURL=buyMarketShares.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyMarketShares.d.ts","sourceRoot":"","sources":["../../src/instructions/buyMarketShares.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAsB1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,iBAAiB,EAAE,aAAa,CAAC;IACjC,kCAAkC;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC;IACpB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,4BAA4B,CAAC,EAAE,UAAU,CAAC;IAC1C,mDAAmD;IACnD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,gEAAgE;IAChE,iBAAiB,EAAE,EAAE,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CA0FhC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { getCompDefAccOffset, getMXEAccAddress, getMempoolAccAddress, getExecutingPoolAccAddress, getComputationAccAddress, getCompDefAccAddress, getMXEPublicKey, } from "@arcium-hq/client";
|
|
3
|
+
import { PROGRAM_ID, COMP_DEF_OFFSETS } from "../constants";
|
|
4
|
+
import { deriveVoteTokenAccountPda, deriveShareAccountPda, generateComputationOffset, generateNonce, nonceToU128, createEncryptionContext, encryptBuySharesInput, ARCIUM_CLUSTER_OFFSET, getClusterAddress, } from "../utils";
|
|
5
|
+
import IDL from "../idl/conviction_market.json";
|
|
6
|
+
/**
|
|
7
|
+
* Buys market shares with encrypted input
|
|
8
|
+
*
|
|
9
|
+
* User purchases shares for a market option using encrypted computation.
|
|
10
|
+
* The amount and selected option are encrypted automatically.
|
|
11
|
+
* Deducts from vote token balance and stores encrypted share state.
|
|
12
|
+
* Only works during the staking period.
|
|
13
|
+
*
|
|
14
|
+
* @param provider - Anchor provider for connection and wallet
|
|
15
|
+
* @param params - Buy market shares parameters
|
|
16
|
+
* @returns Transaction signature, share account PDA, and await helper
|
|
17
|
+
*/
|
|
18
|
+
export async function buyMarketShares(provider, params) {
|
|
19
|
+
const programId = params.programId ?? PROGRAM_ID;
|
|
20
|
+
const program = new Program(IDL, provider);
|
|
21
|
+
const clusterAccount = getClusterAddress();
|
|
22
|
+
// Get MXE public key for encryption
|
|
23
|
+
const mxePublicKey = await getMXEPublicKey(provider, programId);
|
|
24
|
+
if (!mxePublicKey) {
|
|
25
|
+
throw new Error("Failed to fetch MXE public key");
|
|
26
|
+
}
|
|
27
|
+
// Derive accounts
|
|
28
|
+
const [voteTokenAccountPda] = deriveVoteTokenAccountPda(params.signer.publicKey, programId);
|
|
29
|
+
const [shareAccountPda] = deriveShareAccountPda(params.signer.publicKey, params.market, programId);
|
|
30
|
+
// Auto-generate computation offset and nonces
|
|
31
|
+
const computationOffset = generateComputationOffset();
|
|
32
|
+
const inputNonce = generateNonce();
|
|
33
|
+
const inputNonceBN = nonceToU128(inputNonce);
|
|
34
|
+
const disclosureNonce = generateNonce();
|
|
35
|
+
const disclosureNonceBN = nonceToU128(disclosureNonce);
|
|
36
|
+
// Create encryption context and encrypt inputs
|
|
37
|
+
const encryptionContext = createEncryptionContext(params.userX25519Keypair, mxePublicKey);
|
|
38
|
+
const amountBigInt = typeof params.amount === "number"
|
|
39
|
+
? BigInt(params.amount)
|
|
40
|
+
: BigInt(params.amount.toString());
|
|
41
|
+
const { amountCiphertext, selectedOptionCiphertext } = encryptBuySharesInput(encryptionContext, amountBigInt, BigInt(params.selectedOption), inputNonce);
|
|
42
|
+
// Use user's own pubkey for disclosure if not specified
|
|
43
|
+
const authorizedReaderPubkey = params.authorizedReaderX25519Pubkey ?? params.userX25519Keypair.publicKey;
|
|
44
|
+
const signature = await program.methods
|
|
45
|
+
.buyMarketShares(computationOffset, Array.from(amountCiphertext), Array.from(selectedOptionCiphertext), Array.from(params.userX25519Keypair.publicKey), inputNonceBN, Array.from(authorizedReaderPubkey), disclosureNonceBN)
|
|
46
|
+
.accountsPartial({
|
|
47
|
+
market: params.market,
|
|
48
|
+
computationAccount: getComputationAccAddress(ARCIUM_CLUSTER_OFFSET, computationOffset),
|
|
49
|
+
clusterAccount,
|
|
50
|
+
mxeAccount: getMXEAccAddress(programId),
|
|
51
|
+
mempoolAccount: getMempoolAccAddress(ARCIUM_CLUSTER_OFFSET),
|
|
52
|
+
executingPool: getExecutingPoolAccAddress(ARCIUM_CLUSTER_OFFSET),
|
|
53
|
+
compDefAccount: getCompDefAccAddress(programId, Buffer.from(getCompDefAccOffset(COMP_DEF_OFFSETS.BUY_CONVICTION_MARKET_SHARES)).readUInt32LE()),
|
|
54
|
+
})
|
|
55
|
+
.signers([params.signer])
|
|
56
|
+
.rpc({ skipPreflight: true });
|
|
57
|
+
return {
|
|
58
|
+
signature,
|
|
59
|
+
shareAccountPda,
|
|
60
|
+
computationOffset,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=buyMarketShares.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyMarketShares.js","sourceRoot":"","sources":["../../src/instructions/buyMarketShares.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BN, type AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import { type Keypair, type PublicKey } from "@solana/web3.js";
|
|
3
|
+
import type { X25519Keypair } from "../types";
|
|
4
|
+
/**
|
|
5
|
+
* Parameters for claiming/selling vote tokens
|
|
6
|
+
*/
|
|
7
|
+
export interface ClaimVoteTokensParams {
|
|
8
|
+
/** User claiming tokens (receives SOL) */
|
|
9
|
+
signer: Keypair;
|
|
10
|
+
/** User's X25519 keypair for encryption */
|
|
11
|
+
userX25519Keypair: X25519Keypair;
|
|
12
|
+
/** Number of vote tokens to sell */
|
|
13
|
+
amount: number | BN;
|
|
14
|
+
/** Optional program ID (defaults to PROGRAM_ID) */
|
|
15
|
+
programId?: PublicKey;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result from claiming vote tokens
|
|
19
|
+
*/
|
|
20
|
+
export interface ClaimVoteTokensResult {
|
|
21
|
+
/** Transaction signature */
|
|
22
|
+
signature: string;
|
|
23
|
+
/** PDA of the vote token account */
|
|
24
|
+
voteTokenAccountPda: PublicKey;
|
|
25
|
+
/** Computation offset (pass to awaitComputationFinalization) */
|
|
26
|
+
computationOffset: BN;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Claims (sells) vote tokens for SOL
|
|
30
|
+
*
|
|
31
|
+
* Users can sell their unused vote tokens back for SOL.
|
|
32
|
+
* Uses MPC to verify balance and deduct tokens.
|
|
33
|
+
* Transfers SOL from the vote token account back to the user.
|
|
34
|
+
*
|
|
35
|
+
* @param provider - Anchor provider for connection and wallet
|
|
36
|
+
* @param params - Claim vote tokens parameters
|
|
37
|
+
* @returns Transaction signature, vote token account PDA, and await helper
|
|
38
|
+
*/
|
|
39
|
+
export declare function claimVoteTokens(provider: AnchorProvider, params: ClaimVoteTokensParams): Promise<ClaimVoteTokensResult>;
|
|
40
|
+
//# sourceMappingURL=claimVoteTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimVoteTokens.d.ts","sourceRoot":"","sources":["../../src/instructions/claimVoteTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAiB,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgB9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,iBAAiB,EAAE,aAAa,CAAC;IACjC,oCAAoC;IACpC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC;IACpB,mDAAmD;IACnD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,mBAAmB,EAAE,SAAS,CAAC;IAC/B,gEAAgE;IAChE,iBAAiB,EAAE,EAAE,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAuDhC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Program, BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { SystemProgram } from "@solana/web3.js";
|
|
3
|
+
import { getCompDefAccOffset, getMXEAccAddress, getMempoolAccAddress, getExecutingPoolAccAddress, getComputationAccAddress, getCompDefAccAddress, } from "@arcium-hq/client";
|
|
4
|
+
import { PROGRAM_ID, COMP_DEF_OFFSETS } from "../constants";
|
|
5
|
+
import { deriveVoteTokenAccountPda, generateComputationOffset, ARCIUM_CLUSTER_OFFSET, getClusterAddress, } from "../utils";
|
|
6
|
+
import IDL from "../idl/conviction_market.json";
|
|
7
|
+
/**
|
|
8
|
+
* Claims (sells) vote tokens for SOL
|
|
9
|
+
*
|
|
10
|
+
* Users can sell their unused vote tokens back for SOL.
|
|
11
|
+
* Uses MPC to verify balance and deduct tokens.
|
|
12
|
+
* Transfers SOL from the vote token account back to the user.
|
|
13
|
+
*
|
|
14
|
+
* @param provider - Anchor provider for connection and wallet
|
|
15
|
+
* @param params - Claim vote tokens parameters
|
|
16
|
+
* @returns Transaction signature, vote token account PDA, and await helper
|
|
17
|
+
*/
|
|
18
|
+
export async function claimVoteTokens(provider, params) {
|
|
19
|
+
const programId = params.programId ?? PROGRAM_ID;
|
|
20
|
+
const program = new Program(IDL, provider);
|
|
21
|
+
const clusterAccount = getClusterAddress();
|
|
22
|
+
// Derive vote token account PDA
|
|
23
|
+
const [voteTokenAccountPda] = deriveVoteTokenAccountPda(params.signer.publicKey, programId);
|
|
24
|
+
// Auto-generate computation offset
|
|
25
|
+
const computationOffset = generateComputationOffset();
|
|
26
|
+
// Convert amount to BN
|
|
27
|
+
const amountBN = typeof params.amount === "number" ? new BN(params.amount) : params.amount;
|
|
28
|
+
const signature = await program.methods
|
|
29
|
+
.claimVoteTokens(computationOffset, Array.from(params.userX25519Keypair.publicKey), amountBN)
|
|
30
|
+
.accountsPartial({
|
|
31
|
+
signer: params.signer.publicKey,
|
|
32
|
+
voteTokenAccount: voteTokenAccountPda,
|
|
33
|
+
computationAccount: getComputationAccAddress(ARCIUM_CLUSTER_OFFSET, computationOffset),
|
|
34
|
+
clusterAccount,
|
|
35
|
+
mxeAccount: getMXEAccAddress(programId),
|
|
36
|
+
mempoolAccount: getMempoolAccAddress(ARCIUM_CLUSTER_OFFSET),
|
|
37
|
+
executingPool: getExecutingPoolAccAddress(ARCIUM_CLUSTER_OFFSET),
|
|
38
|
+
compDefAccount: getCompDefAccAddress(programId, Buffer.from(getCompDefAccOffset(COMP_DEF_OFFSETS.CLAIM_VOTE_TOKENS)).readUInt32LE()),
|
|
39
|
+
systemProgram: SystemProgram.programId,
|
|
40
|
+
})
|
|
41
|
+
.signers([params.signer])
|
|
42
|
+
.rpc({ skipPreflight: true });
|
|
43
|
+
return {
|
|
44
|
+
signature,
|
|
45
|
+
voteTokenAccountPda,
|
|
46
|
+
computationOffset,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=claimVoteTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimVoteTokens.js","sourceRoot":"","sources":["../../src/instructions/claimVoteTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAuB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,OAAO,GAAG,MAAM,+BAA+B,CAAC;AA6BhD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAwB,EACxB,MAA6B;IAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,GAAuB,EACvB,QAAQ,CACoB,CAAC;IAE/B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,gCAAgC;IAChC,MAAM,CAAC,mBAAmB,CAAC,GAAG,yBAAyB,CACrD,MAAM,CAAC,MAAM,CAAC,SAAS,EACvB,SAAS,CACV,CAAC;IAEF,mCAAmC;IACnC,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;IAEtD,uBAAuB;IACvB,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAE5E,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO;SACpC,eAAe,CACd,iBAAiB,EACjB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAC9C,QAAQ,CACT;SACA,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;QAC/B,gBAAgB,EAAE,mBAAmB;QACrC,kBAAkB,EAAE,wBAAwB,CAC1C,qBAAqB,EACrB,iBAAiB,CAClB;QACD,cAAc;QACd,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACvC,cAAc,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;QAC3D,aAAa,EAAE,0BAA0B,CAAC,qBAAqB,CAAC;QAChE,cAAc,EAAE,oBAAoB,CAClC,SAAS,EACT,MAAM,CAAC,IAAI,CACT,mBAAmB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CACxD,CAAC,YAAY,EAAE,CACjB;QACD,aAAa,EAAE,aAAa,CAAC,SAAS;KACvC,CAAC;SACD,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACxB,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhC,OAAO;QACL,SAAS;QACT,mBAAmB;QACnB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import type { Keypair, PublicKey } from "@solana/web3.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for closing a share account
|
|
5
|
+
*/
|
|
6
|
+
export interface CloseShareAccountParams {
|
|
7
|
+
/** Share account owner */
|
|
8
|
+
owner: Keypair;
|
|
9
|
+
/** Market PDA */
|
|
10
|
+
market: PublicKey;
|
|
11
|
+
/** Revealed option index */
|
|
12
|
+
optionIndex: number;
|
|
13
|
+
/** Optional program ID (defaults to PROGRAM_ID) */
|
|
14
|
+
programId?: PublicKey;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Result from closing a share account
|
|
18
|
+
*/
|
|
19
|
+
export interface CloseShareAccountResult {
|
|
20
|
+
/** Transaction signature */
|
|
21
|
+
signature: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Closes a share account after the reveal period ends
|
|
25
|
+
*
|
|
26
|
+
* Only callable if shares were revealed and match the option_index.
|
|
27
|
+
* If the user voted for the winning option and incremented the tally,
|
|
28
|
+
* transfers proportional yield: (user_score / total_score) * reward_lamports.
|
|
29
|
+
* Closes the account and returns rent lamports to owner.
|
|
30
|
+
*
|
|
31
|
+
* @param provider - Anchor provider for connection and wallet
|
|
32
|
+
* @param params - Close share account parameters
|
|
33
|
+
* @returns Transaction signature
|
|
34
|
+
*/
|
|
35
|
+
export declare function closeShareAccount(provider: AnchorProvider, params: CloseShareAccountParams): Promise<CloseShareAccountResult>;
|
|
36
|
+
//# sourceMappingURL=closeShareAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closeShareAccount.d.ts","sourceRoot":"","sources":["../../src/instructions/closeShareAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM1D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAgBlC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { PROGRAM_ID } from "../constants";
|
|
3
|
+
import IDL from "../idl/conviction_market.json";
|
|
4
|
+
/**
|
|
5
|
+
* Closes a share account after the reveal period ends
|
|
6
|
+
*
|
|
7
|
+
* Only callable if shares were revealed and match the option_index.
|
|
8
|
+
* If the user voted for the winning option and incremented the tally,
|
|
9
|
+
* transfers proportional yield: (user_score / total_score) * reward_lamports.
|
|
10
|
+
* Closes the account and returns rent lamports to owner.
|
|
11
|
+
*
|
|
12
|
+
* @param provider - Anchor provider for connection and wallet
|
|
13
|
+
* @param params - Close share account parameters
|
|
14
|
+
* @returns Transaction signature
|
|
15
|
+
*/
|
|
16
|
+
export async function closeShareAccount(provider, params) {
|
|
17
|
+
const programId = params.programId ?? PROGRAM_ID;
|
|
18
|
+
const program = new Program(IDL, provider);
|
|
19
|
+
const signature = await program.methods
|
|
20
|
+
.closeShareAccount(params.optionIndex)
|
|
21
|
+
.accountsPartial({
|
|
22
|
+
market: params.market,
|
|
23
|
+
})
|
|
24
|
+
.signers([params.owner])
|
|
25
|
+
.rpc();
|
|
26
|
+
return { signature };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=closeShareAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closeShareAccount.js","sourceRoot":"","sources":["../../src/instructions/closeShareAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,GAAG,MAAM,+BAA+B,CAAC;AAyBhD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAwB,EACxB,MAA+B;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,GAAuB,EACvB,QAAQ,CACoB,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO;SACpC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC;SACrC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;SACD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACvB,GAAG,EAAE,CAAC;IAET,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { BN, type AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import { type Keypair, type PublicKey } from "@solana/web3.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for creating a market
|
|
5
|
+
*/
|
|
6
|
+
export interface CreateMarketParams {
|
|
7
|
+
/** Market creator (pays for account creation) */
|
|
8
|
+
creator: Keypair;
|
|
9
|
+
/** Unique market index */
|
|
10
|
+
marketIndex: number | BN;
|
|
11
|
+
/** Maximum number of options allowed */
|
|
12
|
+
maxOptions: number;
|
|
13
|
+
/** Maximum shares available for purchase */
|
|
14
|
+
maxShares: number | BN;
|
|
15
|
+
/** Reward pool in lamports for winners */
|
|
16
|
+
rewardLamports: number | BN;
|
|
17
|
+
/** Duration of staking period in seconds */
|
|
18
|
+
timeToStake: number | BN;
|
|
19
|
+
/** Duration of reveal period in seconds */
|
|
20
|
+
timeToReveal: number | BN;
|
|
21
|
+
/** Optional authority that can select winning option */
|
|
22
|
+
selectAuthority?: PublicKey;
|
|
23
|
+
/** Optional program ID (defaults to PROGRAM_ID) */
|
|
24
|
+
programId?: PublicKey;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Result from creating a market
|
|
28
|
+
*/
|
|
29
|
+
export interface CreateMarketResult {
|
|
30
|
+
/** Transaction signature */
|
|
31
|
+
signature: string;
|
|
32
|
+
/** PDA of the created market */
|
|
33
|
+
marketPda: PublicKey;
|
|
34
|
+
/** Computation offset (pass to awaitComputationFinalization) */
|
|
35
|
+
computationOffset: BN;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new conviction market with encrypted state
|
|
39
|
+
*
|
|
40
|
+
* Initializes a market with encrypted available shares via MPC computation.
|
|
41
|
+
* After creation, options must be added and the market must be funded and opened.
|
|
42
|
+
*
|
|
43
|
+
* @param provider - Anchor provider for connection and wallet
|
|
44
|
+
* @param params - Create market parameters
|
|
45
|
+
* @returns Transaction signature, market PDA, and await helper
|
|
46
|
+
*/
|
|
47
|
+
export declare function createMarket(provider: AnchorProvider, params: CreateMarketParams): Promise<CreateMarketResult>;
|
|
48
|
+
//# sourceMappingURL=createMarket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMarket.d.ts","sourceRoot":"","sources":["../../src/instructions/createMarket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAiB,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAqB9E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC;IACzB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;IACvB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,GAAG,EAAE,CAAC;IAC5B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC;IACzB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;IAC1B,wDAAwD;IACxD,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,mDAAmD;IACnD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,gEAAgE;IAChE,iBAAiB,EAAE,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAkF7B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Program, BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { SystemProgram } from "@solana/web3.js";
|
|
3
|
+
import { getCompDefAccOffset, getMXEAccAddress, getMempoolAccAddress, getExecutingPoolAccAddress, getComputationAccAddress, getCompDefAccAddress, } from "@arcium-hq/client";
|
|
4
|
+
import { PROGRAM_ID, COMP_DEF_OFFSETS } from "../constants";
|
|
5
|
+
import { deriveMarketPda, generateComputationOffset, generateNonce, nonceToU128, ARCIUM_CLUSTER_OFFSET, getClusterAddress, } from "../utils";
|
|
6
|
+
import IDL from "../idl/conviction_market.json";
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new conviction market with encrypted state
|
|
9
|
+
*
|
|
10
|
+
* Initializes a market with encrypted available shares via MPC computation.
|
|
11
|
+
* After creation, options must be added and the market must be funded and opened.
|
|
12
|
+
*
|
|
13
|
+
* @param provider - Anchor provider for connection and wallet
|
|
14
|
+
* @param params - Create market parameters
|
|
15
|
+
* @returns Transaction signature, market PDA, and await helper
|
|
16
|
+
*/
|
|
17
|
+
export async function createMarket(provider, params) {
|
|
18
|
+
const programId = params.programId ?? PROGRAM_ID;
|
|
19
|
+
const program = new Program(IDL, provider);
|
|
20
|
+
const clusterAccount = getClusterAddress();
|
|
21
|
+
// Convert parameters to BN
|
|
22
|
+
const marketIndexBN = typeof params.marketIndex === "number"
|
|
23
|
+
? new BN(params.marketIndex)
|
|
24
|
+
: params.marketIndex;
|
|
25
|
+
const maxSharesBN = typeof params.maxShares === "number"
|
|
26
|
+
? new BN(params.maxShares)
|
|
27
|
+
: params.maxShares;
|
|
28
|
+
const rewardLamportsBN = typeof params.rewardLamports === "number"
|
|
29
|
+
? new BN(params.rewardLamports)
|
|
30
|
+
: params.rewardLamports;
|
|
31
|
+
const timeToStakeBN = typeof params.timeToStake === "number"
|
|
32
|
+
? new BN(params.timeToStake)
|
|
33
|
+
: params.timeToStake;
|
|
34
|
+
const timeToRevealBN = typeof params.timeToReveal === "number"
|
|
35
|
+
? new BN(params.timeToReveal)
|
|
36
|
+
: params.timeToReveal;
|
|
37
|
+
// Derive market PDA
|
|
38
|
+
const [marketPda] = deriveMarketPda(params.creator.publicKey, marketIndexBN, programId);
|
|
39
|
+
// Auto-generate computation offset and nonce
|
|
40
|
+
const computationOffset = generateComputationOffset();
|
|
41
|
+
const nonce = generateNonce();
|
|
42
|
+
const nonceBN = nonceToU128(nonce);
|
|
43
|
+
const signature = await program.methods
|
|
44
|
+
.createMarket(marketIndexBN, computationOffset, params.maxOptions, maxSharesBN, rewardLamportsBN, timeToStakeBN, timeToRevealBN, nonceBN, params.selectAuthority ?? null)
|
|
45
|
+
.accountsPartial({
|
|
46
|
+
creator: params.creator.publicKey,
|
|
47
|
+
market: marketPda,
|
|
48
|
+
computationAccount: getComputationAccAddress(ARCIUM_CLUSTER_OFFSET, computationOffset),
|
|
49
|
+
clusterAccount,
|
|
50
|
+
mxeAccount: getMXEAccAddress(programId),
|
|
51
|
+
mempoolAccount: getMempoolAccAddress(ARCIUM_CLUSTER_OFFSET),
|
|
52
|
+
executingPool: getExecutingPoolAccAddress(ARCIUM_CLUSTER_OFFSET),
|
|
53
|
+
compDefAccount: getCompDefAccAddress(programId, Buffer.from(getCompDefAccOffset(COMP_DEF_OFFSETS.INIT_MARKET_SHARES)).readUInt32LE()),
|
|
54
|
+
systemProgram: SystemProgram.programId,
|
|
55
|
+
})
|
|
56
|
+
.signers([params.creator])
|
|
57
|
+
.rpc({ skipPreflight: true });
|
|
58
|
+
return {
|
|
59
|
+
signature,
|
|
60
|
+
marketPda,
|
|
61
|
+
computationOffset,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=createMarket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMarket.js","sourceRoot":"","sources":["../../src/instructions/createMarket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAuB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,GAAG,MAAM,+BAA+B,CAAC;AAuChD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAwB,EACxB,MAA0B;IAE1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,GAAuB,EACvB,QAAQ,CACoB,CAAC;IAE/B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,2BAA2B;IAC3B,MAAM,aAAa,GACjB,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACpC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IACzB,MAAM,WAAW,GACf,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QAClC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;IACvB,MAAM,gBAAgB,GACpB,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;QACvC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IAC5B,MAAM,aAAa,GACjB,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACpC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IACzB,MAAM,cAAc,GAClB,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;QACrC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;IAE1B,oBAAoB;IACpB,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CACjC,MAAM,CAAC,OAAO,CAAC,SAAS,EACxB,aAAa,EACb,SAAS,CACV,CAAC;IAEF,6CAA6C;IAC7C,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO;SACpC,YAAY,CACX,aAAa,EACb,iBAAiB,EACjB,MAAM,CAAC,UAAU,EACjB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,OAAO,EACP,MAAM,CAAC,eAAe,IAAI,IAAI,CAC/B;SACA,eAAe,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACjC,MAAM,EAAE,SAAS;QACjB,kBAAkB,EAAE,wBAAwB,CAC1C,qBAAqB,EACrB,iBAAiB,CAClB;QACD,cAAc;QACd,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACvC,cAAc,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;QAC3D,aAAa,EAAE,0BAA0B,CAAC,qBAAqB,CAAC;QAChE,cAAc,EAAE,oBAAoB,CAClC,SAAS,EACT,MAAM,CAAC,IAAI,CACT,mBAAmB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CACzD,CAAC,YAAY,EAAE,CACjB;QACD,aAAa,EAAE,aAAa,CAAC,SAAS;KACvC,CAAC;SACD,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzB,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhC,OAAO;QACL,SAAS;QACT,SAAS;QACT,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type AnchorProvider } from "@coral-xyz/anchor";
|
|
2
|
+
import type { PublicKey } from "@solana/web3.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for incrementing option tally
|
|
5
|
+
*/
|
|
6
|
+
export interface IncrementOptionTallyParams {
|
|
7
|
+
/** Market PDA */
|
|
8
|
+
market: PublicKey;
|
|
9
|
+
/** Share account owner */
|
|
10
|
+
owner: PublicKey;
|
|
11
|
+
/** Option index to increment */
|
|
12
|
+
optionIndex: number;
|
|
13
|
+
/** Optional program ID (defaults to PROGRAM_ID) */
|
|
14
|
+
programId?: PublicKey;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Result from incrementing option tally
|
|
18
|
+
*/
|
|
19
|
+
export interface IncrementOptionTallyResult {
|
|
20
|
+
/** Transaction signature */
|
|
21
|
+
signature: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Increments the tally for an option after shares are revealed
|
|
25
|
+
*
|
|
26
|
+
* This is permissionless - anyone can call it for any revealed share account.
|
|
27
|
+
* Calculates conviction score (amount * time-in-market) and adds it to the
|
|
28
|
+
* option's total. Each share account can only increment once.
|
|
29
|
+
*
|
|
30
|
+
* @param provider - Anchor provider for connection and wallet
|
|
31
|
+
* @param params - Increment option tally parameters
|
|
32
|
+
* @returns Transaction signature
|
|
33
|
+
*/
|
|
34
|
+
export declare function incrementOptionTally(provider: AnchorProvider, params: IncrementOptionTallyParams): Promise<IncrementOptionTallyResult>;
|
|
35
|
+
//# sourceMappingURL=incrementOptionTally.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incrementOptionTally.d.ts","sourceRoot":"","sources":["../../src/instructions/incrementOptionTally.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMjD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,iBAAiB;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CAgBrC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { PROGRAM_ID } from "../constants";
|
|
3
|
+
import IDL from "../idl/conviction_market.json";
|
|
4
|
+
/**
|
|
5
|
+
* Increments the tally for an option after shares are revealed
|
|
6
|
+
*
|
|
7
|
+
* This is permissionless - anyone can call it for any revealed share account.
|
|
8
|
+
* Calculates conviction score (amount * time-in-market) and adds it to the
|
|
9
|
+
* option's total. Each share account can only increment once.
|
|
10
|
+
*
|
|
11
|
+
* @param provider - Anchor provider for connection and wallet
|
|
12
|
+
* @param params - Increment option tally parameters
|
|
13
|
+
* @returns Transaction signature
|
|
14
|
+
*/
|
|
15
|
+
export async function incrementOptionTally(provider, params) {
|
|
16
|
+
const programId = params.programId ?? PROGRAM_ID;
|
|
17
|
+
const program = new Program(IDL, provider);
|
|
18
|
+
const signature = await program.methods
|
|
19
|
+
.incrementOptionTally(params.optionIndex)
|
|
20
|
+
.accountsPartial({
|
|
21
|
+
market: params.market,
|
|
22
|
+
owner: params.owner,
|
|
23
|
+
})
|
|
24
|
+
.rpc();
|
|
25
|
+
return { signature };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=incrementOptionTally.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incrementOptionTally.js","sourceRoot":"","sources":["../../src/instructions/incrementOptionTally.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,GAAG,MAAM,+BAA+B,CAAC;AAyBhD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAwB,EACxB,MAAkC;IAElC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,GAAuB,EACvB,QAAQ,CACoB,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO;SACpC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC;SACxC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;SACD,GAAG,EAAE,CAAC;IAET,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./createMarket";
|
|
2
|
+
export * from "./openMarket";
|
|
3
|
+
export * from "./addMarketOption";
|
|
4
|
+
export * from "./selectOption";
|
|
5
|
+
export * from "./initVoteTokenAccount";
|
|
6
|
+
export * from "./mintVoteTokens";
|
|
7
|
+
export * from "./claimVoteTokens";
|
|
8
|
+
export * from "./initShareAccount";
|
|
9
|
+
export * from "./buyMarketShares";
|
|
10
|
+
export * from "./revealShares";
|
|
11
|
+
export * from "./incrementOptionTally";
|
|
12
|
+
export * from "./closeShareAccount";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instructions/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Market lifecycle instructions
|
|
2
|
+
export * from "./createMarket";
|
|
3
|
+
export * from "./openMarket";
|
|
4
|
+
export * from "./addMarketOption";
|
|
5
|
+
export * from "./selectOption";
|
|
6
|
+
// Vote token account instructions
|
|
7
|
+
export * from "./initVoteTokenAccount";
|
|
8
|
+
export * from "./mintVoteTokens";
|
|
9
|
+
export * from "./claimVoteTokens";
|
|
10
|
+
// Share account instructions
|
|
11
|
+
export * from "./initShareAccount";
|
|
12
|
+
export * from "./buyMarketShares";
|
|
13
|
+
export * from "./revealShares";
|
|
14
|
+
export * from "./incrementOptionTally";
|
|
15
|
+
export * from "./closeShareAccount";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|