import { Coin, CoinSDKType } from "../../cosmos/base/v1beta1/coin";
import { Long, DeepPartial } from "../../helpers";
import * as _m0 from "protobufjs/minimal";
/** BridgeEvent is a recognized event from the Ethereum blockchain. */
export interface BridgeEvent {
    /** The unique id of the Ethereum event log. */
    id: number;
    /** The tokens bridged. */
    coin?: Coin;
    /** The account address or module address to bridge to. */
    address: string;
    /** The Ethereum block height of the event. */
    ethBlockHeight: Long;
    /** Адрес токена на EVM сети */
    ethTokenAddress: string;
    /** Chain ID сети (для идентификации источника) */
    ethChainId: Long;
    /** Позиция лога внутри Ethereum блока для сортировки по EVM порядку */
    logIndex: number;
    /** Высота блока протокола при инициации события (PRIMARY ключ глобальной кросс-чейн сортировки) */
    protocolBlockHeight: Long;
}
/** BridgeEvent is a recognized event from the Ethereum blockchain. */
export interface BridgeEventSDKType {
    id: number;
    coin?: CoinSDKType;
    address: string;
    eth_block_height: Long;
    eth_token_address: string;
    eth_chain_id: Long;
    log_index: number;
    protocol_block_height: Long;
}
/** FinalityConfirmation — подтверждение от daemon, что ETH блок события стал safe. */
export interface FinalityConfirmation {
    eventId: number;
    ethChainId: Long;
}
/** FinalityConfirmation — подтверждение от daemon, что ETH блок события стал safe. */
export interface FinalityConfirmationSDKType {
    event_id: number;
    eth_chain_id: Long;
}
/** PendingFinalityEvent — on-chain хранилище для событий, ожидающих подтверждения safe block. */
export interface PendingFinalityEvent {
    event?: BridgeEvent;
    /** protocol block height when acknowledged */
    acknowledgedAtBlock: Long;
}
/** PendingFinalityEvent — on-chain хранилище для событий, ожидающих подтверждения safe block. */
export interface PendingFinalityEventSDKType {
    event?: BridgeEventSDKType;
    acknowledged_at_block: Long;
}
/**
 * WithdrawalConfirmationEvent — подтверждение вывода от EVM контракта (ReverseBridgeWithSignatures).
 * Содержит данные из EVM события для доказательства исполнения вывода.
 */
export interface WithdrawalConfirmationEvent {
    /** Sequential eventId от EVM (reverseBridgeEventIdCounter, независимый от bridgeEventIdCounter) */
    eventId: number;
    /** Protocol withdrawal ID из события */
    protocolWithdrawalId: Long;
    /** Chain ID сети EVM */
    ethChainId: Long;
    /** Ethereum block height события */
    ethBlockHeight: Long;
    /** Protocol адрес отправителя (bech32) из protocolAddress в событии */
    protocolAddress: string;
    /** Сумма + denom (resolved из token address) */
    coin?: Coin;
    /** Адрес токена на EVM сети */
    ethTokenAddress: string;
    /** Позиция лога внутри Ethereum блока для сортировки */
    logIndex: number;
    /** Высота блока протокола при создании вывода (PRIMARY ключ глобальной кросс-чейн сортировки) */
    protocolBlockHeight: Long;
}
/**
 * WithdrawalConfirmationEvent — подтверждение вывода от EVM контракта (ReverseBridgeWithSignatures).
 * Содержит данные из EVM события для доказательства исполнения вывода.
 */
export interface WithdrawalConfirmationEventSDKType {
    event_id: number;
    protocol_withdrawal_id: Long;
    eth_chain_id: Long;
    eth_block_height: Long;
    protocol_address: string;
    coin?: CoinSDKType;
    eth_token_address: string;
    log_index: number;
    protocol_block_height: Long;
}
/** WithdrawalConfirmationInfo — tracking обработанных withdrawal confirmation событий per chain. */
export interface WithdrawalConfirmationInfo {
    /** Следующий event_id для обработки (из reverseBridgeEventIdCounter) */
    nextEventId: number;
    /** Последний обработанный ETH block height */
    ethBlockHeight: Long;
}
/** WithdrawalConfirmationInfo — tracking обработанных withdrawal confirmation событий per chain. */
export interface WithdrawalConfirmationInfoSDKType {
    next_event_id: number;
    eth_block_height: Long;
}
/** ChainWithdrawalConfirmationInfo — per-chain tracking для withdrawal confirmations. */
export interface ChainWithdrawalConfirmationInfo {
    chainId: Long;
    info?: WithdrawalConfirmationInfo;
}
/** ChainWithdrawalConfirmationInfo — per-chain tracking для withdrawal confirmations. */
export interface ChainWithdrawalConfirmationInfoSDKType {
    chain_id: Long;
    info?: WithdrawalConfirmationInfoSDKType;
}
/**
 * BridgeOperation — единая операция в упорядоченном потоке (deposit ИЛИ withdrawal confirmation).
 * Операции глобально сортируются по (protocol_block_height, eth_chain_id, eth_block_height, log_index).
 */
export interface BridgeOperation {
    deposit?: DepositOperation;
    withdrawalConfirmation?: WithdrawalConfirmationEvent;
}
/**
 * BridgeOperation — единая операция в упорядоченном потоке (deposit ИЛИ withdrawal confirmation).
 * Операции глобально сортируются по (protocol_block_height, eth_chain_id, eth_block_height, log_index).
 */
export interface BridgeOperationSDKType {
    deposit?: DepositOperationSDKType;
    withdrawal_confirmation?: WithdrawalConfirmationEventSDKType;
}
/** DepositOperation — обёртка для deposit события с флагом финальности. */
export interface DepositOperation {
    event?: BridgeEvent;
    isFinalized: boolean;
}
/** DepositOperation — обёртка для deposit события с флагом финальности. */
export interface DepositOperationSDKType {
    event?: BridgeEventSDKType;
    is_finalized: boolean;
}
export declare const BridgeEvent: {
    encode(message: BridgeEvent, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BridgeEvent;
    fromPartial(object: DeepPartial<BridgeEvent>): BridgeEvent;
};
export declare const FinalityConfirmation: {
    encode(message: FinalityConfirmation, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): FinalityConfirmation;
    fromPartial(object: DeepPartial<FinalityConfirmation>): FinalityConfirmation;
};
export declare const PendingFinalityEvent: {
    encode(message: PendingFinalityEvent, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PendingFinalityEvent;
    fromPartial(object: DeepPartial<PendingFinalityEvent>): PendingFinalityEvent;
};
export declare const WithdrawalConfirmationEvent: {
    encode(message: WithdrawalConfirmationEvent, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): WithdrawalConfirmationEvent;
    fromPartial(object: DeepPartial<WithdrawalConfirmationEvent>): WithdrawalConfirmationEvent;
};
export declare const WithdrawalConfirmationInfo: {
    encode(message: WithdrawalConfirmationInfo, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): WithdrawalConfirmationInfo;
    fromPartial(object: DeepPartial<WithdrawalConfirmationInfo>): WithdrawalConfirmationInfo;
};
export declare const ChainWithdrawalConfirmationInfo: {
    encode(message: ChainWithdrawalConfirmationInfo, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ChainWithdrawalConfirmationInfo;
    fromPartial(object: DeepPartial<ChainWithdrawalConfirmationInfo>): ChainWithdrawalConfirmationInfo;
};
export declare const BridgeOperation: {
    encode(message: BridgeOperation, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BridgeOperation;
    fromPartial(object: DeepPartial<BridgeOperation>): BridgeOperation;
};
export declare const DepositOperation: {
    encode(message: DepositOperation, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DepositOperation;
    fromPartial(object: DeepPartial<DepositOperation>): DepositOperation;
};
//# sourceMappingURL=bridge_event.d.ts.map