IAvmEventEmitter
Overview
Section titled “Overview”Centralized, exhaustive event catalog for AVM. The emitter is a relay; it should not own mutable protocol state beyond its directory pointer.
IAvmEventEmitter
Section titled “IAvmEventEmitter”Unit convention: every token-amount field on this interface is a RawTokenQuantity — a raw integer count of the relevant token’s smallest unit, in the token’s native decimals, with no implicit rescaling. The token identity is implied by the parameter name (*ReserveTokens*, *AvmTokens*, optionTokenAmount). RawTokenQuantity ABI-encodes identically to uint256, so retyping does not change event topic hashes or indexer-visible payloads.Identifier convention: tenant, group, and market identifiers use their branded aliases (TenantId, GroupId, MarketId) rather than bare bytes32. These aliases ABI-encode as bytes32 while making Solidity-facing event declarations harder to misuse.This interface is a pure event catalog — it declares no functions. The emit* relay functions protocol contracts call to route events through the emitter are internal plumbing and live in avm-program (IAvmEventRelay); each relay mirrors an identically named event here, and the event’s NatSpec is the single source of truth for field semantics.Event schema evolution is intended for additive changes only: adding a new event (with its emit* relay) is safe and transparent to existing indexers. The emitter is deployed behind a UUPS proxy so its address remains stable while the event catalog grows. Once external consumers depend on an event, do not mutate it in place. Changing an event’s parameter list or changing any struct in DataTypes.sol that appears in an event signature changes the event topic and breaks consumers. When a new shape is needed after that point, declare a new event (FooV2, FooV3) alongside the original and let indexers migrate. Normal catalog changes upgrade the emitter proxy in place and are visible through the standard ERC-1967 Upgraded(address) event. Repointing the directory to a different emitter proxy is reserved for initial setup or a deliberate migration.
Events
Section titled “Events”AvmTokensBought
Section titled “AvmTokensBought”Emitted on every successful AVM-token purchase against the pricing curve (buyWithExactReserveTokensIn or buyWithExactAvmTokensOut).
Fee model is fee-on-top: the spender pays grossReserveTokensIn, the market routes netCurveReserveTokensIn to the curve (which is what the pricing engine used to compute avmTokensOut), and the difference is split between platform and group escrow per fees. Identity: grossReserveTokensIn == netCurveReserveTokensIn + fees.platformReserveFee + fees.marketGroupReserveFee. avmTokensOut is minted directly to avmTokenReceiver, which may differ from reserveTokenSpender.
@avmTokenReceiver — Address credited with the freshly minted AVM tokens.
@avmTokensOut — AVM tokens minted to avmTokenReceiver.
@fees — Reserve-token fee distribution (platform + group).
@grossReserveTokensIn — Total reserve tokens pulled from the spender.
@market — Address of the market.
@marketId — Branded id of market.
@netCurveReserveTokensIn — Reserve tokens delivered to the curve after fees were taken.
@reserveTokenSpender — msg.sender who paid reserve tokens (the buyer).
event AvmTokensBought(indexed address market, indexed MarketId marketId, indexed address reserveTokenSpender, address avmTokenReceiver, RawTokenQuantity grossReserveTokensIn, RawTokenQuantity netCurveReserveTokensIn, RawTokenQuantity avmTokensOut, struct DataTypes.FeeDistributionBreakdown fees)Parameters
market—addressmarketId— MarketIdreserveTokenSpender—addressavmTokenReceiver—addressgrossReserveTokensIn— RawTokenQuantitynetCurveReserveTokensIn— RawTokenQuantityavmTokensOut— RawTokenQuantityfees— DataTypes.FeeDistributionBreakdown
AvmTokensRedeemedAtFloor
Section titled “AvmTokensRedeemedAtFloor”Emitted when AVM tokens are redeemed at the current floor price, outside the variable curve region.
Floor redemption is the constant-price exit path: the market pays floorPrice * avmTokensRedeemed (gross) and applies the sell-fee schedule before paying the redeemer. Identity matches AvmTokensSold: grossReserveTokensOut == netReserveTokensOut + fees.platformReserveFee + fees.marketGroupReserveFee.
@avmTokenRedeemer — msg.sender who supplied the AVM tokens.
@avmTokensRedeemed — AVM tokens burned from the redeemer.
@fees — Reserve-token fee distribution (platform + group).
@grossReserveTokensOut — Gross floor-price reserve value, before fees.
@market — Address of the market.
@marketId — Branded id of market.
@netReserveTokensOut — Net reserve tokens transferred to reserveTokenReceiver after fees.
@reserveTokenReceiver — Address paid the net reserve proceeds.
event AvmTokensRedeemedAtFloor(indexed address market, indexed MarketId marketId, indexed address avmTokenRedeemer, address reserveTokenReceiver, RawTokenQuantity avmTokensRedeemed, RawTokenQuantity grossReserveTokensOut, RawTokenQuantity netReserveTokensOut, struct DataTypes.FeeDistributionBreakdown fees)Parameters
market—addressmarketId— MarketIdavmTokenRedeemer—addressreserveTokenReceiver—addressavmTokensRedeemed— RawTokenQuantitygrossReserveTokensOut— RawTokenQuantitynetReserveTokensOut— RawTokenQuantityfees— DataTypes.FeeDistributionBreakdown
AvmTokensSold
Section titled “AvmTokensSold”Emitted on every successful AVM-token sale into the pricing curve (sellWithExactAvmTokensIn or sellWithExactReserveTokensOut).
Fee model is fee-from-gross: the engine quotes the gross reserve output, the market takes fees off the top, and the trader receives netReserveTokensOut. Identity: grossReserveTokensOut == netReserveTokensOut + fees.platformReserveFee + fees.marketGroupReserveFee. avmTokensSold is burned from avmTokenSeller and the proceeds flow to reserveTokenReceiver, which may differ from the seller.
@avmTokenSeller — msg.sender who supplied (and had burned) the AVM tokens.
@avmTokensSold — AVM tokens burned from the seller.
@fees — Reserve-token fee distribution (platform + group).
@grossReserveTokensOut — Gross reserve output the engine quoted before fees.
@market — Address of the market.
@marketId — Branded id of market.
@netReserveTokensOut — Net reserve tokens transferred to reserveTokenReceiver after fees.
@reserveTokenReceiver — Address paid the net reserve proceeds.
event AvmTokensSold(indexed address market, indexed MarketId marketId, indexed address avmTokenSeller, address reserveTokenReceiver, RawTokenQuantity avmTokensSold, RawTokenQuantity grossReserveTokensOut, RawTokenQuantity netReserveTokensOut, struct DataTypes.FeeDistributionBreakdown fees)Parameters
market—addressmarketId— MarketIdavmTokenSeller—addressreserveTokenReceiver—addressavmTokensSold— RawTokenQuantitygrossReserveTokensOut— RawTokenQuantitynetReserveTokensOut— RawTokenQuantityfees— DataTypes.FeeDistributionBreakdown
CollateralDeposited
Section titled “CollateralDeposited”Emitted when AVM tokens are pledged as collateral to a position. The depositor may be a third party crediting another holder.
depositor is msg.sender (the payer); positionOwner is the account whose position receives the collateral. They can be the same address. The market pulls amount AVM tokens from depositor and credits the position’s collateral balance.
@amount — AVM tokens pledged in this call.
@depositor — msg.sender who supplied the AVM tokens.
@market — Address of the market.
@marketId — Branded id of market.
@positionOwner — Position whose collateral is being increased.
event CollateralDeposited(indexed address market, indexed MarketId marketId, indexed address positionOwner, address depositor, RawTokenQuantity amount)Parameters
market—addressmarketId— MarketIdpositionOwner—addressdepositor—addressamount— RawTokenQuantity
CollateralWithdrawn
Section titled “CollateralWithdrawn”Emitted when an owner reclaims AVM collateral from their position.
Withdrawals always flow to the position owner (msg.sender == positionOwner); third parties cannot pull another holder’s collateral. The post-withdrawal collateral must still cover any outstanding debt at the current floor price; otherwise the call reverts without emitting.
@amount — AVM tokens withdrawn in this call.
@market — Address of the market.
@marketId — Branded id of market.
@positionOwner — Position whose collateral was reduced (also msg.sender).
event CollateralWithdrawn(indexed address market, indexed MarketId marketId, indexed address positionOwner, RawTokenQuantity amount)Parameters
market—addressmarketId— MarketIdpositionOwner—addressamount— RawTokenQuantity
DebtBorrowed
Section titled “DebtBorrowed”Emitted when a position owner draws a reserve-token cash advance against their AVM collateral.
Fee model is fee-from-gross on the draw: the owner’s debtBalance rises by debtIncreaseBy (debt is principal-not-fee, so the borrower owes the gross figure back), and the borrower receives netReserveProceeds — the gross minus the origination fee. Borrow capacity is bounded by floorPrice * collateral.
@debtIncreaseBy — Principal added to the position’s debt balance.
@fees — Reserve-token fee distribution (platform + group).
@market — Address of the market.
@marketId — Branded id of market.
@netReserveProceeds — Reserve tokens paid to the borrower after the origination fee (debtIncreaseBy minus fees).
@positionOwner — Position whose debt was increased (also msg.sender).
event DebtBorrowed(indexed address market, indexed MarketId marketId, indexed address positionOwner, RawTokenQuantity debtIncreaseBy, RawTokenQuantity netReserveProceeds, struct DataTypes.FeeDistributionBreakdown fees)Parameters
market—addressmarketId— MarketIdpositionOwner—addressdebtIncreaseBy— RawTokenQuantitynetReserveProceeds— RawTokenQuantityfees— DataTypes.FeeDistributionBreakdown
DebtRepaid
Section titled “DebtRepaid”Emitted when reserve-token debt is repaid against an existing position. Repayments may be made by a third party on behalf of the owner.
repayer is msg.sender and supplies the reserve tokens; positionOwner is the account whose debt is being reduced. They can be the same address. amountRepaid is capped to the position’s outstanding debt before this call; any excess passed in is not pulled. No fees are charged on repayment.
@amountRepaid — Reserve tokens that actually reduced debt (capped at outstanding).
@market — Address of the market.
@marketId — Branded id of market.
@positionOwner — Position whose debt was reduced.
@repayer — msg.sender who supplied the reserve tokens.
event DebtRepaid(indexed address market, indexed MarketId marketId, address repayer, indexed address positionOwner, RawTokenQuantity amountRepaid)Parameters
market—addressmarketId— MarketIdrepayer—addresspositionOwner—addressamountRepaid— RawTokenQuantity
FloorRaisedFromExcessLiquidity
Section titled “FloorRaisedFromExcessLiquidity”Emitted when a group admin raises a market’s floor by consuming surplus reserve liquidity already held by the market.
Surplus consumed equals the increase in total area requirement at the current supply. Reserve backing does not change.
@actor — Caller that performed the raise.
@currentSupply — Net-issued supply used for the engine quote.
@market — Address of the market whose floor changed.
@marketId — Branded id of market.
@newFloorPrice — Floor price after the raise.
@previousFloorPrice — Floor price before the raise.
@previousTotalAreaInReserveToken — Reserve requirement before the raise.
@surplusConsumed — Reserve surplus absorbed by the raise.
@totalAreaInReserveToken — Reserve requirement after the raise.
event FloorRaisedFromExcessLiquidity(indexed address market, indexed MarketId marketId, indexed address actor, ExchangeRate previousFloorPrice, ExchangeRate newFloorPrice, RawTokenQuantity currentSupply, RawTokenQuantity previousTotalAreaInReserveToken, RawTokenQuantity totalAreaInReserveToken, RawTokenQuantity surplusConsumed)Parameters
market—addressmarketId— MarketIdactor—addresspreviousFloorPrice— ExchangeRatenewFloorPrice— ExchangeRatecurrentSupply— RawTokenQuantitypreviousTotalAreaInReserveToken— RawTokenQuantitytotalAreaInReserveToken— RawTokenQuantitysurplusConsumed— RawTokenQuantity
FloorRaisedPreserveArea
Section titled “FloorRaisedPreserveArea”Emitted when a group admin raises a market’s floor while preserving total curve area at the current supply.
The ramp–main boundary advances to the admin-chosen target. Total area before and after should match.
@actor — Caller that performed the raise.
@currentSupply — Net-issued supply used for the engine quote.
@market — Address of the market whose floor changed.
@marketId — Branded id of market.
@newFloorPrice — Floor price after the raise.
@newRampEndSupply — Admin-chosen ramp–main boundary after the raise.
@previousFloorPrice — Floor price before the raise.
@previousTotalAreaInReserveToken — Total area before the raise.
@totalAreaInReserveToken — Total area after the raise.
event FloorRaisedPreserveArea(indexed address market, indexed MarketId marketId, indexed address actor, ExchangeRate previousFloorPrice, ExchangeRate newFloorPrice, RawTokenQuantity newRampEndSupply, RawTokenQuantity currentSupply, RawTokenQuantity previousTotalAreaInReserveToken, RawTokenQuantity totalAreaInReserveToken)Parameters
market—addressmarketId— MarketIdactor—addresspreviousFloorPrice— ExchangeRatenewFloorPrice— ExchangeRatenewRampEndSupply— RawTokenQuantitycurrentSupply— RawTokenQuantitypreviousTotalAreaInReserveToken— RawTokenQuantitytotalAreaInReserveToken— RawTokenQuantity
LeveragedPositionExpanded
Section titled “LeveragedPositionExpanded”Emitted when a position is leveraged up in one atomic operation: the market draws new debt, combines that with reserve from the user, buys AVM against the curve, and pledges the bought AVM directly as collateral to the same position.
The debt and buy legs are each fee’d on their own gross: the position takes on debtIncreasedBy of new debt and gains collateralIncreasedBy of AVM collateral. buyFees is the fee distribution for the buy leg, borrowFees for the borrow origination leg.
@borrowFees — Reserve-token fee distribution for the borrow leg.
@buyFees — Reserve-token fee distribution for the buy leg.
@collateralIncreasedBy — AVM tokens minted and pledged as collateral.
@debtIncreasedBy — Principal added to the position’s debt.
@market — Address of the market.
@marketId — Branded id of market.
@positionOwner — Position being levered up (also msg.sender).
@reserveFromUser — Reserve tokens the user contributed up front.
event LeveragedPositionExpanded(indexed address market, indexed MarketId marketId, indexed address positionOwner, RawTokenQuantity reserveFromUser, RawTokenQuantity debtIncreasedBy, RawTokenQuantity collateralIncreasedBy, struct DataTypes.FeeDistributionBreakdown buyFees, struct DataTypes.FeeDistributionBreakdown borrowFees)Parameters
market—addressmarketId— MarketIdpositionOwner—addressreserveFromUser— RawTokenQuantitydebtIncreasedBy— RawTokenQuantitycollateralIncreasedBy— RawTokenQuantitybuyFees— DataTypes.FeeDistributionBreakdownborrowFees— DataTypes.FeeDistributionBreakdown
LeveragedPositionShrunk
Section titled “LeveragedPositionShrunk”Emitted when a position is delevered in one atomic operation: the market sells collateralDecreasedBy of the position’s collateral against the curve, uses the proceeds to pay down debtDecreasedBy of debt, and pays any residual reserve equal to netReserveTokensReceived to the seller (position owner).
@collateralDecreasedBy — AVM collateral burned from the position.
@debtDecreasedBy — Reserve-token debt principal removed from the position.
@fees — Fee distribution breakdown for the sell leg.
@market — Address of the market.
@marketId — Branded id of market.
@netReserveTokensReceived — Residual reserve paid to the seller after debt paydown (may be zero).
@positionOwner — Position being delevered (also msg.sender).
event LeveragedPositionShrunk(indexed address market, indexed MarketId marketId, indexed address positionOwner, RawTokenQuantity collateralDecreasedBy, RawTokenQuantity debtDecreasedBy, RawTokenQuantity netReserveTokensReceived, struct DataTypes.FeeDistributionBreakdown fees)Parameters
market—addressmarketId— MarketIdpositionOwner—addresscollateralDecreasedBy— RawTokenQuantitydebtDecreasedBy— RawTokenQuantitynetReserveTokensReceived— RawTokenQuantityfees— DataTypes.FeeDistributionBreakdown
LiquidityDonated
Section titled “LiquidityDonated”Emitted when a third party donates reserve tokens into a market’s internally accounted reserve pool, with no quid pro quo.
Donation is a passive reserve top-up. It transfers reserve tokens into the market, increments the market’s internal reserveTokenBalance accounting, and does NOT: - mint AVM tokens, - create or modify any position, - change engineState, - raise the floor. A later floor raise consuming the resulting surplus emits its own event.
@amount — Reserve-token quantity donated (raw integer).
@donor — Address that sent the donated reserve tokens.
@market — Address of the market that received the donation.
@marketId — Branded id of market.
event LiquidityDonated(indexed address market, indexed MarketId marketId, indexed address donor, RawTokenQuantity amount)Parameters
market—addressmarketId— MarketIddonor—addressamount— RawTokenQuantity
MarketCreated
Section titled “MarketCreated”Emitted exactly once for each market at the moment the directory accepts its registration. This is the canonical “market exists” record and indexer seed: it carries every genesis fact needed to drive a market’s subsequent timeline without further view calls.
The directory authorizes registration through a trusted factory. Field order is fixed; do not mutate. The payload deliberately duplicates a few values that already live on the market itself (kind, tokens, engine, initialFlags) so that an indexer can seed a market with no follow-up read.
@groupId — Parent group; binds the market to a fee schedule and a group admin.
@initialEngineState — Initial opaque engine-state bytes committed at market initialization.
@initialFlags — Per-market operation flags active at registration.
@kind — Market kind. Drives engine selection (resolved through MarketKindEngineChanged).
@marketAddress — Address of the newly deployed market proxy.
@marketId — Stable branded id for the market.
@tokens — Full token set initialized on the market (reserve, AVM, option, shared decimals).
event MarketCreated(indexed address marketAddress, indexed MarketId marketId, indexed GroupId groupId, MarketKind kind, struct TokenSet tokens, struct MarketFlags initialFlags, bytes initialEngineState)Parameters
marketAddress—addressmarketId— MarketIdgroupId— GroupIdkind— MarketKindtokens— TokenSetinitialFlags— MarketFlagsinitialEngineState—bytes
MarketFlagsChanged
Section titled “MarketFlagsChanged”Emitted when the group admin toggles per-market operation flags (which operations are currently permitted on this market).
Carries both prior and new flag structs so an indexer can reconstruct a flag-change timeline without re-reading prior state. The next action governed by a changed flag observes the new value.
@actor — Caller that performed the update (the group admin in normal operation).
@market — Address of the market whose flags changed.
@marketId — Branded id of market.
@newFlags — Flags active from this transaction onwards.
@previousFlags — Flags active before this transaction.
event MarketFlagsChanged(indexed address market, indexed MarketId marketId, indexed address actor, struct MarketFlags previousFlags, struct MarketFlags newFlags)Parameters
market—addressmarketId— MarketIdactor—addresspreviousFlags— MarketFlagsnewFlags— MarketFlags
MarketGroupAdminChanged
Section titled “MarketGroupAdminChanged”Emitted when a previously proposed group admin accepts the role and authority transfers. Pairs with a prior MarketGroupAdminProposed.
@groupId — Branded id of the group whose admin transfer completed.
@newAdmin — Incoming group admin (also msg.sender).
@previousAdmin — Address that lost group-admin authority.
event MarketGroupAdminChanged(indexed GroupId groupId, indexed address previousAdmin, indexed address newAdmin)Parameters
groupId— GroupIdpreviousAdmin—addressnewAdmin—address
MarketGroupAdminProposed
Section titled “MarketGroupAdminProposed”Emitted when the current group admin proposes a successor as the first half of a two-step transfer. The proposed admin is NOT yet active.
Pairs with MarketGroupAdminChanged on acceptance. Re-proposing supersedes the prior proposal; proposedAdmin may be address(0) to cancel.
@currentAdmin — Current group admin proposing the transfer (also msg.sender).
@groupId — Branded id of the group whose admin is being transferred.
@proposedAdmin — Address that may accept the role; address(0) clears a prior proposal.
event MarketGroupAdminProposed(indexed GroupId groupId, indexed address currentAdmin, indexed address proposedAdmin)Parameters
groupId— GroupIdcurrentAdmin—addressproposedAdmin—address
MarketGroupCreated
Section titled “MarketGroupCreated”Emitted exactly once for each market group at the moment the directory accepts its creation. This is the canonical “group exists” record for indexers and the seed for the group’s fee/admin timeline.
Market-group creation is gated by the parent tenant’s admin. The group inherits its tenantId (immutable for the group’s lifetime) and starts with the admin and fees declared in this event.
@actor — Caller that performed the creation (the tenant admin in normal operation).
@admin — Initial market-group admin. Transfers follow the two-step flow (MarketGroupAdminProposed / MarketGroupAdminChanged).
@fees — Initial group-fee schedule (buy / sell / borrow / exerciseOption rates as MicroBps).
@groupId — Branded id of the new market group.
@tenantId — Parent tenant. Fixed at creation and never changes.
event MarketGroupCreated(indexed GroupId groupId, indexed TenantId tenantId, indexed address actor, address admin, struct DataTypes.GroupFees fees)Parameters
groupId— GroupIdtenantId— TenantIdactor—addressadmin—addressfees— DataTypes.GroupFees
MarketGroupFeesChanged
Section titled “MarketGroupFeesChanged”Emitted when the group’s fee schedule is updated. The new schedule applies to every subsequent operation across every market in this group.
Fee changes are gated by the group admin. The event carries both the previous and new full GroupFees struct so indexers can reconstruct the change without reading prior state.
@actor — Caller that performed the update (the group admin in normal operation).
@groupId — Branded id of the group whose fees changed.
@newFees — Group fee schedule active from this transaction onwards.
@previousFees — Group fee schedule active before this transaction.
event MarketGroupFeesChanged(indexed GroupId groupId, indexed address actor, struct DataTypes.GroupFees previousFees, struct DataTypes.GroupFees newFees)Parameters
groupId— GroupIdactor—addresspreviousFees— DataTypes.GroupFeesnewFees— DataTypes.GroupFees
OptionTokensExercised
Section titled “OptionTokensExercised”Emitted when option tokens are exercised: the user burns option tokens, pays reserve tokens at the floor price, and receives freshly minted AVM tokens 1:1 against the burned options.
Fee model is fee-on-top on the floor-priced cost. Identity: grossReserveTokensIn == netFloorReserveTokensIn + fees.platformReserveFee + fees.marketGroupReserveFee. netFloorReserveTokensIn == floorPrice * optionTokenAmount is the portion delivered to the market’s reserve; the fee component is routed to escrow.
@fees — Reserve-token fee distribution (platform + group).
@grossReserveTokensIn — Total reserve tokens pulled from user.
@market — Address of the market.
@marketId — Branded id of market.
@netFloorReserveTokensIn — Reserve tokens routed into the market’s internal reserve at floor price.
@optionTokenAmount — Option tokens burned from user.
@user — Address that exercised (burned options and paid reserve, receives AVM).
event OptionTokensExercised(indexed address market, indexed MarketId marketId, indexed address user, RawTokenQuantity optionTokenAmount, RawTokenQuantity grossReserveTokensIn, RawTokenQuantity netFloorReserveTokensIn, struct DataTypes.FeeDistributionBreakdown fees)Parameters
market—addressmarketId— MarketIduser—addressoptionTokenAmount— RawTokenQuantitygrossReserveTokensIn— RawTokenQuantitynetFloorReserveTokensIn— RawTokenQuantityfees— DataTypes.FeeDistributionBreakdown
PositionCreated
Section titled “PositionCreated”Emitted exactly once per position, the first time a position record is created for owner on this market.
Positions are created lazily on the first action that touches them (first deposit, first borrow, first leveraged buy, etc.). After this event fires, every subsequent collateral/debt event for the same owner refers to the same position. Position ownership is immutable.
@market — Address of the market the position belongs to.
@marketId — Branded id of market.
@owner — Position owner — the immutable address keying this position’s storage.
event PositionCreated(indexed address market, indexed MarketId marketId, indexed address owner)Parameters
market—addressmarketId— MarketIdowner—address
RevenueCollected
Section titled “RevenueCollected”Emitted when reserve-token revenue is withdrawn from a market’s platform or group escrow bucket and paid to a recipient.
revenueKind distinguishes the bucket the funds came from: - Platform: drained by the protocol admin; - Group: drained by the group admin (collectGroupRevenue). The collector caps amount to the bucket’s current balance.
@amount — Reserve tokens transferred to recipient.
@market — Address of the market whose escrow was drained.
@marketId — Branded id of market.
@recipient — Address that received the payout.
@revenueKind — Which escrow bucket was collected from.
@token — ERC-20 address paid out (always the reserve token).
event RevenueCollected(indexed address market, indexed MarketId marketId, indexed enum DataTypes.RevenueKind revenueKind, address token, address recipient, RawTokenQuantity amount)Parameters
market—addressmarketId— MarketIdrevenueKind— DataTypes.RevenueKindtoken—addressrecipient—addressamount— RawTokenQuantity
TenantAdminChanged
Section titled “TenantAdminChanged”Emitted when a previously proposed tenant admin accepts the role and authority transfers. Pairs with a prior TenantAdminProposed.
previousAdmin is the address that lost authority at this point; newAdmin is the accepting account and is also msg.sender.
@newAdmin — Incoming tenant admin (the address that accepted).
@previousAdmin — Address that lost tenant-admin authority.
@tenantId — Branded id of the tenant whose admin transfer completed.
event TenantAdminChanged(indexed TenantId tenantId, indexed address previousAdmin, indexed address newAdmin)Parameters
tenantId— TenantIdpreviousAdmin—addressnewAdmin—address
TenantAdminProposed
Section titled “TenantAdminProposed”Emitted when the current tenant admin proposes a successor as the first half of a two-step admin transfer. The proposed admin is NOT yet active — they must accept before authority moves.
Matches TenantAdminChanged, which fires on acceptance. A subsequent TenantAdminProposed with a different proposedAdmin (including address(0) to clear) supersedes the prior proposal without an accompanying TenantAdminChanged.
@currentAdmin — Current tenant admin proposing the transfer (also msg.sender).
@proposedAdmin — Address that may accept the role; can be address(0) to cancel a prior proposal.
@tenantId — Branded id of the tenant whose admin is being transferred.
event TenantAdminProposed(indexed TenantId tenantId, indexed address currentAdmin, indexed address proposedAdmin)Parameters
tenantId— TenantIdcurrentAdmin—addressproposedAdmin—address