UNPKG

@wuwei-labs/srsly

Version:
55 lines 2.1 kB
"use strict"; /** * @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