import { Address, ID, NumStr, SignedNumber } from "../../types";
import { Side, SupportedAssets } from "../types";
import { ISignedNumber } from "./IOnChainCalls";
import { DepositedAsset, IPosition } from "./IUser";
export interface IWithdrawEvent {
    eds: ID;
    ids: ID;
    account: Address;
    amount: NumStr;
    asset: SupportedAssets;
    assets: Array<DepositedAsset>;
    sequence_hash: Uint8Array;
    eds_sequence_number: string;
    ids_sequence_number: string;
}
export interface ITaintedAssetRemoved {
    eds: ID;
    ids: ID;
    from: Address;
    to: Address;
    amount: NumStr;
    asset: SupportedAssets;
    sequence_hash: Uint8Array;
    nonce: string;
    eds_sequence_number: string;
    ids_sequence_number: string;
}
export interface IDepositEvent extends IWithdrawEvent {
    nonce: string;
}
export interface IAssetBankDepositEvent {
    eds_id: ID;
    asset: SupportedAssets;
    from: Address;
    to: Address;
    amount: NumStr;
    nonce: string;
    sequence_number?: string;
}
export interface IOnChainAsset {
    symbol: SupportedAssets;
    type: string;
    decimals: number;
    weight: NumStr;
    price: NumStr;
    collateral: boolean;
    min_deposit: NumStr;
    max_deposit: NumStr;
}
export interface IAssetSupportedEvent {
    eds_id: ID;
    asset: IOnChainAsset;
    sequence_number: string;
}
export interface IAccountAuthorizedEvent {
    account: Address;
    users: Array<Address>;
    authorized: boolean;
    sequence_number: string;
}
export interface ITrader {
    address: Address;
    order_hash: Uint8Array;
    position: IPosition;
    assets: Array<DepositedAsset>;
    fee_asset: NumStr;
    fee_usd_qty: NumStr;
    fee_token_qty: NumStr;
}
export interface ITradeExecutedEvent {
    market: string;
    maker: ITrader;
    taker: ITrader;
    fill_quantity: NumStr;
    fill_price: NumStr;
    taker_side: Side;
    taker_gas_fee: NumStr;
    sequence_hash: Uint8Array;
    sequence_number: string;
}
export interface ILiquidationExecutedEvent {
    market: string;
    liquidatee_address: Address;
    liquidator_address: Address;
    hash: Uint8Array;
    liquidatee_position: IPosition;
    liquidator_position: IPosition;
    liquidatee_assets: Array<DepositedAsset>;
    liquidator_assets: Array<DepositedAsset>;
    quantity: NumStr;
    liq_purchase_price: NumStr;
    bankruptcy_price: NumStr;
    oracle_price: NumStr;
    liquidator_side: Side;
    premium_or_debt: SignedNumber;
    insurance_pool_premium_portion: NumStr;
    sequence_hash: Uint8Array;
    sequence_number: string;
}
export interface IADLExecutedEvent {
    market: string;
    maker_address: Address;
    taker_address: Address;
    hash: Uint8Array;
    maker_position: IPosition;
    taker_position: IPosition;
    maker_assets: Array<DepositedAsset>;
    taker_assets: Array<DepositedAsset>;
    quantity: NumStr;
    bankruptcy_price: NumStr;
    oracle_price: NumStr;
    taker_side: Side;
    sequence_hash: Uint8Array;
    sequence_number: string;
}
export interface IMarginAdjustedEvent {
    account: Address;
    amount: NumStr;
    added: boolean;
    position: IPosition;
    assets: Array<DepositedAsset>;
    sequence_hash: Uint8Array;
    sequence_number: string;
}
export interface ILeverageAdjustedEvent {
    account: Address;
    position: IPosition;
    assets: Array<DepositedAsset>;
    sequence_hash: Uint8Array;
    sequence_number: string;
}
export interface IOperatorUpdatedEvent {
    id: Address;
    operator_type: string;
    previous_operator: Address;
    new_operator: Address;
    sequence_number: string;
}
export interface IFundingRateUpdatedEvent {
    market: string;
    rate: ISignedNumber;
    timestamp: NumStr;
    sequence_number: string;
}
export interface IBankruptLiquidatorAuthorizedEvent {
    account: Address;
    authorized: boolean;
    sequence_number: string;
}
export interface IFeeTierUpdatedEvent {
    account: Address;
    applied: boolean;
    maker: NumStr;
    taker: NumStr;
}
export interface IAccountTypeUpdatedEvent {
    account: Address;
    is_institution: boolean;
    sequence_number: string;
}
export interface IGasFeeUpdatedEvent {
    ids: ID;
    gas_fee: string;
    sequence_number: string;
}
export interface IGasPoolUpdatedEvent {
    ids: ID;
    previous_gas_pool: Address;
    current_gas_pool: Address;
    sequence_number: string;
}
export interface IPositionClosedEvent {
    market: string;
    account: Address;
    hash: Uint8Array;
    position: IPosition;
    assets: Array<DepositedAsset>;
    delisting_price: NumStr;
    sequence_hash: Uint8Array;
    sequence_number: string;
}
export interface IFundingRateAppliedEvent {
    account: Address;
    position: IPosition;
    assets: Array<DepositedAsset>;
    funding_rate: {
        timestamp: NumStr;
        rate: SignedNumber;
    };
    funding_amount: SignedNumber;
    sequence_number: string;
}
