Description
The platform currently routes all collected fees to a single address. For partner integrations, fees should be distributable across multiple platform addresses in configurable proportions, paid out at invoice finalisation.
Technical Context
Replace FeeRecipient: Address with FeeRecipients: Vec<(Address, u32)> (address, basis-point share) in storage::instance inside contracts/split/src/lib.rs. Define a FeeSplit struct in types.rs. Validate that fee recipient basis points sum to 10 000. Loop through recipients during payout and transfer each their proportional fee share.
Acceptance Criteria
Description
The platform currently routes all collected fees to a single address. For partner integrations, fees should be distributable across multiple platform addresses in configurable proportions, paid out at invoice finalisation.
Technical Context
Replace
FeeRecipient: AddresswithFeeRecipients: Vec<(Address, u32)>(address, basis-point share) instorage::instanceinsidecontracts/split/src/lib.rs. Define aFeeSplitstruct intypes.rs. Validate that fee recipient basis points sum to 10 000. Loop through recipients during payout and transfer each their proportional fee share.Acceptance Criteria
set_fee_recipientsvalidates that shares sum to exactly 10 000 basis pointsFeeRecipientsUpdated(recipients)event is emitted fromevents.rson change