@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.
Files changed (107) hide show
  1. package/README.md +298 -0
  2. package/dist/constants.d.ts +29 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +29 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/idl/conviction_market.d.ts +3760 -0
  7. package/dist/idl/conviction_market.d.ts.map +1 -0
  8. package/dist/idl/conviction_market.js +2 -0
  9. package/dist/idl/conviction_market.js.map +1 -0
  10. package/dist/idl/conviction_market.json +3753 -0
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +6 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/instructions/addMarketOption.d.ts +38 -0
  16. package/dist/instructions/addMarketOption.d.ts.map +1 -0
  17. package/dist/instructions/addMarketOption.js +30 -0
  18. package/dist/instructions/addMarketOption.js.map +1 -0
  19. package/dist/instructions/buyMarketShares.d.ts +47 -0
  20. package/dist/instructions/buyMarketShares.d.ts.map +1 -0
  21. package/dist/instructions/buyMarketShares.js +63 -0
  22. package/dist/instructions/buyMarketShares.js.map +1 -0
  23. package/dist/instructions/claimVoteTokens.d.ts +40 -0
  24. package/dist/instructions/claimVoteTokens.d.ts.map +1 -0
  25. package/dist/instructions/claimVoteTokens.js +49 -0
  26. package/dist/instructions/claimVoteTokens.js.map +1 -0
  27. package/dist/instructions/closeShareAccount.d.ts +36 -0
  28. package/dist/instructions/closeShareAccount.d.ts.map +1 -0
  29. package/dist/instructions/closeShareAccount.js +28 -0
  30. package/dist/instructions/closeShareAccount.js.map +1 -0
  31. package/dist/instructions/createMarket.d.ts +48 -0
  32. package/dist/instructions/createMarket.d.ts.map +1 -0
  33. package/dist/instructions/createMarket.js +64 -0
  34. package/dist/instructions/createMarket.js.map +1 -0
  35. package/dist/instructions/incrementOptionTally.d.ts +35 -0
  36. package/dist/instructions/incrementOptionTally.d.ts.map +1 -0
  37. package/dist/instructions/incrementOptionTally.js +27 -0
  38. package/dist/instructions/incrementOptionTally.js.map +1 -0
  39. package/dist/instructions/index.d.ts +13 -0
  40. package/dist/instructions/index.d.ts.map +1 -0
  41. package/dist/instructions/index.js +16 -0
  42. package/dist/instructions/index.js.map +1 -0
  43. package/dist/instructions/initShareAccount.d.ts +34 -0
  44. package/dist/instructions/initShareAccount.d.ts.map +1 -0
  45. package/dist/instructions/initShareAccount.js +33 -0
  46. package/dist/instructions/initShareAccount.js.map +1 -0
  47. package/dist/instructions/initVoteTokenAccount.d.ts +37 -0
  48. package/dist/instructions/initVoteTokenAccount.d.ts.map +1 -0
  49. package/dist/instructions/initVoteTokenAccount.js +48 -0
  50. package/dist/instructions/initVoteTokenAccount.js.map +1 -0
  51. package/dist/instructions/mintVoteTokens.d.ts +40 -0
  52. package/dist/instructions/mintVoteTokens.d.ts.map +1 -0
  53. package/dist/instructions/mintVoteTokens.js +49 -0
  54. package/dist/instructions/mintVoteTokens.js.map +1 -0
  55. package/dist/instructions/openMarket.d.ts +34 -0
  56. package/dist/instructions/openMarket.d.ts.map +1 -0
  57. package/dist/instructions/openMarket.js +29 -0
  58. package/dist/instructions/openMarket.js.map +1 -0
  59. package/dist/instructions/revealShares.d.ts +43 -0
  60. package/dist/instructions/revealShares.d.ts.map +1 -0
  61. package/dist/instructions/revealShares.js +47 -0
  62. package/dist/instructions/revealShares.js.map +1 -0
  63. package/dist/instructions/selectOption.d.ts +36 -0
  64. package/dist/instructions/selectOption.d.ts.map +1 -0
  65. package/dist/instructions/selectOption.js +28 -0
  66. package/dist/instructions/selectOption.js.map +1 -0
  67. package/dist/types/accounts.d.ts +104 -0
  68. package/dist/types/accounts.d.ts.map +1 -0
  69. package/dist/types/accounts.js +2 -0
  70. package/dist/types/accounts.js.map +1 -0
  71. package/dist/types/common.d.ts +21 -0
  72. package/dist/types/common.d.ts.map +1 -0
  73. package/dist/types/common.js +2 -0
  74. package/dist/types/common.js.map +1 -0
  75. package/dist/types/index.d.ts +3 -0
  76. package/dist/types/index.d.ts.map +1 -0
  77. package/dist/types/index.js +3 -0
  78. package/dist/types/index.js.map +1 -0
  79. package/dist/utils/arcium.d.ts +3 -0
  80. package/dist/utils/arcium.d.ts.map +1 -0
  81. package/dist/utils/arcium.js +6 -0
  82. package/dist/utils/arcium.js.map +1 -0
  83. package/dist/utils/awaitComputationFinalization.d.ts +37 -0
  84. package/dist/utils/awaitComputationFinalization.d.ts.map +1 -0
  85. package/dist/utils/awaitComputationFinalization.js +32 -0
  86. package/dist/utils/awaitComputationFinalization.js.map +1 -0
  87. package/dist/utils/computations.d.ts +27 -0
  88. package/dist/utils/computations.d.ts.map +1 -0
  89. package/dist/utils/computations.js +35 -0
  90. package/dist/utils/computations.js.map +1 -0
  91. package/dist/utils/encryption.d.ts +46 -0
  92. package/dist/utils/encryption.d.ts.map +1 -0
  93. package/dist/utils/encryption.js +53 -0
  94. package/dist/utils/encryption.js.map +1 -0
  95. package/dist/utils/index.d.ts +7 -0
  96. package/dist/utils/index.d.ts.map +1 -0
  97. package/dist/utils/index.js +7 -0
  98. package/dist/utils/index.js.map +1 -0
  99. package/dist/utils/keypairs.d.ts +20 -0
  100. package/dist/utils/keypairs.d.ts.map +1 -0
  101. package/dist/utils/keypairs.js +29 -0
  102. package/dist/utils/keypairs.js.map +1 -0
  103. package/dist/utils/pdas.d.ts +38 -0
  104. package/dist/utils/pdas.d.ts.map +1 -0
  105. package/dist/utils/pdas.js +57 -0
  106. package/dist/utils/pdas.js.map +1 -0
  107. package/package.json +45 -0
@@ -0,0 +1,6 @@
1
+ export * from "./types";
2
+ export * from "./utils";
3
+ export * from "./instructions";
4
+ export * from "./constants";
5
+ export type { ConvictionMarket } from "./idl/conviction_market";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,6 @@
1
+ // Core exports
2
+ export * from "./types";
3
+ export * from "./utils";
4
+ export * from "./instructions";
5
+ export * from "./constants";
6
+ //# sourceMappingURL=index.js.map
@@ -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":"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"}
@@ -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