@baozi.bet/mcp-server 4.0.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 (60) hide show
  1. package/README.md +294 -0
  2. package/dist/__tests__/full-test.d.ts +1 -0
  3. package/dist/__tests__/full-test.js +291 -0
  4. package/dist/builders/affiliate-transaction.d.ts +41 -0
  5. package/dist/builders/affiliate-transaction.js +123 -0
  6. package/dist/builders/bet-transaction.d.ts +70 -0
  7. package/dist/builders/bet-transaction.js +323 -0
  8. package/dist/builders/claim-transaction.d.ts +57 -0
  9. package/dist/builders/claim-transaction.js +196 -0
  10. package/dist/builders/creator-transaction.d.ts +49 -0
  11. package/dist/builders/creator-transaction.js +177 -0
  12. package/dist/builders/dispute-transaction.d.ts +81 -0
  13. package/dist/builders/dispute-transaction.js +215 -0
  14. package/dist/builders/index.d.ts +14 -0
  15. package/dist/builders/index.js +15 -0
  16. package/dist/builders/market-creation-tx.d.ts +65 -0
  17. package/dist/builders/market-creation-tx.js +362 -0
  18. package/dist/builders/market-management-transaction.d.ts +85 -0
  19. package/dist/builders/market-management-transaction.js +239 -0
  20. package/dist/builders/race-transaction.d.ts +67 -0
  21. package/dist/builders/race-transaction.js +242 -0
  22. package/dist/builders/resolution-transaction.d.ts +108 -0
  23. package/dist/builders/resolution-transaction.js +250 -0
  24. package/dist/builders/whitelist-transaction.d.ts +72 -0
  25. package/dist/builders/whitelist-transaction.js +179 -0
  26. package/dist/config.d.ts +138 -0
  27. package/dist/config.js +307 -0
  28. package/dist/handlers/agent-network.d.ts +81 -0
  29. package/dist/handlers/agent-network.js +332 -0
  30. package/dist/handlers/claims.d.ts +47 -0
  31. package/dist/handlers/claims.js +218 -0
  32. package/dist/handlers/market-creation.d.ts +154 -0
  33. package/dist/handlers/market-creation.js +290 -0
  34. package/dist/handlers/markets.d.ts +41 -0
  35. package/dist/handlers/markets.js +319 -0
  36. package/dist/handlers/positions.d.ts +40 -0
  37. package/dist/handlers/positions.js +244 -0
  38. package/dist/handlers/quote.d.ts +33 -0
  39. package/dist/handlers/quote.js +144 -0
  40. package/dist/handlers/race-markets.d.ts +54 -0
  41. package/dist/handlers/race-markets.js +308 -0
  42. package/dist/handlers/resolution.d.ts +43 -0
  43. package/dist/handlers/resolution.js +194 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.js +109 -0
  46. package/dist/resources.d.ts +13 -0
  47. package/dist/resources.js +336 -0
  48. package/dist/tools.d.ts +3109 -0
  49. package/dist/tools.js +1956 -0
  50. package/dist/validation/bet-rules.d.ts +82 -0
  51. package/dist/validation/bet-rules.js +276 -0
  52. package/dist/validation/creation-rules.d.ts +69 -0
  53. package/dist/validation/creation-rules.js +302 -0
  54. package/dist/validation/index.d.ts +6 -0
  55. package/dist/validation/index.js +7 -0
  56. package/dist/validation/market-rules.d.ts +60 -0
  57. package/dist/validation/market-rules.js +237 -0
  58. package/dist/validation/parimutuel-rules.d.ts +117 -0
  59. package/dist/validation/parimutuel-rules.js +270 -0
  60. package/package.json +52 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Claim Transaction Builders
3
+ *
4
+ * Builds unsigned transactions for:
5
+ * - Claiming winnings
6
+ * - Claiming refunds
7
+ * - Claiming affiliate earnings
8
+ * - Claiming creator fees
9
+ */
10
+ import { Connection, Transaction } from '@solana/web3.js';
11
+ export interface ClaimTransactionResult {
12
+ transaction: Transaction;
13
+ serializedTx: string;
14
+ claimType: 'winnings' | 'refund' | 'affiliate' | 'creator';
15
+ }
16
+ /**
17
+ * Build claim_winnings_sol transaction
18
+ */
19
+ export declare function buildClaimWinningsTransaction(params: {
20
+ marketPda: string;
21
+ positionPda: string;
22
+ userWallet: string;
23
+ connection?: Connection;
24
+ }): Promise<ClaimTransactionResult>;
25
+ /**
26
+ * Build claim_refund_sol transaction
27
+ */
28
+ export declare function buildClaimRefundTransaction(params: {
29
+ marketPda: string;
30
+ positionPda: string;
31
+ userWallet: string;
32
+ connection?: Connection;
33
+ }): Promise<ClaimTransactionResult>;
34
+ /**
35
+ * Build claim_affiliate_sol transaction
36
+ */
37
+ export declare function buildClaimAffiliateTransaction(params: {
38
+ affiliateCode: string;
39
+ userWallet: string;
40
+ connection?: Connection;
41
+ }): Promise<ClaimTransactionResult>;
42
+ /**
43
+ * Build batch claim transaction for multiple positions
44
+ */
45
+ export declare function buildBatchClaimTransaction(params: {
46
+ claims: Array<{
47
+ marketPda: string;
48
+ positionPda: string;
49
+ claimType: 'winnings' | 'refund';
50
+ }>;
51
+ userWallet: string;
52
+ connection?: Connection;
53
+ }): Promise<{
54
+ transaction: Transaction;
55
+ serializedTx: string;
56
+ claimCount: number;
57
+ }>;
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Claim Transaction Builders
3
+ *
4
+ * Builds unsigned transactions for:
5
+ * - Claiming winnings
6
+ * - Claiming refunds
7
+ * - Claiming affiliate earnings
8
+ * - Claiming creator fees
9
+ */
10
+ import { Connection, PublicKey, Transaction, TransactionInstruction, SystemProgram, } from '@solana/web3.js';
11
+ import { PROGRAM_ID, CONFIG_PDA, SOL_TREASURY_PDA, SEEDS, RPC_ENDPOINT, } from '../config.js';
12
+ // =============================================================================
13
+ // INSTRUCTION DISCRIMINATORS
14
+ // =============================================================================
15
+ // Correct discriminators: sha256("global:<instruction_name>")[0..8]
16
+ const CLAIM_WINNINGS_SOL_DISCRIMINATOR = Buffer.from([64, 158, 207, 116, 128, 129, 169, 76]);
17
+ const CLAIM_REFUND_SOL_DISCRIMINATOR = Buffer.from([8, 82, 5, 144, 194, 114, 255, 20]);
18
+ const CLAIM_AFFILIATE_SOL_DISCRIMINATOR = Buffer.from([125, 18, 164, 112, 216, 207, 197, 201]);
19
+ // =============================================================================
20
+ // CLAIM WINNINGS
21
+ // =============================================================================
22
+ /**
23
+ * Build claim_winnings_sol transaction
24
+ */
25
+ export async function buildClaimWinningsTransaction(params) {
26
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
27
+ const marketPubkey = new PublicKey(params.marketPda);
28
+ const positionPubkey = new PublicKey(params.positionPda);
29
+ const userPubkey = new PublicKey(params.userWallet);
30
+ // Instruction data: just discriminator
31
+ const data = CLAIM_WINNINGS_SOL_DISCRIMINATOR;
32
+ // Accounts for claim_winnings_sol:
33
+ // config, market, position, sol_treasury, user, system_program
34
+ const keys = [
35
+ { pubkey: CONFIG_PDA, isSigner: false, isWritable: false },
36
+ { pubkey: marketPubkey, isSigner: false, isWritable: true },
37
+ { pubkey: positionPubkey, isSigner: false, isWritable: true },
38
+ { pubkey: SOL_TREASURY_PDA, isSigner: false, isWritable: true },
39
+ { pubkey: userPubkey, isSigner: true, isWritable: true },
40
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
41
+ ];
42
+ const instruction = new TransactionInstruction({
43
+ programId: PROGRAM_ID,
44
+ keys,
45
+ data,
46
+ });
47
+ const transaction = new Transaction();
48
+ transaction.add(instruction);
49
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
50
+ transaction.recentBlockhash = blockhash;
51
+ transaction.feePayer = userPubkey;
52
+ const serializedTx = transaction.serialize({
53
+ requireAllSignatures: false,
54
+ verifySignatures: false,
55
+ }).toString('base64');
56
+ return {
57
+ transaction,
58
+ serializedTx,
59
+ claimType: 'winnings',
60
+ };
61
+ }
62
+ // =============================================================================
63
+ // CLAIM REFUND
64
+ // =============================================================================
65
+ /**
66
+ * Build claim_refund_sol transaction
67
+ */
68
+ export async function buildClaimRefundTransaction(params) {
69
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
70
+ const marketPubkey = new PublicKey(params.marketPda);
71
+ const positionPubkey = new PublicKey(params.positionPda);
72
+ const userPubkey = new PublicKey(params.userWallet);
73
+ const data = CLAIM_REFUND_SOL_DISCRIMINATOR;
74
+ // IDL Accounts for claim_refund_sol: market, position, user, system_program (NO config!)
75
+ const keys = [
76
+ { pubkey: marketPubkey, isSigner: false, isWritable: true },
77
+ { pubkey: positionPubkey, isSigner: false, isWritable: true },
78
+ { pubkey: userPubkey, isSigner: true, isWritable: true },
79
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
80
+ ];
81
+ const instruction = new TransactionInstruction({
82
+ programId: PROGRAM_ID,
83
+ keys,
84
+ data,
85
+ });
86
+ const transaction = new Transaction();
87
+ transaction.add(instruction);
88
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
89
+ transaction.recentBlockhash = blockhash;
90
+ transaction.feePayer = userPubkey;
91
+ const serializedTx = transaction.serialize({
92
+ requireAllSignatures: false,
93
+ verifySignatures: false,
94
+ }).toString('base64');
95
+ return {
96
+ transaction,
97
+ serializedTx,
98
+ claimType: 'refund',
99
+ };
100
+ }
101
+ // =============================================================================
102
+ // CLAIM AFFILIATE EARNINGS
103
+ // =============================================================================
104
+ /**
105
+ * Build claim_affiliate_sol transaction
106
+ */
107
+ export async function buildClaimAffiliateTransaction(params) {
108
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
109
+ const userPubkey = new PublicKey(params.userWallet);
110
+ // Derive affiliate PDA
111
+ const [affiliatePda] = PublicKey.findProgramAddressSync([SEEDS.AFFILIATE, Buffer.from(params.affiliateCode)], PROGRAM_ID);
112
+ const data = CLAIM_AFFILIATE_SOL_DISCRIMINATOR;
113
+ // Accounts for claim_affiliate_sol:
114
+ // config, affiliate, sol_treasury, owner, system_program
115
+ const keys = [
116
+ { pubkey: CONFIG_PDA, isSigner: false, isWritable: false },
117
+ { pubkey: affiliatePda, isSigner: false, isWritable: true },
118
+ { pubkey: SOL_TREASURY_PDA, isSigner: false, isWritable: true },
119
+ { pubkey: userPubkey, isSigner: true, isWritable: true },
120
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
121
+ ];
122
+ const instruction = new TransactionInstruction({
123
+ programId: PROGRAM_ID,
124
+ keys,
125
+ data,
126
+ });
127
+ const transaction = new Transaction();
128
+ transaction.add(instruction);
129
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
130
+ transaction.recentBlockhash = blockhash;
131
+ transaction.feePayer = userPubkey;
132
+ const serializedTx = transaction.serialize({
133
+ requireAllSignatures: false,
134
+ verifySignatures: false,
135
+ }).toString('base64');
136
+ return {
137
+ transaction,
138
+ serializedTx,
139
+ claimType: 'affiliate',
140
+ };
141
+ }
142
+ // NOTE: claim_creator_sol is in creator-transaction.ts, not here
143
+ // =============================================================================
144
+ // BATCH CLAIM (Multiple positions)
145
+ // =============================================================================
146
+ /**
147
+ * Build batch claim transaction for multiple positions
148
+ */
149
+ export async function buildBatchClaimTransaction(params) {
150
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
151
+ const userPubkey = new PublicKey(params.userWallet);
152
+ const transaction = new Transaction();
153
+ for (const claim of params.claims) {
154
+ const marketPubkey = new PublicKey(claim.marketPda);
155
+ const positionPubkey = new PublicKey(claim.positionPda);
156
+ const discriminator = claim.claimType === 'winnings'
157
+ ? CLAIM_WINNINGS_SOL_DISCRIMINATOR
158
+ : CLAIM_REFUND_SOL_DISCRIMINATOR;
159
+ // claim_winnings_sol: config, market, position, sol_treasury, [optional...], user, system
160
+ // claim_refund_sol: market, position, user, system (NO config!)
161
+ const keys = claim.claimType === 'winnings'
162
+ ? [
163
+ { pubkey: CONFIG_PDA, isSigner: false, isWritable: false },
164
+ { pubkey: marketPubkey, isSigner: false, isWritable: true },
165
+ { pubkey: positionPubkey, isSigner: false, isWritable: true },
166
+ { pubkey: SOL_TREASURY_PDA, isSigner: false, isWritable: true },
167
+ { pubkey: userPubkey, isSigner: true, isWritable: true },
168
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
169
+ ]
170
+ : [
171
+ { pubkey: marketPubkey, isSigner: false, isWritable: true },
172
+ { pubkey: positionPubkey, isSigner: false, isWritable: true },
173
+ { pubkey: userPubkey, isSigner: true, isWritable: true },
174
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
175
+ ];
176
+ const instruction = new TransactionInstruction({
177
+ programId: PROGRAM_ID,
178
+ keys,
179
+ data: discriminator,
180
+ });
181
+ transaction.add(instruction);
182
+ }
183
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
184
+ transaction.recentBlockhash = blockhash;
185
+ transaction.feePayer = userPubkey;
186
+ const serializedTx = transaction.serialize({
187
+ requireAllSignatures: false,
188
+ verifySignatures: false,
189
+ }).toString('base64');
190
+ return {
191
+ transaction,
192
+ serializedTx,
193
+ claimCount: params.claims.length,
194
+ };
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW0tdHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlcnMvY2xhaW0tdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLGFBQWEsR0FDZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixLQUFLLEVBQ0wsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBRXRCLGdGQUFnRjtBQUNoRiw2QkFBNkI7QUFDN0IsZ0ZBQWdGO0FBRWhGLG9FQUFvRTtBQUNwRSxNQUFNLGdDQUFnQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RixNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RixNQUFNLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQVkvRixnRkFBZ0Y7QUFDaEYsaUJBQWlCO0FBQ2pCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsNkJBQTZCLENBQUMsTUFLbkQ7SUFDQyxNQUFNLElBQUksR0FB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SUFBSTtZQUNKLElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUMsQ0FBQztRQUVILFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxXQUFXLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUN4QyxXQUFXLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUVsQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQ3pDLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsZ0JBQWdCLEVBQUUsS0FBSztLQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRCLE9BQU87UUFDTCxXQUFXO1FBQ1gsWUFBWTtRQUNaLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07S0FDakMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsYWltIFRyYW5zYWN0aW9uIEJ1aWxkZXJzXG4gKlxuICogQnVpbGRzIHVuc2lnbmVkIHRyYW5zYWN0aW9ucyBmb3I6XG4gKiAtIENsYWltaW5nIHdpbm5pbmdzXG4gKiAtIENsYWltaW5nIHJlZnVuZHNcbiAqIC0gQ2xhaW1pbmcgYWZmaWxpYXRlIGVhcm5pbmdzXG4gKiAtIENsYWltaW5nIGNyZWF0b3IgZmVlc1xuICovXG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBQdWJsaWNLZXksXG4gIFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxuICBTeXN0ZW1Qcm9ncmFtLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHtcbiAgUFJPR1JBTV9JRCxcbiAgQ09ORklHX1BEQSxcbiAgU09MX1RSRUFTVVJZX1BEQSxcbiAgU0VFRFMsXG4gIFJQQ19FTkRQT0lOVCxcbn0gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOU1RSVUNUSU9OIERJU0NSSU1JTkFUT1JTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb3JyZWN0IGRpc2NyaW1pbmF0b3JzOiBzaGEyNTYoXCJnbG9iYWw6PGluc3RydWN0aW9uX25hbWU+XCIpWzAuLjhdXG5jb25zdCBDTEFJTV9XSU5OSU5HU19TT0xfRElTQ1JJTUlOQVRPUiA9IEJ1ZmZlci5mcm9tKFs2NCwgMTU4LCAyMDcsIDExNiwgMTI4LCAxMjksIDE2OSwgNzZdKTtcbmNvbnN0IENMQUlNX1JFRlVORF9TT0xfRElTQ1JJTUlOQVRPUiA9IEJ1ZmZlci5mcm9tKFs4LCA4MiwgNSwgMTQ0LCAxOTQsIDExNCwgMjU1LCAyMF0pO1xuY29uc3QgQ0xBSU1fQUZGSUxJQVRFX1NPTF9ESVNDUklNSU5BVE9SID0gQnVmZmVyLmZyb20oWzEyNSwgMTgsIDE2NCwgMTEyLCAyMTYsIDIwNywgMTk3LCAyMDFdKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYWltVHJhbnNhY3Rpb25SZXN1bHQge1xuICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHNlcmlhbGl6ZWRUeDogc3RyaW5nO1xuICBjbGFpbVR5cGU6ICd3aW5uaW5ncycgfCAncmVmdW5kJyB8ICdhZmZpbGlhdGUnIHwgJ2NyZWF0b3InO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xBSU0gV0lOTklOR1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQnVpbGQgY2xhaW1fd2lubmluZ3Nfc29sIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENsYWltV2lubmluZ3NUcmFuc2FjdGlvbihwYXJhbXM6IHtcbiAgbWFya2V0UGRhOiBzdHJpbmc7XG4gIHBvc2l0aW9uUGRhOiBzdHJpbmc7XG4gIHVzZXJXYWxsZXQ6IHN0cmluZztcbiAgY29ubmVjdGlvbj86IENvbm5lY3Rpb247XG59KTogUHJvbWlzZTxDbGFpbVRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gIGNvbnN0IGNvbm4gPSBwYXJhbXMuY29ubmVjdGlvbiB8fCBuZXcgQ29ubmVjdGlvbihSUENfRU5EUE9JTlQsICdjb25maXJtZWQnKTtcbiAgY29uc3QgbWFya2V0UHVia2V5ID0gbmV3IFB1YmxpY0tleShwYXJhbXMubWFya2V0UGRhKTtcbiAgY29uc3QgcG9zaXRpb25QdWJrZXkgPSBuZXcgUHVibGljS2V5KHBhcmFtcy5wb3NpdGlvblBkYSk7XG4gIGNvbnN0IHVzZXJQdWJrZXkgPSBuZXcgUHVibGljS2V5KHBhcmFtcy51c2VyV2FsbGV0KTtcblxuICAvLyBJbnN0cnVjdGlvbiBkYXRhOiBqdXN0IGRpc2NyaW1pbmF0b3JcbiAgY29uc3QgZGF0YSA9IENMQUlNX1dJTk5JTkdTX1NPTF9ESVNDUklNSU5BVE9SO1xuXG4gIC8vIEFjY291bnRzIGZvciBjbGFpbV93aW5uaW5nc19zb2w6XG4gIC8vIGNvbmZpZywgbWFya2V0LCBwb3NpdGlvbiwgc29sX3RyZWFzdXJ5LCB1c2VyLCBzeXN0ZW1fcHJvZ3JhbVxuICBjb25zdCBrZXlzID0gW1xuICAgIHsgcHVia2V5OiBDT05GSUdfUERBLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gICAgeyBwdWJrZXk6IG1hcmtldFB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IHBvc2l0aW9uUHVia2V5LCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogU09MX1RSRUFTVVJZX1BEQSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IHVzZXJQdWJrZXksIGlzU2lnbmVyOiB0cnVlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gIF07XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgcHJvZ3JhbUlkOiBQUk9HUkFNX0lELFxuICAgIGtleXMsXG4gICAgZGF0YSxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgdHJhbnNhY3Rpb24uYWRkKGluc3RydWN0aW9uKTtcblxuICBjb25zdCB7IGJsb2NraGFzaCB9ID0gYXdhaXQgY29ubi5nZXRMYXRlc3RCbG9ja2hhc2goJ2ZpbmFsaXplZCcpO1xuICB0cmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2ggPSBibG9ja2hhc2g7XG4gIHRyYW5zYWN0aW9uLmZlZVBheWVyID0gdXNlclB1YmtleTtcblxuICBjb25zdCBzZXJpYWxpemVkVHggPSB0cmFuc2FjdGlvbi5zZXJpYWxpemUoe1xuICAgIHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSxcbiAgICB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgfSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIHJldHVybiB7XG4gICAgdHJhbnNhY3Rpb24sXG4gICAgc2VyaWFsaXplZFR4LFxuICAgIGNsYWltVHlwZTogJ3dpbm5pbmdzJyxcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMQUlNIFJFRlVORFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBCdWlsZCBjbGFpbV9yZWZ1bmRfc29sIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENsYWltUmVmdW5kVHJhbnNhY3Rpb24ocGFyYW1zOiB7XG4gIG1hcmtldFBkYTogc3RyaW5nO1xuICBwb3NpdGlvblBkYTogc3RyaW5nO1xuICB1c2VyV2FsbGV0OiBzdHJpbmc7XG4gIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uO1xufSk6IFByb21pc2U8Q2xhaW1UcmFuc2FjdGlvblJlc3VsdD4ge1xuICBjb25zdCBjb25uID0gcGFyYW1zLmNvbm5lY3Rpb24gfHwgbmV3IENvbm5lY3Rpb24oUlBDX0VORFBPSU5ULCAnY29uZmlybWVkJyk7XG4gIGNvbnN0IG1hcmtldFB1YmtleSA9IG5ldyBQdWJsaWNLZXkocGFyYW1zLm1hcmtldFBkYSk7XG4gIGNvbnN0IHBvc2l0aW9uUHVia2V5ID0gbmV3IFB1YmxpY0tleShwYXJhbXMucG9zaXRpb25QZGEpO1xuICBjb25zdCB1c2VyUHVia2V5ID0gbmV3IFB1YmxpY0tleShwYXJhbXMudXNlcldhbGxldCk7XG5cbiAgY29uc3QgZGF0YSA9IENMQUlNX1JFRlVORF9TT0xfRElTQ1JJTUlOQVRPUjtcblxuICAvLyBJREwgQWNjb3VudHMgZm9yIGNsYWltX3JlZnVuZF9zb2w6IG1hcmtldCwgcG9zaXRpb24sIHVzZXIsIHN5c3RlbV9wcm9ncmFtIChOTyBjb25maWchKVxuICBjb25zdCBrZXlzID0gW1xuICAgIHsgcHVia2V5OiBtYXJrZXRQdWJrZXksIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcHVia2V5OiBwb3NpdGlvblB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IHVzZXJQdWJrZXksIGlzU2lnbmVyOiB0cnVlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gIF07XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgcHJvZ3JhbUlkOiBQUk9HUkFNX0lELFxuICAgIGtleXMsXG4gICAgZGF0YSxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgdHJhbnNhY3Rpb24uYWRkKGluc3RydWN0aW9uKTtcblxuICBjb25zdCB7IGJsb2NraGFzaCB9ID0gYXdhaXQgY29ubi5nZXRMYXRlc3RCbG9ja2hhc2goJ2ZpbmFsaXplZCcpO1xuICB0cmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2ggPSBibG9ja2hhc2g7XG4gIHRyYW5zYWN0aW9uLmZlZVBheWVyID0gdXNlclB1YmtleTtcblxuICBjb25zdCBzZXJpYWxpemVkVHggPSB0cmFuc2FjdGlvbi5zZXJpYWxpemUoe1xuICAgIHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSxcbiAgICB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgfSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIHJldHVybiB7XG4gICAgdHJhbnNhY3Rpb24sXG4gICAgc2VyaWFsaXplZFR4LFxuICAgIGNsYWltVHlwZTogJ3JlZnVuZCcsXG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTEFJTSBBRkZJTElBVEUgRUFSTklOR1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQnVpbGQgY2xhaW1fYWZmaWxpYXRlX3NvbCB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDbGFpbUFmZmlsaWF0ZVRyYW5zYWN0aW9uKHBhcmFtczoge1xuICBhZmZpbGlhdGVDb2RlOiBzdHJpbmc7XG4gIHVzZXJXYWxsZXQ6IHN0cmluZztcbiAgY29ubmVjdGlvbj86IENvbm5lY3Rpb247XG59KTogUHJvbWlzZTxDbGFpbVRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gIGNvbnN0IGNvbm4gPSBwYXJhbXMuY29ubmVjdGlvbiB8fCBuZXcgQ29ubmVjdGlvbihSUENfRU5EUE9JTlQsICdjb25maXJtZWQnKTtcbiAgY29uc3QgdXNlclB1YmtleSA9IG5ldyBQdWJsaWNLZXkocGFyYW1zLnVzZXJXYWxsZXQpO1xuXG4gIC8vIERlcml2ZSBhZmZpbGlhdGUgUERBXG4gIGNvbnN0IFthZmZpbGlhdGVQZGFdID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW1NFRURTLkFGRklMSUFURSwgQnVmZmVyLmZyb20ocGFyYW1zLmFmZmlsaWF0ZUNvZGUpXSxcbiAgICBQUk9HUkFNX0lEXG4gICk7XG5cbiAgY29uc3QgZGF0YSA9IENMQUlNX0FGRklMSUFURV9TT0xfRElTQ1JJTUlOQVRPUjtcblxuICAvLyBBY2NvdW50cyBmb3IgY2xhaW1fYWZmaWxpYXRlX3NvbDpcbiAgLy8gY29uZmlnLCBhZmZpbGlhdGUsIHNvbF90cmVhc3VyeSwgb3duZXIsIHN5c3RlbV9wcm9ncmFtXG4gIGNvbnN0IGtleXMgPSBbXG4gICAgeyBwdWJrZXk6IENPTkZJR19QREEsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICB7IHB1YmtleTogYWZmaWxpYXRlUGRhLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogU09MX1RSRUFTVVJZX1BEQSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IHVzZXJQdWJrZXksIGlzU2lnbmVyOiB0cnVlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwdWJrZXk6IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gIF07XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgcHJvZ3JhbUlkOiBQUk9HUkFNX0lELFxuICAgIGtleXMsXG4gICAgZGF0YSxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgdHJhbnNhY3Rpb24uYWRkKGluc3RydWN0aW9uKTtcblxuICBjb25zdCB7IGJsb2NraGFzaCB9ID0gYXdhaXQgY29ubi5nZXRMYXRlc3RCbG9ja2hhc2goJ2ZpbmFsaXplZCcpO1xuICB0cmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2ggPSBibG9ja2hhc2g7XG4gIHRyYW5zYWN0aW9uLmZlZVBheWVyID0gdXNlclB1YmtleTtcblxuICBjb25zdCBzZXJpYWxpemVkVHggPSB0cmFuc2FjdGlvbi5zZXJpYWxpemUoe1xuICAgIHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSxcbiAgICB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgfSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIHJldHVybiB7XG4gICAgdHJhbnNhY3Rpb24sXG4gICAgc2VyaWFsaXplZFR4LFxuICAgIGNsYWltVHlwZTogJ2FmZmlsaWF0ZScsXG4gIH07XG59XG5cbi8vIE5PVEU6IGNsYWltX2NyZWF0b3Jfc29sIGlzIGluIGNyZWF0b3ItdHJhbnNhY3Rpb24udHMsIG5vdCBoZXJlXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCQVRDSCBDTEFJTSAoTXVsdGlwbGUgcG9zaXRpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBCdWlsZCBiYXRjaCBjbGFpbSB0cmFuc2FjdGlvbiBmb3IgbXVsdGlwbGUgcG9zaXRpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZEJhdGNoQ2xhaW1UcmFuc2FjdGlvbihwYXJhbXM6IHtcbiAgY2xhaW1zOiBBcnJheTx7XG4gICAgbWFya2V0UGRhOiBzdHJpbmc7XG4gICAgcG9zaXRpb25QZGE6IHN0cmluZztcbiAgICBjbGFpbVR5cGU6ICd3aW5uaW5ncycgfCAncmVmdW5kJztcbiAgfT47XG4gIHVzZXJXYWxsZXQ6IHN0cmluZztcbiAgY29ubmVjdGlvbj86IENvbm5lY3Rpb247XG59KTogUHJvbWlzZTx7XG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgc2VyaWFsaXplZFR4OiBzdHJpbmc7XG4gIGNsYWltQ291bnQ6IG51bWJlcjtcbn0+IHtcbiAgY29uc3QgY29ubiA9IHBhcmFtcy5jb25uZWN0aW9uIHx8IG5ldyBDb25uZWN0aW9uKFJQQ19FTkRQT0lOVCwgJ2NvbmZpcm1lZCcpO1xuICBjb25zdCB1c2VyUHVia2V5ID0gbmV3IFB1YmxpY0tleShwYXJhbXMudXNlcldhbGxldCk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcblxuICBmb3IgKGNvbnN0IGNsYWltIG9mIHBhcmFtcy5jbGFpbXMpIHtcbiAgICBjb25zdCBtYXJrZXRQdWJrZXkgPSBuZXcgUHVibGljS2V5KGNsYWltLm1hcmtldFBkYSk7XG4gICAgY29uc3QgcG9zaXRpb25QdWJrZXkgPSBuZXcgUHVibGljS2V5KGNsYWltLnBvc2l0aW9uUGRhKTtcblxuICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBjbGFpbS5jbGFpbVR5cGUgPT09ICd3aW5uaW5ncydcbiAgICAgID8gQ0xBSU1fV0lOTklOR1NfU09MX0RJU0NSSU1JTkFUT1JcbiAgICAgIDogQ0xBSU1fUkVGVU5EX1NPTF9ESVNDUklNSU5BVE9SO1xuXG4gICAgLy8gY2xhaW1fd2lubmluZ3Nfc29sOiBjb25maWcsIG1hcmtldCwgcG9zaXRpb24sIHNvbF90cmVhc3VyeSwgW29wdGlvbmFsLi4uXSwgdXNlciwgc3lzdGVtXG4gICAgLy8gY2xhaW1fcmVmdW5kX3NvbDogbWFya2V0LCBwb3NpdGlvbiwgdXNlciwgc3lzdGVtIChOTyBjb25maWchKVxuICAgIGNvbnN0IGtleXMgPSBjbGFpbS5jbGFpbVR5cGUgPT09ICd3aW5uaW5ncydcbiAgICAgID8gW1xuICAgICAgICAgIHsgcHVia2V5OiBDT05GSUdfUERBLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gICAgICAgICAgeyBwdWJrZXk6IG1hcmtldFB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyBwdWJrZXk6IHBvc2l0aW9uUHVia2V5LCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHB1YmtleTogU09MX1RSRUFTVVJZX1BEQSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyBwdWJrZXk6IHVzZXJQdWJrZXksIGlzU2lnbmVyOiB0cnVlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyBwdWJrZXk6IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gICAgICAgIF1cbiAgICAgIDogW1xuICAgICAgICAgIHsgcHVia2V5OiBtYXJrZXRQdWJrZXksIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgcHVia2V5OiBwb3NpdGlvblB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyBwdWJrZXk6IHVzZXJQdWJrZXksIGlzU2lnbmVyOiB0cnVlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyBwdWJrZXk6IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gICAgICAgIF07XG5cbiAgICBjb25zdCBpbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICAgIHByb2dyYW1JZDogUFJPR1JBTV9JRCxcbiAgICAgIGtleXMsXG4gICAgICBkYXRhOiBkaXNjcmltaW5hdG9yLFxuICAgIH0pO1xuXG4gICAgdHJhbnNhY3Rpb24uYWRkKGluc3RydWN0aW9uKTtcbiAgfVxuXG4gIGNvbnN0IHsgYmxvY2toYXNoIH0gPSBhd2FpdCBjb25uLmdldExhdGVzdEJsb2NraGFzaCgnZmluYWxpemVkJyk7XG4gIHRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaCA9IGJsb2NraGFzaDtcbiAgdHJhbnNhY3Rpb24uZmVlUGF5ZXIgPSB1c2VyUHVia2V5O1xuXG4gIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHRyYW5zYWN0aW9uLnNlcmlhbGl6ZSh7XG4gICAgcmVxdWlyZUFsbFNpZ25hdHVyZXM6IGZhbHNlLFxuICAgIHZlcmlmeVNpZ25hdHVyZXM6IGZhbHNlLFxuICB9KS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbiAgcmV0dXJuIHtcbiAgICB0cmFuc2FjdGlvbixcbiAgICBzZXJpYWxpemVkVHgsXG4gICAgY2xhaW1Db3VudDogcGFyYW1zLmNsYWltcy5sZW5ndGgsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Creator Profile Transaction Builders
3
+ *
4
+ * Builds unsigned transactions for:
5
+ * - Creating creator profiles
6
+ * - Updating creator profiles
7
+ * - Claiming creator fees
8
+ */
9
+ import { Connection, Transaction } from '@solana/web3.js';
10
+ /**
11
+ * Build create_creator_profile transaction
12
+ * Creates an on-chain creator profile for reputation and fee settings
13
+ */
14
+ export declare function buildCreateCreatorProfileTransaction(params: {
15
+ displayName: string;
16
+ creatorFeeBps: number;
17
+ creatorWallet: string;
18
+ connection?: Connection;
19
+ }): Promise<{
20
+ transaction: Transaction;
21
+ serializedTx: string;
22
+ creatorProfilePda: string;
23
+ }>;
24
+ /**
25
+ * Build update_creator_profile transaction
26
+ * Updates display name and/or fee settings
27
+ * IDL Accounts: creator_profile, owner (NO config!)
28
+ */
29
+ export declare function buildUpdateCreatorProfileTransaction(params: {
30
+ newDisplayName?: string;
31
+ newCreatorFeeBps?: number;
32
+ creatorWallet: string;
33
+ connection?: Connection;
34
+ }): Promise<{
35
+ transaction: Transaction;
36
+ serializedTx: string;
37
+ }>;
38
+ /**
39
+ * Build claim_creator_sol transaction
40
+ * Claims accumulated creator fees from sol_treasury
41
+ * IDL Accounts: config, creator_profile, sol_treasury, owner, system_program
42
+ */
43
+ export declare function buildClaimCreatorTransaction(params: {
44
+ creatorWallet: string;
45
+ connection?: Connection;
46
+ }): Promise<{
47
+ transaction: Transaction;
48
+ serializedTx: string;
49
+ }>;
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Creator Profile Transaction Builders
3
+ *
4
+ * Builds unsigned transactions for:
5
+ * - Creating creator profiles
6
+ * - Updating creator profiles
7
+ * - Claiming creator fees
8
+ */
9
+ import { Connection, PublicKey, Transaction, TransactionInstruction, SystemProgram, } from '@solana/web3.js';
10
+ import { PROGRAM_ID, CONFIG_PDA, SOL_TREASURY_PDA, RPC_ENDPOINT, } from '../config.js';
11
+ // =============================================================================
12
+ // DISCRIMINATORS
13
+ // =============================================================================
14
+ const DISCRIMINATORS = {
15
+ create_creator_profile: Buffer.from([139, 244, 127, 145, 95, 172, 140, 154]),
16
+ update_creator_profile: Buffer.from([8, 240, 162, 55, 110, 46, 177, 108]),
17
+ claim_creator_sol: Buffer.from([21, 25, 164, 47, 81, 156, 199, 103]),
18
+ };
19
+ // =============================================================================
20
+ // PDA DERIVATION
21
+ // =============================================================================
22
+ function deriveCreatorProfilePda(creator) {
23
+ const [pda] = PublicKey.findProgramAddressSync([Buffer.from('creator_profile'), creator.toBuffer()], PROGRAM_ID);
24
+ return pda;
25
+ }
26
+ // =============================================================================
27
+ // CREATOR PROFILE OPERATIONS
28
+ // =============================================================================
29
+ /**
30
+ * Build create_creator_profile transaction
31
+ * Creates an on-chain creator profile for reputation and fee settings
32
+ */
33
+ export async function buildCreateCreatorProfileTransaction(params) {
34
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
35
+ const creatorPubkey = new PublicKey(params.creatorWallet);
36
+ const creatorProfilePda = deriveCreatorProfilePda(creatorPubkey);
37
+ // Validate display name (max 32 chars)
38
+ const displayNameBytes = Buffer.from(params.displayName, 'utf8');
39
+ if (displayNameBytes.length > 32) {
40
+ throw new Error('Display name must be 32 bytes or less');
41
+ }
42
+ // Validate fee (max 50 bps = 0.5%)
43
+ if (params.creatorFeeBps > 50) {
44
+ throw new Error('Creator fee cannot exceed 50 bps (0.5%)');
45
+ }
46
+ // Instruction data: discriminator + display_name (String) + creator_fee_bps (u16)
47
+ const nameLen = displayNameBytes.length;
48
+ const data = Buffer.alloc(8 + 4 + nameLen + 2);
49
+ DISCRIMINATORS.create_creator_profile.copy(data, 0);
50
+ data.writeUInt32LE(nameLen, 8);
51
+ displayNameBytes.copy(data, 12);
52
+ data.writeUInt16LE(params.creatorFeeBps, 12 + nameLen);
53
+ // IDL Accounts: creator_profile, owner, system_program (NO config!)
54
+ const keys = [
55
+ { pubkey: creatorProfilePda, isSigner: false, isWritable: true },
56
+ { pubkey: creatorPubkey, isSigner: true, isWritable: true },
57
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
58
+ ];
59
+ const instruction = new TransactionInstruction({
60
+ programId: PROGRAM_ID,
61
+ keys,
62
+ data,
63
+ });
64
+ const transaction = new Transaction().add(instruction);
65
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
66
+ transaction.recentBlockhash = blockhash;
67
+ transaction.feePayer = creatorPubkey;
68
+ return {
69
+ transaction,
70
+ serializedTx: transaction.serialize({ requireAllSignatures: false, verifySignatures: false }).toString('base64'),
71
+ creatorProfilePda: creatorProfilePda.toBase58(),
72
+ };
73
+ }
74
+ /**
75
+ * Build update_creator_profile transaction
76
+ * Updates display name and/or fee settings
77
+ * IDL Accounts: creator_profile, owner (NO config!)
78
+ */
79
+ export async function buildUpdateCreatorProfileTransaction(params) {
80
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
81
+ const creatorPubkey = new PublicKey(params.creatorWallet);
82
+ const creatorProfilePda = deriveCreatorProfilePda(creatorPubkey);
83
+ // Build optional fields
84
+ const displayNameBytes = params.newDisplayName
85
+ ? Buffer.from(params.newDisplayName, 'utf8')
86
+ : null;
87
+ if (displayNameBytes && displayNameBytes.length > 32) {
88
+ throw new Error('Display name must be 32 bytes or less');
89
+ }
90
+ if (params.newCreatorFeeBps !== undefined && params.newCreatorFeeBps > 50) {
91
+ throw new Error('Creator fee cannot exceed 50 bps (0.5%)');
92
+ }
93
+ // Instruction data: discriminator + Option<String> + Option<u16>
94
+ // Option<T> in Borsh: 1 byte (0=None, 1=Some) + T if Some
95
+ let dataSize = 8;
96
+ // display_name option
97
+ dataSize += 1 + (displayNameBytes ? 4 + displayNameBytes.length : 0);
98
+ // creator_fee_bps option
99
+ dataSize += 1 + (params.newCreatorFeeBps !== undefined ? 2 : 0);
100
+ const data = Buffer.alloc(dataSize);
101
+ let offset = 0;
102
+ DISCRIMINATORS.update_creator_profile.copy(data, offset);
103
+ offset += 8;
104
+ // Option<String> for display_name
105
+ if (displayNameBytes) {
106
+ data.writeUInt8(1, offset); // Some
107
+ offset += 1;
108
+ data.writeUInt32LE(displayNameBytes.length, offset);
109
+ offset += 4;
110
+ displayNameBytes.copy(data, offset);
111
+ offset += displayNameBytes.length;
112
+ }
113
+ else {
114
+ data.writeUInt8(0, offset); // None
115
+ offset += 1;
116
+ }
117
+ // Option<u16> for creator_fee_bps
118
+ if (params.newCreatorFeeBps !== undefined) {
119
+ data.writeUInt8(1, offset); // Some
120
+ offset += 1;
121
+ data.writeUInt16LE(params.newCreatorFeeBps, offset);
122
+ }
123
+ else {
124
+ data.writeUInt8(0, offset); // None
125
+ }
126
+ // IDL Accounts: creator_profile, owner (NO config!)
127
+ const keys = [
128
+ { pubkey: creatorProfilePda, isSigner: false, isWritable: true },
129
+ { pubkey: creatorPubkey, isSigner: true, isWritable: false },
130
+ ];
131
+ const instruction = new TransactionInstruction({
132
+ programId: PROGRAM_ID,
133
+ keys,
134
+ data,
135
+ });
136
+ const transaction = new Transaction().add(instruction);
137
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
138
+ transaction.recentBlockhash = blockhash;
139
+ transaction.feePayer = creatorPubkey;
140
+ return {
141
+ transaction,
142
+ serializedTx: transaction.serialize({ requireAllSignatures: false, verifySignatures: false }).toString('base64'),
143
+ };
144
+ }
145
+ /**
146
+ * Build claim_creator_sol transaction
147
+ * Claims accumulated creator fees from sol_treasury
148
+ * IDL Accounts: config, creator_profile, sol_treasury, owner, system_program
149
+ */
150
+ export async function buildClaimCreatorTransaction(params) {
151
+ const conn = params.connection || new Connection(RPC_ENDPOINT, 'confirmed');
152
+ const creatorPubkey = new PublicKey(params.creatorWallet);
153
+ const creatorProfilePda = deriveCreatorProfilePda(creatorPubkey);
154
+ const data = DISCRIMINATORS.claim_creator_sol;
155
+ // IDL Accounts: config, creator_profile, sol_treasury, owner, system_program
156
+ const keys = [
157
+ { pubkey: CONFIG_PDA, isSigner: false, isWritable: false },
158
+ { pubkey: creatorProfilePda, isSigner: false, isWritable: true },
159
+ { pubkey: SOL_TREASURY_PDA, isSigner: false, isWritable: true },
160
+ { pubkey: creatorPubkey, isSigner: true, isWritable: true },
161
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
162
+ ];
163
+ const instruction = new TransactionInstruction({
164
+ programId: PROGRAM_ID,
165
+ keys,
166
+ data,
167
+ });
168
+ const transaction = new Transaction().add(instruction);
169
+ const { blockhash } = await conn.getLatestBlockhash('finalized');
170
+ transaction.recentBlockhash = blockhash;
171
+ transaction.feePayer = creatorPubkey;
172
+ return {
173
+ transaction,
174
+ serializedTx: transaction.serialize({ requireAllSignatures: false, verifySignatures: false }).toString('base64'),
175
+ };
176
+ }
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvci10cmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9jcmVhdG9yLXRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLGFBQWEsR0FDZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixZQUFZLEdBRWIsTUFBTSxjQUFjLENBQUM7QUFFdEIsZ0ZBQWdGO0FBQ2hGLGlCQUFpQjtBQUNqQixnRkFBZ0Y7QUFFaEYsTUFBTSxjQUFjLEdBQUc7SUFDckIsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RSxzQkFBc0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDckUsQ0FBQztBQUVGLGdGQUFnRjtBQUNoRixpQkFBaUI7QUFDakIsZ0ZBQWdGO0FBRWhGLFNBQVMsdUJBQXVCLENBQUMsT0FBa0I7SUFDakQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FDNUMsQ0FBQyxNQUFN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b0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0tBQ2pILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdG9yIFByb2ZpbGUgVHJhbnNhY3Rpb24gQnVpbGRlcnNcbiAqXG4gKiBCdWlsZHMgdW5zaWduZWQgdHJhbnNhY3Rpb25zIGZvcjpcbiAqIC0gQ3JlYXRpbmcgY3JlYXRvciBwcm9maWxlc1xuICogLSBVcGRhdGluZyBjcmVhdG9yIHByb2ZpbGVzXG4gKiAtIENsYWltaW5nIGNyZWF0b3IgZmVlc1xuICovXG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBQdWJsaWNLZXksXG4gIFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxuICBTeXN0ZW1Qcm9ncmFtLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHtcbiAgUFJPR1JBTV9JRCxcbiAgQ09ORklHX1BEQSxcbiAgU09MX1RSRUFTVVJZX1BEQSxcbiAgUlBDX0VORFBPSU5ULFxuICBTRUVEUyxcbn0gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERJU0NSSU1JTkFUT1JTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBESVNDUklNSU5BVE9SUyA9IHtcbiAgY3JlYXRlX2NyZWF0b3JfcHJvZmlsZTogQnVmZmVyLmZyb20oWzEzOSwgMjQ0LCAxMjcsIDE0NSwgOTUsIDE3MiwgMTQwLCAxNTRdKSxcbiAgdXBkYXRlX2NyZWF0b3JfcHJvZmlsZTogQnVmZmVyLmZyb20oWzgsIDI0MCwgMTYyLCA1NSwgMTEwLCA0NiwgMTc3LCAxMDhdKSxcbiAgY2xhaW1fY3JlYXRvcl9zb2w6IEJ1ZmZlci5mcm9tKFsyMSwgMjUsIDE2NCwgNDcsIDgxLCAxNTYsIDE5OSwgMTAzXSksXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUERBIERFUklWQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGRlcml2ZUNyZWF0b3JQcm9maWxlUGRhKGNyZWF0b3I6IFB1YmxpY0tleSk6IFB1YmxpY0tleSB7XG4gIGNvbnN0IFtwZGFdID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW0J1ZmZlci5mcm9tKCdjcmVhdG9yX3Byb2ZpbGUnKSwgY3JlYXRvci50b0J1ZmZlcigpXSxcbiAgICBQUk9HUkFNX0lEXG4gICk7XG4gIHJldHVybiBwZGE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDUkVBVE9SIFBST0ZJTEUgT1BFUkFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBCdWlsZCBjcmVhdGVfY3JlYXRvcl9wcm9maWxlIHRyYW5zYWN0aW9uXG4gKiBDcmVhdGVzIGFuIG9uLWNoYWluIGNyZWF0b3IgcHJvZmlsZSBmb3IgcmVwdXRhdGlvbiBhbmQgZmVlIHNldHRpbmdzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENyZWF0ZUNyZWF0b3JQcm9maWxlVHJhbnNhY3Rpb24ocGFyYW1zOiB7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGNyZWF0b3JGZWVCcHM6IG51bWJlcjsgLy8gQmFzaXMgcG9pbnRzIChlLmcuLCA1MCA9IDAuNSUpXG4gIGNyZWF0b3JXYWxsZXQ6IHN0cmluZztcbiAgY29ubmVjdGlvbj86IENvbm5lY3Rpb247XG59KTogUHJvbWlzZTx7IHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjsgc2VyaWFsaXplZFR4OiBzdHJpbmc7IGNyZWF0b3JQcm9maWxlUGRhOiBzdHJpbmcgfT4ge1xuICBjb25zdCBjb25uID0gcGFyYW1zLmNvbm5lY3Rpb24gfHwgbmV3IENvbm5lY3Rpb24oUlBDX0VORFBPSU5ULCAnY29uZmlybWVkJyk7XG4gIGNvbnN0IGNyZWF0b3JQdWJrZXkgPSBuZXcgUHVibGljS2V5KHBhcmFtcy5jcmVhdG9yV2FsbGV0KTtcbiAgY29uc3QgY3JlYXRvclByb2ZpbGVQZGEgPSBkZXJpdmVDcmVhdG9yUHJvZmlsZVBkYShjcmVhdG9yUHVia2V5KTtcblxuICAvLyBWYWxpZGF0ZSBkaXNwbGF5IG5hbWUgKG1heCAzMiBjaGFycylcbiAgY29uc3QgZGlzcGxheU5hbWVCeXRlcyA9IEJ1ZmZlci5mcm9tKHBhcmFtcy5kaXNwbGF5TmFtZSwgJ3V0ZjgnKTtcbiAgaWYgKGRpc3BsYXlOYW1lQnl0ZXMubGVuZ3RoID4gMzIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc3BsYXkgbmFtZSBtdXN0IGJlIDMyIGJ5dGVzIG9yIGxlc3MnKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGZlZSAobWF4IDUwIGJwcyA9IDAuNSUpXG4gIGlmIChwYXJhbXMuY3JlYXRvckZlZUJwcyA+IDUwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDcmVhdG9yIGZlZSBjYW5ub3QgZXhjZWVkIDUwIGJwcyAoMC41JSknKTtcbiAgfVxuXG4gIC8vIEluc3RydWN0aW9uIGRhdGE6IGRpc2NyaW1pbmF0b3IgKyBkaXNwbGF5X25hbWUgKFN0cmluZykgKyBjcmVhdG9yX2ZlZV9icHMgKHUxNilcbiAgY29uc3QgbmFtZUxlbiA9IGRpc3BsYXlOYW1lQnl0ZXMubGVuZ3RoO1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDggKyA0ICsgbmFtZUxlbiArIDIpO1xuICBESVNDUklNSU5BVE9SUy5jcmVhdGVfY3JlYXRvcl9wcm9maWxlLmNvcHkoZGF0YSwgMCk7XG4gIGRhdGEud3JpdGVVSW50MzJMRShuYW1lTGVuLCA4KTtcbiAgZGlzcGxheU5hbWVCeXRlcy5jb3B5KGRhdGEsIDEyKTtcbiAgZGF0YS53cml0ZVVJbnQxNkxFKHBhcmFtcy5jcmVhdG9yRmVlQnBzLCAxMiArIG5hbWVMZW4pO1xuXG4gIC8vIElETCBBY2NvdW50czogY3JlYXRvcl9wcm9maWxlLCBvd25lciwgc3lzdGVtX3Byb2dyYW0gKE5PIGNvbmZpZyEpXG4gIGNvbnN0IGtleXMgPSBbXG4gICAgeyBwdWJrZXk6IGNyZWF0b3JQcm9maWxlUGRhLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogY3JlYXRvclB1YmtleSwgaXNTaWduZXI6IHRydWUsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgXTtcblxuICBjb25zdCBpbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICBwcm9ncmFtSWQ6IFBST0dSQU1fSUQsXG4gICAga2V5cyxcbiAgICBkYXRhLFxuICB9KTtcblxuICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigpLmFkZChpbnN0cnVjdGlvbik7XG4gIGNvbnN0IHsgYmxvY2toYXNoIH0gPSBhd2FpdCBjb25uLmdldExhdGVzdEJsb2NraGFzaCgnZmluYWxpemVkJyk7XG4gIHRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaCA9IGJsb2NraGFzaDtcbiAgdHJhbnNhY3Rpb24uZmVlUGF5ZXIgPSBjcmVhdG9yUHVia2V5O1xuXG4gIHJldHVybiB7XG4gICAgdHJhbnNhY3Rpb24sXG4gICAgc2VyaWFsaXplZFR4OiB0cmFuc2FjdGlvbi5zZXJpYWxpemUoeyByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UsIHZlcmlmeVNpZ25hdHVyZXM6IGZhbHNlIH0pLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICBjcmVhdG9yUHJvZmlsZVBkYTogY3JlYXRvclByb2ZpbGVQZGEudG9CYXNlNTgoKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCB1cGRhdGVfY3JlYXRvcl9wcm9maWxlIHRyYW5zYWN0aW9uXG4gKiBVcGRhdGVzIGRpc3BsYXkgbmFtZSBhbmQvb3IgZmVlIHNldHRpbmdzXG4gKiBJREwgQWNjb3VudHM6IGNyZWF0b3JfcHJvZmlsZSwgb3duZXIgKE5PIGNvbmZpZyEpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFVwZGF0ZUNyZWF0b3JQcm9maWxlVHJhbnNhY3Rpb24ocGFyYW1zOiB7XG4gIG5ld0Rpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBuZXdDcmVhdG9yRmVlQnBzPzogbnVtYmVyO1xuICBjcmVhdG9yV2FsbGV0OiBzdHJpbmc7XG4gIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uO1xufSk6IFByb21pc2U8eyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247IHNlcmlhbGl6ZWRUeDogc3RyaW5nIH0+IHtcbiAgY29uc3QgY29ubiA9IHBhcmFtcy5jb25uZWN0aW9uIHx8IG5ldyBDb25uZWN0aW9uKFJQQ19FTkRQT0lOVCwgJ2NvbmZpcm1lZCcpO1xuICBjb25zdCBjcmVhdG9yUHVia2V5ID0gbmV3IFB1YmxpY0tleShwYXJhbXMuY3JlYXRvcldhbGxldCk7XG4gIGNvbnN0IGNyZWF0b3JQcm9maWxlUGRhID0gZGVyaXZlQ3JlYXRvclByb2ZpbGVQZGEoY3JlYXRvclB1YmtleSk7XG5cbiAgLy8gQnVpbGQgb3B0aW9uYWwgZmllbGRzXG4gIGNvbnN0IGRpc3BsYXlOYW1lQnl0ZXMgPSBwYXJhbXMubmV3RGlzcGxheU5hbWVcbiAgICA/IEJ1ZmZlci5mcm9tKHBhcmFtcy5uZXdEaXNwbGF5TmFtZSwgJ3V0ZjgnKVxuICAgIDogbnVsbDtcblxuICBpZiAoZGlzcGxheU5hbWVCeXRlcyAmJiBkaXNwbGF5TmFtZUJ5dGVzLmxlbmd0aCA+IDMyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNwbGF5IG5hbWUgbXVzdCBiZSAzMiBieXRlcyBvciBsZXNzJyk7XG4gIH1cblxuICBpZiAocGFyYW1zLm5ld0NyZWF0b3JGZWVCcHMgIT09IHVuZGVmaW5lZCAmJiBwYXJhbXMubmV3Q3JlYXRvckZlZUJwcyA+IDUwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDcmVhdG9yIGZlZSBjYW5ub3QgZXhjZWVkIDUwIGJwcyAoMC41JSknKTtcbiAgfVxuXG4gIC8vIEluc3RydWN0aW9uIGRhdGE6IGRpc2NyaW1pbmF0b3IgKyBPcHRpb248U3RyaW5nPiArIE9wdGlvbjx1MTY+XG4gIC8vIE9wdGlvbjxUPiBpbiBCb3JzaDogMSBieXRlICgwPU5vbmUsIDE9U29tZSkgKyBUIGlmIFNvbWVcbiAgbGV0IGRhdGFTaXplID0gODtcbiAgLy8gZGlzcGxheV9uYW1lIG9wdGlvblxuICBkYXRhU2l6ZSArPSAxICsgKGRpc3BsYXlOYW1lQnl0ZXMgPyA0ICsgZGlzcGxheU5hbWVCeXRlcy5sZW5ndGggOiAwKTtcbiAgLy8gY3JlYXRvcl9mZWVfYnBzIG9wdGlvblxuICBkYXRhU2l6ZSArPSAxICsgKHBhcmFtcy5uZXdDcmVhdG9yRmVlQnBzICE9PSB1bmRlZmluZWQgPyAyIDogMCk7XG5cbiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhkYXRhU2l6ZSk7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBESVNDUklNSU5BVE9SUy51cGRhdGVfY3JlYXRvcl9wcm9maWxlLmNvcHkoZGF0YSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ICs9IDg7XG5cbiAgLy8gT3B0aW9uPFN0cmluZz4gZm9yIGRpc3BsYXlfbmFtZVxuICBpZiAoZGlzcGxheU5hbWVCeXRlcykge1xuICAgIGRhdGEud3JpdGVVSW50OCgxLCBvZmZzZXQpOyAvLyBTb21lXG4gICAgb2Zmc2V0ICs9IDE7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGRpc3BsYXlOYW1lQnl0ZXMubGVuZ3RoLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSA0O1xuICAgIGRpc3BsYXlOYW1lQnl0ZXMuY29weShkYXRhLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSBkaXNwbGF5TmFtZUJ5dGVzLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICBkYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTsgLy8gTm9uZVxuICAgIG9mZnNldCArPSAxO1xuICB9XG5cbiAgLy8gT3B0aW9uPHUxNj4gZm9yIGNyZWF0b3JfZmVlX2Jwc1xuICBpZiAocGFyYW1zLm5ld0NyZWF0b3JGZWVCcHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGRhdGEud3JpdGVVSW50OCgxLCBvZmZzZXQpOyAvLyBTb21lXG4gICAgb2Zmc2V0ICs9IDE7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHBhcmFtcy5uZXdDcmVhdG9yRmVlQnBzLCBvZmZzZXQpO1xuICB9IGVsc2Uge1xuICAgIGRhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpOyAvLyBOb25lXG4gIH1cblxuICAvLyBJREwgQWNjb3VudHM6IGNyZWF0b3JfcHJvZmlsZSwgb3duZXIgKE5PIGNvbmZpZyEpXG4gIGNvbnN0IGtleXMgPSBbXG4gICAgeyBwdWJrZXk6IGNyZWF0b3JQcm9maWxlUGRhLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogY3JlYXRvclB1YmtleSwgaXNTaWduZXI6IHRydWUsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gIF07XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgcHJvZ3JhbUlkOiBQUk9HUkFNX0lELFxuICAgIGtleXMsXG4gICAgZGF0YSxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKS5hZGQoaW5zdHJ1Y3Rpb24pO1xuICBjb25zdCB7IGJsb2NraGFzaCB9ID0gYXdhaXQgY29ubi5nZXRMYXRlc3RCbG9ja2hhc2goJ2ZpbmFsaXplZCcpO1xuICB0cmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2ggPSBibG9ja2hhc2g7XG4gIHRyYW5zYWN0aW9uLmZlZVBheWVyID0gY3JlYXRvclB1YmtleTtcblxuICByZXR1cm4ge1xuICAgIHRyYW5zYWN0aW9uLFxuICAgIHNlcmlhbGl6ZWRUeDogdHJhbnNhY3Rpb24uc2VyaWFsaXplKHsgcmVxdWlyZUFsbFNpZ25hdHVyZXM6IGZhbHNlLCB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSB9KS50b1N0cmluZygnYmFzZTY0JyksXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgY2xhaW1fY3JlYXRvcl9zb2wgdHJhbnNhY3Rpb25cbiAqIENsYWltcyBhY2N1bXVsYXRlZCBjcmVhdG9yIGZlZXMgZnJvbSBzb2xfdHJlYXN1cnlcbiAqIElETCBBY2NvdW50czogY29uZmlnLCBjcmVhdG9yX3Byb2ZpbGUsIHNvbF90cmVhc3VyeSwgb3duZXIsIHN5c3RlbV9wcm9ncmFtXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENsYWltQ3JlYXRvclRyYW5zYWN0aW9uKHBhcmFtczoge1xuICBjcmVhdG9yV2FsbGV0OiBzdHJpbmc7XG4gIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uO1xufSk6IFByb21pc2U8eyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247IHNlcmlhbGl6ZWRUeDogc3RyaW5nIH0+IHtcbiAgY29uc3QgY29ubiA9IHBhcmFtcy5jb25uZWN0aW9uIHx8IG5ldyBDb25uZWN0aW9uKFJQQ19FTkRQT0lOVCwgJ2NvbmZpcm1lZCcpO1xuICBjb25zdCBjcmVhdG9yUHVia2V5ID0gbmV3IFB1YmxpY0tleShwYXJhbXMuY3JlYXRvcldhbGxldCk7XG4gIGNvbnN0IGNyZWF0b3JQcm9maWxlUGRhID0gZGVyaXZlQ3JlYXRvclByb2ZpbGVQZGEoY3JlYXRvclB1YmtleSk7XG5cbiAgY29uc3QgZGF0YSA9IERJU0NSSU1JTkFUT1JTLmNsYWltX2NyZWF0b3Jfc29sO1xuXG4gIC8vIElETCBBY2NvdW50czogY29uZmlnLCBjcmVhdG9yX3Byb2ZpbGUsIHNvbF90cmVhc3VyeSwgb3duZXIsIHN5c3RlbV9wcm9ncmFtXG4gIGNvbnN0IGtleXMgPSBbXG4gICAgeyBwdWJrZXk6IENPTkZJR19QREEsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICB7IHB1YmtleTogY3JlYXRvclByb2ZpbGVQZGEsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcHVia2V5OiBTT0xfVFJFQVNVUllfUERBLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogY3JlYXRvclB1YmtleSwgaXNTaWduZXI6IHRydWUsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICB7IHB1YmtleTogU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgXTtcblxuICBjb25zdCBpbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICBwcm9ncmFtSWQ6IFBST0dSQU1fSUQsXG4gICAga2V5cyxcbiAgICBkYXRhLFxuICB9KTtcblxuICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigpLmFkZChpbnN0cnVjdGlvbik7XG4gIGNvbnN0IHsgYmxvY2toYXNoIH0gPSBhd2FpdCBjb25uLmdldExhdGVzdEJsb2NraGFzaCgnZmluYWxpemVkJyk7XG4gIHRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaCA9IGJsb2NraGFzaDtcbiAgdHJhbnNhY3Rpb24uZmVlUGF5ZXIgPSBjcmVhdG9yUHVia2V5O1xuXG4gIHJldHVybiB7XG4gICAgdHJhbnNhY3Rpb24sXG4gICAgc2VyaWFsaXplZFR4OiB0cmFuc2FjdGlvbi5zZXJpYWxpemUoeyByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UsIHZlcmlmeVNpZ25hdHVyZXM6IGZhbHNlIH0pLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Dispute Transaction Builders
3
+ *
4
+ * IMPORTANT: Account structures verified against IDL v4.7.6
5
+ */
6
+ import { Connection, Transaction } from '@solana/web3.js';
7
+ /**
8
+ * Build flag_dispute transaction
9
+ * IDL Accounts: config, market, dispute_meta, authority
10
+ */
11
+ export declare function buildFlagDisputeTransaction(params: {
12
+ marketPda: string;
13
+ disputerWallet: string;
14
+ connection?: Connection;
15
+ }): Promise<{
16
+ transaction: Transaction;
17
+ serializedTx: string;
18
+ }>;
19
+ /**
20
+ * Build vote_council transaction
21
+ * IDL Accounts: config, market, council_vote, dispute_meta, voter, system_program
22
+ */
23
+ export declare function buildVoteCouncilTransaction(params: {
24
+ marketPda: string;
25
+ voteYes: boolean;
26
+ voterWallet: string;
27
+ connection?: Connection;
28
+ }): Promise<{
29
+ transaction: Transaction;
30
+ serializedTx: string;
31
+ }>;
32
+ /**
33
+ * Build change_council_vote transaction
34
+ * IDL Accounts: config, market, council_vote, dispute_meta, voter
35
+ */
36
+ export declare function buildChangeCouncilVoteTransaction(params: {
37
+ marketPda: string;
38
+ newVoteYes: boolean;
39
+ voterWallet: string;
40
+ connection?: Connection;
41
+ }): Promise<{
42
+ transaction: Transaction;
43
+ serializedTx: string;
44
+ }>;
45
+ /**
46
+ * Build flag_race_dispute transaction
47
+ * IDL Accounts: config, race_market, dispute_meta, authority
48
+ */
49
+ export declare function buildFlagRaceDisputeTransaction(params: {
50
+ raceMarketPda: string;
51
+ disputerWallet: string;
52
+ connection?: Connection;
53
+ }): Promise<{
54
+ transaction: Transaction;
55
+ serializedTx: string;
56
+ }>;
57
+ /**
58
+ * Build vote_council_race transaction
59
+ * IDL Accounts: config, race_market, vote_record, dispute_meta, voter, system_program
60
+ */
61
+ export declare function buildVoteCouncilRaceTransaction(params: {
62
+ raceMarketPda: string;
63
+ voteOutcomeIndex: number;
64
+ voterWallet: string;
65
+ connection?: Connection;
66
+ }): Promise<{
67
+ transaction: Transaction;
68
+ serializedTx: string;
69
+ }>;
70
+ /**
71
+ * Build change_council_vote_race transaction
72
+ */
73
+ export declare function buildChangeCouncilVoteRaceTransaction(params: {
74
+ raceMarketPda: string;
75
+ newVoteOutcomeIndex: number;
76
+ voterWallet: string;
77
+ connection?: Connection;
78
+ }): Promise<{
79
+ transaction: Transaction;
80
+ serializedTx: string;
81
+ }>;