import { type RpcProvider } from "starknet"; import type { Connection } from "@solana/web3.js"; import type { ChainId } from "../../../types/index.js"; import type { BridgeMonitorInterface } from "../../../bridge/monitor/BridgeMonitorInterface.js"; import { type DepositMonitorResult, DepositState, type DepositStateInput, WithdrawalState, type WithdrawalStateInput, type WithdrawMonitorResult } from "../../../bridge/monitor/types.js"; import type { HyperlaneRuntime } from "../../../bridge/solana/hyperlaneRuntime.js"; import type { StarkZapLogger } from "../../../logger/index.js"; export interface HyperlaneSolanaMonitorOptions { chainId: ChainId; starknetProvider: RpcProvider; solanaConnection: Connection; hyperlane: HyperlaneRuntime; logger: StarkZapLogger; } /** * Hyperlane bridge monitor for Starknet ↔ Solana routes. * * Withdrawals (Starknet → Solana) are delivered automatically by the * Hyperlane relayer — there is no manual completion step. Passing an * `externalTxHash` to `monitorWithdrawal` is therefore unsupported and * will throw. * * Deposits (Solana → Starknet) check the Solana source tx status when no * Starknet tx hash is available yet, then verify Starknet delivery via * the Hyperlane mailbox. * * Withdrawals (Starknet → Solana) check the Starknet tx status, then * verify Solana delivery via the Hyperlane mailbox. */ export declare class SolanaHyperlaneMonitor implements BridgeMonitorInterface { private readonly starknetProvider; private readonly solanaConnection; private readonly hyperlane; private readonly multiProtocolProvider; private readonly starknetChainName; private readonly starknetMailbox; private readonly solanaChainName; private readonly solanaMailbox; private readonly logger; private dispatchIdEventKey; constructor(options: HyperlaneSolanaMonitorOptions); monitorDeposit(externalTxHash: string, starknetTxHash?: string): Promise; monitorWithdrawal(snTxHash: string, externalTxHash?: string): Promise; getDepositState(param: DepositStateInput): Promise; getWithdrawalState(param: WithdrawalStateInput): Promise; private checkStarknetDelivery; private checkSolanaDelivery; private getSolanaTxStatus; } //# sourceMappingURL=SolanaHyperlaneMonitor.d.ts.map