@wuwei-labs/srsly 2.0.0-beta.26 → 2.0.0-beta.28

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 (72) hide show
  1. package/README.md +189 -97
  2. package/dist/cjs/contract/close.js +33 -24
  3. package/dist/cjs/contract/close.js.map +1 -1
  4. package/dist/cjs/contract/create.js +67 -52
  5. package/dist/cjs/contract/create.js.map +1 -1
  6. package/dist/cjs/package.json +2 -13
  7. package/dist/cjs/rental/accept.js +35 -29
  8. package/dist/cjs/rental/accept.js.map +1 -1
  9. package/dist/cjs/rental/cancel.js +13 -9
  10. package/dist/cjs/rental/cancel.js.map +1 -1
  11. package/dist/cjs/rental/close.js +15 -11
  12. package/dist/cjs/rental/close.js.map +1 -1
  13. package/dist/cjs/rental/reset.js +20 -17
  14. package/dist/cjs/rental/reset.js.map +1 -1
  15. package/dist/cjs/utils/config.js +0 -88
  16. package/dist/cjs/utils/config.js.map +1 -1
  17. package/dist/cjs/utils/index.js +1 -0
  18. package/dist/cjs/utils/index.js.map +1 -1
  19. package/dist/cjs/utils/instruction-converter.js +49 -0
  20. package/dist/cjs/utils/instruction-converter.js.map +1 -0
  21. package/dist/esm/contract/close.js +34 -25
  22. package/dist/esm/contract/close.js.map +1 -1
  23. package/dist/esm/contract/create.js +67 -51
  24. package/dist/esm/contract/create.js.map +1 -1
  25. package/dist/esm/package.json +2 -13
  26. package/dist/esm/rental/accept.js +36 -30
  27. package/dist/esm/rental/accept.js.map +1 -1
  28. package/dist/esm/rental/cancel.js +13 -9
  29. package/dist/esm/rental/cancel.js.map +1 -1
  30. package/dist/esm/rental/close.js +15 -11
  31. package/dist/esm/rental/close.js.map +1 -1
  32. package/dist/esm/rental/reset.js +22 -19
  33. package/dist/esm/rental/reset.js.map +1 -1
  34. package/dist/esm/utils/config.js +0 -88
  35. package/dist/esm/utils/config.js.map +1 -1
  36. package/dist/esm/utils/index.js +1 -0
  37. package/dist/esm/utils/index.js.map +1 -1
  38. package/dist/esm/utils/instruction-converter.js +45 -0
  39. package/dist/esm/utils/instruction-converter.js.map +1 -0
  40. package/dist/types/contract/close.d.ts +12 -11
  41. package/dist/types/contract/close.d.ts.map +1 -1
  42. package/dist/types/contract/create.d.ts +49 -65
  43. package/dist/types/contract/create.d.ts.map +1 -1
  44. package/dist/types/rental/accept.d.ts +32 -28
  45. package/dist/types/rental/accept.d.ts.map +1 -1
  46. package/dist/types/rental/cancel.d.ts +16 -12
  47. package/dist/types/rental/cancel.d.ts.map +1 -1
  48. package/dist/types/rental/close.d.ts +16 -13
  49. package/dist/types/rental/close.d.ts.map +1 -1
  50. package/dist/types/rental/reset.d.ts +19 -16
  51. package/dist/types/rental/reset.d.ts.map +1 -1
  52. package/dist/types/utils/config.d.ts +0 -95
  53. package/dist/types/utils/config.d.ts.map +1 -1
  54. package/dist/types/utils/index.d.ts +1 -0
  55. package/dist/types/utils/index.d.ts.map +1 -1
  56. package/dist/types/utils/instruction-converter.d.ts +76 -0
  57. package/dist/types/utils/instruction-converter.d.ts.map +1 -0
  58. package/dist/types/utils/types.d.ts +0 -8
  59. package/dist/types/utils/types.d.ts.map +1 -1
  60. package/package.json +2 -13
  61. package/dist/cjs/utils/pack-functions.js +0 -148
  62. package/dist/cjs/utils/pack-functions.js.map +0 -1
  63. package/dist/cjs/utils/solana-adapter.js +0 -120
  64. package/dist/cjs/utils/solana-adapter.js.map +0 -1
  65. package/dist/esm/utils/pack-functions.js +0 -110
  66. package/dist/esm/utils/pack-functions.js.map +0 -1
  67. package/dist/esm/utils/solana-adapter.js +0 -82
  68. package/dist/esm/utils/solana-adapter.js.map +0 -1
  69. package/dist/types/utils/pack-functions.d.ts +0 -18
  70. package/dist/types/utils/pack-functions.d.ts.map +0 -1
  71. package/dist/types/utils/solana-adapter.d.ts +0 -26
  72. package/dist/types/utils/solana-adapter.d.ts.map +0 -1
@@ -47,7 +47,6 @@ exports.createConfigSelector = createConfigSelector;
47
47
  // Single codama output - network agnostic
48
48
  const instructions = __importStar(require("../codama/instructions"));
49
49
  const programs = __importStar(require("../codama/programs"));
50
- const pack_functions_1 = require("./pack-functions");
51
50
  const PROGRAM_SETS = {
52
51
  mainnet: {
53
52
  SAGE_PROGRAM_ADDRESS: 'SAGE2HAwep459SNq61LHvjxPk4pLPEJLoMETef7f7EE',
@@ -92,7 +91,6 @@ function resolveProgramAddresses(config) {
92
91
  profileFactionProgramAddress: config.profileFactionProgramAddress || programConfig.PROFILE_FACTION_PROGRAM_ADDRESS,
93
92
  gameId: config.gameId || programConfig.SAGE_GAME_ID,
94
93
  atlasMint: config.atlasMint || programConfig.ATLAS_MINT,
95
- rpcUrl: config.rpcUrl || programConfig.RPC_URL,
96
94
  };
97
95
  }
98
96
  /**
@@ -159,44 +157,6 @@ async function getCachedNetworkModule(modulePath) {
159
157
  }
160
158
  return getModule(modulePath);
161
159
  }
162
- /**
163
- * Create a chainable packed transaction that allows .pack().send() without double await
164
- *
165
- * @param packedTxPromise Promise that resolves to a PackedTransaction
166
- * @returns ChainablePackedTransaction that can be chained with .send()
167
- */
168
- function createChainablePackedTransaction(packedTxPromise) {
169
- let cachedPackedTx = null;
170
- const chainable = {
171
- get messageBytes() {
172
- if (cachedPackedTx)
173
- return cachedPackedTx.messageBytes;
174
- throw new Error('PackedTransaction not yet resolved. Use await on .pack() first, or use .send() directly for chaining.');
175
- },
176
- get signatures() {
177
- if (cachedPackedTx)
178
- return cachedPackedTx.signatures;
179
- throw new Error('PackedTransaction not yet resolved. Use await on .pack() first, or use .send() directly for chaining.');
180
- },
181
- send: async (signer) => {
182
- // If not cached, wait for the packed transaction
183
- if (!cachedPackedTx) {
184
- cachedPackedTx = await packedTxPromise;
185
- }
186
- return cachedPackedTx.send(signer);
187
- }
188
- };
189
- // Make the chainable object thenable so it can be awaited to get the PackedTransaction
190
- const thenable = Object.assign(chainable, {
191
- then(onfulfilled, onrejected) {
192
- return packedTxPromise.then((packedTx) => {
193
- cachedPackedTx = packedTx;
194
- return onfulfilled ? onfulfilled(packedTx) : packedTx;
195
- }, onrejected);
196
- }
197
- });
198
- return thenable;
199
- }
200
160
  /**
201
161
  * Create a chainable config selector with existing configuration state.
202
162
  * This enables config chaining by merging new options with existing ones.
@@ -216,30 +176,6 @@ function createChainableConfigSelector(executeFn, existingConfig) {
216
176
  const selector = {
217
177
  set: (additionalOptions) => createChainableConfigSelector(executeFn, { ...existingConfig, ...additionalOptions }),
218
178
  build: () => executeFn(existingConfig),
219
- packKit: (feePayer) => {
220
- const packedTxPromise = (async () => {
221
- const instruction = await executeFn(existingConfig);
222
- const effectiveConfig = getEffectiveConfig(existingConfig);
223
- return await (0, pack_functions_1.packWithKit)(instruction, feePayer, effectiveConfig);
224
- })();
225
- return createChainablePackedTransaction(packedTxPromise);
226
- },
227
- packWeb3js: (feePayer) => {
228
- const packedTxPromise = (async () => {
229
- const instruction = await executeFn(existingConfig);
230
- const effectiveConfig = getEffectiveConfig(existingConfig);
231
- return await (0, pack_functions_1.packWithWeb3js)(instruction, feePayer, effectiveConfig);
232
- })();
233
- return createChainablePackedTransaction(packedTxPromise);
234
- },
235
- pack: (feePayer) => {
236
- const packedTxPromise = (async () => {
237
- const instruction = await executeFn(existingConfig);
238
- const effectiveConfig = getEffectiveConfig(existingConfig);
239
- return await (0, pack_functions_1.packWithAuto)(instruction, feePayer, effectiveConfig);
240
- })();
241
- return createChainablePackedTransaction(packedTxPromise);
242
- },
243
179
  // Implement PromiseLike to allow direct awaiting
244
180
  then(onfulfilled, onrejected) {
245
181
  return executeFn(existingConfig).then(onfulfilled, onrejected);
@@ -270,30 +206,6 @@ function createConfigSelector(executeFn) {
270
206
  const selector = {
271
207
  set: (options) => createChainableConfigSelector(executeFn, getEffectiveConfig(options)),
272
208
  build: () => executeFn(getEffectiveConfig()),
273
- packKit: (feePayer) => {
274
- const packedTxPromise = (async () => {
275
- const instruction = await executeFn(getEffectiveConfig());
276
- const effectiveConfig = getEffectiveConfig();
277
- return await (0, pack_functions_1.packWithKit)(instruction, feePayer, effectiveConfig);
278
- })();
279
- return createChainablePackedTransaction(packedTxPromise);
280
- },
281
- packWeb3js: (feePayer) => {
282
- const packedTxPromise = (async () => {
283
- const instruction = await executeFn(getEffectiveConfig());
284
- const effectiveConfig = getEffectiveConfig();
285
- return await (0, pack_functions_1.packWithWeb3js)(instruction, feePayer, effectiveConfig);
286
- })();
287
- return createChainablePackedTransaction(packedTxPromise);
288
- },
289
- pack: (feePayer) => {
290
- const packedTxPromise = (async () => {
291
- const instruction = await executeFn(getEffectiveConfig());
292
- const effectiveConfig = getEffectiveConfig();
293
- return await (0, pack_functions_1.packWithAuto)(instruction, feePayer, effectiveConfig);
294
- })();
295
- return createChainablePackedTransaction(packedTxPromise);
296
- },
297
209
  // Implement PromiseLike to allow direct awaiting
298
210
  then(onfulfilled, onrejected) {
299
211
  return executeFn(getEffectiveConfig()).then(onfulfilled, onrejected);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -19,4 +19,5 @@ __exportStar(require("./profiles"), exports);
19
19
  __exportStar(require("./config"), exports);
20
20
  __exportStar(require("./paymentFrequency"), exports);
21
21
  __exportStar(require("./duration"), exports);
22
+ __exportStar(require("./instruction-converter"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B;AAC3B,2CAAyB;AACzB,qDAAmC;AACnC,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B;AAC3B,2CAAyB;AACzB,qDAAmC;AACnC,6CAA2B;AAC3B,0DAAwC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * Fluent instruction interface for format conversion between @solana/kit and @solana/web3.js
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createFluentInstruction = createFluentInstruction;
7
+ exports.createFluentConfigSelector = createFluentConfigSelector;
8
+ /**
9
+ * Create a fluent instruction wrapper around a kit instruction
10
+ * @param kitInstruction The base instruction in kit format
11
+ * @returns Fluent instruction with conversion methods
12
+ */
13
+ function createFluentInstruction(kitInstruction) {
14
+ return {
15
+ ...kitInstruction,
16
+ web3js() {
17
+ return {
18
+ keys: kitInstruction.accounts.map(account => ({
19
+ pubkey: account.address,
20
+ isWritable: (account.role & 1) === 1, // Check if writable bit is set
21
+ isSigner: (account.role & 2) === 2, // Check if signer bit is set
22
+ })),
23
+ programId: kitInstruction.programAddress,
24
+ data: kitInstruction.data
25
+ };
26
+ }
27
+ };
28
+ }
29
+ /**
30
+ * Create a fluent config selector that adds format conversion methods
31
+ * @param baseSelector The base ConfigSelector
32
+ * @returns FluentConfigSelector with additional format conversion methods
33
+ */
34
+ function createFluentConfigSelector(baseSelector) {
35
+ return {
36
+ // Override set to return FluentConfigSelector
37
+ set(options) {
38
+ const newBaseSelector = baseSelector.set(options);
39
+ return createFluentConfigSelector(newBaseSelector);
40
+ },
41
+ build: baseSelector.build,
42
+ then: baseSelector.then,
43
+ async web3js() {
44
+ const fluentInstruction = await baseSelector.build();
45
+ return fluentInstruction.web3js();
46
+ }
47
+ };
48
+ }
49
+ //# sourceMappingURL=instruction-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction-converter.js","sourceRoot":"","sources":["../../../src/utils/instruction-converter.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAoEH,0DAeC;AAOD,gEAgBC;AA3CD;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,cAA8B;IACpE,OAAO;QACL,GAAG,cAAc;QACjB,MAAM;YACJ,OAAO;gBACL,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC5C,MAAM,EAAE,OAAO,CAAC,OAAO;oBACvB,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,+BAA+B;oBACrE,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAI,6BAA6B;iBACpE,CAAC,CAAC;gBACH,SAAS,EAAE,cAAc,CAAC,cAAc;gBACxC,IAAI,EAAE,cAAc,CAAC,IAAI;aAC1B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CACxC,YAA+B;IAE/B,OAAO;QACL,8CAA8C;QAC9C,GAAG,CAAC,OAAO;YACT,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,0BAA0B,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,KAAK,CAAC,MAAM;YACV,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YACrD,OAAO,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,38 +1,42 @@
1
1
  import { getModule, createConfigSelector } from '../utils/config';
2
2
  import { getSageGameId, toAddress } from '../utils/constants';
3
- import { deriveGameAccounts, } from '../utils';
3
+ import { deriveGameAccounts } from '../utils';
4
+ import { createFluentInstruction, createFluentConfigSelector } from '../utils/instruction-converter';
4
5
  /**
5
6
  * Asynchronously creates an instruction to close a rental contract with minimal required parameters.
6
7
  * Derives rentalAuthority automatically and handles optional parameters.
7
8
  *
8
9
  * @example
9
10
  * ```typescript
10
- * // Create the instruction with default devnet settings
11
- * const ix = await closeContract({
12
- * owner: wallet,
13
- * fleet: fleetAddress,
14
- * contract: contractAddress,
11
+ * // Works with any library - just use strings for addresses!
12
+ * const instruction = await closeContract({
13
+ * owner: wallet, // Can be signer object or string
14
+ * fleet: "FleetAddress123...", // String address
15
+ * contract: "ContractAddr...", // String address
15
16
  * faction: 'mud',
16
17
  * });
17
18
  *
18
19
  * // Use mainnet configuration
19
- * const ix = await closeContract({
20
+ * const instruction = await closeContract({
20
21
  * owner: wallet,
21
- * fleet: fleetAddress,
22
- * contract: contractAddress,
22
+ * fleet: "FleetAddress123...",
23
+ * contract: "ContractAddr...",
23
24
  * faction: 'mud',
24
- * }).set({ network: 'mainnet' });
25
+ * }).set({ programs: 'mainnet' });
25
26
  *
26
27
  * // Override specific constants
27
- * const ix = await closeContract({
28
+ * const instruction = await closeContract({
28
29
  * owner: wallet,
29
- * fleet: fleetAddress,
30
- * contract: contractAddress,
30
+ * fleet: "FleetAddress123...",
31
+ * contract: "ContractAddr...",
31
32
  * faction: 'mud',
32
33
  * }).set({
33
- * network: 'mainnet',
34
+ * programs: 'mainnet',
34
35
  * gameId: 'custom-game-id...'
35
36
  * });
37
+ *
38
+ * // Use the instruction with your preferred Solana library
39
+ * // instruction is compatible with both @solana/kit and @solana/web3.js
36
40
  * ```
37
41
  *
38
42
  * @param params The simplified parameters for closing a rental contract
@@ -45,7 +49,10 @@ async function _closeContract(params, config) {
45
49
  const { owner, fleet, contract, faction, gameId, } = params;
46
50
  // Get the actual game ID to use (param override, config override, or network default)
47
51
  const actualGameId = gameId ? toAddress(gameId) : await getSageGameId(config);
48
- const derivedAccounts = await deriveGameAccounts(owner.address, faction, actualGameId, 0, // starbaseSeqId
52
+ // Extract owner address (handle both string and signer object)
53
+ const ownerAddress = typeof owner === 'string' ? owner :
54
+ (owner && typeof owner === 'object' && 'address' in owner) ? owner.address : owner;
55
+ const derivedAccounts = await deriveGameAccounts(ownerAddress, faction, actualGameId, 0, // starbaseSeqId
49
56
  config);
50
57
  const starbase = derivedAccounts.starbase;
51
58
  const starbasePlayer = derivedAccounts.starbasePlayer;
@@ -56,14 +63,15 @@ async function _closeContract(params, config) {
56
63
  const { SRSLY_PROGRAM_ADDRESS } = programsModule;
57
64
  // Let codama derive the rest (rentalAuthority, ownerTokenAccount, etc.)
58
65
  const input = {
59
- owner,
60
- fleet: toAddress(fleet),
61
- contract: toAddress(contract),
62
- starbase,
63
- starbasePlayer,
64
- gameId: actualGameId,
66
+ owner, // Pass as-is (string or signer)
67
+ fleet: toAddress(fleet), // Ensure string
68
+ contract: toAddress(contract), // Ensure string
69
+ starbase, // Already string from deriveGameAccounts
70
+ starbasePlayer, // Already string from deriveGameAccounts
71
+ gameId: actualGameId, // Already string
65
72
  };
66
- return getCloseContractInstructionAsync(input, { programAddress: SRSLY_PROGRAM_ADDRESS });
73
+ const rawInstruction = await getCloseContractInstructionAsync(input, { programAddress: SRSLY_PROGRAM_ADDRESS });
74
+ return createFluentInstruction(rawInstruction);
67
75
  }
68
76
  /**
69
77
  * Creates an instruction to close a rental contract with fluent configuration.
@@ -73,18 +81,19 @@ async function _closeContract(params, config) {
73
81
  *
74
82
  * @example
75
83
  * ```typescript
76
- * // Use devnet defaults
84
+ * // Use atlasnet defaults (instruction building only)
77
85
  * await closeContract(params);
78
86
  *
79
87
  * // Use mainnet
80
- * await closeContract(params).set({ network: 'mainnet' });
88
+ * await closeContract(params).set({ programs: 'mainnet' });
81
89
  *
82
90
  * // Override game ID
83
91
  * await closeContract(params).set({ gameId: 'custom...' });
84
92
  * ```
85
93
  */
86
94
  export function closeContract(params) {
87
- return createConfigSelector((config) => _closeContract(params, config));
95
+ const baseSelector = createConfigSelector((config) => _closeContract(params, config));
96
+ return createFluentConfigSelector(baseSelector);
88
97
  }
89
98
  // Export config selector for getCloseContractInstructionAsync
90
99
  export function getCloseContractInstructionAsync(input, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/contract/close.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAA2C,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EACL,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAkClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,MAA2B,EAC3B,MAAsB;IAEtB,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,GACP,GAAG,MAAM,CAAC;IAEX,sFAAsF;IACtF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAE9E,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAC9C,KAAK,CAAC,OAAO,EACb,OAAQ,EACR,YAAY,EACZ,CAAC,EAAE,gBAAgB;IACnB,MAAM,CACP,CAAC;IAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;IAC1C,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;IAEtD,gEAAgE;IAChE,MAAM,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,EAAE,gCAAgC,EAAE,GAAG,kBAAkB,CAAC;IAChE,MAAM,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC;IAEjD,wEAAwE;IACxE,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QACvB,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC7B,QAAQ;QACR,cAAc;QACd,MAAM,EAAE,YAAY;KACrB,CAAC;IAEF,OAAO,gCAAgC,CACrC,KAAK,EACL,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA2B;IAE3B,OAAO,oBAAoB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,gCAAgC,CAAC,KAAU,EAAE,OAAa;IACxE,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QACrD,OAAO,kBAAkB,CAAC,gCAAgC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/contract/close.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAA2C,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAqD,MAAM,gCAAgC,CAAC;AAsCxJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,MAA2B,EAC3B,MAAsB;IAEtB,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,GACP,GAAG,MAAM,CAAC;IAEX,sFAAsF;IACtF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAE9E,+DAA+D;IAC/D,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAExG,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAC9C,YAAY,EACZ,OAAQ,EACR,YAAY,EACZ,CAAC,EAAE,gBAAgB;IACnB,MAAM,CACP,CAAC;IAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;IAC1C,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;IAEtD,gEAAgE;IAChE,MAAM,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,EAAE,gCAAgC,EAAE,GAAG,kBAAkB,CAAC;IAChE,MAAM,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC;IAEjD,wEAAwE;IACxE,MAAM,KAAK,GAAG;QACZ,KAAK,EAAyB,gCAAgC;QAC9D,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAO,gBAAgB;QAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,gBAAgB;QAC/C,QAAQ,EAAsB,yCAAyC;QACvE,cAAc,EAAgB,yCAAyC;QACvE,MAAM,EAAE,YAAY,EAAU,iBAAiB;KAChD,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,gCAAgC,CAC3D,KAAK,EACL,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAC1C,CAAC;IACF,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA2B;IAE3B,MAAM,YAAY,GAAG,oBAAoB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,OAAO,0BAA0B,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,gCAAgC,CAAC,KAAU,EAAE,OAAa;IACxE,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QACrD,OAAO,kBAAkB,CAAC,gCAAgC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,83 +1,99 @@
1
+ /**
2
+ * Unified contract creation - works with both @solana/kit and @solana/web3.js
3
+ * Uses strings for all addresses to eliminate library-specific type complexity
4
+ */
1
5
  import { getModule, createConfigSelector } from '../utils/config';
2
6
  import { getSageGameId, getSageProgramAddress, getAtlasMint, toAddress } from '../utils/constants';
3
7
  import { validateDurationAlignment, paymentFrequencyStringToSeconds } from '../utils/paymentFrequency';
4
8
  import { isValidPaymentFrequency } from '../types/paymentFrequency';
9
+ import { createFluentInstruction, createFluentConfigSelector } from '../utils/instruction-converter';
5
10
  /**
6
- * Internal function to create a contract instruction with configuration options
11
+ * Internal function to create a rental contract instruction with configuration options
7
12
  */
8
13
  async function _createContract(params, config) {
9
- const { owner, fleet, ownerProfile, rate, durationMax, paymentsFreq, ownerKeyIndex = 0, gameId, mint, } = params;
10
- // Validate payment frequency using auto-generated validation
14
+ const { owner, fleet, ownerProfile, rate, durationMax, paymentsFreq, gameId, sageProgramAddress, atlasMint, ownerKeyIndex = 0, } = params;
15
+ // Validate payment frequency
11
16
  if (!isValidPaymentFrequency(paymentsFreq)) {
12
- throw new Error(`Invalid payment frequency: ${paymentsFreq}. Valid values are auto-generated from Rust PaymentFrequency enum.`);
17
+ throw new Error(`Invalid payment frequency: "${paymentsFreq}". Valid values are: ${JSON.stringify(Object.keys({ daily: true, weekly: true, monthly: true, hourly: true }))}`);
13
18
  }
14
- // Calculate durationMin from payment frequency
19
+ // Validate duration alignment
20
+ validateDurationAlignment(Number(durationMax), paymentsFreq);
21
+ // Get the payment frequency interval (this will be the minimum duration)
15
22
  const durationMin = paymentFrequencyStringToSeconds(paymentsFreq);
16
- // Validate that durationMax is a multiple of the payment frequency
17
- // Uses the codama-generated PaymentFrequency enum and mirrors Rust implementation
18
- validateDurationAlignment(durationMax, paymentsFreq);
19
- // Get the actual game ID to use (param override, config override, or network default)
23
+ // Convert the payment frequency to the format expected by the Rust program (with @ prefix)
24
+ const paymentsFreqWithPrefix = `@${paymentsFreq}`;
25
+ // Get network-specific addresses (param override, config override, or network default)
20
26
  const actualGameId = gameId ? toAddress(gameId) : await getSageGameId(config);
21
- // Get codama functions
27
+ const actualSageProgramAddress = sageProgramAddress ? toAddress(sageProgramAddress) : await getSageProgramAddress(config);
28
+ const actualAtlasMint = atlasMint ? toAddress(atlasMint) : await getAtlasMint(config);
29
+ const input = {
30
+ owner, // Pass as-is (string or signer)
31
+ fleet: toAddress(fleet), // Ensure string
32
+ ownerProfile: toAddress(ownerProfile), // Ensure string
33
+ gameId: actualGameId, // Already string
34
+ sageProgram: actualSageProgramAddress, // Fixed: use sageProgram instead of sageProgramAddress
35
+ mint: actualAtlasMint, // Fixed: use mint instead of atlasMint
36
+ durationMin,
37
+ durationMax,
38
+ rate,
39
+ paymentsFeq: paymentsFreqWithPrefix, // Fixed: use paymentsFeq as expected by codama
40
+ ownerKeyIndex,
41
+ };
42
+ // Get network-specific codama functions from centralized config
22
43
  const instructionsModule = getModule('instructions');
23
44
  const programsModule = getModule('programs');
24
45
  const { getCreateContractInstructionAsync } = instructionsModule;
25
46
  const { SRSLY_PROGRAM_ADDRESS } = programsModule;
26
- // Default ATLAS mint address if not provided (uses config)
27
- const atlasMint = mint ? toAddress(mint) : await getAtlasMint(config);
28
- // Let codama derive the rest (contract, rentalAuthority, ownerTokenAccount, etc.)
29
- const input = {
30
- mint: atlasMint,
31
- owner, // Keep as TransactionSigner
32
- fleet: toAddress(fleet),
33
- ownerProfile: toAddress(ownerProfile),
34
- gameId: actualGameId,
35
- rate: BigInt(rate),
36
- durationMin: BigInt(durationMin),
37
- durationMax: BigInt(durationMax),
38
- paymentsFeq: `@${paymentsFreq}`,
39
- ownerKeyIndex,
40
- sageProgram: toAddress(await getSageProgramAddress(config)),
41
- };
42
- return getCreateContractInstructionAsync(input, { programAddress: SRSLY_PROGRAM_ADDRESS });
47
+ const rawInstruction = await getCreateContractInstructionAsync(input, { programAddress: SRSLY_PROGRAM_ADDRESS });
48
+ return createFluentInstruction(rawInstruction);
43
49
  }
44
50
  /**
45
51
  * Creates an instruction to create a rental contract with fluent configuration.
52
+ * This unified version works with both @solana/kit and @solana/web3.js using strings for addresses.
46
53
  *
47
54
  * @example
48
55
  * ```typescript
49
- * // Use devnet defaults
50
- * const ix = await createContract(params);
51
- *
52
- * // Use mainnet configuration
53
- * const ix = await createContract(params).set({ network: 'mainnet' });
56
+ * // Works with any library - just use strings for addresses!
54
57
  *
55
- * // Override specific constants
56
- * const ix = await createContract(params).set({
57
- * network: 'mainnet',
58
- * gameId: 'custom-game-id...',
59
- * sageProgramAddress: 'custom-sage...'
58
+ * // Default returns @solana/kit format
59
+ * const kitInstruction = await createContract({
60
+ * owner: wallet, // Can be signer object or string
61
+ * fleet: "FleetAddress123...", // String address
62
+ * ownerProfile: "ProfileAddr...", // String address
63
+ * rate: 1000,
64
+ * durationMax: days(7),
65
+ * paymentsFreq: 'daily'
60
66
  * });
61
67
  *
62
- * // Chain configurations
63
- * const ix = await createContract(params)
64
- * .set({ network: 'devnet' })
65
- * .set({ gameId: 'override-game...' });
68
+ * // Convert to @solana/web3.js format using fluent interface
69
+ * const web3jsInstruction = await createContract({
70
+ * owner: wallet,
71
+ * fleet: "FleetAddress123...",
72
+ * ownerProfile: "ProfileAddr...",
73
+ * rate: 1000,
74
+ * durationMax: days(7),
75
+ * paymentsFreq: 'daily'
76
+ * }).web3js();
77
+ *
78
+ * // Chain configuration and format conversion
79
+ * const web3jsInstructionWithConfig = await createContract({
80
+ * owner: wallet,
81
+ * fleet: "FleetAddress123...",
82
+ * ownerProfile: "ProfileAddr...",
83
+ * rate: 1000,
84
+ * durationMax: days(7),
85
+ * paymentsFreq: 'daily'
86
+ * }).set({ programs: 'mainnet' }).web3js();
87
+ *
88
+ * // Use with your preferred Solana library
89
+ * const transaction = new Transaction().add(web3jsInstruction);
66
90
  * ```
67
91
  *
68
92
  * @param params The simplified parameters for creating a rental contract
69
93
  * @returns A ConfigSelector that can be configured with .set() or awaited directly
70
94
  */
71
95
  export function createContract(params) {
72
- return createConfigSelector((config) => _createContract(params, config));
73
- }
74
- /**
75
- * Export config selector for getCreateContractInstructionAsync
76
- */
77
- export function getCreateContractInstructionAsync(input, options) {
78
- return createConfigSelector(async (config) => {
79
- const instructionsModule = getModule('instructions');
80
- return instructionsModule.getCreateContractInstructionAsync(input, options);
81
- });
96
+ const baseSelector = createConfigSelector((config) => _createContract(params, config));
97
+ return createFluentConfigSelector(baseSelector);
82
98
  }
83
99
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/contract/create.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAA2C,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAA0B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AA+D5F;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,MAA4B,EAC5B,MAAsB;IAEtB,MAAM,EACJ,KAAK,EACL,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,aAAa,GAAG,CAAC,EACjB,MAAM,EACN,IAAI,GACL,GAAG,MAAM,CAAC;IAEX,6DAA6D;IAC7D,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,oEAAoE,CAAC,CAAC;IAClI,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAAG,+BAA+B,CAAC,YAAY,CAAC,CAAC;IAElE,mEAAmE;IACnE,kFAAkF;IAClF,yBAAyB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAErD,sFAAsF;IACtF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAE9E,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,EAAE,iCAAiC,EAAE,GAAG,kBAAkB,CAAC;IACjE,MAAM,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC;IAEjD,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAEtE,kFAAkF;IAClF,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,4BAA4B;QACnC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QACvB,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;QACrC,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChC,WAAW,EAAE,IAAI,YAAY,EAAE;QAC/B,aAAa;QACb,WAAW,EAAE,SAAS,CAAC,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;KAC5D,CAAC;IAEF,OAAO,iCAAiC,CACtC,KAAK,EACL,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA4B;IAE5B,OAAO,oBAAoB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,KAAU,EAAE,OAAa;IACzE,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QACrD,OAAO,kBAAkB,CAAC,iCAAiC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/contract/create.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wuwei-labs/srsly",
3
- "version": "2.0.0-beta.26",
3
+ "version": "2.0.0-beta.28",
4
4
  "description": "",
5
5
  "source": "./src/index.ts",
6
6
  "sideEffects": false,
@@ -38,6 +38,7 @@
38
38
  "devDependencies": {
39
39
  "@codama/nodes-from-anchor": "^1.1.13",
40
40
  "@codama/renderers": "^1.0.21",
41
+ "@solana/kit": "^2.0.0",
41
42
  "@types/node": "^24.0.3",
42
43
  "codama": "^1.2.13",
43
44
  "tsconfig-to-dual-package": "^1.2.0",
@@ -45,17 +46,5 @@
45
46
  "typescript": "^5.8.3",
46
47
  "vitest": "^3.2.4"
47
48
  },
48
- "peerDependencies": {
49
- "@solana/kit": ">=2.0.0",
50
- "@solana/web3.js": ">=1.95.0"
51
- },
52
- "peerDependenciesMeta": {
53
- "@solana/kit": {
54
- "optional": true
55
- },
56
- "@solana/web3.js": {
57
- "optional": true
58
- }
59
- },
60
49
  "type": "module"
61
50
  }