af_iperps/
event_instance.rsuse af_move_type::otw::Otw;
use af_move_type::{FromRawStructError, MoveInstance};
use af_sui_types::StructTag;
use derive_more::{Display, From, IsVariant, TryInto};
#[derive(thiserror::Error, Debug)]
pub enum FromRawEventError {
#[error(transparent)]
FromRawStruct(#[from] FromRawStructError),
#[error("Not a Perpetuals event name: {0}")]
Name(String),
}
macro_rules! event_instance {
($Enum:ident {
$($variant:ident$(<$($T:ident),+>)?),+ $(,)?
}) => {
#[remain::sorted]
#[derive(Clone, Debug, Display, From, IsVariant, TryInto)]
#[non_exhaustive]
pub enum $Enum {
$(
$variant(MoveInstance<crate::events::$variant$(<$($T),+>)?>)
),+
}
impl $Enum {
pub fn new(type_: StructTag, bcs: impl AsRef<[u8]>) -> Result<Self, FromRawEventError> {
let name = type_.name.to_string();
let name_str = name.as_str();
Ok(match name_str {
$(
stringify!($variant) => Self::$variant(MoveInstance::from_raw_struct(
type_, bcs.as_ref()
)?),
)+
name => return Err(FromRawEventError::Name(name.to_owned())),
})
}
pub fn struct_tag(&self) -> StructTag {
match self {
$(
Self::$variant(inner) => inner.type_.clone().into(),
)+
}
}
}
};
}
event_instance!(EventInstance {
AcceptedPositionFeesProposal,
AllocatedCollateral,
AllocatedCollateralSubAccount,
CanceledOrder,
CanceledOrders,
CreatedAccount<Otw>,
CreatedClearingHouse,
CreatedMarginRatiosProposal,
CreatedOrderbook,
CreatedPosition,
CreatedPositionFeesProposal,
CreatedStopOrderTicket,
CreatedSubAccount,
DeallocatedCollateral,
DeallocatedCollateralSubAccount,
DeletedMarginRatiosProposal,
DeletedPositionFeesProposal,
DeletedStopOrderTicket,
DeletedSubAccount,
DepositedCollateral<Otw>,
DepositedCollateralSubAccount,
DonatedToInsuranceFund,
FilledMakerOrder,
FilledTakerOrder,
LiquidatedPosition,
OrderbookPostReceipt,
PostedOrder,
RegisteredCollateralInfo<Otw>,
RegisteredMarketInfo<Otw>,
RejectedPositionFeesProposal,
RemovedRegisteredMarketInfo<Otw>,
ResettedPositionFees,
SetSubAccountUser,
SettledFunding,
UpdatedBaseOracleTolerance,
UpdatedClearingHouseVersion,
UpdatedCollateralOracleTolerance,
UpdatedCumFundings,
UpdatedFees,
UpdatedFunding,
UpdatedFundingParameters,
UpdatedLiquidationTolerance,
UpdatedMarginRatios,
UpdatedMaxPendingOrders,
UpdatedMinOrderUsdValue,
UpdatedOpenInterestAndFeesAccrued,
UpdatedPremiumTwap,
UpdatedSpreadTwap,
UpdatedSpreadTwapParameters,
WithdrewCollateral<Otw>,
WithdrewCollateralSubAccount,
WithdrewFees,
WithdrewInsuranceFund,
});