// Copyright 2023 Centrifuge Foundation (centrifuge.io).

// Centrifuge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version (see http://www.gnu.org/licenses).

// Centrifuge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

use cfg_types::pools::PoolFeesList;
use parity_scale_codec::Codec;
use sp_api::decl_runtime_apis;

decl_runtime_apis! {
	/// Runtime for pallet-pool-fees.
	///
	/// Note: The runtime api is pallet specific, while the RPC methods
	///       are more focused on domain-specific logic
	pub trait PoolFeesApi<PoolId, FeeId, AccountId, Balance, Rate>
	where
		PoolId: Codec,
		FeeId: Codec,
		AccountId: Codec,
		Balance: Codec,
		Rate: Codec,
	{
		/// Simulate update of active fees and returns as list divided by buckets
		fn list_fees(pool_id: PoolId) -> Option<PoolFeesList<FeeId, AccountId, Balance, Rate>>;
	}
}
