@wuwei-labs/srsly
Version:
TypeScript SDK for SRSLY
55 lines • 2.1 kB
JavaScript
;
/**
* @purpose Update affiliate settings (discount authority, authority transfer)
*
* Convenience wrapper around slyvault's affiliateUpdate instruction.
* Auto-fetches vault from affiliate member state.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateAffiliate = updateAffiliate;
const kit_1 = require("@solana/kit");
const slyvault_1 = require("@wuwei-labs/slyvault");
const config_1 = require("../utils/config");
/**
* Update an affiliate's discount-signing authority or transfer the
* affiliate seat to a new wallet.
*
* @param params - Update parameters
* @param config - Optional SDK configuration overrides
* @returns Prepared instruction(s)
*
* @example
* ```typescript
* import { updateAffiliate } from '@wuwei-labs/srsly';
*
* // Set discount authority for affiliate
* const ix = await updateAffiliate({
* authority: affiliateWallet,
* affiliateState: "AFFILIATE_STATE_PDA",
* discountAuthority: "DISCOUNT_AUTHORITY_ADDRESS"
* });
* ```
*/
async function updateAffiliate(params, config) {
const finalConfig = (0, config_1.mergeConfig)(config);
if (!params.authority)
throw new Error('authority is required');
if (!params.affiliateState)
throw new Error('affiliateState is required');
// Fetch affiliate member state to get vault
const { data: memberState } = await (0, slyvault_1.fetchMember)((0, kit_1.address)(params.affiliateState), finalConfig.rpcUrl);
// Validate member is Affiliate type
if (memberState.memberType.__kind !== 'Affiliate') {
throw new Error('Member is not an Affiliate type - use updateMember for Normal members');
}
// Delegate to slyvault affiliateUpdate
return (0, slyvault_1.affiliateUpdate)({
authority: params.authority,
vault: memberState.vault,
memberState: (0, kit_1.address)(params.affiliateState),
discountAuthority: params.discountAuthority,
newAuthority: params.newAuthority,
computeUnits: params.computeUnits,
});
}
//# sourceMappingURL=updateAffiliate.js.map