UNPKG

@wuwei-labs/srsly

Version:
52 lines 1.94 kB
/** * @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