@wuwei-labs/srsly 2.0.0-beta.45 → 2.0.0-beta.48
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.
- package/dist/cjs/codama/instructions/cancelRental.js +13 -23
- package/dist/cjs/codama/instructions/cancelRental.js.map +1 -1
- package/dist/cjs/contract/close.js +106 -21
- package/dist/cjs/contract/close.js.map +1 -1
- package/dist/cjs/contract/create.js +59 -5
- package/dist/cjs/contract/create.js.map +1 -1
- package/dist/cjs/demos.js +65 -0
- package/dist/cjs/demos.js.map +1 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/rental/accept.js +31 -0
- package/dist/cjs/rental/accept.js.map +1 -1
- package/dist/cjs/rental/cancel.js +60 -9
- package/dist/cjs/rental/cancel.js.map +1 -1
- package/dist/cjs/rental/close.js +35 -23
- package/dist/cjs/rental/close.js.map +1 -1
- package/dist/cjs/rental/reset-contract-temp.js +4 -1
- package/dist/cjs/rental/reset-contract-temp.js.map +1 -1
- package/dist/cjs/rental/reset.js +131 -26
- package/dist/cjs/rental/reset.js.map +1 -1
- package/dist/cjs/utils/fetch-accounts.js +26 -0
- package/dist/cjs/utils/fetch-accounts.js.map +1 -1
- package/dist/cjs/utils/index.js +8 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/pda.js.map +1 -1
- package/dist/cjs/utils/sdk-helpers.js +122 -0
- package/dist/cjs/utils/sdk-helpers.js.map +1 -0
- package/dist/cjs/utils/signer.js +105 -10
- package/dist/cjs/utils/signer.js.map +1 -1
- package/dist/esm/codama/instructions/cancelRental.js +13 -23
- package/dist/esm/codama/instructions/cancelRental.js.map +1 -1
- package/dist/esm/contract/close.js +106 -22
- package/dist/esm/contract/close.js.map +1 -1
- package/dist/esm/contract/create.js +59 -6
- package/dist/esm/contract/create.js.map +1 -1
- package/dist/esm/demos.js +23 -0
- package/dist/esm/demos.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/rental/accept.js +30 -0
- package/dist/esm/rental/accept.js.map +1 -1
- package/dist/esm/rental/cancel.js +60 -10
- package/dist/esm/rental/cancel.js.map +1 -1
- package/dist/esm/rental/close.js +37 -26
- package/dist/esm/rental/close.js.map +1 -1
- package/dist/esm/rental/reset-contract-temp.js +4 -1
- package/dist/esm/rental/reset-contract-temp.js.map +1 -1
- package/dist/esm/rental/reset.js +131 -27
- package/dist/esm/rental/reset.js.map +1 -1
- package/dist/esm/utils/fetch-accounts.js +26 -1
- package/dist/esm/utils/fetch-accounts.js.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/pda.js.map +1 -1
- package/dist/esm/utils/sdk-helpers.js +113 -0
- package/dist/esm/utils/sdk-helpers.js.map +1 -0
- package/dist/esm/utils/signer.js +103 -11
- package/dist/esm/utils/signer.js.map +1 -1
- package/dist/types/codama/instructions/cancelRental.d.ts +2 -2
- package/dist/types/codama/instructions/cancelRental.d.ts.map +1 -1
- package/dist/types/contract/close.d.ts +17 -12
- package/dist/types/contract/close.d.ts.map +1 -1
- package/dist/types/contract/create.d.ts +8 -2
- package/dist/types/contract/create.d.ts.map +1 -1
- package/dist/types/demos.d.ts +58 -0
- package/dist/types/demos.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/rental/accept.d.ts +6 -0
- package/dist/types/rental/accept.d.ts.map +1 -1
- package/dist/types/rental/cancel.d.ts +9 -3
- package/dist/types/rental/cancel.d.ts.map +1 -1
- package/dist/types/rental/close.d.ts +11 -5
- package/dist/types/rental/close.d.ts.map +1 -1
- package/dist/types/rental/reset-contract-temp.d.ts +1 -1
- package/dist/types/rental/reset-contract-temp.d.ts.map +1 -1
- package/dist/types/rental/reset.d.ts +35 -24
- package/dist/types/rental/reset.d.ts.map +1 -1
- package/dist/types/utils/fetch-accounts.d.ts +48 -1
- package/dist/types/utils/fetch-accounts.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/pda.d.ts.map +1 -1
- package/dist/types/utils/sdk-helpers.d.ts +49 -0
- package/dist/types/utils/sdk-helpers.d.ts.map +1 -0
- package/dist/types/utils/signer.d.ts +39 -16
- package/dist/types/utils/signer.d.ts.map +1 -1
- package/package.json +7 -1
- package/target/idl/srsly.json +1 -23
package/dist/esm/rental/close.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { getModule, createConfigSelector, resolveProgramAddresses } from '../utils/config';
|
|
1
|
+
import { getModule, createConfigSelector, resolveProgramAddresses, getConfig } from '../utils/config';
|
|
2
2
|
import { toAddress } from '../utils/constants';
|
|
3
3
|
import { createFluentInstruction, createSmartFluentConfigSelector } from '../utils/instruction-converter';
|
|
4
|
-
import { fetchMaybeRentalState, fetchMaybeContractState
|
|
5
|
-
import {
|
|
4
|
+
import { fetchMaybeRentalState, fetchMaybeContractState } from '../codama/accounts';
|
|
5
|
+
import { fetchConfigState } from '../utils/fetch-accounts';
|
|
6
|
+
import { createSolanaRpc } from '@solana/kit';
|
|
6
7
|
import { deriveRentalThread, deriveRentalAuthority } from '../utils/pda';
|
|
8
|
+
import { createTransactionSigner } from '../utils/signer';
|
|
7
9
|
/**
|
|
8
10
|
* Internal function to close a rental instruction with configuration options.
|
|
9
11
|
*
|
|
@@ -18,22 +20,25 @@ import { deriveRentalThread, deriveRentalAuthority } from '../utils/pda';
|
|
|
18
20
|
* @throws Error when instruction generation fails or required parameters are missing
|
|
19
21
|
*/
|
|
20
22
|
async function _closeRental(params, config) {
|
|
21
|
-
const { payer,
|
|
23
|
+
const { payer, rentalState, } = params;
|
|
22
24
|
// Get the resolved addresses from config (including network-specific addresses)
|
|
23
|
-
|
|
25
|
+
// Use global config as fallback, same pattern as acceptRental
|
|
26
|
+
const globalConfig = getConfig();
|
|
27
|
+
const effectiveConfig = { ...globalConfig, ...config };
|
|
28
|
+
const resolvedAddresses = await resolveProgramAddresses(effectiveConfig);
|
|
24
29
|
// Create RPC from resolved addresses
|
|
25
30
|
if (!resolvedAddresses.rpcUrl) {
|
|
26
31
|
throw new Error('rpcUrl is required for close rental operation. Use setConfig({ library: "kit", rpcUrl: "https://..." })');
|
|
27
32
|
}
|
|
28
33
|
const rpc = createSolanaRpc(resolvedAddresses.rpcUrl);
|
|
29
34
|
// Fetch rental state to get contract and borrower
|
|
30
|
-
let
|
|
35
|
+
let rentalStateAddress;
|
|
31
36
|
try {
|
|
32
|
-
if (!
|
|
33
|
-
throw new Error(`
|
|
37
|
+
if (!rentalState) {
|
|
38
|
+
throw new Error(`rentalState is ${rentalState}, cannot proceed`);
|
|
34
39
|
}
|
|
35
|
-
|
|
36
|
-
if (!
|
|
40
|
+
rentalStateAddress = await fetchMaybeRentalState(rpc, toAddress(rentalState));
|
|
41
|
+
if (!rentalStateAddress.exists) {
|
|
37
42
|
throw new Error(`Rental state not found: ${rentalStateAddress}`);
|
|
38
43
|
}
|
|
39
44
|
}
|
|
@@ -41,12 +46,12 @@ async function _closeRental(params, config) {
|
|
|
41
46
|
throw new Error(`Failed to fetch rental state: ${error}`);
|
|
42
47
|
}
|
|
43
48
|
// Extract required addresses from rental state
|
|
44
|
-
const contractAddress =
|
|
45
|
-
const borrower =
|
|
49
|
+
const contractAddress = rentalStateAddress.data.contract;
|
|
50
|
+
const borrower = rentalStateAddress.data.borrower;
|
|
46
51
|
// Derive PDAs similar to accept.ts
|
|
47
52
|
const rentalAuthorityPda = await deriveRentalAuthority(resolvedAddresses.srslyProgramAddress.toString());
|
|
48
53
|
// 🔧 FIX: Derive rental thread PDA using Antegen program ID and the passed-in rental state address
|
|
49
|
-
const rentalThreadPda = await deriveRentalThread(rentalAuthorityPda, toAddress(
|
|
54
|
+
const rentalThreadPda = await deriveRentalThread(rentalAuthorityPda, toAddress(rentalState), // Use the passed-in rental state address
|
|
50
55
|
resolvedAddresses.antegenProgramAddress);
|
|
51
56
|
// Fetch contract state to get owner
|
|
52
57
|
let contractState;
|
|
@@ -59,26 +64,22 @@ async function _closeRental(params, config) {
|
|
|
59
64
|
catch (error) {
|
|
60
65
|
throw new Error(`Failed to fetch contract state: ${error}`);
|
|
61
66
|
}
|
|
62
|
-
// Fetch config state to get the authority
|
|
63
|
-
const [configPda] = await getProgramDerivedAddress({
|
|
64
|
-
programAddress: resolvedAddresses.srslyProgramAddress,
|
|
65
|
-
seeds: [
|
|
66
|
-
getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])), // "config"
|
|
67
|
-
],
|
|
68
|
-
});
|
|
67
|
+
// Fetch config state to get the authority using zero-argument overload
|
|
69
68
|
let configState;
|
|
70
69
|
try {
|
|
71
|
-
configState = await
|
|
70
|
+
configState = await fetchConfigState();
|
|
72
71
|
if (!configState.exists) {
|
|
73
|
-
throw new Error(
|
|
72
|
+
throw new Error('Config not found');
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
catch (error) {
|
|
77
76
|
throw new Error(`Failed to fetch config state: ${error}`);
|
|
78
77
|
}
|
|
78
|
+
// Handle payer using smart signer handler for universal compatibility
|
|
79
|
+
const payerSigner = createTransactionSigner(payer);
|
|
79
80
|
// Only provide required fields - let Codama auto-generate the rest except rental_thread
|
|
80
81
|
const input = {
|
|
81
|
-
payer:
|
|
82
|
+
payer: payerSigner, // Pass TransactionSigner for proper handling
|
|
82
83
|
mint: resolvedAddresses.atlasMint, // Use resolved ATLAS mint from config
|
|
83
84
|
authority: toAddress(configState.data.authority), // Config authority for fee collection
|
|
84
85
|
borrower: toAddress(borrower),
|
|
@@ -138,19 +139,19 @@ async function _closeRental(params, config) {
|
|
|
138
139
|
* // Close a completed rental
|
|
139
140
|
* const instruction = await closeRental({
|
|
140
141
|
* payer: wallet, // Transaction payer
|
|
141
|
-
*
|
|
142
|
+
* rentalState: "RentalState..." // Rental state address
|
|
142
143
|
* });
|
|
143
144
|
*
|
|
144
145
|
* // Configure for mainnet
|
|
145
146
|
* const mainnetInstruction = await closeRental({
|
|
146
147
|
* payer: wallet,
|
|
147
|
-
*
|
|
148
|
+
* rentalState: "RentalState..."
|
|
148
149
|
* }).set({ programs: 'mainnet' });
|
|
149
150
|
*
|
|
150
151
|
* // Convert to @solana/web3.js format
|
|
151
152
|
* const web3jsInstruction = await closeRental({
|
|
152
153
|
* payer: wallet,
|
|
153
|
-
*
|
|
154
|
+
* rentalState: "RentalState..."
|
|
154
155
|
* }).web3js();
|
|
155
156
|
*
|
|
156
157
|
* // Use with your preferred Solana library
|
|
@@ -184,4 +185,14 @@ export function getCloseRentalInstructionAsync(input, options) {
|
|
|
184
185
|
return instructionsModule.getCloseRentalInstructionAsync(input, options);
|
|
185
186
|
});
|
|
186
187
|
}
|
|
188
|
+
// Demo export for documentation site
|
|
189
|
+
export const closeRentalDemo = {
|
|
190
|
+
tabName: "close",
|
|
191
|
+
description: "Close a completed rental",
|
|
192
|
+
imports: `import { closeRental } from '@wuwei-labs/srsly';`,
|
|
193
|
+
instruction: `const instruction = await closeRental({
|
|
194
|
+
payer: (signer || wallet).publicKey?.toBase58(),
|
|
195
|
+
rentalState: "RENTAL_STATE_ADDRESS"
|
|
196
|
+
});`
|
|
197
|
+
};
|
|
187
198
|
//# sourceMappingURL=close.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/rental/close.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,uBAAuB,EAA2C,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/rental/close.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { deriveGameAccounts } from '../utils';
|
|
|
4
4
|
import { createFluentInstruction, createSmartFluentConfigSelector } from '../utils/instruction-converter';
|
|
5
5
|
import { fetchMaybeContractState } from '../codama/accounts';
|
|
6
6
|
import { createSolanaRpc } from '@solana/kit';
|
|
7
|
+
import { createTransactionSigner } from '../utils/signer';
|
|
7
8
|
/**
|
|
8
9
|
* Internal function to create a contract reset temp instruction with configuration options.
|
|
9
10
|
*
|
|
@@ -39,9 +40,11 @@ async function _resetContractTemp(params, config) {
|
|
|
39
40
|
// Manually derive ALL game accounts - they all use different program addresses
|
|
40
41
|
const { starbase, starbasePlayer } = await deriveGameAccounts(toAddress(ownerProfile), faction, resolvedAddresses.gameId, 0, // starbaseSeqId
|
|
41
42
|
config);
|
|
43
|
+
// Handle signer using smart signer handler for universal compatibility
|
|
44
|
+
const signerTransactionSigner = createTransactionSigner(signer);
|
|
42
45
|
// Create input for the instruction
|
|
43
46
|
const input = {
|
|
44
|
-
signer:
|
|
47
|
+
signer: signerTransactionSigner, // Pass TransactionSigner for proper handling
|
|
45
48
|
contract: toAddress(contract), // Contract to reset
|
|
46
49
|
fleet: toAddress(fleet), // Fleet from contract
|
|
47
50
|
gameId: resolvedAddresses.gameId, // Game ID from config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset-contract-temp.js","sourceRoot":"","sources":["../../../src/rental/reset-contract-temp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,SAAS,EAA2C,MAAM,iBAAiB,CAAC;AAC/I,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAA0D,MAAM,gCAAgC,CAAC;AAClK,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"reset-contract-temp.js","sourceRoot":"","sources":["../../../src/rental/reset-contract-temp.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/rental/reset.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { getModule, createConfigSelector, resolveProgramAddresses } from '../utils/config';
|
|
1
|
+
import { getModule, createConfigSelector, resolveProgramAddresses, getConfig } from '../utils/config';
|
|
2
2
|
import { toAddress } from '../utils/constants';
|
|
3
3
|
import { deriveGameAccounts } from '../utils';
|
|
4
|
+
import { createFluentInstruction, createSmartFluentConfigSelector } from '../utils/instruction-converter';
|
|
5
|
+
import { fetchContractState } from '../utils/fetch-accounts';
|
|
6
|
+
import { createTransactionSigner } from '../utils/signer';
|
|
4
7
|
/**
|
|
5
8
|
* Internal function to reset a rental instruction with configuration options.
|
|
6
9
|
*
|
|
@@ -15,28 +18,115 @@ import { deriveGameAccounts } from '../utils';
|
|
|
15
18
|
* @throws Error when account derivation fails or required parameters are missing
|
|
16
19
|
*/
|
|
17
20
|
async function _resetRental(params, config) {
|
|
21
|
+
console.log('🔄 Starting resetRental with params:', {
|
|
22
|
+
hasPayer: !!params.payer,
|
|
23
|
+
hasFleet: !!params.fleet,
|
|
24
|
+
contract: params.contract,
|
|
25
|
+
hasRentalState: !!params.rentalState,
|
|
26
|
+
faction: params.faction,
|
|
27
|
+
hasOwnerProfile: !!params.ownerProfile
|
|
28
|
+
});
|
|
18
29
|
const { payer, fleet, contract, rentalState, faction, ownerProfile, } = params;
|
|
19
30
|
// Get the resolved addresses from config (including network-specific addresses)
|
|
20
|
-
|
|
31
|
+
// Use global config as fallback, same pattern as acceptRental
|
|
32
|
+
const globalConfig = getConfig();
|
|
33
|
+
const effectiveConfig = { ...globalConfig, ...config };
|
|
34
|
+
const resolvedAddresses = await resolveProgramAddresses(effectiveConfig);
|
|
35
|
+
// Validate contract address before fetching
|
|
36
|
+
if (typeof contract === 'string' && (contract.includes('CONTRACT_ADDRESS') || contract.length < 32)) {
|
|
37
|
+
throw new Error(`Invalid contract address: "${contract}". Please provide a valid Solana address (32-44 characters).`);
|
|
38
|
+
}
|
|
39
|
+
// Fetch fleet, rentalState, and ownerProfile from contract if not provided
|
|
40
|
+
let fleetAddress;
|
|
41
|
+
let rentalStateAddress;
|
|
42
|
+
let ownerProfileAddress;
|
|
43
|
+
// Check if we need to fetch contract state
|
|
44
|
+
const needsContractFetch = !fleet || !rentalState || !ownerProfile;
|
|
45
|
+
if (needsContractFetch) {
|
|
46
|
+
console.log('🔍 Fetching contract state to retrieve missing fields...');
|
|
47
|
+
try {
|
|
48
|
+
const contractState = await fetchContractState(toAddress(contract));
|
|
49
|
+
// Use provided fleet or fetch from contract
|
|
50
|
+
if (fleet) {
|
|
51
|
+
if (typeof fleet === 'string' && (fleet.includes('FLEET_ADDRESS') || fleet.length < 32)) {
|
|
52
|
+
throw new Error(`Invalid fleet address: "${fleet}". Please provide a valid Solana address (32-44 characters).`);
|
|
53
|
+
}
|
|
54
|
+
fleetAddress = fleet;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
fleetAddress = contractState.data.fleet;
|
|
58
|
+
}
|
|
59
|
+
// Use provided rentalState or fetch from contract
|
|
60
|
+
if (rentalState) {
|
|
61
|
+
if (typeof rentalState === 'string' && (rentalState.includes('RENTAL_STATE_ADDRESS') || rentalState.length < 32)) {
|
|
62
|
+
throw new Error(`Invalid rental state address: "${rentalState}". Please provide a valid Solana address (32-44 characters).`);
|
|
63
|
+
}
|
|
64
|
+
rentalStateAddress = rentalState;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
rentalStateAddress = contractState.data.currentRentalState;
|
|
68
|
+
}
|
|
69
|
+
// Use provided ownerProfile or fetch from contract
|
|
70
|
+
if (ownerProfile) {
|
|
71
|
+
if (typeof ownerProfile === 'string' && (ownerProfile.includes('OWNER_PROFILE_ADDRESS') || ownerProfile.length < 32)) {
|
|
72
|
+
throw new Error(`Invalid owner profile address: "${ownerProfile}". Please provide a valid Solana address (32-44 characters).`);
|
|
73
|
+
}
|
|
74
|
+
ownerProfileAddress = ownerProfile;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
ownerProfileAddress = contractState.data.ownerProfile;
|
|
78
|
+
}
|
|
79
|
+
console.log('✅ Contract state fetched:', {
|
|
80
|
+
fleet: fleetAddress,
|
|
81
|
+
owner: contractState.data.owner,
|
|
82
|
+
currentRentalState: rentalStateAddress,
|
|
83
|
+
ownerProfile: ownerProfileAddress,
|
|
84
|
+
toClose: contractState.data.toClose
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error('❌ Failed to fetch contract state:', error);
|
|
89
|
+
throw new Error(`Failed to fetch contract state: ${error}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
console.log('🚢 Using all provided addresses');
|
|
94
|
+
// Validate all provided addresses
|
|
95
|
+
if (typeof fleet === 'string' && (fleet.includes('FLEET_ADDRESS') || fleet.length < 32)) {
|
|
96
|
+
throw new Error(`Invalid fleet address: "${fleet}". Please provide a valid Solana address (32-44 characters).`);
|
|
97
|
+
}
|
|
98
|
+
if (typeof rentalState === 'string' && (rentalState.includes('RENTAL_STATE_ADDRESS') || rentalState.length < 32)) {
|
|
99
|
+
throw new Error(`Invalid rental state address: "${rentalState}". Please provide a valid Solana address (32-44 characters).`);
|
|
100
|
+
}
|
|
101
|
+
if (typeof ownerProfile === 'string' && (ownerProfile.includes('OWNER_PROFILE_ADDRESS') || ownerProfile.length < 32)) {
|
|
102
|
+
throw new Error(`Invalid owner profile address: "${ownerProfile}". Please provide a valid Solana address (32-44 characters).`);
|
|
103
|
+
}
|
|
104
|
+
fleetAddress = fleet;
|
|
105
|
+
rentalStateAddress = rentalState;
|
|
106
|
+
ownerProfileAddress = ownerProfile;
|
|
107
|
+
}
|
|
21
108
|
// Derive the three accounts we need
|
|
22
|
-
const { starbase, starbasePlayer } = await deriveGameAccounts(toAddress(
|
|
109
|
+
const { starbase, starbasePlayer } = await deriveGameAccounts(toAddress(ownerProfileAddress), faction, resolvedAddresses.gameId, 0, // starbaseSeqId
|
|
23
110
|
config);
|
|
24
111
|
// Get network-specific codama functions from centralized config
|
|
25
112
|
const instructionsModule = getModule('instructions');
|
|
26
113
|
const programsModule = getModule('programs');
|
|
27
114
|
const { getResetRentalInstructionAsync } = instructionsModule;
|
|
28
115
|
const { SRSLY_PROGRAM_ADDRESS } = programsModule;
|
|
29
|
-
//
|
|
116
|
+
// Handle payer using smart signer handler for universal compatibility
|
|
117
|
+
const payerSigner = createTransactionSigner(payer);
|
|
118
|
+
// Let codama derive the rest (rentalAuthority)
|
|
30
119
|
const input = {
|
|
31
|
-
signer:
|
|
32
|
-
fleet: toAddress(
|
|
120
|
+
signer: payerSigner, // Pass TransactionSigner for proper handling
|
|
121
|
+
fleet: toAddress(fleetAddress), // Use resolved fleet address
|
|
33
122
|
contract: toAddress(contract), // Ensure string
|
|
34
|
-
rentalState: toAddress(
|
|
123
|
+
rentalState: toAddress(rentalStateAddress), // Use resolved rental state address
|
|
35
124
|
gameId: resolvedAddresses.gameId, // Already Address from resolveProgramAddresses
|
|
36
125
|
starbase, // Already string from deriveGameAccounts
|
|
37
126
|
starbasePlayer, // Already string from deriveGameAccounts
|
|
38
127
|
};
|
|
39
|
-
|
|
128
|
+
const rawInstruction = await getResetRentalInstructionAsync(input, { programAddress: SRSLY_PROGRAM_ADDRESS });
|
|
129
|
+
return createFluentInstruction(rawInstruction);
|
|
40
130
|
}
|
|
41
131
|
/**
|
|
42
132
|
* Creates an instruction to reset a rental contract after cancellation with fluent configuration.
|
|
@@ -80,31 +170,35 @@ async function _resetRental(params, config) {
|
|
|
80
170
|
* ```typescript
|
|
81
171
|
* import { resetRental } from '@srsly/sdk';
|
|
82
172
|
*
|
|
83
|
-
* // Reset a canceled rental
|
|
173
|
+
* // Reset a canceled rental (all addresses auto-fetched from contract)
|
|
84
174
|
* const instruction = await resetRental({
|
|
85
|
-
*
|
|
175
|
+
* payer: wallet, // Transaction payer
|
|
86
176
|
* contract: "ContractAddr...", // Contract to reactivate
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
177
|
+
* faction: 'mud' // Owner's faction
|
|
178
|
+
* });
|
|
179
|
+
*
|
|
180
|
+
* // Optionally provide explicit addresses to avoid fetching
|
|
181
|
+
* const instruction = await resetRental({
|
|
182
|
+
* payer: wallet,
|
|
183
|
+
* fleet: "FleetAddress123...", // Optional: will be fetched if omitted
|
|
184
|
+
* contract: "ContractAddr...",
|
|
185
|
+
* rentalState: "RentalStateAddr...", // Optional: will be fetched if omitted
|
|
186
|
+
* faction: 'mud',
|
|
187
|
+
* ownerProfile: "OwnerProfileAddr..." // Optional: will be fetched if omitted
|
|
90
188
|
* });
|
|
91
189
|
*
|
|
92
190
|
* // Configure for mainnet
|
|
93
191
|
* const mainnetInstruction = await resetRental({
|
|
94
|
-
*
|
|
192
|
+
* payer: wallet,
|
|
95
193
|
* contract: "ContractAddr...",
|
|
96
|
-
*
|
|
97
|
-
* faction: 1, // Can use numbers: 1=mud, 2=oni, 3=ustur
|
|
98
|
-
* ownerProfile: "OwnerProfileAddr..."
|
|
194
|
+
* faction: 1 // Can use numbers: 1=mud, 2=oni, 3=ustur
|
|
99
195
|
* }).set({ programs: 'mainnet' });
|
|
100
196
|
*
|
|
101
197
|
* // Override specific game configuration
|
|
102
198
|
* const customInstruction = await resetRental({
|
|
103
|
-
*
|
|
199
|
+
* payer: wallet,
|
|
104
200
|
* contract: "ContractAddr...",
|
|
105
|
-
*
|
|
106
|
-
* faction: 'mud',
|
|
107
|
-
* ownerProfile: "OwnerProfileAddr..."
|
|
201
|
+
* faction: 'mud'
|
|
108
202
|
* }).set({
|
|
109
203
|
* programs: 'mainnet',
|
|
110
204
|
* gameId: 'custom-game-id...'
|
|
@@ -112,11 +206,9 @@ async function _resetRental(params, config) {
|
|
|
112
206
|
*
|
|
113
207
|
* // Convert to @solana/web3.js format
|
|
114
208
|
* const web3jsInstruction = await resetRental({
|
|
115
|
-
*
|
|
209
|
+
* payer: wallet,
|
|
116
210
|
* contract: "ContractAddr...",
|
|
117
|
-
*
|
|
118
|
-
* faction: 'mud',
|
|
119
|
-
* ownerProfile: "OwnerProfileAddr..."
|
|
211
|
+
* faction: 'mud'
|
|
120
212
|
* }).web3js();
|
|
121
213
|
*
|
|
122
214
|
* // Use with your preferred Solana library
|
|
@@ -125,11 +217,12 @@ async function _resetRental(params, config) {
|
|
|
125
217
|
* ```
|
|
126
218
|
*
|
|
127
219
|
* @param params - The rental reset parameters including fleet, contract, rental state, and owner details
|
|
128
|
-
* @returns A
|
|
220
|
+
* @returns A SmartFluentConfigSelector that can be configured with .set() or awaited directly
|
|
129
221
|
* @throws Error when rental is not in canceled state or instruction generation fails
|
|
130
222
|
*/
|
|
131
223
|
export function resetRental(params) {
|
|
132
|
-
|
|
224
|
+
const baseSelector = createConfigSelector((config) => _resetRental(params, config));
|
|
225
|
+
return createSmartFluentConfigSelector(baseSelector);
|
|
133
226
|
}
|
|
134
227
|
/**
|
|
135
228
|
* Low-level function to create a rental reset instruction with raw input parameters.
|
|
@@ -149,4 +242,15 @@ export function getResetRentalInstructionAsync(input, options) {
|
|
|
149
242
|
return instructionsModule.getResetRentalInstructionAsync(input, options);
|
|
150
243
|
});
|
|
151
244
|
}
|
|
245
|
+
// Demo export for documentation site
|
|
246
|
+
export const resetRentalDemo = {
|
|
247
|
+
tabName: "reset",
|
|
248
|
+
description: "Reset a canceled rental",
|
|
249
|
+
imports: `import { resetRental } from '@wuwei-labs/srsly';`,
|
|
250
|
+
instruction: `const instruction = await resetRental({
|
|
251
|
+
payer: (signer || wallet).publicKey?.toBase58(),
|
|
252
|
+
contract: "CONTRACT_ADDRESS",
|
|
253
|
+
faction: "oni" // or "mud", "ustur"
|
|
254
|
+
});`
|
|
255
|
+
};
|
|
152
256
|
//# sourceMappingURL=reset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/rental/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,uBAAuB,EAA2C,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/rental/reset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createSolanaRpc } from '@solana/kit';
|
|
2
|
-
import { fetchContractState as fetchContractStateCodama, fetchRentalState as fetchRentalStateCodama, fetchAllContractState, fetchAllRentalState } from '../codama/accounts';
|
|
2
|
+
import { fetchContractState as fetchContractStateCodama, fetchRentalState as fetchRentalStateCodama, fetchMaybeConfig as fetchConfigStateCodama, fetchAllContractState, fetchAllRentalState } from '../codama/accounts';
|
|
3
3
|
import { getConfig, resolveProgramAddresses } from './config';
|
|
4
4
|
import { toAddress } from './constants';
|
|
5
|
+
import { deriveConfigPda } from './sdk-helpers';
|
|
5
6
|
// Implementation
|
|
6
7
|
export async function fetchContractState(rpcUrlOrAddress, contractAddress) {
|
|
7
8
|
// If only one argument, it's the contract address using default RPC
|
|
@@ -34,6 +35,30 @@ export async function fetchRentalState(rpcUrlOrAddress, rentalAddress) {
|
|
|
34
35
|
const rpc = createSolanaRpc(rpcUrl);
|
|
35
36
|
return fetchRentalStateCodama(rpc, address);
|
|
36
37
|
}
|
|
38
|
+
// Implementation
|
|
39
|
+
export async function fetchConfigState(rpcUrlOrAddress, configAddress) {
|
|
40
|
+
// If no arguments, derive config PDA automatically from global config
|
|
41
|
+
if (rpcUrlOrAddress === undefined) {
|
|
42
|
+
const config = getConfig();
|
|
43
|
+
const resolved = await resolveProgramAddresses(config);
|
|
44
|
+
const [configPda] = await deriveConfigPda(resolved.srslyProgramAddress);
|
|
45
|
+
const rpc = createSolanaRpc(resolved.rpcUrl);
|
|
46
|
+
return fetchConfigStateCodama(rpc, configPda);
|
|
47
|
+
}
|
|
48
|
+
// If only one argument, it's the config address using default RPC
|
|
49
|
+
if (configAddress === undefined) {
|
|
50
|
+
const address = toAddress(rpcUrlOrAddress);
|
|
51
|
+
const config = getConfig();
|
|
52
|
+
const resolved = await resolveProgramAddresses(config);
|
|
53
|
+
const rpc = createSolanaRpc(resolved.rpcUrl);
|
|
54
|
+
return fetchConfigStateCodama(rpc, address);
|
|
55
|
+
}
|
|
56
|
+
// If two arguments, first is rpcUrl, second is address
|
|
57
|
+
const rpcUrl = rpcUrlOrAddress;
|
|
58
|
+
const address = toAddress(configAddress);
|
|
59
|
+
const rpc = createSolanaRpc(rpcUrl);
|
|
60
|
+
return fetchConfigStateCodama(rpc, address);
|
|
61
|
+
}
|
|
37
62
|
/**
|
|
38
63
|
* Fetches multiple contract states in a single RPC call
|
|
39
64
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-accounts.js","sourceRoot":"","sources":["../../../src/utils/fetch-accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgB,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,kBAAkB,IAAI,wBAAwB,EAC9C,gBAAgB,IAAI,sBAAsB,EAC1C,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"fetch-accounts.js","sourceRoot":"","sources":["../../../src/utils/fetch-accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -7,4 +7,5 @@ export * from "./instruction-converter";
|
|
|
7
7
|
export * from "./fetch-accounts";
|
|
8
8
|
export * from "./pda";
|
|
9
9
|
export * from "./signer";
|
|
10
|
+
export { createRpcFromConfig, deriveConfigPda, fetchAccountWithValidation, fetchMultipleAccounts, deriveAllRentalPDAs, ErrorMessages } from "./sdk-helpers";
|
|
10
11
|
//# 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;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,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;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACd,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../../../src/utils/pda.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../../../src/utils/pda.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { createSolanaRpc, address } from '@solana/kit';
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { getProgramDerivedAddress, getBytesEncoder } from '@solana/kit';
|
|
4
|
+
/**
|
|
5
|
+
* SDK Helper utilities to reduce code duplication across instruction implementations
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates an RPC connection from resolved addresses, with validation
|
|
9
|
+
*/
|
|
10
|
+
export function createRpcFromConfig(resolvedAddresses, operationName) {
|
|
11
|
+
if (!resolvedAddresses.rpcUrl) {
|
|
12
|
+
throw new Error(`rpcUrl is required for ${operationName} operation. Use setConfig({ rpcUrl: "https://..." })`);
|
|
13
|
+
}
|
|
14
|
+
return createSolanaRpc(resolvedAddresses.rpcUrl);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Derives the config PDA for the SRSLY program
|
|
18
|
+
*/
|
|
19
|
+
export async function deriveConfigPda(programAddress) {
|
|
20
|
+
const programPubkey = typeof programAddress === 'string' ? programAddress : programAddress.toBase58();
|
|
21
|
+
const [pdaAddress, bump] = await getProgramDerivedAddress({
|
|
22
|
+
programAddress: address(programPubkey),
|
|
23
|
+
seeds: [getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103]))], // "config" bytes
|
|
24
|
+
});
|
|
25
|
+
return [pdaAddress, bump];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generic fetch function with validation and error handling
|
|
29
|
+
*/
|
|
30
|
+
export async function fetchAccountWithValidation(fetchFn, rpc, accountAddress, accountType) {
|
|
31
|
+
const addressStr = typeof accountAddress === 'string' ? accountAddress : accountAddress.toBase58();
|
|
32
|
+
try {
|
|
33
|
+
const account = await fetchFn(rpc, address(addressStr));
|
|
34
|
+
if (!account.exists) {
|
|
35
|
+
throw new Error(`${accountType} not found at address: ${addressStr}`);
|
|
36
|
+
}
|
|
37
|
+
return account;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
throw new Error(`Failed to fetch ${accountType}: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Batch fetch multiple accounts with proper error handling
|
|
48
|
+
*/
|
|
49
|
+
export async function fetchMultipleAccounts(fetchOperations, rpc) {
|
|
50
|
+
const results = await Promise.all(fetchOperations.map(async ({ fetchFn, address: addr, accountType }) => {
|
|
51
|
+
const account = await fetchAccountWithValidation(fetchFn, rpc, addr, accountType);
|
|
52
|
+
return account;
|
|
53
|
+
}));
|
|
54
|
+
const accountMap = {};
|
|
55
|
+
fetchOperations.forEach((op, index) => {
|
|
56
|
+
accountMap[op.key] = results[index];
|
|
57
|
+
});
|
|
58
|
+
return accountMap;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convert public key to address format used by the SDK
|
|
62
|
+
*/
|
|
63
|
+
export function toAddressString(key) {
|
|
64
|
+
return typeof key === 'string' ? key : key.toBase58();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Derive all rental-related PDAs in one call
|
|
68
|
+
*/
|
|
69
|
+
export async function deriveAllRentalPDAs(contract, borrower, programAddress, antegenProgramAddress) {
|
|
70
|
+
const contractAddr = toAddressString(contract);
|
|
71
|
+
const borrowerAddr = toAddressString(borrower);
|
|
72
|
+
const programAddr = toAddressString(programAddress);
|
|
73
|
+
const antegenAddr = toAddressString(antegenProgramAddress);
|
|
74
|
+
// These would use your existing PDA derivation functions
|
|
75
|
+
const [rentalState, rentalStateBump] = await getProgramDerivedAddress({
|
|
76
|
+
programAddress: address(programAddr),
|
|
77
|
+
seeds: [
|
|
78
|
+
getBytesEncoder().encode(new Uint8Array([114, 101, 110, 116, 97, 108, 95, 115, 116, 97, 116, 101])), // "rental_state"
|
|
79
|
+
getBytesEncoder().encode(new PublicKey(contractAddr).toBytes()),
|
|
80
|
+
getBytesEncoder().encode(new PublicKey(borrowerAddr).toBytes()),
|
|
81
|
+
],
|
|
82
|
+
});
|
|
83
|
+
const [rentalAuthority, rentalAuthorityBump] = await getProgramDerivedAddress({
|
|
84
|
+
programAddress: address(programAddr),
|
|
85
|
+
seeds: [
|
|
86
|
+
getBytesEncoder().encode(new Uint8Array([114, 101, 110, 116, 97, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121])), // "rental_authority"
|
|
87
|
+
getBytesEncoder().encode(new PublicKey(contractAddr).toBytes()),
|
|
88
|
+
getBytesEncoder().encode(new PublicKey(borrowerAddr).toBytes()),
|
|
89
|
+
],
|
|
90
|
+
});
|
|
91
|
+
const [rentalThread, rentalThreadBump] = await getProgramDerivedAddress({
|
|
92
|
+
programAddress: address(antegenAddr),
|
|
93
|
+
seeds: [
|
|
94
|
+
getBytesEncoder().encode(new Uint8Array([116, 104, 114, 101, 97, 100])), // "thread"
|
|
95
|
+
getBytesEncoder().encode(new PublicKey(rentalAuthority).toBytes()),
|
|
96
|
+
getBytesEncoder().encode(new PublicKey(rentalState).toBytes()),
|
|
97
|
+
],
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
rentalState: [rentalState, rentalStateBump],
|
|
101
|
+
rentalAuthority: [rentalAuthority, rentalAuthorityBump],
|
|
102
|
+
rentalThread: [rentalThread, rentalThreadBump],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Standard error messages for common scenarios
|
|
107
|
+
*/
|
|
108
|
+
export const ErrorMessages = {
|
|
109
|
+
rpcRequired: (operation) => `rpcUrl is required for ${operation} operation. Use setConfig({ library: "kit", rpcUrl: "https://..." })`,
|
|
110
|
+
accountNotFound: (type, address) => `${type} not found at address: ${address}`,
|
|
111
|
+
fetchFailed: (type, error) => `Failed to fetch ${type}: ${error}`,
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=sdk-helpers.js.map
|