@wuwei-labs/srsly 2.0.0-beta.2 → 2.0.0-beta.21

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 (188) hide show
  1. package/README.md +305 -110
  2. package/dist/cjs/codama/accounts/config.js +88 -0
  3. package/dist/cjs/codama/accounts/config.js.map +1 -0
  4. package/dist/cjs/codama/accounts/contractState.js +17 -39
  5. package/dist/cjs/codama/accounts/contractState.js.map +1 -1
  6. package/dist/cjs/codama/accounts/index.js +1 -1
  7. package/dist/cjs/codama/accounts/index.js.map +1 -1
  8. package/dist/cjs/codama/accounts/rentalState.js +18 -33
  9. package/dist/cjs/codama/accounts/rentalState.js.map +1 -1
  10. package/dist/cjs/codama/accounts/thread.js +15 -32
  11. package/dist/cjs/codama/accounts/thread.js.map +1 -1
  12. package/dist/cjs/codama/errors/srsly.js +24 -3
  13. package/dist/cjs/codama/errors/srsly.js.map +1 -1
  14. package/dist/cjs/codama/instructions/acceptRental.js +202 -224
  15. package/dist/cjs/codama/instructions/acceptRental.js.map +1 -1
  16. package/dist/cjs/codama/instructions/cancelRental.js +100 -136
  17. package/dist/cjs/codama/instructions/cancelRental.js.map +1 -1
  18. package/dist/cjs/codama/instructions/closeContract.js +95 -116
  19. package/dist/cjs/codama/instructions/closeContract.js.map +1 -1
  20. package/dist/cjs/codama/instructions/closeRental.js +119 -132
  21. package/dist/cjs/codama/instructions/closeRental.js.map +1 -1
  22. package/dist/cjs/codama/instructions/createContract.js +127 -143
  23. package/dist/cjs/codama/instructions/createContract.js.map +1 -1
  24. package/dist/cjs/codama/instructions/index.js +2 -1
  25. package/dist/cjs/codama/instructions/index.js.map +1 -1
  26. package/dist/cjs/codama/instructions/initializeConfig.js +131 -0
  27. package/dist/cjs/codama/instructions/initializeConfig.js.map +1 -0
  28. package/dist/cjs/codama/instructions/payRental.js +125 -129
  29. package/dist/cjs/codama/instructions/payRental.js.map +1 -1
  30. package/dist/cjs/codama/instructions/resetRental.js +55 -77
  31. package/dist/cjs/codama/instructions/resetRental.js.map +1 -1
  32. package/dist/cjs/codama/instructions/updateConfig.js +145 -0
  33. package/dist/cjs/codama/instructions/updateConfig.js.map +1 -0
  34. package/dist/cjs/codama/programs/srsly.js +12 -8
  35. package/dist/cjs/codama/programs/srsly.js.map +1 -1
  36. package/dist/cjs/codama/shared/index.js +6 -2
  37. package/dist/cjs/codama/shared/index.js.map +1 -1
  38. package/dist/cjs/codama/types/trigger.js +1 -1
  39. package/dist/cjs/codama/types/trigger.js.map +1 -1
  40. package/dist/cjs/codama/types/triggerContext.js +1 -1
  41. package/dist/cjs/codama/types/triggerContext.js.map +1 -1
  42. package/dist/cjs/contract/close.js +75 -34
  43. package/dist/cjs/contract/close.js.map +1 -1
  44. package/dist/cjs/contract/create.js +59 -43
  45. package/dist/cjs/contract/create.js.map +1 -1
  46. package/dist/cjs/index.js +7 -1
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/package.json +54 -0
  49. package/dist/cjs/rental/accept.js +68 -40
  50. package/dist/cjs/rental/accept.js.map +1 -1
  51. package/dist/cjs/rental/cancel.js +36 -28
  52. package/dist/cjs/rental/cancel.js.map +1 -1
  53. package/dist/cjs/rental/close.js +37 -29
  54. package/dist/cjs/rental/close.js.map +1 -1
  55. package/dist/cjs/rental/reset.js +46 -42
  56. package/dist/cjs/rental/reset.js.map +1 -1
  57. package/dist/cjs/utils/config.js +319 -0
  58. package/dist/cjs/utils/config.js.map +1 -0
  59. package/dist/cjs/utils/constants.js +69 -9
  60. package/dist/cjs/utils/constants.js.map +1 -1
  61. package/dist/cjs/utils/index.js +1 -0
  62. package/dist/cjs/utils/index.js.map +1 -1
  63. package/dist/cjs/utils/profiles.js +96 -95
  64. package/dist/cjs/utils/profiles.js.map +1 -1
  65. package/dist/esm/codama/accounts/config.js +76 -0
  66. package/dist/esm/codama/accounts/config.js.map +1 -0
  67. package/dist/esm/codama/accounts/contractState.js +3 -7
  68. package/dist/esm/codama/accounts/contractState.js.map +1 -1
  69. package/dist/esm/codama/accounts/index.js +1 -1
  70. package/dist/esm/codama/accounts/index.js.map +1 -1
  71. package/dist/esm/codama/accounts/rentalState.js +3 -1
  72. package/dist/esm/codama/accounts/rentalState.js.map +1 -1
  73. package/dist/esm/codama/errors/srsly.js +23 -2
  74. package/dist/esm/codama/errors/srsly.js.map +1 -1
  75. package/dist/esm/codama/instructions/acceptRental.js +30 -39
  76. package/dist/esm/codama/instructions/acceptRental.js.map +1 -1
  77. package/dist/esm/codama/instructions/cancelRental.js +10 -33
  78. package/dist/esm/codama/instructions/cancelRental.js.map +1 -1
  79. package/dist/esm/codama/instructions/closeContract.js +17 -25
  80. package/dist/esm/codama/instructions/closeContract.js.map +1 -1
  81. package/dist/esm/codama/instructions/closeRental.js +19 -19
  82. package/dist/esm/codama/instructions/closeRental.js.map +1 -1
  83. package/dist/esm/codama/instructions/createContract.js +13 -16
  84. package/dist/esm/codama/instructions/createContract.js.map +1 -1
  85. package/dist/esm/codama/instructions/index.js +2 -1
  86. package/dist/esm/codama/instructions/index.js.map +1 -1
  87. package/dist/esm/codama/instructions/initializeConfig.js +121 -0
  88. package/dist/esm/codama/instructions/initializeConfig.js.map +1 -0
  89. package/dist/esm/codama/instructions/payRental.js +34 -25
  90. package/dist/esm/codama/instructions/payRental.js.map +1 -1
  91. package/dist/esm/codama/instructions/resetRental.js +0 -9
  92. package/dist/esm/codama/instructions/resetRental.js.map +1 -1
  93. package/dist/esm/codama/instructions/updateConfig.js +135 -0
  94. package/dist/esm/codama/instructions/updateConfig.js.map +1 -0
  95. package/dist/esm/codama/programs/srsly.js +12 -8
  96. package/dist/esm/codama/programs/srsly.js.map +1 -1
  97. package/dist/esm/contract/close.js +68 -16
  98. package/dist/esm/contract/close.js.map +1 -1
  99. package/dist/esm/contract/create.js +60 -33
  100. package/dist/esm/contract/create.js.map +1 -1
  101. package/dist/esm/index.js +5 -1
  102. package/dist/esm/index.js.map +1 -1
  103. package/dist/esm/package.json +54 -0
  104. package/dist/esm/rental/accept.js +70 -31
  105. package/dist/esm/rental/accept.js.map +1 -1
  106. package/dist/esm/rental/cancel.js +37 -18
  107. package/dist/esm/rental/cancel.js.map +1 -1
  108. package/dist/esm/rental/close.js +38 -19
  109. package/dist/esm/rental/close.js.map +1 -1
  110. package/dist/esm/rental/reset.js +48 -33
  111. package/dist/esm/rental/reset.js.map +1 -1
  112. package/dist/esm/utils/config.js +277 -0
  113. package/dist/esm/utils/config.js.map +1 -0
  114. package/dist/esm/utils/constants.js +60 -7
  115. package/dist/esm/utils/constants.js.map +1 -1
  116. package/dist/esm/utils/index.js +1 -0
  117. package/dist/esm/utils/index.js.map +1 -1
  118. package/dist/esm/utils/profiles.js +39 -19
  119. package/dist/esm/utils/profiles.js.map +1 -1
  120. package/dist/types/codama/accounts/config.d.ts +52 -0
  121. package/dist/types/codama/accounts/config.d.ts.map +1 -0
  122. package/dist/types/codama/accounts/contractState.d.ts +2 -4
  123. package/dist/types/codama/accounts/contractState.d.ts.map +1 -1
  124. package/dist/types/codama/accounts/index.d.ts +1 -1
  125. package/dist/types/codama/accounts/index.d.ts.map +1 -1
  126. package/dist/types/codama/accounts/rentalState.d.ts +2 -0
  127. package/dist/types/codama/accounts/rentalState.d.ts.map +1 -1
  128. package/dist/types/codama/errors/srsly.d.ts +16 -2
  129. package/dist/types/codama/errors/srsly.d.ts.map +1 -1
  130. package/dist/types/codama/instructions/acceptRental.d.ts +41 -34
  131. package/dist/types/codama/instructions/acceptRental.d.ts.map +1 -1
  132. package/dist/types/codama/instructions/cancelRental.d.ts +14 -10
  133. package/dist/types/codama/instructions/cancelRental.d.ts.map +1 -1
  134. package/dist/types/codama/instructions/closeContract.d.ts +29 -21
  135. package/dist/types/codama/instructions/closeContract.d.ts.map +1 -1
  136. package/dist/types/codama/instructions/closeRental.d.ts +20 -12
  137. package/dist/types/codama/instructions/closeRental.d.ts.map +1 -1
  138. package/dist/types/codama/instructions/createContract.d.ts +27 -23
  139. package/dist/types/codama/instructions/createContract.d.ts.map +1 -1
  140. package/dist/types/codama/instructions/index.d.ts +2 -1
  141. package/dist/types/codama/instructions/index.d.ts.map +1 -1
  142. package/dist/types/codama/instructions/initializeConfig.d.ts +60 -0
  143. package/dist/types/codama/instructions/initializeConfig.d.ts.map +1 -0
  144. package/dist/types/codama/instructions/payRental.d.ts +28 -13
  145. package/dist/types/codama/instructions/payRental.d.ts.map +1 -1
  146. package/dist/types/codama/instructions/resetRental.d.ts +3 -3
  147. package/dist/types/codama/instructions/resetRental.d.ts.map +1 -1
  148. package/dist/types/codama/instructions/updateConfig.d.ts +93 -0
  149. package/dist/types/codama/instructions/updateConfig.d.ts.map +1 -0
  150. package/dist/types/codama/programs/srsly.d.ts +11 -8
  151. package/dist/types/codama/programs/srsly.d.ts.map +1 -1
  152. package/dist/types/contract/close.d.ts +20 -24
  153. package/dist/types/contract/close.d.ts.map +1 -1
  154. package/dist/types/contract/create.d.ts +34 -22
  155. package/dist/types/contract/create.d.ts.map +1 -1
  156. package/dist/types/index.d.ts +4 -1
  157. package/dist/types/index.d.ts.map +1 -1
  158. package/dist/types/rental/accept.d.ts +42 -20
  159. package/dist/types/rental/accept.d.ts.map +1 -1
  160. package/dist/types/rental/cancel.d.ts +16 -11
  161. package/dist/types/rental/cancel.d.ts.map +1 -1
  162. package/dist/types/rental/close.d.ts +16 -11
  163. package/dist/types/rental/close.d.ts.map +1 -1
  164. package/dist/types/rental/reset.d.ts +17 -20
  165. package/dist/types/rental/reset.d.ts.map +1 -1
  166. package/dist/types/utils/config.d.ts +167 -0
  167. package/dist/types/utils/config.d.ts.map +1 -0
  168. package/dist/types/utils/constants.d.ts +23 -7
  169. package/dist/types/utils/constants.d.ts.map +1 -1
  170. package/dist/types/utils/index.d.ts +1 -0
  171. package/dist/types/utils/index.d.ts.map +1 -1
  172. package/dist/types/utils/profiles.d.ts +14 -8
  173. package/dist/types/utils/profiles.d.ts.map +1 -1
  174. package/package.json +36 -14
  175. package/target/idl/srsly.json +3279 -0
  176. package/target/types/srsly.ts +1 -0
  177. package/dist/cjs/codama/accounts/fleet.js +0 -94
  178. package/dist/cjs/codama/accounts/fleet.js.map +0 -1
  179. package/dist/cjs/codama/instructions/normalizeAdmin.js +0 -165
  180. package/dist/cjs/codama/instructions/normalizeAdmin.js.map +0 -1
  181. package/dist/esm/codama/accounts/fleet.js +0 -64
  182. package/dist/esm/codama/accounts/fleet.js.map +0 -1
  183. package/dist/esm/codama/instructions/normalizeAdmin.js +0 -142
  184. package/dist/esm/codama/instructions/normalizeAdmin.js.map +0 -1
  185. package/dist/types/codama/accounts/fleet.d.ts +0 -38
  186. package/dist/types/codama/accounts/fleet.d.ts.map +0 -1
  187. package/dist/types/codama/instructions/normalizeAdmin.d.ts +0 -67
  188. package/dist/types/codama/instructions/normalizeAdmin.d.ts.map +0 -1
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Network configuration for the SRSLY SDK
3
+ */
4
+ // Single codama output - network agnostic
5
+ import * as instructions from '../codama/instructions';
6
+ import * as programs from '../codama/programs';
7
+ import { createSolanaRpc, createSolanaRpcSubscriptions, createTransactionMessage, setTransactionMessageFeePayer, setTransactionMessageFeePayerSigner, setTransactionMessageLifetimeUsingBlockhash, appendTransactionMessageInstructions, compileTransaction, signTransactionMessageWithSigners, sendAndConfirmTransactionFactory, getSignatureFromTransaction, pipe, } from '@solana/kit';
8
+ const PROGRAM_SETS = {
9
+ mainnet: {
10
+ SAGE_PROGRAM_ADDRESS: 'SAGE2HAwep459SNq61LHvjxPk4pLPEJLoMETef7f7EE',
11
+ PROFILE_FACTION_PROGRAM_ADDRESS: 'pFACSRuobDmvfMKq1bAzwj27t6d2GJhSCHb1VcfnRmq',
12
+ SAGE_GAME_ID: 'GAMEzqJehF8yAnKiTARUuhZMvLvkZVAsCVri5vSfemLr',
13
+ ATLAS_MINT: 'ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx',
14
+ RPC_URL: 'https://api.mainnet-beta.solana.com',
15
+ },
16
+ atlasnet: {
17
+ SAGE_PROGRAM_ADDRESS: 'SAgeTraQfBMdvGVDJYoEvjnbq5szW7RJPi6obDTDQUF',
18
+ PROFILE_FACTION_PROGRAM_ADDRESS: 'PprofUW1pURCnMW2si88GWPXEEK3Bvh9Tksy8WtnoYJ',
19
+ SAGE_GAME_ID: 'GAMEC7U7cqmFFaRow33j1LwuV8u4YhAS1mJ5Dqjnar2k',
20
+ ATLAS_MINT: 'ATLA5nAaVRfH6BNwD4SAyWp96EdQaAh6bBmGeTx956sx',
21
+ },
22
+ holosim: {
23
+ SAGE_PROGRAM_ADDRESS: 'SAgeTraQfBMdvGVDJYoEvjnbq5szW7RJPi6obDTDQUF',
24
+ PROFILE_FACTION_PROGRAM_ADDRESS: 'PprofUW1pURCnMW2si88GWPXEEK3Bvh9Tksy8WtnoYJ',
25
+ SAGE_GAME_ID: 'GAMEC7U7cqmFFaRow33j1LwuV8u4YhAS1mJ5Dqjnar2k',
26
+ ATLAS_MINT: 'ATLA5nAaVRfH6BNwD4SAyWp96EdQaAh6bBmGeTx956sx',
27
+ },
28
+ };
29
+ // Default program set when none is specified
30
+ const DEFAULT_PROGRAM_SET = 'atlasnet';
31
+ // Global configuration state
32
+ let globalConfig = {};
33
+ /**
34
+ * Resolve program addresses based on configuration
35
+ * @param config Effective configuration options
36
+ * @returns Resolved program addresses
37
+ */
38
+ export function resolveProgramAddresses(config) {
39
+ // Determine which program set to use
40
+ const programSet = config.programs || DEFAULT_PROGRAM_SET;
41
+ // Get program addresses from program sets
42
+ const programConfig = PROGRAM_SETS[programSet];
43
+ if (!programConfig) {
44
+ throw new Error(`Unknown program set: ${programSet}. Available: ${Object.keys(PROGRAM_SETS).join(', ')}`);
45
+ }
46
+ return {
47
+ srslyProgramAddress: config.srslyProgramAddress || 'SRSLY1fq9TJqCk1gNSE7VZL2bztvTn9wm4VR8u8jMKT',
48
+ sageProgramAddress: programConfig.SAGE_PROGRAM_ADDRESS, // Fixed - cannot be overridden
49
+ profileFactionProgramAddress: config.profileFactionProgramAddress || programConfig.PROFILE_FACTION_PROGRAM_ADDRESS,
50
+ gameId: config.gameId || programConfig.SAGE_GAME_ID,
51
+ atlasMint: config.atlasMint || programConfig.ATLAS_MINT,
52
+ rpcUrl: config.rpcUrl || programConfig.RPC_URL,
53
+ };
54
+ }
55
+ /**
56
+ * Set global configuration options that will be used as defaults for all SDK operations
57
+ * @param config Configuration options to set globally
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Use default atlasnet program addresses
62
+ * setConfig({ programs: 'atlasnet' });
63
+ *
64
+ * // Use holosim program addresses
65
+ * setConfig({ programs: 'holosim' });
66
+ *
67
+ * // Use holosim program addresses with custom game ID
68
+ * setConfig({
69
+ * programs: 'holosim',
70
+ * gameId: 'custom-game-id...'
71
+ * });
72
+ *
73
+ * // Can still override per instruction
74
+ * await createContract(params).set({ srslyProgramAddress: 'custom...' });
75
+ * ```
76
+ */
77
+ export function setConfig(config) {
78
+ globalConfig = { ...config };
79
+ }
80
+ /**
81
+ * Get the current global configuration
82
+ * @returns Current global configuration options
83
+ */
84
+ export function getConfig() {
85
+ return { ...globalConfig };
86
+ }
87
+ /**
88
+ * Clear global configuration (resets to atlasnet program set defaults)
89
+ */
90
+ export function clearConfig() {
91
+ globalConfig = {};
92
+ }
93
+ /**
94
+ * Get the effective configuration by merging global config with provided overrides
95
+ * @param overrides Optional configuration overrides
96
+ * @returns Merged configuration with global defaults and any overrides
97
+ */
98
+ function getEffectiveConfig(overrides) {
99
+ return { ...globalConfig, ...overrides };
100
+ }
101
+ /**
102
+ * Get the single codama module (network agnostic)
103
+ * @param modulePath The module type ('instructions' or 'programs')
104
+ * @returns The codama module
105
+ */
106
+ export function getModule(modulePath) {
107
+ return modulePath === 'instructions' ? instructions : programs;
108
+ }
109
+ /**
110
+ * @deprecated Use getModule instead. This function is kept for backward compatibility.
111
+ * Get codama modules (network agnostic)
112
+ */
113
+ export async function getCachedNetworkModule(modulePath) {
114
+ if (modulePath !== 'instructions' && modulePath !== 'programs') {
115
+ throw new Error(`Unsupported module path: ${modulePath}. Use 'instructions' or 'programs'.`);
116
+ }
117
+ return getModule(modulePath);
118
+ }
119
+ /**
120
+ * Create a chainable config selector with existing configuration state.
121
+ * This enables config chaining by merging new options with existing ones.
122
+ *
123
+ * Used internally when .set() is called on an existing ConfigSelector.
124
+ *
125
+ * @param executeFn - The function to execute with merged configuration
126
+ * @param existingConfig - The current configuration state to merge with
127
+ * @returns A ConfigSelector that can chain additional .set() calls
128
+ *
129
+ * @example
130
+ * // This creates a chainable selector that merges { programs: 'atlasnet' }
131
+ * // with any additional config options passed to subsequent .set() calls
132
+ * createChainableConfigSelector(executeFn, { programs: 'atlasnet' })
133
+ */
134
+ function createChainableConfigSelector(executeFn, existingConfig) {
135
+ const selector = {
136
+ set: (additionalOptions) => createChainableConfigSelector(executeFn, { ...existingConfig, ...additionalOptions }),
137
+ build: () => executeFn(existingConfig),
138
+ pack: async (feePayer) => {
139
+ const instruction = await executeFn(existingConfig);
140
+ const effectiveConfig = getEffectiveConfig(existingConfig);
141
+ const resolvedAddresses = resolveProgramAddresses(effectiveConfig);
142
+ if (!resolvedAddresses.rpcUrl) {
143
+ const networkType = effectiveConfig.programs || 'unknown';
144
+ if (networkType === 'atlasnet' || networkType === 'holosim') {
145
+ throw new Error(`RPC URL is required for ${networkType} network. Please provide your RPC endpoint via setConfig({ rpcUrl: "your-rpc-url-with-api-key" }) or .set({ rpcUrl: "your-rpc-url-with-api-key" })`);
146
+ }
147
+ throw new Error('RPC URL is required for creating transactions. Please set it via setConfig({ rpcUrl: "..." }) or provide it in .set({ rpcUrl: "..." })');
148
+ }
149
+ // Create RPC connection to get latest blockhash
150
+ const rpc = createSolanaRpc(resolvedAddresses.rpcUrl);
151
+ const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
152
+ // Build unsigned transaction message
153
+ const transactionMessage = pipe(createTransactionMessage({ version: 0 }), (msg) => setTransactionMessageFeePayer(feePayer, msg), (msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg), (msg) => appendTransactionMessageInstructions([instruction], msg));
154
+ // Compile to unsigned transaction
155
+ const unsignedTransaction = compileTransaction(transactionMessage);
156
+ // Ensure messageBytes is a proper Uint8Array for web3.js compatibility
157
+ const messageBytes = unsignedTransaction.messageBytes instanceof Uint8Array
158
+ ? unsignedTransaction.messageBytes
159
+ : new Uint8Array(unsignedTransaction.messageBytes);
160
+ // Return PackedTransaction with send() method
161
+ return {
162
+ messageBytes,
163
+ signatures: unsignedTransaction.signatures,
164
+ send: async (signer) => {
165
+ // Create RPC connections for sending
166
+ const sendRpc = createSolanaRpc(resolvedAddresses.rpcUrl);
167
+ const rpcSubscriptions = createSolanaRpcSubscriptions(resolvedAddresses.rpcUrl.replace('https:', 'wss:').replace('http:', 'ws:'));
168
+ // Build transaction message with signer
169
+ const signerTransactionMessage = pipe(createTransactionMessage({ version: 0 }), (msg) => setTransactionMessageFeePayerSigner(signer, msg), (msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg), (msg) => appendTransactionMessageInstructions([instruction], msg));
170
+ // Sign transaction
171
+ const signedTransaction = await signTransactionMessageWithSigners(signerTransactionMessage);
172
+ // Send and confirm transaction
173
+ const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc: sendRpc, rpcSubscriptions: rpcSubscriptions });
174
+ try {
175
+ await sendAndConfirmTransaction(signedTransaction, {
176
+ commitment: effectiveConfig.transactionOptions?.commitment || 'confirmed',
177
+ skipPreflight: effectiveConfig.transactionOptions?.skipPreflight || false
178
+ });
179
+ // Extract and return the signature
180
+ const signature = getSignatureFromTransaction(signedTransaction);
181
+ return signature;
182
+ }
183
+ catch (error) {
184
+ throw new Error(`Transaction failed: ${error instanceof Error ? error.message : String(error)}`);
185
+ }
186
+ }
187
+ };
188
+ },
189
+ // Implement PromiseLike to allow direct awaiting
190
+ then(onfulfilled, onrejected) {
191
+ return executeFn(existingConfig).then(onfulfilled, onrejected);
192
+ }
193
+ };
194
+ return selector;
195
+ }
196
+ /**
197
+ * Create the initial fluent config selector for a function.
198
+ * This is the main entry point for the fluent configuration API.
199
+ *
200
+ * The returned selector can be:
201
+ * - Awaited directly (uses global config + atlasnet fallback)
202
+ * - Configured with .set() to override network/constants
203
+ * - Chained with multiple .set() calls
204
+ *
205
+ * @param executeFn - The function to execute with optional configuration
206
+ * @returns A ConfigSelector that supports fluent configuration
207
+ *
208
+ * @example
209
+ * // Usage patterns:
210
+ * setConfig({ programs: 'mainnet' });
211
+ * await createConfigSelector(executeFn) // Direct await (uses global config)
212
+ * await createConfigSelector(executeFn).set({...}) // Override global config
213
+ * await createConfigSelector(executeFn).set({...}).set({...}) // Chained configs
214
+ */
215
+ export function createConfigSelector(executeFn) {
216
+ const selector = {
217
+ set: (options) => createChainableConfigSelector(executeFn, getEffectiveConfig(options)),
218
+ build: () => executeFn(getEffectiveConfig()),
219
+ pack: async (feePayer) => {
220
+ const instruction = await executeFn(getEffectiveConfig());
221
+ const effectiveConfig = getEffectiveConfig();
222
+ const resolvedAddresses = resolveProgramAddresses(effectiveConfig);
223
+ if (!resolvedAddresses.rpcUrl) {
224
+ const networkType = effectiveConfig.programs || 'unknown';
225
+ if (networkType === 'atlasnet' || networkType === 'holosim') {
226
+ throw new Error(`RPC URL is required for ${networkType} network. Please provide your RPC endpoint via setConfig({ rpcUrl: "your-rpc-url-with-api-key" }) or .set({ rpcUrl: "your-rpc-url-with-api-key" })`);
227
+ }
228
+ throw new Error('RPC URL is required for creating transactions. Please set it via setConfig({ rpcUrl: "..." }) or provide it in .set({ rpcUrl: "..." })');
229
+ }
230
+ // Create RPC connection to get latest blockhash
231
+ const rpc = createSolanaRpc(resolvedAddresses.rpcUrl);
232
+ const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
233
+ // Build unsigned transaction message
234
+ const transactionMessage = pipe(createTransactionMessage({ version: 0 }), (msg) => setTransactionMessageFeePayer(feePayer, msg), (msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg), (msg) => appendTransactionMessageInstructions([instruction], msg));
235
+ // Compile to unsigned transaction
236
+ const unsignedTransaction = compileTransaction(transactionMessage);
237
+ // Ensure messageBytes is a proper Uint8Array for web3.js compatibility
238
+ const messageBytes = unsignedTransaction.messageBytes instanceof Uint8Array
239
+ ? unsignedTransaction.messageBytes
240
+ : new Uint8Array(unsignedTransaction.messageBytes);
241
+ // Return PackedTransaction with send() method
242
+ return {
243
+ messageBytes,
244
+ signatures: unsignedTransaction.signatures,
245
+ send: async (signer) => {
246
+ // Create RPC connections for sending
247
+ const sendRpc = createSolanaRpc(resolvedAddresses.rpcUrl);
248
+ const rpcSubscriptions = createSolanaRpcSubscriptions(resolvedAddresses.rpcUrl.replace('https:', 'wss:').replace('http:', 'ws:'));
249
+ // Build transaction message with signer
250
+ const signerTransactionMessage = pipe(createTransactionMessage({ version: 0 }), (msg) => setTransactionMessageFeePayerSigner(signer, msg), (msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg), (msg) => appendTransactionMessageInstructions([instruction], msg));
251
+ // Sign transaction
252
+ const signedTransaction = await signTransactionMessageWithSigners(signerTransactionMessage);
253
+ // Send and confirm transaction
254
+ const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc: sendRpc, rpcSubscriptions: rpcSubscriptions });
255
+ try {
256
+ await sendAndConfirmTransaction(signedTransaction, {
257
+ commitment: effectiveConfig.transactionOptions?.commitment || 'confirmed',
258
+ skipPreflight: effectiveConfig.transactionOptions?.skipPreflight || false
259
+ });
260
+ // Extract and return the signature
261
+ const signature = getSignatureFromTransaction(signedTransaction);
262
+ return signature;
263
+ }
264
+ catch (error) {
265
+ throw new Error(`Transaction failed: ${error instanceof Error ? error.message : String(error)}`);
266
+ }
267
+ }
268
+ };
269
+ },
270
+ // Implement PromiseLike to allow direct awaiting
271
+ then(onfulfilled, onrejected) {
272
+ return executeFn(getEffectiveConfig()).then(onfulfilled, onrejected);
273
+ }
274
+ };
275
+ return selector;
276
+ }
277
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,68 @@
1
- import { PaymentFrequency, SRSLY_PROGRAM_ADDRESS } from "../codama";
2
- export const PROGRAM_ID = SRSLY_PROGRAM_ADDRESS;
3
- // Constants for program IDs
4
- export const SAGE_PROGRAM_ADDRESS = 'sAgezwJpDb1aHvzNr3o24cKjsETmFEKghBEyJ1askDi';
5
- export const PROFILE_FACTION_PROGRAM_ADDRESS = 'pFACSRuobDmvfMKq1bAzwj27t6d2GJhSCHb1VcfnRmq';
6
- export const DEFAULT_GAME_ID = 'GAMEzqJehF8yAnKiTARUuhZMvLvkZVAsCVri5vSfemLr';
1
+ import { getConfig, resolveProgramAddresses } from './config';
2
+ import { address } from '@solana/kit';
3
+ /**
4
+ * Converts a string or Address to an Address type
5
+ * This utility ensures consistent address handling across the SDK
6
+ */
7
+ export function toAddress(value) {
8
+ return typeof value === 'string' ? address(value) : value;
9
+ }
7
10
  // Seed constants
8
11
  export const STARBASE_SEED = 'Starbase';
9
12
  export const STARBASE_PLAYER_SEED = 'starbase_player';
10
13
  export const SAGE_PLAYER_PROFILE_SEED = 'sage_player_profile';
11
14
  export const PROFILE_FACTION_SEED = 'profile_faction';
15
+ // Token conversion constants
16
+ export const ATLAS_TO_STARDUST = 100_000_000; // 1 ATLAS = 100,000,000 stardust
17
+ // PaymentFrequency enum to match the Rust program
18
+ export var PaymentFrequency;
19
+ (function (PaymentFrequency) {
20
+ PaymentFrequency[PaymentFrequency["Hourly"] = 0] = "Hourly";
21
+ PaymentFrequency[PaymentFrequency["Daily"] = 1] = "Daily";
22
+ PaymentFrequency[PaymentFrequency["DailyOld"] = 2] = "DailyOld";
23
+ PaymentFrequency[PaymentFrequency["Weekly"] = 3] = "Weekly";
24
+ PaymentFrequency[PaymentFrequency["Monthly"] = 4] = "Monthly";
25
+ // Development-only frequencies (not available on mainnet)
26
+ PaymentFrequency[PaymentFrequency["Decasecond"] = 5] = "Decasecond";
27
+ PaymentFrequency[PaymentFrequency["Minute"] = 6] = "Minute";
28
+ })(PaymentFrequency || (PaymentFrequency = {}));
29
+ // Network constants are now managed in config.ts
30
+ export async function getSrslyProgramAddress(config) {
31
+ const globalConfig = getConfig();
32
+ const effectiveConfig = { ...globalConfig, ...config };
33
+ const resolved = resolveProgramAddresses(effectiveConfig);
34
+ return toAddress(resolved.srslyProgramAddress);
35
+ }
36
+ // Export async function to get program ID
37
+ export async function getProgramId() {
38
+ return await getSrslyProgramAddress();
39
+ }
40
+ // Network-specific constants with configuration support
41
+ export async function getSageProgramAddress(config) {
42
+ const globalConfig = getConfig();
43
+ const effectiveConfig = { ...globalConfig, ...config };
44
+ const resolved = resolveProgramAddresses(effectiveConfig);
45
+ // Note: SAGE program address is fixed based on network and cannot be overridden
46
+ return toAddress(resolved.sageProgramAddress);
47
+ }
48
+ export async function getProfileFactionProgramAddress(config) {
49
+ const globalConfig = getConfig();
50
+ const effectiveConfig = { ...globalConfig, ...config };
51
+ const resolved = resolveProgramAddresses(effectiveConfig);
52
+ return toAddress(resolved.profileFactionProgramAddress);
53
+ }
54
+ export async function getSageGameId(config) {
55
+ const globalConfig = getConfig();
56
+ const effectiveConfig = { ...globalConfig, ...config };
57
+ const resolved = resolveProgramAddresses(effectiveConfig);
58
+ return toAddress(resolved.gameId);
59
+ }
60
+ export async function getAtlasMint(config) {
61
+ const globalConfig = getConfig();
62
+ const effectiveConfig = { ...globalConfig, ...config };
63
+ const resolved = resolveProgramAddresses(effectiveConfig);
64
+ return toAddress(resolved.atlasMint);
65
+ }
12
66
  // Faction-specific CSS coordinates for starbase derivation
13
67
  export const FACTION_SPECIFIC_CSS = {
14
68
  mud: { x: 0, y: -39 },
@@ -26,5 +80,4 @@ export const FACTION_MAPPING = {
26
80
  export function paymentFrequencyToString(freq) {
27
81
  return PaymentFrequency[freq].toLowerCase();
28
82
  }
29
- export { PaymentFrequency };
30
83
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGpE,MAAM,CAAC,MAAM,UAAU,GAAY,qBAAqB,CAAC;AAEzD,4BAA4B;AAC5B,MAAM,CAAC,MAAM,oBAAoB,GAAG,6CAA6C,CAAC;AAClF,MAAM,CAAC,MAAM,+BAA+B,GAAG,6CAA6C,CAAC;AAC7F,MAAM,CAAC,MAAM,eAAe,GAAG,8CAA8C,CAAC;AAE9E,iBAAiB;AACjB,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAA6C;IAC5E,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACrB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;IACtB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,OAAO;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAC7D,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC;AACD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./constants";
2
2
  export * from "./profiles";
3
+ export * from "./config";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { getBytesEncoder, getAddressEncoder, getProgramDerivedAddress } from '@solana/kit';
2
- import { DEFAULT_GAME_ID, FACTION_MAPPING, FACTION_SPECIFIC_CSS, PROFILE_FACTION_PROGRAM_ADDRESS, PROFILE_FACTION_SEED, SAGE_PLAYER_PROFILE_SEED, SAGE_PROGRAM_ADDRESS, STARBASE_PLAYER_SEED, STARBASE_SEED } from './constants';
2
+ import { FACTION_MAPPING, FACTION_SPECIFIC_CSS, PROFILE_FACTION_SEED, SAGE_PLAYER_PROFILE_SEED, STARBASE_PLAYER_SEED, STARBASE_SEED } from './constants';
3
+ import { getSageGameId, getSageProgramAddress, getProfileFactionProgramAddress } from './constants';
3
4
  /**
4
5
  * Helper function to convert a string seed to a Uint8Array
5
6
  * This is necessary for @solana/kit's getBytesEncoder().encode()
@@ -14,11 +15,13 @@ function seedToBytes(seed) {
14
15
  * Helper function to derive the borrower's profile faction account
15
16
  *
16
17
  * @param profile The borrower's profile address
18
+ * @param config Optional configuration for network-specific constants
17
19
  * @returns Promise that resolves to the derived profile faction address
18
20
  */
19
- export async function deriveProfileFaction(profile) {
21
+ export async function deriveProfileFaction(profile, config) {
22
+ const programAddress = await getProfileFactionProgramAddress(config);
20
23
  const [address] = await getProgramDerivedAddress({
21
- programAddress: PROFILE_FACTION_PROGRAM_ADDRESS,
24
+ programAddress: programAddress,
22
25
  seeds: [
23
26
  seedToBytes(PROFILE_FACTION_SEED),
24
27
  getAddressEncoder().encode(profile)
@@ -30,16 +33,21 @@ export async function deriveProfileFaction(profile) {
30
33
  * Helper function to derive the sage player profile
31
34
  *
32
35
  * @param borrowerProfile The borrower's profile address
33
- * @param gameId The game ID (defaults to the standard game ID)
36
+ * @param gameId The game ID (if not provided, uses network-specific default)
37
+ * @param config Optional configuration for network-specific constants
34
38
  * @returns Promise that resolves to the derived sage player profile address
35
39
  */
36
- export async function deriveSagePlayerProfile(borrowerProfile, gameId = DEFAULT_GAME_ID) {
40
+ export async function deriveSagePlayerProfile(borrowerProfile, gameId, config) {
41
+ const [programAddress, actualGameId] = await Promise.all([
42
+ getSageProgramAddress(config),
43
+ gameId || getSageGameId(config)
44
+ ]);
37
45
  const [address] = await getProgramDerivedAddress({
38
- programAddress: SAGE_PROGRAM_ADDRESS,
46
+ programAddress: programAddress,
39
47
  seeds: [
40
48
  seedToBytes(SAGE_PLAYER_PROFILE_SEED),
41
49
  getAddressEncoder().encode(borrowerProfile),
42
- getAddressEncoder().encode(gameId)
50
+ getAddressEncoder().encode(actualGameId)
43
51
  ]
44
52
  });
45
53
  return address;
@@ -48,10 +56,11 @@ export async function deriveSagePlayerProfile(borrowerProfile, gameId = DEFAULT_
48
56
  * Helper function to derive the starbase address based on faction
49
57
  *
50
58
  * @param faction The faction (1/2/3 or 'mud'/'oni'/'ustur')
51
- * @param gameId The game ID (defaults to the standard game ID)
59
+ * @param gameId The game ID (if not provided, uses network-specific default)
60
+ * @param config Optional configuration for network-specific constants
52
61
  * @returns Promise that resolves to the derived starbase address
53
62
  */
54
- export async function deriveStarbase(faction, gameId = DEFAULT_GAME_ID) {
63
+ export async function deriveStarbase(faction, gameId, config) {
55
64
  // Convert faction to string representation if it's a number
56
65
  const factionName = typeof faction === 'number'
57
66
  ? FACTION_MAPPING[faction]
@@ -62,6 +71,11 @@ export async function deriveStarbase(faction, gameId = DEFAULT_GAME_ID) {
62
71
  }
63
72
  // Get coordinates for the faction
64
73
  const coords = FACTION_SPECIFIC_CSS[factionName];
74
+ // Get network-specific constants
75
+ const [programAddress, actualGameId] = await Promise.all([
76
+ getSageProgramAddress(config),
77
+ gameId || getSageGameId(config)
78
+ ]);
65
79
  // Convert coordinates to bytes (little-endian, two's complement)
66
80
  const xCoord = new DataView(new ArrayBuffer(8));
67
81
  const yCoord = new DataView(new ArrayBuffer(8));
@@ -71,10 +85,10 @@ export async function deriveStarbase(faction, gameId = DEFAULT_GAME_ID) {
71
85
  const xBytes = new Uint8Array(xCoord.buffer);
72
86
  const yBytes = new Uint8Array(yCoord.buffer);
73
87
  const [address] = await getProgramDerivedAddress({
74
- programAddress: SAGE_PROGRAM_ADDRESS,
88
+ programAddress: programAddress,
75
89
  seeds: [
76
90
  seedToBytes(STARBASE_SEED),
77
- getAddressEncoder().encode(gameId),
91
+ getAddressEncoder().encode(actualGameId),
78
92
  getBytesEncoder().encode(xBytes),
79
93
  getBytesEncoder().encode(yBytes)
80
94
  ]
@@ -87,15 +101,18 @@ export async function deriveStarbase(faction, gameId = DEFAULT_GAME_ID) {
87
101
  * @param sagePlayerProfile The sage player profile address
88
102
  * @param starbase The starbase address
89
103
  * @param starbaseSeqId The starbase sequence ID (defaults to 0)
104
+ * @param config Optional configuration for network-specific constants
90
105
  * @returns Promise that resolves to the derived starbase player address
91
106
  */
92
- export async function deriveStarbasePlayer(sagePlayerProfile, starbase, starbaseSeqId = 0) {
107
+ export async function deriveStarbasePlayer(sagePlayerProfile, starbase, starbaseSeqId = 0, config) {
108
+ // Get network-specific SAGE program address
109
+ const programAddress = await getSageProgramAddress(config);
93
110
  // Convert sequence ID to bytes (little-endian uint16)
94
111
  const seqIdView = new DataView(new ArrayBuffer(2));
95
112
  seqIdView.setUint16(0, starbaseSeqId, true);
96
113
  const seqIdBytes = new Uint8Array(seqIdView.buffer);
97
114
  const [address] = await getProgramDerivedAddress({
98
- programAddress: SAGE_PROGRAM_ADDRESS,
115
+ programAddress: programAddress,
99
116
  seeds: [
100
117
  seedToBytes(STARBASE_PLAYER_SEED),
101
118
  getAddressEncoder().encode(starbase),
@@ -110,19 +127,22 @@ export async function deriveStarbasePlayer(sagePlayerProfile, starbase, starbase
110
127
  *
111
128
  * @param profile The borrower's profile address
112
129
  * @param faction The faction (1/2/3 or 'mud'/'oni'/'ustur')
113
- * @param gameId The game ID (defaults to the standard game ID)
130
+ * @param gameId The game ID (if not provided, uses network-specific default)
114
131
  * @param starbaseSeqId The starbase sequence ID (defaults to 0)
132
+ * @param config Optional configuration for network-specific constants
115
133
  * @returns Promise that resolves to the three derived addresses
116
134
  */
117
- export async function deriveGameAccounts(profile, faction, gameId = DEFAULT_GAME_ID, starbaseSeqId = 0) {
135
+ export async function deriveGameAccounts(profile, faction, gameId, starbaseSeqId = 0, config) {
136
+ // Get the actual game ID to use
137
+ const actualGameId = gameId || await getSageGameId(config);
118
138
  // Derive the three accounts in parallel
119
139
  const [profileFaction, sagePlayerProfile, starbase] = await Promise.all([
120
- deriveProfileFaction(profile),
121
- deriveSagePlayerProfile(profile, gameId),
122
- deriveStarbase(faction, gameId)
140
+ deriveProfileFaction(profile, config),
141
+ deriveSagePlayerProfile(profile, actualGameId, config),
142
+ deriveStarbase(faction, actualGameId, config)
123
143
  ]);
124
144
  // Derive starbasePlayer using the results from above
125
- const starbasePlayer = await deriveStarbasePlayer(sagePlayerProfile, starbase, starbaseSeqId);
145
+ const starbasePlayer = await deriveStarbasePlayer(sagePlayerProfile, starbase, starbaseSeqId, config);
126
146
  return {
127
147
  profileFaction,
128
148
  starbase,
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/utils/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/utils/profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
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 { fetchEncodedAccount, fetchEncodedAccounts, type Account, type Address, type Codec, type Decoder, type EncodedAccount, type Encoder, type FetchAccountConfig, type FetchAccountsConfig, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array } from '@solana/kit';
9
+ import { type PaymentFrequency, type PaymentFrequencyArgs } from '../types';
10
+ export declare const CONFIG_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getConfigDiscriminatorBytes(): ReadonlyUint8Array;
12
+ export type Config = {
13
+ discriminator: ReadonlyUint8Array;
14
+ version: number;
15
+ bump: number;
16
+ authority: Address;
17
+ stardustToAtlas: bigint;
18
+ serviceFeeBps: bigint;
19
+ referralFeeBps: bigint;
20
+ baseBps: bigint;
21
+ rentalDurationMinSeconds: bigint;
22
+ rentalDurationMaxSeconds: bigint;
23
+ feesAccount: Address;
24
+ atlasMint: Address;
25
+ defaultPaymentFrequency: PaymentFrequency;
26
+ allowedFrequencies: Array<PaymentFrequency>;
27
+ };
28
+ export type ConfigArgs = {
29
+ version: number;
30
+ bump: number;
31
+ authority: Address;
32
+ stardustToAtlas: number | bigint;
33
+ serviceFeeBps: number | bigint;
34
+ referralFeeBps: number | bigint;
35
+ baseBps: number | bigint;
36
+ rentalDurationMinSeconds: number | bigint;
37
+ rentalDurationMaxSeconds: number | bigint;
38
+ feesAccount: Address;
39
+ atlasMint: Address;
40
+ defaultPaymentFrequency: PaymentFrequencyArgs;
41
+ allowedFrequencies: Array<PaymentFrequencyArgs>;
42
+ };
43
+ export declare function getConfigEncoder(): Encoder<ConfigArgs>;
44
+ export declare function getConfigDecoder(): Decoder<Config>;
45
+ export declare function getConfigCodec(): Codec<ConfigArgs, Config>;
46
+ export declare function decodeConfig<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<Config, TAddress>;
47
+ export declare function decodeConfig<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<Config, TAddress>;
48
+ export declare function fetchConfig<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<Account<Config, TAddress>>;
49
+ export declare function fetchMaybeConfig<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<MaybeAccount<Config, TAddress>>;
50
+ export declare function fetchAllConfig(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<Account<Config>[]>;
51
+ export declare function fetchAllMaybeConfig(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<MaybeAccount<Config>[]>;
52
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/codama/accounts/config.ts"],"names":[],"mappings":"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"}