@wuwei-labs/srsly
Version:
TypeScript SDK for SRSLY
52 lines • 1.94 kB
JavaScript
/**
* @purpose Update affiliate settings (discount authority, authority transfer)
*
* Convenience wrapper around slyvault's affiliateUpdate instruction.
* Auto-fetches vault from affiliate member state.
*/
import { address } from '@solana/kit';
import { affiliateUpdate, fetchMember } from '@wuwei-labs/slyvault';
import { mergeConfig } from '../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"
* });
* ```
*/
export async function updateAffiliate(params, config) {
const finalConfig = 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 fetchMember(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 affiliateUpdate({
authority: params.authority,
vault: memberState.vault,
memberState: address(params.affiliateState),
discountAuthority: params.discountAuthority,
newAuthority: params.newAuthority,
computeUnits: params.computeUnits,
});
}
//# sourceMappingURL=updateAffiliate.js.map