import { BuildRelayerTxParams, BuildRelayerTxResponse, RelayerResponse, RelayerTxStatus, SendRelayerTxParams, SendRelayerTxWithWebSocketParams, RelayerWebSocketEvents, TransactionInfo, SendSafeRelayerTxParams } from "../utils/Types.js";
export interface IRelayer {
    buildRelayerTx(_params: BuildRelayerTxParams): Promise<BuildRelayerTxResponse>;
    buildRelayerTxEIP712(_params: BuildRelayerTxParams): Promise<BuildRelayerTxResponse>;
    sendRelayerTx(_params: SendRelayerTxParams): Promise<RelayerResponse>;
    sendSafeRelayerTx(_params: SendSafeRelayerTxParams): Promise<RelayerResponse>;
    sendRelayerTxWithRealTimeUpdates(_params: SendRelayerTxWithWebSocketParams): Promise<RelayerResponse>;
    getRelayerTxStatus(_transactionId: string): Promise<RelayerTxStatus>;
    extractTransactionInfo(_txStatus: RelayerTxStatus): TransactionInfo;
    isTransactionConfirmed(_txStatus: RelayerTxStatus): boolean;
    isTransactionPending(_txStatus: RelayerTxStatus): boolean;
    isTransactionFailed(_txStatus: RelayerTxStatus): boolean;
    getTransactionHash(_txStatus: RelayerTxStatus): string | null;
    subscribeToTransaction(_transactionId: string, _events?: RelayerWebSocketEvents): Promise<void>;
    unsubscribeFromTransaction(_transactionId: string): void;
    connectWebSocket(): void;
    disconnectWebSocket(): void;
    isWebSocketConnected(): boolean;
}
