@wuwei-labs/srsly
Version:
[](https://www.npmjs.com/package/ts-sdk-example)
44 lines • 1.8 kB
JavaScript
import { getCloseContractInstructionAsync, SRSLY_PROGRAM_ADDRESS, } from '../codama';
import { deriveGameAccounts, DEFAULT_GAME_ID, } from '../utils';
/**
* Asynchronously creates an instruction to close a rental contract with minimal required parameters.
* Derives rentalAuthority automatically and handles optional parameters.
*
* @example
* ```typescript
* // Create the instruction with automatic account derivation
* const ix = await closeContract({
* owner: wallet,
* fleet: fleetAddress,
* contract: contractAddress,
* faction: 'mud', // Only needed if starbase and starbasePlayer not provided
* // Optional: provide explicit starbase and starbasePlayer if you have them
* // Optional: provide rentalState and rentalTokenAccount if active rental exists
* });
*
* // Add to transaction and sign
* const tx = new Transaction().add(ix);
* await sendAndConfirmTransaction(connection, tx, [wallet]);
* ```
*
* @param params The simplified parameters for closing a rental contract
* @returns A promise that resolves to the instruction to close a contract
*/
export async function closeContract(params) {
const { owner, fleet, contract, faction, gameId = DEFAULT_GAME_ID, } = params;
const derivedAccounts = await deriveGameAccounts(owner.address, faction, gameId);
const starbase = derivedAccounts.starbase;
const starbasePlayer = derivedAccounts.starbasePlayer;
// Let codama derive the rest (rentalAuthority, ownerTokenAccount, etc.)
const input = {
owner,
fleet,
contract,
starbase,
starbasePlayer,
gameId,
};
return getCloseContractInstructionAsync(input, { programAddress: SRSLY_PROGRAM_ADDRESS });
}
export { getCloseContractInstructionAsync };
//# sourceMappingURL=close.js.map