@1upmonster/duel 0.1.8 → 0.2.2

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 (186) hide show
  1. package/README.md +110 -59
  2. package/dist/admin.d.ts +25 -40
  3. package/dist/admin.js +93 -114
  4. package/dist/encryption.js +1 -2
  5. package/dist/generated/duel/accounts/index.d.ts +10 -0
  6. package/dist/generated/duel/accounts/index.js +11 -0
  7. package/dist/generated/duel/accounts/matchTicket.d.ts +38 -0
  8. package/dist/generated/duel/accounts/matchTicket.js +45 -0
  9. package/dist/generated/duel/accounts/queue.d.ts +42 -0
  10. package/dist/generated/duel/accounts/queue.js +45 -0
  11. package/dist/generated/duel/accounts/tenant.d.ts +41 -0
  12. package/dist/generated/duel/accounts/tenant.js +44 -0
  13. package/dist/generated/duel/errors/duel.d.ts +31 -0
  14. package/dist/generated/duel/errors/duel.js +35 -0
  15. package/dist/generated/duel/errors/index.d.ts +8 -0
  16. package/dist/generated/duel/errors/index.js +9 -0
  17. package/dist/generated/duel/index.d.ts +12 -0
  18. package/dist/generated/duel/index.js +13 -0
  19. package/dist/generated/duel/instructions/cancelTicket.d.ts +45 -0
  20. package/dist/generated/duel/instructions/cancelTicket.js +56 -0
  21. package/dist/generated/duel/instructions/closeTicket.d.ts +45 -0
  22. package/dist/generated/duel/instructions/closeTicket.js +56 -0
  23. package/dist/generated/duel/instructions/commitTickets.d.ts +39 -0
  24. package/dist/generated/duel/instructions/commitTickets.js +50 -0
  25. package/dist/generated/duel/instructions/createTicket.d.ts +48 -0
  26. package/dist/generated/duel/instructions/createTicket.js +63 -0
  27. package/dist/generated/duel/instructions/delegateQueue.d.ts +69 -0
  28. package/dist/generated/duel/instructions/delegateQueue.js +90 -0
  29. package/dist/generated/duel/instructions/delegateTicket.d.ts +69 -0
  30. package/dist/generated/duel/instructions/delegateTicket.js +90 -0
  31. package/dist/generated/duel/instructions/flushMatches.d.ts +37 -0
  32. package/dist/generated/duel/instructions/flushMatches.js +43 -0
  33. package/dist/generated/duel/instructions/index.d.ts +19 -0
  34. package/dist/generated/duel/instructions/index.js +20 -0
  35. package/dist/generated/duel/instructions/initializeQueue.d.ts +48 -0
  36. package/dist/generated/duel/instructions/initializeQueue.js +63 -0
  37. package/dist/generated/duel/instructions/initializeTenant.d.ts +70 -0
  38. package/dist/generated/duel/instructions/initializeTenant.js +67 -0
  39. package/dist/generated/duel/instructions/joinQueue.d.ts +51 -0
  40. package/dist/generated/duel/instructions/joinQueue.js +56 -0
  41. package/dist/generated/duel/instructions/processUndelegation.d.ts +43 -0
  42. package/dist/generated/duel/instructions/processUndelegation.js +49 -0
  43. package/dist/generated/duel/instructions/setupTicketPermission.d.ts +54 -0
  44. package/dist/generated/duel/instructions/setupTicketPermission.js +63 -0
  45. package/dist/generated/duel/programs/duel.d.ts +92 -0
  46. package/dist/generated/duel/programs/duel.js +146 -0
  47. package/dist/generated/duel/programs/index.d.ts +8 -0
  48. package/dist/generated/duel/programs/index.js +9 -0
  49. package/dist/generated/duel/types/accountType.d.ts +25 -0
  50. package/dist/generated/duel/types/accountType.js +25 -0
  51. package/dist/generated/duel/types/index.d.ts +13 -0
  52. package/dist/generated/duel/types/index.js +14 -0
  53. package/dist/generated/duel/types/matchEntry.d.ts +23 -0
  54. package/dist/generated/duel/types/matchEntry.js +18 -0
  55. package/dist/generated/duel/types/matchFound.d.ts +23 -0
  56. package/dist/generated/duel/types/matchFound.js +18 -0
  57. package/dist/generated/duel/types/pendingMatch.d.ts +21 -0
  58. package/dist/generated/duel/types/pendingMatch.js +18 -0
  59. package/dist/generated/duel/types/queueEntry.d.ts +19 -0
  60. package/dist/generated/duel/types/queueEntry.js +18 -0
  61. package/dist/generated/duel/types/ticketStatus.d.ts +40 -0
  62. package/dist/generated/duel/types/ticketStatus.js +25 -0
  63. package/dist/generated/rps-game/accounts/gameSession.d.ts +40 -0
  64. package/dist/generated/rps-game/accounts/gameSession.js +45 -0
  65. package/dist/generated/rps-game/accounts/index.d.ts +9 -0
  66. package/dist/generated/rps-game/accounts/index.js +10 -0
  67. package/dist/generated/rps-game/accounts/playerProfile.d.ts +36 -0
  68. package/dist/generated/rps-game/accounts/playerProfile.js +47 -0
  69. package/dist/generated/rps-game/errors/index.d.ts +8 -0
  70. package/dist/generated/rps-game/errors/index.js +9 -0
  71. package/dist/generated/rps-game/errors/rpsGame.d.ts +25 -0
  72. package/dist/generated/rps-game/errors/rpsGame.js +29 -0
  73. package/dist/generated/rps-game/index.d.ts +12 -0
  74. package/dist/generated/rps-game/index.js +13 -0
  75. package/dist/generated/rps-game/instructions/closePlayer.d.ts +45 -0
  76. package/dist/generated/rps-game/instructions/closePlayer.js +56 -0
  77. package/dist/generated/rps-game/instructions/delegatePda.d.ts +69 -0
  78. package/dist/generated/rps-game/instructions/delegatePda.js +90 -0
  79. package/dist/generated/rps-game/instructions/index.d.ts +16 -0
  80. package/dist/generated/rps-game/instructions/index.js +17 -0
  81. package/dist/generated/rps-game/instructions/initializePlayer.d.ts +48 -0
  82. package/dist/generated/rps-game/instructions/initializePlayer.js +63 -0
  83. package/dist/generated/rps-game/instructions/makeChoice.d.ts +44 -0
  84. package/dist/generated/rps-game/instructions/makeChoice.js +46 -0
  85. package/dist/generated/rps-game/instructions/onMatchFound.d.ts +43 -0
  86. package/dist/generated/rps-game/instructions/onMatchFound.js +45 -0
  87. package/dist/generated/rps-game/instructions/persistResults.d.ts +43 -0
  88. package/dist/generated/rps-game/instructions/persistResults.js +50 -0
  89. package/dist/generated/rps-game/instructions/processUndelegation.d.ts +43 -0
  90. package/dist/generated/rps-game/instructions/processUndelegation.js +49 -0
  91. package/dist/generated/rps-game/instructions/startGame.d.ts +54 -0
  92. package/dist/generated/rps-game/instructions/startGame.js +67 -0
  93. package/dist/generated/rps-game/instructions/startGameWithTicket.d.ts +57 -0
  94. package/dist/generated/rps-game/instructions/startGameWithTicket.js +67 -0
  95. package/dist/generated/rps-game/programs/index.d.ts +8 -0
  96. package/dist/generated/rps-game/programs/index.js +9 -0
  97. package/dist/generated/rps-game/programs/rpsGame.d.ts +78 -0
  98. package/dist/generated/rps-game/programs/rpsGame.js +118 -0
  99. package/dist/generated/rps-game/types/accountType.d.ts +34 -0
  100. package/dist/generated/rps-game/types/accountType.js +25 -0
  101. package/dist/generated/rps-game/types/choice.d.ts +17 -0
  102. package/dist/generated/rps-game/types/choice.js +25 -0
  103. package/dist/generated/rps-game/types/gameResult.d.ts +26 -0
  104. package/dist/generated/rps-game/types/gameResult.js +25 -0
  105. package/dist/generated/rps-game/types/index.d.ts +10 -0
  106. package/dist/generated/rps-game/types/index.js +11 -0
  107. package/dist/index.d.ts +2 -1
  108. package/dist/index.js +3 -2
  109. package/dist/player.d.ts +25 -46
  110. package/dist/player.js +81 -140
  111. package/dist/tee.d.ts +14 -0
  112. package/dist/tee.js +62 -0
  113. package/dist/transaction.d.ts +11 -0
  114. package/dist/transaction.js +50 -0
  115. package/dist/utils.d.ts +4 -4
  116. package/dist/utils.js +23 -8
  117. package/package.json +3 -6
  118. package/src/admin.ts +151 -161
  119. package/src/duel.json +66 -7
  120. package/src/encryption.ts +0 -3
  121. package/src/generated/duel/accounts/index.ts +11 -0
  122. package/src/generated/duel/accounts/matchTicket.ts +77 -0
  123. package/src/generated/duel/accounts/queue.ts +77 -0
  124. package/src/generated/duel/accounts/tenant.ts +76 -0
  125. package/src/generated/duel/errors/duel.ts +46 -0
  126. package/src/generated/duel/errors/index.ts +9 -0
  127. package/src/generated/duel/index.ts +13 -0
  128. package/src/generated/duel/instructions/cancelTicket.ts +100 -0
  129. package/src/generated/duel/instructions/closeTicket.ts +100 -0
  130. package/src/generated/duel/instructions/commitTickets.ts +84 -0
  131. package/src/generated/duel/instructions/createTicket.ts +109 -0
  132. package/src/generated/duel/instructions/delegateQueue.ts +157 -0
  133. package/src/generated/duel/instructions/delegateTicket.ts +157 -0
  134. package/src/generated/duel/instructions/flushMatches.ts +76 -0
  135. package/src/generated/duel/instructions/index.ts +20 -0
  136. package/src/generated/duel/instructions/initializeQueue.ts +109 -0
  137. package/src/generated/duel/instructions/initializeTenant.ts +126 -0
  138. package/src/generated/duel/instructions/joinQueue.ts +106 -0
  139. package/src/generated/duel/instructions/processUndelegation.ts +86 -0
  140. package/src/generated/duel/instructions/setupTicketPermission.ts +115 -0
  141. package/src/generated/duel/programs/duel.ts +108 -0
  142. package/src/generated/duel/programs/index.ts +9 -0
  143. package/src/generated/duel/types/accountType.ts +36 -0
  144. package/src/generated/duel/types/index.ts +14 -0
  145. package/src/generated/duel/types/matchEntry.ts +25 -0
  146. package/src/generated/duel/types/matchFound.ts +25 -0
  147. package/src/generated/duel/types/pendingMatch.ts +25 -0
  148. package/src/generated/duel/types/queueEntry.ts +25 -0
  149. package/src/generated/duel/types/ticketStatus.ts +38 -0
  150. package/src/generated/rps-game/accounts/gameSession.ts +77 -0
  151. package/src/generated/rps-game/accounts/index.ts +10 -0
  152. package/src/generated/rps-game/accounts/playerProfile.ts +80 -0
  153. package/src/generated/rps-game/errors/index.ts +9 -0
  154. package/src/generated/rps-game/errors/rpsGame.ts +40 -0
  155. package/src/generated/rps-game/index.ts +13 -0
  156. package/src/generated/rps-game/instructions/closePlayer.ts +100 -0
  157. package/src/generated/rps-game/instructions/delegatePda.ts +157 -0
  158. package/src/generated/rps-game/instructions/index.ts +17 -0
  159. package/src/generated/rps-game/instructions/initializePlayer.ts +109 -0
  160. package/src/generated/rps-game/instructions/makeChoice.ts +84 -0
  161. package/src/generated/rps-game/instructions/onMatchFound.ts +79 -0
  162. package/src/generated/rps-game/instructions/persistResults.ts +88 -0
  163. package/src/generated/rps-game/instructions/processUndelegation.ts +86 -0
  164. package/src/generated/rps-game/instructions/startGame.ts +118 -0
  165. package/src/generated/rps-game/instructions/startGameWithTicket.ts +121 -0
  166. package/src/generated/rps-game/programs/index.ts +9 -0
  167. package/src/generated/rps-game/programs/rpsGame.ts +95 -0
  168. package/src/generated/rps-game/types/accountType.ts +36 -0
  169. package/src/generated/rps-game/types/choice.ts +25 -0
  170. package/src/generated/rps-game/types/gameResult.ts +37 -0
  171. package/src/generated/rps-game/types/index.ts +11 -0
  172. package/src/index.ts +2 -1
  173. package/src/player.ts +129 -192
  174. package/src/{idl/private_matchmaking.json → rps_game.json} +547 -583
  175. package/src/tee.ts +79 -0
  176. package/src/transaction.ts +90 -0
  177. package/src/utils.ts +35 -20
  178. package/tsconfig.json +2 -2
  179. package/dist/client.d.ts +0 -54
  180. package/dist/client.js +0 -265
  181. package/dist/duel.json +0 -1207
  182. package/dist/private_matchmaking.json +0 -534
  183. package/dist/types.d.ts +0 -635
  184. package/dist/types.js +0 -2
  185. package/src/idl/private_matchmaking.ts +0 -1033
  186. package/src/types.ts +0 -300
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ import { type Choice, type ChoiceArgs } from '../types';
11
+ export declare const MAKE_CHOICE_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
12
+ export declare function getMakeChoiceDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
13
+ export type MakeChoiceInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountGameSession extends string | AccountMeta<string> = string, TAccountPlayer1Profile extends string | AccountMeta<string> = string, TAccountPlayer2Profile extends string | AccountMeta<string> = string, TAccountPlayer extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountGameSession extends string ? WritableAccount<TAccountGameSession> : TAccountGameSession, TAccountPlayer1Profile extends string ? WritableAccount<TAccountPlayer1Profile> : TAccountPlayer1Profile, TAccountPlayer2Profile extends string ? WritableAccount<TAccountPlayer2Profile> : TAccountPlayer2Profile, TAccountPlayer extends string ? ReadonlySignerAccount<TAccountPlayer> & AccountSignerMeta<TAccountPlayer> : TAccountPlayer, ...TRemainingAccounts]>;
14
+ export type MakeChoiceInstructionData = {
15
+ discriminator: ReadonlyUint8Array;
16
+ choice: Choice;
17
+ };
18
+ export type MakeChoiceInstructionDataArgs = {
19
+ choice: ChoiceArgs;
20
+ };
21
+ export declare function getMakeChoiceInstructionDataEncoder(): FixedSizeEncoder<MakeChoiceInstructionDataArgs>;
22
+ export declare function getMakeChoiceInstructionDataDecoder(): FixedSizeDecoder<MakeChoiceInstructionData>;
23
+ export declare function getMakeChoiceInstructionDataCodec(): FixedSizeCodec<MakeChoiceInstructionDataArgs, MakeChoiceInstructionData>;
24
+ export type MakeChoiceInput<TAccountGameSession extends string = string, TAccountPlayer1Profile extends string = string, TAccountPlayer2Profile extends string = string, TAccountPlayer extends string = string> = {
25
+ gameSession: Address<TAccountGameSession>;
26
+ player1Profile: Address<TAccountPlayer1Profile>;
27
+ player2Profile: Address<TAccountPlayer2Profile>;
28
+ player: TransactionSigner<TAccountPlayer>;
29
+ choice: MakeChoiceInstructionDataArgs["choice"];
30
+ };
31
+ export declare function getMakeChoiceInstruction<TAccountGameSession extends string, TAccountPlayer1Profile extends string, TAccountPlayer2Profile extends string, TAccountPlayer extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: MakeChoiceInput<TAccountGameSession, TAccountPlayer1Profile, TAccountPlayer2Profile, TAccountPlayer>, config?: {
32
+ programAddress?: TProgramAddress;
33
+ }): MakeChoiceInstruction<TProgramAddress, TAccountGameSession, TAccountPlayer1Profile, TAccountPlayer2Profile, TAccountPlayer>;
34
+ export type ParsedMakeChoiceInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
35
+ programAddress: Address<TProgram>;
36
+ accounts: {
37
+ gameSession: TAccountMetas[0];
38
+ player1Profile: TAccountMetas[1];
39
+ player2Profile: TAccountMetas[2];
40
+ player: TAccountMetas[3];
41
+ };
42
+ data: MakeChoiceInstructionData;
43
+ };
44
+ export declare function parseMakeChoiceInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedMakeChoiceInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ import { getChoiceDecoder, getChoiceEncoder } from '../types';
12
+ export const MAKE_CHOICE_DISCRIMINATOR = new Uint8Array([207, 18, 251, 32, 135, 122, 160, 77]);
13
+ export function getMakeChoiceDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(MAKE_CHOICE_DISCRIMINATOR); }
14
+ export function getMakeChoiceInstructionDataEncoder() {
15
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['choice', getChoiceEncoder()]]), (value) => ({ ...value, discriminator: MAKE_CHOICE_DISCRIMINATOR }));
16
+ }
17
+ export function getMakeChoiceInstructionDataDecoder() {
18
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['choice', getChoiceDecoder()]]);
19
+ }
20
+ export function getMakeChoiceInstructionDataCodec() {
21
+ return combineCodec(getMakeChoiceInstructionDataEncoder(), getMakeChoiceInstructionDataDecoder());
22
+ }
23
+ export function getMakeChoiceInstruction(input, config) {
24
+ // Program address.
25
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
26
+ // Original accounts.
27
+ const originalAccounts = { gameSession: { value: input.gameSession ?? null, isWritable: true }, player1Profile: { value: input.player1Profile ?? null, isWritable: true }, player2Profile: { value: input.player2Profile ?? null, isWritable: true }, player: { value: input.player ?? null, isWritable: false } };
28
+ const accounts = originalAccounts;
29
+ // Original args.
30
+ const args = { ...input, };
31
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
32
+ return Object.freeze({ accounts: [getAccountMeta("gameSession", accounts.gameSession), getAccountMeta("player1Profile", accounts.player1Profile), getAccountMeta("player2Profile", accounts.player2Profile), getAccountMeta("player", accounts.player)], data: getMakeChoiceInstructionDataEncoder().encode(args), programAddress });
33
+ }
34
+ export function parseMakeChoiceInstruction(instruction) {
35
+ if (instruction.accounts.length < 4) {
36
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 4 });
37
+ }
38
+ let accountIndex = 0;
39
+ const getNextAccount = () => {
40
+ const accountMeta = instruction.accounts[accountIndex];
41
+ accountIndex += 1;
42
+ return accountMeta;
43
+ };
44
+ return { programAddress: instruction.programAddress, accounts: { gameSession: getNextAccount(), player1Profile: getNextAccount(), player2Profile: getNextAccount(), player: getNextAccount() }, data: getMakeChoiceInstructionDataDecoder().decode(instruction.data) };
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNob2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvcnBzLWdhbWUvaW5zdHJ1Y3Rpb25zL21ha2VDaG9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUEwUyxNQUFNLGFBQWEsQ0FBQztBQUNuaEIsT0FBTyxFQUFFLHFCQUFxQixFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQWdDLE1BQU0sVUFBVSxDQUFDO0FBRTVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFL0YsTUFBTSxVQUFVLCtCQUErQixLQUFLLE9BQU8sY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQVNwSSxNQUFNLFVBQVUsbUNBQW1DO0lBQy9DLE9BQU8sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxD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QUFFLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN6USxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEJ5dGVzRGVjb2RlciwgZ2V0Qnl0ZXNFbmNvZGVyLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFjY291bnRTaWduZXJNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlTaWduZXJBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBUcmFuc2FjdGlvblNpZ25lciwgdHlwZSBXcml0YWJsZUFjY291bnQgfSBmcm9tICdAc29sYW5hL2tpdCc7XG5pbXBvcnQgeyBnZXRBY2NvdW50TWV0YUZhY3RvcnksIHR5cGUgUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuaW1wb3J0IHsgZ2V0Q2hvaWNlRGVjb2RlciwgZ2V0Q2hvaWNlRW5jb2RlciwgdHlwZSBDaG9pY2UsIHR5cGUgQ2hvaWNlQXJncyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IE1BS0VfQ0hPSUNFX0RJU0NSSU1JTkFUT1IgPSBuZXcgVWludDhBcnJheShbMjA3LCAxOCwgMjUxLCAzMiwgMTM1LCAxMjIsIDE2MCwgNzddKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ha2VDaG9pY2VEaXNjcmltaW5hdG9yQnl0ZXMoKSB7IHJldHVybiBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKE1BS0VfQ0hPSUNFX0RJU0NSSU1JTkFUT1IpOyB9XG5cbmV4cG9ydCB0eXBlIE1ha2VDaG9pY2VJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50R2FtZVNlc3Npb24gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBsYXllcjFQcm9maWxlIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIyUHJvZmlsZSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVFJlbWFpbmluZ0FjY291bnRzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGE8c3RyaW5nPltdID0gW10+ID1cbkluc3RydWN0aW9uPFRQcm9ncmFtPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5PiAmIEluc3RydWN0aW9uV2l0aEFjY291bnRzPFtUQWNjb3VudEdhbWVTZXNzaW9uIGV4dGVuZHMgc3RyaW5nID8gV3JpdGFibGVBY2NvdW50PFRBY2NvdW50R2FtZVNlc3Npb24+IDogVEFjY291bnRHYW1lU2Vzc2lvbiwgVEFjY291bnRQbGF5ZXIxUHJvZmlsZSBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFBsYXllcjFQcm9maWxlPiA6IFRBY2NvdW50UGxheWVyMVByb2ZpbGUsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRQbGF5ZXIyUHJvZmlsZT4gOiBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5U2lnbmVyQWNjb3VudDxUQWNjb3VudFBsYXllcj4gJiBBY2NvdW50U2lnbmVyTWV0YTxUQWNjb3VudFBsYXllcj4gOiBUQWNjb3VudFBsYXllciwgLi4uVFJlbWFpbmluZ0FjY291bnRzXT47XG5cbmV4cG9ydCB0eXBlIE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgY2hvaWNlOiBDaG9pY2U7ICB9O1xuXG5leHBvcnQgdHlwZSBNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgY2hvaWNlOiBDaG9pY2VBcmdzOyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCk6IEZpeGVkU2l6ZUVuY29kZXI8TWFrZUNob2ljZUluc3RydWN0aW9uRGF0YUFyZ3M+IHtcbiAgICByZXR1cm4gdHJhbnNmb3JtRW5jb2RlcihnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCldLCBbJ2Nob2ljZScsIGdldENob2ljZUVuY29kZXIoKV1dKSwgKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgZGlzY3JpbWluYXRvcjogTUFLRV9DSE9JQ0VfRElTQ1JJTUlOQVRPUiB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpOiBGaXhlZFNpemVEZWNvZGVyPE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gZ2V0U3RydWN0RGVjb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RGVjb2RlclNpemUoZ2V0Qnl0ZXNEZWNvZGVyKCksIDgpXSwgWydjaG9pY2UnLCBnZXRDaG9pY2VEZWNvZGVyKCldXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhQ29kZWMoKTogRml4ZWRTaXplQ29kZWM8TWFrZUNob2ljZUluc3RydWN0aW9uRGF0YUFyZ3MsIE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCksIGdldE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBNYWtlQ2hvaWNlSW5wdXQ8VEFjY291bnRHYW1lU2Vzc2lvbiBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIxUHJvZmlsZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIyUHJvZmlsZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gIHtcbiAgZ2FtZVNlc3Npb246IEFkZHJlc3M8VEFjY291bnRHYW1lU2Vzc2lvbj47XG5wbGF5ZXIxUHJvZmlsZTogQWRkcmVzczxUQWNjb3VudFBsYXllcjFQcm9maWxlPjtcbnBsYXllcjJQcm9maWxlOiBBZGRyZXNzPFRBY2NvdW50UGxheWVyMlByb2ZpbGU+O1xucGxheWVyOiBUcmFuc2FjdGlvblNpZ25lcjxUQWNjb3VudFBsYXllcj47XG5jaG9pY2U6IE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFBcmdzW1wiY2hvaWNlXCJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFrZUNob2ljZUluc3RydWN0aW9uPFRBY2NvdW50R2FtZVNlc3Npb24gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyMVByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IE1ha2VDaG9pY2VJbnB1dDxUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllcj4sIGNvbmZpZz86IHsgcHJvZ3JhbUFkZHJlc3M/OiBUUHJvZ3JhbUFkZHJlc3MgfSApOiBNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllcj4ge1xuICAvLyBQcm9ncmFtIGFkZHJlc3MuXG5jb25zdCBwcm9ncmFtQWRkcmVzcyA9IGNvbmZpZz8ucHJvZ3JhbUFkZHJlc3MgPz8gUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyBnYW1lU2Vzc2lvbjogeyB2YWx1ZTogaW5wdXQuZ2FtZVNlc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXIxUHJvZmlsZTogeyB2YWx1ZTogaW5wdXQucGxheWVyMVByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXIyUHJvZmlsZTogeyB2YWx1ZTogaW5wdXQucGxheWVyMlByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBPcmlnaW5hbCBhcmdzLlxuY29uc3QgYXJncyA9IHsgLi4uaW5wdXQsICB9O1xuXG5cblxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwiZ2FtZVNlc3Npb25cIiwgYWNjb3VudHMuZ2FtZVNlc3Npb24pLCBnZXRBY2NvdW50TWV0YShcInBsYXllcjFQcm9maWxlXCIsIGFjY291bnRzLnBsYXllcjFQcm9maWxlKSwgZ2V0QWNjb3VudE1ldGEoXCJwbGF5ZXIyUHJvZmlsZVwiLCBhY2NvdW50cy5wbGF5ZXIyUHJvZmlsZSksIGdldEFjY291bnRNZXRhKFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllcildLCBkYXRhOiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLmVuY29kZShhcmdzIGFzIE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFBcmdzKSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllcj4pO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXSA9IHJlYWRvbmx5IEFjY291bnRNZXRhW10+ID0geyBwcm9ncmFtQWRkcmVzczogQWRkcmVzczxUUHJvZ3JhbT47XG5hY2NvdW50czoge1xuZ2FtZVNlc3Npb246IFRBY2NvdW50TWV0YXNbMF07XG5wbGF5ZXIxUHJvZmlsZTogVEFjY291bnRNZXRhc1sxXTtcbnBsYXllcjJQcm9maWxlOiBUQWNjb3VudE1ldGFzWzJdO1xucGxheWVyOiBUQWNjb3VudE1ldGFzWzNdO1xufTtcbmRhdGE6IE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGE7IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1ha2VDaG9pY2VJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRNZXRhcyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhW10+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxUQWNjb3VudE1ldGFzPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5Pik6IFBhcnNlZE1ha2VDaG9pY2VJbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgNCkge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogNCB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IGdhbWVTZXNzaW9uOiBnZXROZXh0QWNjb3VudCgpLCBwbGF5ZXIxUHJvZmlsZTogZ2V0TmV4dEFjY291bnQoKSwgcGxheWVyMlByb2ZpbGU6IGdldE5leHRBY2NvdW50KCksIHBsYXllcjogZ2V0TmV4dEFjY291bnQoKSB9LCBkYXRhOiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpLmRlY29kZShpbnN0cnVjdGlvbi5kYXRhKSB9O1xufSJdfQ==
@@ -0,0 +1,43 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ export declare const ON_MATCH_FOUND_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getOnMatchFoundDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
12
+ export type OnMatchFoundInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountSigner extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountSigner extends string ? ReadonlySignerAccount<TAccountSigner> & AccountSignerMeta<TAccountSigner> : TAccountSigner, ...TRemainingAccounts]>;
13
+ export type OnMatchFoundInstructionData = {
14
+ discriminator: ReadonlyUint8Array;
15
+ player1: Address;
16
+ player2: Address;
17
+ matchId: bigint;
18
+ };
19
+ export type OnMatchFoundInstructionDataArgs = {
20
+ player1: Address;
21
+ player2: Address;
22
+ matchId: number | bigint;
23
+ };
24
+ export declare function getOnMatchFoundInstructionDataEncoder(): FixedSizeEncoder<OnMatchFoundInstructionDataArgs>;
25
+ export declare function getOnMatchFoundInstructionDataDecoder(): FixedSizeDecoder<OnMatchFoundInstructionData>;
26
+ export declare function getOnMatchFoundInstructionDataCodec(): FixedSizeCodec<OnMatchFoundInstructionDataArgs, OnMatchFoundInstructionData>;
27
+ export type OnMatchFoundInput<TAccountSigner extends string = string> = {
28
+ signer: TransactionSigner<TAccountSigner>;
29
+ player1: OnMatchFoundInstructionDataArgs["player1"];
30
+ player2: OnMatchFoundInstructionDataArgs["player2"];
31
+ matchId: OnMatchFoundInstructionDataArgs["matchId"];
32
+ };
33
+ export declare function getOnMatchFoundInstruction<TAccountSigner extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: OnMatchFoundInput<TAccountSigner>, config?: {
34
+ programAddress?: TProgramAddress;
35
+ }): OnMatchFoundInstruction<TProgramAddress, TAccountSigner>;
36
+ export type ParsedOnMatchFoundInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
37
+ programAddress: Address<TProgram>;
38
+ accounts: {
39
+ signer: TAccountMetas[0];
40
+ };
41
+ data: OnMatchFoundInstructionData;
42
+ };
43
+ export declare function parseOnMatchFoundInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedOnMatchFoundInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ export const ON_MATCH_FOUND_DISCRIMINATOR = new Uint8Array([66, 209, 170, 159, 10, 195, 34, 214]);
12
+ export function getOnMatchFoundDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(ON_MATCH_FOUND_DISCRIMINATOR); }
13
+ export function getOnMatchFoundInstructionDataEncoder() {
14
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['player1', getAddressEncoder()], ['player2', getAddressEncoder()], ['matchId', getU64Encoder()]]), (value) => ({ ...value, discriminator: ON_MATCH_FOUND_DISCRIMINATOR }));
15
+ }
16
+ export function getOnMatchFoundInstructionDataDecoder() {
17
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['player1', getAddressDecoder()], ['player2', getAddressDecoder()], ['matchId', getU64Decoder()]]);
18
+ }
19
+ export function getOnMatchFoundInstructionDataCodec() {
20
+ return combineCodec(getOnMatchFoundInstructionDataEncoder(), getOnMatchFoundInstructionDataDecoder());
21
+ }
22
+ export function getOnMatchFoundInstruction(input, config) {
23
+ // Program address.
24
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
25
+ // Original accounts.
26
+ const originalAccounts = { signer: { value: input.signer ?? null, isWritable: false } };
27
+ const accounts = originalAccounts;
28
+ // Original args.
29
+ const args = { ...input, };
30
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
31
+ return Object.freeze({ accounts: [getAccountMeta("signer", accounts.signer)], data: getOnMatchFoundInstructionDataEncoder().encode(args), programAddress });
32
+ }
33
+ export function parseOnMatchFoundInstruction(instruction) {
34
+ if (instruction.accounts.length < 1) {
35
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 1 });
36
+ }
37
+ let accountIndex = 0;
38
+ const getNextAccount = () => {
39
+ const accountMeta = instruction.accounts[accountIndex];
40
+ accountIndex += 1;
41
+ return accountMeta;
42
+ };
43
+ return { programAddress: instruction.programAddress, accounts: { signer: getNextAccount() }, data: getOnMatchFoundInstructionDataDecoder().decode(instruction.data) };
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25NYXRjaEZvdW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9ycHMtZ2FtZS9pbnN0cnVjdGlvbnMvb25NYXRjaEZvdW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFvUixNQUFNLGFBQWEsQ0FBQztBQUNqa0IsT0FBTyxFQUFFLHFCQUFxQixFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sVUFBVSxpQ0FBaUMsS0FBSyxPQUFPLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFTekksTUFBTSxVQUFVLHFDQUFxQztJQUNqRCxPQUFPLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLGFBQWEsRUFBRSw0QkFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuUixDQUFDO0FBRUQsTUFBTSxVQUFVLHFDQUFxQztJQUNqRCxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6TCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1DQUFtQztJQUMvQyxPQUFPLFlBQVksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLHFDQUFxQyxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBU0QsTUFBTSxVQUFVLDBCQUEwQixDQUFtRyxLQUF3QyxFQUFFLE1BQTZDO0lBQ2xPLG1CQUFtQjtJQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsY0FBYyxJQUFJLHdCQUF3QixDQUFDO0lBRXpFLHFCQUFxQjtJQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO0lBQ3ZGLE1BQU0sUUFBUSxHQUFHLGdCQUFxRixDQUFDO0lBR3ZHLGlCQUFpQjtJQUNqQixNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFJLENBQUM7SUFLNUIsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHFDQUFxQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQXVDLENBQUMsRUFBRSxjQUFjLEVBQThELENBQUMsQ0FBQztBQUMzUCxDQUFDO0FBUUQsTUFBTSxVQUFVLDRCQUE0QixDQUF3RSxXQUFxSDtJQUN2TyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxXQUFXLENBQUMseURBQXlELEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pLLENBQUM7SUFDRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDckIsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO1FBQzFCLE1BQU0sV0FBVyxHQUFJLFdBQVcsQ0FBQyxRQUEwQixDQUFDLFlBQVksQ0FBRSxDQUFDO1FBQzNFLFlBQVksSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxDQUFBO0lBQ0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN4SyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEFkZHJlc3NEZWNvZGVyLCBnZXRBZGRyZXNzRW5jb2RlciwgZ2V0Qnl0ZXNEZWNvZGVyLCBnZXRCeXRlc0VuY29kZXIsIGdldFN0cnVjdERlY29kZXIsIGdldFN0cnVjdEVuY29kZXIsIGdldFU2NERlY29kZXIsIGdldFU2NEVuY29kZXIsIFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19JTlNVRkZJQ0lFTlRfQUNDT1VOVF9NRVRBUywgU29sYW5hRXJyb3IsIHRyYW5zZm9ybUVuY29kZXIsIHR5cGUgQWNjb3VudE1ldGEsIHR5cGUgQWNjb3VudFNpZ25lck1ldGEsIHR5cGUgQWRkcmVzcywgdHlwZSBGaXhlZFNpemVDb2RlYywgdHlwZSBGaXhlZFNpemVEZWNvZGVyLCB0eXBlIEZpeGVkU2l6ZUVuY29kZXIsIHR5cGUgSW5zdHJ1Y3Rpb24sIHR5cGUgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMsIHR5cGUgSW5zdHJ1Y3Rpb25XaXRoRGF0YSwgdHlwZSBSZWFkb25seVNpZ25lckFjY291bnQsIHR5cGUgUmVhZG9ubHlVaW50OEFycmF5LCB0eXBlIFRyYW5zYWN0aW9uU2lnbmVyIH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuaW1wb3J0IHsgZ2V0QWNjb3VudE1ldGFGYWN0b3J5LCB0eXBlIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9wcm9ncmFtLWNsaWVudC1jb3JlJztcbmltcG9ydCB7IFJQU19HQU1FX1BST0dSQU1fQUREUkVTUyB9IGZyb20gJy4uL3Byb2dyYW1zJztcblxuZXhwb3J0IGNvbnN0IE9OX01BVENIX0ZPVU5EX0RJU0NSSU1JTkFUT1IgPSBuZXcgVWludDhBcnJheShbNjYsIDIwOSwgMTcwLCAxNTksIDEwLCAxOTUsIDM0LCAyMTRdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZERpc2NyaW1pbmF0b3JCeXRlcygpIHsgcmV0dXJuIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUoT05fTUFUQ0hfRk9VTkRfRElTQ1JJTUlOQVRPUik7IH1cblxuZXhwb3J0IHR5cGUgT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudFNpZ25lciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRSZW1haW5pbmdBY2NvdW50cyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhPHN0cmluZz5bXSA9IFtdPiA9XG5JbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxbVEFjY291bnRTaWduZXIgZXh0ZW5kcyBzdHJpbmcgPyBSZWFkb25seVNpZ25lckFjY291bnQ8VEFjY291bnRTaWduZXI+ICYgQWNjb3VudFNpZ25lck1ldGE8VEFjY291bnRTaWduZXI+IDogVEFjY291bnRTaWduZXIsIC4uLlRSZW1haW5pbmdBY2NvdW50c10+O1xuXG5leHBvcnQgdHlwZSBPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgcGxheWVyMTogQWRkcmVzczsgcGxheWVyMjogQWRkcmVzczsgbWF0Y2hJZDogYmlnaW50OyAgfTtcblxuZXhwb3J0IHR5cGUgT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgcGxheWVyMTogQWRkcmVzczsgcGxheWVyMjogQWRkcmVzczsgbWF0Y2hJZDogbnVtYmVyIHwgYmlnaW50OyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUVuY29kZXIoKTogRml4ZWRTaXplRW5jb2RlcjxPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFBcmdzPiB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybUVuY29kZXIoZ2V0U3RydWN0RW5jb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpXSwgWydwbGF5ZXIxJywgZ2V0QWRkcmVzc0VuY29kZXIoKV0sIFsncGxheWVyMicsIGdldEFkZHJlc3NFbmNvZGVyKCldLCBbJ21hdGNoSWQnLCBnZXRVNjRFbmNvZGVyKCldXSksICh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIGRpc2NyaW1pbmF0b3I6IE9OX01BVENIX0ZPVU5EX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpOiBGaXhlZFNpemVEZWNvZGVyPE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhEZWNvZGVyU2l6ZShnZXRCeXRlc0RlY29kZXIoKSwgOCldLCBbJ3BsYXllcjEnLCBnZXRBZGRyZXNzRGVjb2RlcigpXSwgWydwbGF5ZXIyJywgZ2V0QWRkcmVzc0RlY29kZXIoKV0sIFsnbWF0Y2hJZCcsIGdldFU2NERlY29kZXIoKV1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUNvZGVjKCk6IEZpeGVkU2l6ZUNvZGVjPE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUFyZ3MsIE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBjb21iaW5lQ29kZWMoZ2V0T25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLCBnZXRPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBPbk1hdGNoRm91bmRJbnB1dDxUQWNjb3VudFNpZ25lciBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICBzaWduZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50U2lnbmVyPjtcbnBsYXllcjE6IE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUFyZ3NbXCJwbGF5ZXIxXCJdO1xucGxheWVyMjogT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhQXJnc1tcInBsYXllcjJcIl07XG5tYXRjaElkOiBPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFBcmdzW1wibWF0Y2hJZFwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uPFRBY2NvdW50U2lnbmVyIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IE9uTWF0Y2hGb3VuZElucHV0PFRBY2NvdW50U2lnbmVyPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRTaWduZXI+IHtcbiAgLy8gUHJvZ3JhbSBhZGRyZXNzLlxuY29uc3QgcHJvZ3JhbUFkZHJlc3MgPSBjb25maWc/LnByb2dyYW1BZGRyZXNzID8/IFJQU19HQU1FX1BST0dSQU1fQUREUkVTUztcblxuIC8vIE9yaWdpbmFsIGFjY291bnRzLlxuY29uc3Qgb3JpZ2luYWxBY2NvdW50cyA9IHsgc2lnbmVyOiB7IHZhbHVlOiBpbnB1dC5zaWduZXIgPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSB9XG5jb25zdCBhY2NvdW50cyA9IG9yaWdpbmFsQWNjb3VudHMgYXMgUmVjb3JkPGtleW9mIHR5cGVvZiBvcmlnaW5hbEFjY291bnRzLCBSZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudD47XG5cblxuLy8gT3JpZ2luYWwgYXJncy5cbmNvbnN0IGFyZ3MgPSB7IC4uLmlucHV0LCAgfTtcblxuXG5cblxuY29uc3QgZ2V0QWNjb3VudE1ldGEgPSBnZXRBY2NvdW50TWV0YUZhY3RvcnkocHJvZ3JhbUFkZHJlc3MsICdwcm9ncmFtSWQnKTtcbnJldHVybiBPYmplY3QuZnJlZXplKHsgYWNjb3VudHM6IFtnZXRBY2NvdW50TWV0YShcInNpZ25lclwiLCBhY2NvdW50cy5zaWduZXIpXSwgZGF0YTogZ2V0T25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLmVuY29kZShhcmdzIGFzIE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUFyZ3MpLCBwcm9ncmFtQWRkcmVzcyB9IGFzIE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRTaWduZXI+KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXSA9IHJlYWRvbmx5IEFjY291bnRNZXRhW10+ID0geyBwcm9ncmFtQWRkcmVzczogQWRkcmVzczxUUHJvZ3JhbT47XG5hY2NvdW50czoge1xuc2lnbmVyOiBUQWNjb3VudE1ldGFzWzBdO1xufTtcbmRhdGE6IE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdPihpbnN0cnVjdGlvbjogSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8VEFjY291bnRNZXRhcz4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4pOiBQYXJzZWRPbk1hdGNoRm91bmRJbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgMSkge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogMSB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IHNpZ25lcjogZ2V0TmV4dEFjY291bnQoKSB9LCBkYXRhOiBnZXRPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkuZGVjb2RlKGluc3RydWN0aW9uLmRhdGEpIH07XG59Il19
@@ -0,0 +1,43 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ export declare const PERSIST_RESULTS_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getPersistResultsDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
12
+ export type PersistResultsInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountGameSession extends string | AccountMeta<string> = string, TAccountPlayer1Profile extends string | AccountMeta<string> = string, TAccountPlayer2Profile extends string | AccountMeta<string> = string, TAccountPayer extends string | AccountMeta<string> = string, TAccountMagicProgram extends string | AccountMeta<string> = "Magic11111111111111111111111111111111111111", TAccountMagicContext extends string | AccountMeta<string> = "MagicContext1111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountGameSession extends string ? WritableAccount<TAccountGameSession> : TAccountGameSession, TAccountPlayer1Profile extends string ? WritableAccount<TAccountPlayer1Profile> : TAccountPlayer1Profile, TAccountPlayer2Profile extends string ? WritableAccount<TAccountPlayer2Profile> : TAccountPlayer2Profile, TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer> : TAccountPayer, TAccountMagicProgram extends string ? ReadonlyAccount<TAccountMagicProgram> : TAccountMagicProgram, TAccountMagicContext extends string ? WritableAccount<TAccountMagicContext> : TAccountMagicContext, ...TRemainingAccounts]>;
13
+ export type PersistResultsInstructionData = {
14
+ discriminator: ReadonlyUint8Array;
15
+ };
16
+ export type PersistResultsInstructionDataArgs = {};
17
+ export declare function getPersistResultsInstructionDataEncoder(): FixedSizeEncoder<PersistResultsInstructionDataArgs>;
18
+ export declare function getPersistResultsInstructionDataDecoder(): FixedSizeDecoder<PersistResultsInstructionData>;
19
+ export declare function getPersistResultsInstructionDataCodec(): FixedSizeCodec<PersistResultsInstructionDataArgs, PersistResultsInstructionData>;
20
+ export type PersistResultsInput<TAccountGameSession extends string = string, TAccountPlayer1Profile extends string = string, TAccountPlayer2Profile extends string = string, TAccountPayer extends string = string, TAccountMagicProgram extends string = string, TAccountMagicContext extends string = string> = {
21
+ gameSession: Address<TAccountGameSession>;
22
+ player1Profile: Address<TAccountPlayer1Profile>;
23
+ player2Profile: Address<TAccountPlayer2Profile>;
24
+ payer: TransactionSigner<TAccountPayer>;
25
+ magicProgram?: Address<TAccountMagicProgram>;
26
+ magicContext?: Address<TAccountMagicContext>;
27
+ };
28
+ export declare function getPersistResultsInstruction<TAccountGameSession extends string, TAccountPlayer1Profile extends string, TAccountPlayer2Profile extends string, TAccountPayer extends string, TAccountMagicProgram extends string, TAccountMagicContext extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: PersistResultsInput<TAccountGameSession, TAccountPlayer1Profile, TAccountPlayer2Profile, TAccountPayer, TAccountMagicProgram, TAccountMagicContext>, config?: {
29
+ programAddress?: TProgramAddress;
30
+ }): PersistResultsInstruction<TProgramAddress, TAccountGameSession, TAccountPlayer1Profile, TAccountPlayer2Profile, TAccountPayer, TAccountMagicProgram, TAccountMagicContext>;
31
+ export type ParsedPersistResultsInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
32
+ programAddress: Address<TProgram>;
33
+ accounts: {
34
+ gameSession: TAccountMetas[0];
35
+ player1Profile: TAccountMetas[1];
36
+ player2Profile: TAccountMetas[2];
37
+ payer: TAccountMetas[3];
38
+ magicProgram: TAccountMetas[4];
39
+ magicContext: TAccountMetas[5];
40
+ };
41
+ data: PersistResultsInstructionData;
42
+ };
43
+ export declare function parsePersistResultsInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedPersistResultsInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ export const PERSIST_RESULTS_DISCRIMINATOR = new Uint8Array([9, 175, 42, 217, 2, 48, 80, 81]);
12
+ export function getPersistResultsDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(PERSIST_RESULTS_DISCRIMINATOR); }
13
+ export function getPersistResultsInstructionDataEncoder() {
14
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: PERSIST_RESULTS_DISCRIMINATOR }));
15
+ }
16
+ export function getPersistResultsInstructionDataDecoder() {
17
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
18
+ }
19
+ export function getPersistResultsInstructionDataCodec() {
20
+ return combineCodec(getPersistResultsInstructionDataEncoder(), getPersistResultsInstructionDataDecoder());
21
+ }
22
+ export function getPersistResultsInstruction(input, config) {
23
+ // Program address.
24
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
25
+ // Original accounts.
26
+ const originalAccounts = { gameSession: { value: input.gameSession ?? null, isWritable: true }, player1Profile: { value: input.player1Profile ?? null, isWritable: true }, player2Profile: { value: input.player2Profile ?? null, isWritable: true }, payer: { value: input.payer ?? null, isWritable: true }, magicProgram: { value: input.magicProgram ?? null, isWritable: false }, magicContext: { value: input.magicContext ?? null, isWritable: true } };
27
+ const accounts = originalAccounts;
28
+ // Resolve default values.
29
+ if (!accounts.magicProgram.value) {
30
+ accounts.magicProgram.value = 'Magic11111111111111111111111111111111111111';
31
+ }
32
+ if (!accounts.magicContext.value) {
33
+ accounts.magicContext.value = 'MagicContext1111111111111111111111111111111';
34
+ }
35
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
36
+ return Object.freeze({ accounts: [getAccountMeta("gameSession", accounts.gameSession), getAccountMeta("player1Profile", accounts.player1Profile), getAccountMeta("player2Profile", accounts.player2Profile), getAccountMeta("payer", accounts.payer), getAccountMeta("magicProgram", accounts.magicProgram), getAccountMeta("magicContext", accounts.magicContext)], data: getPersistResultsInstructionDataEncoder().encode({}), programAddress });
37
+ }
38
+ export function parsePersistResultsInstruction(instruction) {
39
+ if (instruction.accounts.length < 6) {
40
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 6 });
41
+ }
42
+ let accountIndex = 0;
43
+ const getNextAccount = () => {
44
+ const accountMeta = instruction.accounts[accountIndex];
45
+ accountIndex += 1;
46
+ return accountMeta;
47
+ };
48
+ return { programAddress: instruction.programAddress, accounts: { gameSession: getNextAccount(), player1Profile: getNextAccount(), player2Profile: getNextAccount(), payer: getNextAccount(), magicProgram: getNextAccount(), magicContext: getNextAccount() }, data: getPersistResultsInstructionDataDecoder().decode(instruction.data) };
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdFJlc3VsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL3Jwcy1nYW1lL2luc3RydWN0aW9ucy9wZXJzaXN0UmVzdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSx5REFBeUQsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQWdVLE1BQU0sYUFBYSxDQUFDO0FBQ3ppQixPQUFPLEVBQUUscUJBQXFCLEVBQW1DLE1BQU0sNkJBQTZCLENBQUM7QUFDckcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFOUYsTUFBTSxVQUFVLG1DQUFtQyxLQUFLLE9BQU8sY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQVM1SSxNQUFNLFVBQVUsdUNBQXVDO0lBQ25ELE9BQU8sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEwsQ0FBQztBQUVELE1BQU0sVUFBVSx1Q0FBdUM7SUFDbkQsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBRUQsTUFBTSxVQUFVLHFDQUFxQztJQUNqRCxPQUFPLFlBQVksQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLHVDQUF1QyxFQUFFLENBQUMsQ0FBQztBQUM5RyxDQUFDO0FBV0QsTUFBTSxVQUFVLDRCQUE0QixDQUE4UixLQUEwSixFQUFFLE1BQTZDO0lBQ2poQixtQkFBbUI7SUFDckIsTUFBTSxjQUFjLEdBQUcsTUFBTSxFQUFFLGNBQWMsSUFBSSx3QkFBd0IsQ0FBQztJQUV6RSxxQkFBcUI7SUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUE7SUFDOWIsTUFBTSxRQUFRLEdBQUcsZ0JBQXFGLENBQUM7SUFHdkcsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLDZDQUF1RyxDQUFDO0lBQ3RJLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyw2Q0FBdUcsQ0FBQztJQUN0SSxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSx1Q0FBdUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQWdMLENBQUMsQ0FBQztBQUNqbUIsQ0FBQztBQWFELE1BQU0sVUFBVSw4QkFBOEIsQ0FBd0UsV0FBcUg7SUFDek8sSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksV0FBVyxDQUFDLHlEQUF5RCxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqSyxDQUFDO0lBQ0QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtRQUMxQixNQUFNLFdBQVcsR0FBSSxXQUFXLENBQUMsUUFBMEIsQ0FBQyxZQUFZLENBQUUsQ0FBQztRQUMzRSxZQUFZLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsQ0FBQTtJQUNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx1Q0FBdUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM1VSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEJ5dGVzRGVjb2RlciwgZ2V0Qnl0ZXNFbmNvZGVyLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFjY291bnRTaWduZXJNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBUcmFuc2FjdGlvblNpZ25lciwgdHlwZSBXcml0YWJsZUFjY291bnQsIHR5cGUgV3JpdGFibGVTaWduZXJBY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuaW1wb3J0IHsgZ2V0QWNjb3VudE1ldGFGYWN0b3J5LCB0eXBlIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9wcm9ncmFtLWNsaWVudC1jb3JlJztcbmltcG9ydCB7IFJQU19HQU1FX1BST0dSQU1fQUREUkVTUyB9IGZyb20gJy4uL3Byb2dyYW1zJztcblxuZXhwb3J0IGNvbnN0IFBFUlNJU1RfUkVTVUxUU19ESVNDUklNSU5BVE9SID0gbmV3IFVpbnQ4QXJyYXkoWzksIDE3NSwgNDIsIDIxNywgMiwgNDgsIDgwLCA4MV0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdFJlc3VsdHNEaXNjcmltaW5hdG9yQnl0ZXMoKSB7IHJldHVybiBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKFBFUlNJU1RfUkVTVUxUU19ESVNDUklNSU5BVE9SKTsgfVxuXG5leHBvcnQgdHlwZSBQZXJzaXN0UmVzdWx0c0luc3RydWN0aW9uPFRQcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUywgVEFjY291bnRHYW1lU2Vzc2lvbiBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyMVByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBsYXllcjJQcm9maWxlIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50TWFnaWNQcm9ncmFtIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IFwiTWFnaWMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMVwiLCBUQWNjb3VudE1hZ2ljQ29udGV4dCBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBcIk1hZ2ljQ29udGV4dDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFcIiwgVFJlbWFpbmluZ0FjY291bnRzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGE8c3RyaW5nPltdID0gW10+ID1cbkluc3RydWN0aW9uPFRQcm9ncmFtPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5PiAmIEluc3RydWN0aW9uV2l0aEFjY291bnRzPFtUQWNjb3VudEdhbWVTZXNzaW9uIGV4dGVuZHMgc3RyaW5nID8gV3JpdGFibGVBY2NvdW50PFRBY2NvdW50R2FtZVNlc3Npb24+IDogVEFjY291bnRHYW1lU2Vzc2lvbiwgVEFjY291bnRQbGF5ZXIxUHJvZmlsZSBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFBsYXllcjFQcm9maWxlPiA6IFRBY2NvdW50UGxheWVyMVByb2ZpbGUsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRQbGF5ZXIyUHJvZmlsZT4gOiBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBheWVyIGV4dGVuZHMgc3RyaW5nID8gV3JpdGFibGVTaWduZXJBY2NvdW50PFRBY2NvdW50UGF5ZXI+ICYgQWNjb3VudFNpZ25lck1ldGE8VEFjY291bnRQYXllcj4gOiBUQWNjb3VudFBheWVyLCBUQWNjb3VudE1hZ2ljUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudE1hZ2ljUHJvZ3JhbT4gOiBUQWNjb3VudE1hZ2ljUHJvZ3JhbSwgVEFjY291bnRNYWdpY0NvbnRleHQgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRNYWdpY0NvbnRleHQ+IDogVEFjY291bnRNYWdpY0NvbnRleHQsIC4uLlRSZW1haW5pbmdBY2NvdW50c10+O1xuXG5leHBvcnQgdHlwZSBQZXJzaXN0UmVzdWx0c0luc3RydWN0aW9uRGF0YSA9IHsgZGlzY3JpbWluYXRvcjogUmVhZG9ubHlVaW50OEFycmF5OyAgfTtcblxuZXhwb3J0IHR5cGUgUGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGFBcmdzID0geyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBlcnNpc3RSZXN1bHRzSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpOiBGaXhlZFNpemVFbmNvZGVyPFBlcnNpc3RSZXN1bHRzSW5zdHJ1Y3Rpb25EYXRhQXJncz4ge1xuICAgIHJldHVybiB0cmFuc2Zvcm1FbmNvZGVyKGdldFN0cnVjdEVuY29kZXIoW1snZGlzY3JpbWluYXRvcicsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KV1dKSwgKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgZGlzY3JpbWluYXRvcjogUEVSU0lTVF9SRVNVTFRTX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCk6IEZpeGVkU2l6ZURlY29kZXI8UGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gZ2V0U3RydWN0RGVjb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RGVjb2RlclNpemUoZ2V0Qnl0ZXNEZWNvZGVyKCksIDgpXV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGFDb2RlYygpOiBGaXhlZFNpemVDb2RlYzxQZXJzaXN0UmVzdWx0c0luc3RydWN0aW9uRGF0YUFyZ3MsIFBlcnNpc3RSZXN1bHRzSW5zdHJ1Y3Rpb25EYXRhPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVDb2RlYyhnZXRQZXJzaXN0UmVzdWx0c0luc3RydWN0aW9uRGF0YUVuY29kZXIoKSwgZ2V0UGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBQZXJzaXN0UmVzdWx0c0lucHV0PFRBY2NvdW50R2FtZVNlc3Npb24gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyMVByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50TWFnaWNQcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudE1hZ2ljQ29udGV4dCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICBnYW1lU2Vzc2lvbjogQWRkcmVzczxUQWNjb3VudEdhbWVTZXNzaW9uPjtcbnBsYXllcjFQcm9maWxlOiBBZGRyZXNzPFRBY2NvdW50UGxheWVyMVByb2ZpbGU+O1xucGxheWVyMlByb2ZpbGU6IEFkZHJlc3M8VEFjY291bnRQbGF5ZXIyUHJvZmlsZT47XG5wYXllcjogVHJhbnNhY3Rpb25TaWduZXI8VEFjY291bnRQYXllcj47XG5tYWdpY1Byb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50TWFnaWNQcm9ncmFtPjtcbm1hZ2ljQ29udGV4dD86IEFkZHJlc3M8VEFjY291bnRNYWdpY0NvbnRleHQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbjxUQWNjb3VudEdhbWVTZXNzaW9uIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBsYXllcjFQcm9maWxlIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBsYXllcjJQcm9maWxlIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBheWVyIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudE1hZ2ljUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRNYWdpY0NvbnRleHQgZXh0ZW5kcyBzdHJpbmcsIFRQcm9ncmFtQWRkcmVzcyBleHRlbmRzIEFkZHJlc3MgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTPihpbnB1dDogUGVyc2lzdFJlc3VsdHNJbnB1dDxUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBheWVyLCBUQWNjb3VudE1hZ2ljUHJvZ3JhbSwgVEFjY291bnRNYWdpY0NvbnRleHQ+LCBjb25maWc/OiB7IHByb2dyYW1BZGRyZXNzPzogVFByb2dyYW1BZGRyZXNzIH0gKTogUGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbjxUUHJvZ3JhbUFkZHJlc3MsIFRBY2NvdW50R2FtZVNlc3Npb24sIFRBY2NvdW50UGxheWVyMVByb2ZpbGUsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUsIFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50TWFnaWNQcm9ncmFtLCBUQWNjb3VudE1hZ2ljQ29udGV4dD4ge1xuICAvLyBQcm9ncmFtIGFkZHJlc3MuXG5jb25zdCBwcm9ncmFtQWRkcmVzcyA9IGNvbmZpZz8ucHJvZ3JhbUFkZHJlc3MgPz8gUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyBnYW1lU2Vzc2lvbjogeyB2YWx1ZTogaW5wdXQuZ2FtZVNlc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXIxUHJvZmlsZTogeyB2YWx1ZTogaW5wdXQucGxheWVyMVByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXIyUHJvZmlsZTogeyB2YWx1ZTogaW5wdXQucGxheWVyMlByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwYXllcjogeyB2YWx1ZTogaW5wdXQucGF5ZXIgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBtYWdpY1Byb2dyYW06IHsgdmFsdWU6IGlucHV0Lm1hZ2ljUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBtYWdpY0NvbnRleHQ6IHsgdmFsdWU6IGlucHV0Lm1hZ2ljQ29udGV4dCA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0gfVxuY29uc3QgYWNjb3VudHMgPSBvcmlnaW5hbEFjY291bnRzIGFzIFJlY29yZDxrZXlvZiB0eXBlb2Ygb3JpZ2luYWxBY2NvdW50cywgUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQ+O1xuXG5cbi8vIFJlc29sdmUgZGVmYXVsdCB2YWx1ZXMuXG5pZiAoIWFjY291bnRzLm1hZ2ljUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMubWFnaWNQcm9ncmFtLnZhbHVlID0gJ01hZ2ljMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIGFzIEFkZHJlc3M8J01hZ2ljMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnPjtcbn1cbmlmICghYWNjb3VudHMubWFnaWNDb250ZXh0LnZhbHVlKSB7XG5hY2NvdW50cy5tYWdpY0NvbnRleHQudmFsdWUgPSAnTWFnaWNDb250ZXh0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgYXMgQWRkcmVzczwnTWFnaWNDb250ZXh0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwiZ2FtZVNlc3Npb25cIiwgYWNjb3VudHMuZ2FtZVNlc3Npb24pLCBnZXRBY2NvdW50TWV0YShcInBsYXllcjFQcm9maWxlXCIsIGFjY291bnRzLnBsYXllcjFQcm9maWxlKSwgZ2V0QWNjb3VudE1ldGEoXCJwbGF5ZXIyUHJvZmlsZVwiLCBhY2NvdW50cy5wbGF5ZXIyUHJvZmlsZSksIGdldEFjY291bnRNZXRhKFwicGF5ZXJcIiwgYWNjb3VudHMucGF5ZXIpLCBnZXRBY2NvdW50TWV0YShcIm1hZ2ljUHJvZ3JhbVwiLCBhY2NvdW50cy5tYWdpY1Byb2dyYW0pLCBnZXRBY2NvdW50TWV0YShcIm1hZ2ljQ29udGV4dFwiLCBhY2NvdW50cy5tYWdpY0NvbnRleHQpXSwgZGF0YTogZ2V0UGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCkuZW5jb2RlKHt9KSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBQZXJzaXN0UmVzdWx0c0luc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRHYW1lU2Vzc2lvbiwgVEFjY291bnRQbGF5ZXIxUHJvZmlsZSwgVEFjY291bnRQbGF5ZXIyUHJvZmlsZSwgVEFjY291bnRQYXllciwgVEFjY291bnRNYWdpY1Byb2dyYW0sIFRBY2NvdW50TWFnaWNDb250ZXh0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFBlcnNpc3RSZXN1bHRzSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXSA9IHJlYWRvbmx5IEFjY291bnRNZXRhW10+ID0geyBwcm9ncmFtQWRkcmVzczogQWRkcmVzczxUUHJvZ3JhbT47XG5hY2NvdW50czoge1xuZ2FtZVNlc3Npb246IFRBY2NvdW50TWV0YXNbMF07XG5wbGF5ZXIxUHJvZmlsZTogVEFjY291bnRNZXRhc1sxXTtcbnBsYXllcjJQcm9maWxlOiBUQWNjb3VudE1ldGFzWzJdO1xucGF5ZXI6IFRBY2NvdW50TWV0YXNbM107XG5tYWdpY1Byb2dyYW06IFRBY2NvdW50TWV0YXNbNF07XG5tYWdpY0NvbnRleHQ6IFRBY2NvdW50TWV0YXNbNV07XG59O1xuZGF0YTogUGVyc2lzdFJlc3VsdHNJbnN0cnVjdGlvbkRhdGE7IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBlcnNpc3RSZXN1bHRzSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdPihpbnN0cnVjdGlvbjogSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8VEFjY291bnRNZXRhcz4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4pOiBQYXJzZWRQZXJzaXN0UmVzdWx0c0luc3RydWN0aW9uPFRQcm9ncmFtLCBUQWNjb3VudE1ldGFzPiB7XG4gIGlmIChpbnN0cnVjdGlvbi5hY2NvdW50cy5sZW5ndGggPCA2KSB7XG4gIHRocm93IG5ldyBTb2xhbmFFcnJvcihTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIHsgYWN0dWFsQWNjb3VudE1ldGFzOiBpbnN0cnVjdGlvbi5hY2NvdW50cy5sZW5ndGgsIGV4cGVjdGVkQWNjb3VudE1ldGFzOiA2IH0pO1xufVxubGV0IGFjY291bnRJbmRleCA9IDA7XG5jb25zdCBnZXROZXh0QWNjb3VudCA9ICgpID0+IHtcbiAgY29uc3QgYWNjb3VudE1ldGEgPSAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMgYXMgVEFjY291bnRNZXRhcylbYWNjb3VudEluZGV4XSE7XG4gIGFjY291bnRJbmRleCArPSAxO1xuICByZXR1cm4gYWNjb3VudE1ldGE7XG59XG4gIHJldHVybiB7IHByb2dyYW1BZGRyZXNzOiBpbnN0cnVjdGlvbi5wcm9ncmFtQWRkcmVzcywgYWNjb3VudHM6IHsgZ2FtZVNlc3Npb246IGdldE5leHRBY2NvdW50KCksIHBsYXllcjFQcm9maWxlOiBnZXROZXh0QWNjb3VudCgpLCBwbGF5ZXIyUHJvZmlsZTogZ2V0TmV4dEFjY291bnQoKSwgcGF5ZXI6IGdldE5leHRBY2NvdW50KCksIG1hZ2ljUHJvZ3JhbTogZ2V0TmV4dEFjY291bnQoKSwgbWFnaWNDb250ZXh0OiBnZXROZXh0QWNjb3VudCgpIH0sIGRhdGE6IGdldFBlcnNpc3RSZXN1bHRzSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpLmRlY29kZShpbnN0cnVjdGlvbi5kYXRhKSB9O1xufSJdfQ==
@@ -0,0 +1,43 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type Address, type Codec, type Decoder, type Encoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type WritableAccount } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ export declare const PROCESS_UNDELEGATION_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getProcessUndelegationDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
12
+ export type ProcessUndelegationInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountBaseAccount extends string | AccountMeta<string> = string, TAccountBuffer extends string | AccountMeta<string> = string, TAccountPayer extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountBaseAccount extends string ? WritableAccount<TAccountBaseAccount> : TAccountBaseAccount, TAccountBuffer extends string ? ReadonlyAccount<TAccountBuffer> : TAccountBuffer, TAccountPayer extends string ? WritableAccount<TAccountPayer> : TAccountPayer, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
13
+ export type ProcessUndelegationInstructionData = {
14
+ discriminator: ReadonlyUint8Array;
15
+ accountSeeds: Array<ReadonlyUint8Array>;
16
+ };
17
+ export type ProcessUndelegationInstructionDataArgs = {
18
+ accountSeeds: Array<ReadonlyUint8Array>;
19
+ };
20
+ export declare function getProcessUndelegationInstructionDataEncoder(): Encoder<ProcessUndelegationInstructionDataArgs>;
21
+ export declare function getProcessUndelegationInstructionDataDecoder(): Decoder<ProcessUndelegationInstructionData>;
22
+ export declare function getProcessUndelegationInstructionDataCodec(): Codec<ProcessUndelegationInstructionDataArgs, ProcessUndelegationInstructionData>;
23
+ export type ProcessUndelegationInput<TAccountBaseAccount extends string = string, TAccountBuffer extends string = string, TAccountPayer extends string = string, TAccountSystemProgram extends string = string> = {
24
+ baseAccount: Address<TAccountBaseAccount>;
25
+ buffer: Address<TAccountBuffer>;
26
+ payer: Address<TAccountPayer>;
27
+ systemProgram?: Address<TAccountSystemProgram>;
28
+ accountSeeds: ProcessUndelegationInstructionDataArgs["accountSeeds"];
29
+ };
30
+ export declare function getProcessUndelegationInstruction<TAccountBaseAccount extends string, TAccountBuffer extends string, TAccountPayer extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: ProcessUndelegationInput<TAccountBaseAccount, TAccountBuffer, TAccountPayer, TAccountSystemProgram>, config?: {
31
+ programAddress?: TProgramAddress;
32
+ }): ProcessUndelegationInstruction<TProgramAddress, TAccountBaseAccount, TAccountBuffer, TAccountPayer, TAccountSystemProgram>;
33
+ export type ParsedProcessUndelegationInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
34
+ programAddress: Address<TProgram>;
35
+ accounts: {
36
+ baseAccount: TAccountMetas[0];
37
+ buffer: TAccountMetas[1];
38
+ payer: TAccountMetas[2];
39
+ systemProgram: TAccountMetas[3];
40
+ };
41
+ data: ProcessUndelegationInstructionData;
42
+ };
43
+ export declare function parseProcessUndelegationInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedProcessUndelegationInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { addDecoderSizePrefix, addEncoderSizePrefix, combineCodec, fixDecoderSize, fixEncoderSize, getArrayDecoder, getArrayEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU32Decoder, getU32Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ export const PROCESS_UNDELEGATION_DISCRIMINATOR = new Uint8Array([196, 28, 41, 206, 48, 37, 51, 167]);
12
+ export function getProcessUndelegationDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(PROCESS_UNDELEGATION_DISCRIMINATOR); }
13
+ export function getProcessUndelegationInstructionDataEncoder() {
14
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['accountSeeds', getArrayEncoder(addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()))]]), (value) => ({ ...value, discriminator: PROCESS_UNDELEGATION_DISCRIMINATOR }));
15
+ }
16
+ export function getProcessUndelegationInstructionDataDecoder() {
17
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['accountSeeds', getArrayDecoder(addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()))]]);
18
+ }
19
+ export function getProcessUndelegationInstructionDataCodec() {
20
+ return combineCodec(getProcessUndelegationInstructionDataEncoder(), getProcessUndelegationInstructionDataDecoder());
21
+ }
22
+ export function getProcessUndelegationInstruction(input, config) {
23
+ // Program address.
24
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
25
+ // Original accounts.
26
+ const originalAccounts = { baseAccount: { value: input.baseAccount ?? null, isWritable: true }, buffer: { value: input.buffer ?? null, isWritable: false }, payer: { value: input.payer ?? null, isWritable: true }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
27
+ const accounts = originalAccounts;
28
+ // Original args.
29
+ const args = { ...input, };
30
+ // Resolve default values.
31
+ if (!accounts.systemProgram.value) {
32
+ accounts.systemProgram.value = '11111111111111111111111111111111';
33
+ }
34
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
35
+ return Object.freeze({ accounts: [getAccountMeta("baseAccount", accounts.baseAccount), getAccountMeta("buffer", accounts.buffer), getAccountMeta("payer", accounts.payer), getAccountMeta("systemProgram", accounts.systemProgram)], data: getProcessUndelegationInstructionDataEncoder().encode(args), programAddress });
36
+ }
37
+ export function parseProcessUndelegationInstruction(instruction) {
38
+ if (instruction.accounts.length < 4) {
39
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 4 });
40
+ }
41
+ let accountIndex = 0;
42
+ const getNextAccount = () => {
43
+ const accountMeta = instruction.accounts[accountIndex];
44
+ accountIndex += 1;
45
+ return accountMeta;
46
+ };
47
+ return { programAddress: instruction.programAddress, accounts: { baseAccount: getNextAccount(), buffer: getNextAccount(), payer: getNextAccount(), systemProgram: getNextAccount() }, data: getProcessUndelegationInstructionDataDecoder().decode(instruction.data) };
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc1VuZGVsZWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvcnBzLWdhbWUvaW5zdHJ1Y3Rpb25zL3Byb2Nlc3NVbmRlbGVnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHlEQUF5RCxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBeU4sTUFBTSxhQUFhLENBQUM7QUFDOWlCLE9BQU8sRUFBRSxxQkFBcUIsRUFBbUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUV0RyxNQUFNLFVBQVUsd0NBQXdDLEtBQUssT0FBTyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBU3RKLE1BQU0sVUFBVSw0Q0FBNEM7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUs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QzFCLE1BQU0sV0FBVyxHQUFJLFdBQVcsQ0FBQyxRQUEwQixDQUFDLFlBQVksQ0FBRSxDQUFDO1FBQzNFLFlBQVksSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxDQUFBO0lBQ0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSw0Q0FBNEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN4USxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgYWRkRGVjb2RlclNpemVQcmVmaXgsIGFkZEVuY29kZXJTaXplUHJlZml4LCBjb21iaW5lQ29kZWMsIGZpeERlY29kZXJTaXplLCBmaXhFbmNvZGVyU2l6ZSwgZ2V0QXJyYXlEZWNvZGVyLCBnZXRBcnJheUVuY29kZXIsIGdldEJ5dGVzRGVjb2RlciwgZ2V0Qnl0ZXNFbmNvZGVyLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBnZXRVMzJEZWNvZGVyLCBnZXRVMzJFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgQ29kZWMsIHR5cGUgRGVjb2RlciwgdHlwZSBFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBXcml0YWJsZUFjY291bnQgfSBmcm9tICdAc29sYW5hL2tpdCc7XG5pbXBvcnQgeyBnZXRBY2NvdW50TWV0YUZhY3RvcnksIHR5cGUgUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuXG5leHBvcnQgY29uc3QgUFJPQ0VTU19VTkRFTEVHQVRJT05fRElTQ1JJTUlOQVRPUiA9IG5ldyBVaW50OEFycmF5KFsxOTYsIDI4LCA0MSwgMjA2LCA0OCwgMzcsIDUxLCAxNjddKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2Nlc3NVbmRlbGVnYXRpb25EaXNjcmltaW5hdG9yQnl0ZXMoKSB7IHJldHVybiBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKFBST0NFU1NfVU5ERUxFR0FUSU9OX0RJU0NSSU1JTkFUT1IpOyB9XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50QmFzZUFjY291bnQgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudEJ1ZmZlciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMVwiLCBUUmVtYWluaW5nQWNjb3VudHMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YTxzdHJpbmc+W10gPSBbXT4gPVxuSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoRGF0YTxSZWFkb25seVVpbnQ4QXJyYXk+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8W1RBY2NvdW50QmFzZUFjY291bnQgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRCYXNlQWNjb3VudD4gOiBUQWNjb3VudEJhc2VBY2NvdW50LCBUQWNjb3VudEJ1ZmZlciBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudEJ1ZmZlcj4gOiBUQWNjb3VudEJ1ZmZlciwgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFBheWVyPiA6IFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFN5c3RlbVByb2dyYW0+IDogVEFjY291bnRTeXN0ZW1Qcm9ncmFtLCAuLi5UUmVtYWluaW5nQWNjb3VudHNdPjtcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YSA9IHsgZGlzY3JpbWluYXRvcjogUmVhZG9ubHlVaW50OEFycmF5OyBhY2NvdW50U2VlZHM6IEFycmF5PFJlYWRvbmx5VWludDhBcnJheT47ICB9O1xuXG5leHBvcnQgdHlwZSBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgYWNjb3VudFNlZWRzOiBBcnJheTxSZWFkb25seVVpbnQ4QXJyYXk+OyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCk6IEVuY29kZXI8UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YUFyZ3M+IHtcbiAgICByZXR1cm4gdHJhbnNmb3JtRW5jb2RlcihnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCldLCBbJ2FjY291bnRTZWVkcycsIGdldEFycmF5RW5jb2RlcihhZGRFbmNvZGVyU2l6ZVByZWZpeChnZXRCeXRlc0VuY29kZXIoKSwgZ2V0VTMyRW5jb2RlcigpKSldXSksICh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIGRpc2NyaW1pbmF0b3I6IFBST0NFU1NfVU5ERUxFR0FUSU9OX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKTogRGVjb2RlcjxQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb25EYXRhPiB7XG4gICAgcmV0dXJuIGdldFN0cnVjdERlY29kZXIoW1snZGlzY3JpbWluYXRvcicsIGZpeERlY29kZXJTaXplKGdldEJ5dGVzRGVjb2RlcigpLCA4KV0sIFsnYWNjb3VudFNlZWRzJywgZ2V0QXJyYXlEZWNvZGVyKGFkZERlY29kZXJTaXplUHJlZml4KGdldEJ5dGVzRGVjb2RlcigpLCBnZXRVMzJEZWNvZGVyKCkpKV1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbkRhdGFDb2RlYygpOiBDb2RlYzxQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb25EYXRhQXJncywgUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBjb21iaW5lQ29kZWMoZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKSwgZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKSk7XG59XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NVbmRlbGVnYXRpb25JbnB1dDxUQWNjb3VudEJhc2VBY2NvdW50IGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudEJ1ZmZlciBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9ICB7XG4gIGJhc2VBY2NvdW50OiBBZGRyZXNzPFRBY2NvdW50QmFzZUFjY291bnQ+O1xuYnVmZmVyOiBBZGRyZXNzPFRBY2NvdW50QnVmZmVyPjtcbnBheWVyOiBBZGRyZXNzPFRBY2NvdW50UGF5ZXI+O1xuc3lzdGVtUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRTeXN0ZW1Qcm9ncmFtPjtcbmFjY291bnRTZWVkczogUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YUFyZ3NbXCJhY2NvdW50U2VlZHNcIl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb248VEFjY291bnRCYXNlQWNjb3VudCBleHRlbmRzIHN0cmluZywgVEFjY291bnRCdWZmZXIgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVFByb2dyYW1BZGRyZXNzIGV4dGVuZHMgQWRkcmVzcyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M+KGlucHV0OiBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5wdXQ8VEFjY291bnRCYXNlQWNjb3VudCwgVEFjY291bnRCdWZmZXIsIFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4sIGNvbmZpZz86IHsgcHJvZ3JhbUFkZHJlc3M/OiBUUHJvZ3JhbUFkZHJlc3MgfSApOiBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudEJhc2VBY2NvdW50LCBUQWNjb3VudEJ1ZmZlciwgVEFjY291bnRQYXllciwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiB7XG4gIC8vIFByb2dyYW0gYWRkcmVzcy5cbmNvbnN0IHByb2dyYW1BZGRyZXNzID0gY29uZmlnPy5wcm9ncmFtQWRkcmVzcyA/PyBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M7XG5cbiAvLyBPcmlnaW5hbCBhY2NvdW50cy5cbmNvbnN0IG9yaWdpbmFsQWNjb3VudHMgPSB7IGJhc2VBY2NvdW50OiB7IHZhbHVlOiBpbnB1dC5iYXNlQWNjb3VudCA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIGJ1ZmZlcjogeyB2YWx1ZTogaW5wdXQuYnVmZmVyID8/IG51bGwsIGlzV3JpdGFibGU6IGZhbHNlIH0sIHBheWVyOiB7IHZhbHVlOiBpbnB1dC5wYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHN5c3RlbVByb2dyYW06IHsgdmFsdWU6IGlucHV0LnN5c3RlbVByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSB9XG5jb25zdCBhY2NvdW50cyA9IG9yaWdpbmFsQWNjb3VudHMgYXMgUmVjb3JkPGtleW9mIHR5cGVvZiBvcmlnaW5hbEFjY291bnRzLCBSZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudD47XG5cblxuLy8gT3JpZ2luYWwgYXJncy5cbmNvbnN0IGFyZ3MgPSB7IC4uLmlucHV0LCAgfTtcblxuXG4vLyBSZXNvbHZlIGRlZmF1bHQgdmFsdWVzLlxuaWYgKCFhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBhcyBBZGRyZXNzPCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwiYmFzZUFjY291bnRcIiwgYWNjb3VudHMuYmFzZUFjY291bnQpLCBnZXRBY2NvdW50TWV0YShcImJ1ZmZlclwiLCBhY2NvdW50cy5idWZmZXIpLCBnZXRBY2NvdW50TWV0YShcInBheWVyXCIsIGFjY291bnRzLnBheWVyKSwgZ2V0QWNjb3VudE1ldGEoXCJzeXN0ZW1Qcm9ncmFtXCIsIGFjY291bnRzLnN5c3RlbVByb2dyYW0pXSwgZGF0YTogZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKS5lbmNvZGUoYXJncyBhcyBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb25EYXRhQXJncyksIHByb2dyYW1BZGRyZXNzIH0gYXMgUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRCYXNlQWNjb3VudCwgVEFjY291bnRCdWZmZXIsIFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4pO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXSA9IHJlYWRvbmx5IEFjY291bnRNZXRhW10+ID0geyBwcm9ncmFtQWRkcmVzczogQWRkcmVzczxUUHJvZ3JhbT47XG5hY2NvdW50czoge1xuYmFzZUFjY291bnQ6IFRBY2NvdW50TWV0YXNbMF07XG5idWZmZXI6IFRBY2NvdW50TWV0YXNbMV07XG5wYXllcjogVEFjY291bnRNZXRhc1syXTtcbnN5c3RlbVByb2dyYW06IFRBY2NvdW50TWV0YXNbM107XG59O1xuZGF0YTogUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uPFRQcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXT4oaW5zdHJ1Y3Rpb246IEluc3RydWN0aW9uPFRQcm9ncmFtPiAmIEluc3RydWN0aW9uV2l0aEFjY291bnRzPFRBY2NvdW50TWV0YXM+ICYgSW5zdHJ1Y3Rpb25XaXRoRGF0YTxSZWFkb25seVVpbnQ4QXJyYXk+KTogUGFyc2VkUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uPFRQcm9ncmFtLCBUQWNjb3VudE1ldGFzPiB7XG4gIGlmIChpbnN0cnVjdGlvbi5hY2NvdW50cy5sZW5ndGggPCA0KSB7XG4gIHRocm93IG5ldyBTb2xhbmFFcnJvcihTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIHsgYWN0dWFsQWNjb3VudE1ldGFzOiBpbnN0cnVjdGlvbi5hY2NvdW50cy5sZW5ndGgsIGV4cGVjdGVkQWNjb3VudE1ldGFzOiA0IH0pO1xufVxubGV0IGFjY291bnRJbmRleCA9IDA7XG5jb25zdCBnZXROZXh0QWNjb3VudCA9ICgpID0+IHtcbiAgY29uc3QgYWNjb3VudE1ldGEgPSAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMgYXMgVEFjY291bnRNZXRhcylbYWNjb3VudEluZGV4XSE7XG4gIGFjY291bnRJbmRleCArPSAxO1xuICByZXR1cm4gYWNjb3VudE1ldGE7XG59XG4gIHJldHVybiB7IHByb2dyYW1BZGRyZXNzOiBpbnN0cnVjdGlvbi5wcm9ncmFtQWRkcmVzcywgYWNjb3VudHM6IHsgYmFzZUFjY291bnQ6IGdldE5leHRBY2NvdW50KCksIGJ1ZmZlcjogZ2V0TmV4dEFjY291bnQoKSwgcGF5ZXI6IGdldE5leHRBY2NvdW50KCksIHN5c3RlbVByb2dyYW06IGdldE5leHRBY2NvdW50KCkgfSwgZGF0YTogZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKS5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkgfTtcbn0iXX0=
@@ -0,0 +1,54 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ export declare const START_GAME_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getStartGameDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
12
+ export type StartGameInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountGameSession extends string | AccountMeta<string> = string, TAccountPlayer extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountGameSession extends string ? WritableAccount<TAccountGameSession> : TAccountGameSession, TAccountPlayer extends string ? WritableSignerAccount<TAccountPlayer> & AccountSignerMeta<TAccountPlayer> : TAccountPlayer, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
13
+ export type StartGameInstructionData = {
14
+ discriminator: ReadonlyUint8Array;
15
+ gameId: bigint;
16
+ opponent: Address;
17
+ };
18
+ export type StartGameInstructionDataArgs = {
19
+ gameId: number | bigint;
20
+ opponent: Address;
21
+ };
22
+ export declare function getStartGameInstructionDataEncoder(): FixedSizeEncoder<StartGameInstructionDataArgs>;
23
+ export declare function getStartGameInstructionDataDecoder(): FixedSizeDecoder<StartGameInstructionData>;
24
+ export declare function getStartGameInstructionDataCodec(): FixedSizeCodec<StartGameInstructionDataArgs, StartGameInstructionData>;
25
+ export type StartGameAsyncInput<TAccountGameSession extends string = string, TAccountPlayer extends string = string, TAccountSystemProgram extends string = string> = {
26
+ gameSession?: Address<TAccountGameSession>;
27
+ player: TransactionSigner<TAccountPlayer>;
28
+ systemProgram?: Address<TAccountSystemProgram>;
29
+ gameId: StartGameInstructionDataArgs["gameId"];
30
+ opponent: StartGameInstructionDataArgs["opponent"];
31
+ };
32
+ export declare function getStartGameInstructionAsync<TAccountGameSession extends string, TAccountPlayer extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: StartGameAsyncInput<TAccountGameSession, TAccountPlayer, TAccountSystemProgram>, config?: {
33
+ programAddress?: TProgramAddress;
34
+ }): Promise<StartGameInstruction<TProgramAddress, TAccountGameSession, TAccountPlayer, TAccountSystemProgram>>;
35
+ export type StartGameInput<TAccountGameSession extends string = string, TAccountPlayer extends string = string, TAccountSystemProgram extends string = string> = {
36
+ gameSession: Address<TAccountGameSession>;
37
+ player: TransactionSigner<TAccountPlayer>;
38
+ systemProgram?: Address<TAccountSystemProgram>;
39
+ gameId: StartGameInstructionDataArgs["gameId"];
40
+ opponent: StartGameInstructionDataArgs["opponent"];
41
+ };
42
+ export declare function getStartGameInstruction<TAccountGameSession extends string, TAccountPlayer extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: StartGameInput<TAccountGameSession, TAccountPlayer, TAccountSystemProgram>, config?: {
43
+ programAddress?: TProgramAddress;
44
+ }): StartGameInstruction<TProgramAddress, TAccountGameSession, TAccountPlayer, TAccountSystemProgram>;
45
+ export type ParsedStartGameInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
46
+ programAddress: Address<TProgram>;
47
+ accounts: {
48
+ gameSession: TAccountMetas[0];
49
+ player: TAccountMetas[1];
50
+ systemProgram: TAccountMetas[2];
51
+ };
52
+ data: StartGameInstructionData;
53
+ };
54
+ export declare function parseStartGameInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedStartGameInstruction<TProgram, TAccountMetas>;