import { RelayerConfig, BuildRelayerTxResponse, BuildRelayerTxParams, SendRelayerTxParams, RelayerResponse, RelayerTxStatus, SendRelayerTxWithWebSocketParams, RelayerWebSocketEvents, TransactionInfo, SendSafeRelayerTxParams, SendSafeRelayerTxWithWebSocketParams } from "./utils/Types.js";
import { IRelayer } from "./interfaces/IRelayer.js";
export declare class Relayer implements IRelayer {
    readonly relayerConfig: RelayerConfig;
    private relayerUrl;
    private chainId?;
    private signer?;
    private provider?;
    private isSafeTx;
    private webSocketManager;
    constructor(relayerConfig: RelayerConfig);
    private getRelayerUrl;
    buildRelayerTx(params: BuildRelayerTxParams): Promise<BuildRelayerTxResponse>;
    buildRelayerTxEIP712(params: BuildRelayerTxParams): Promise<BuildRelayerTxResponse>;
    sendRelayerTx(txParams: SendRelayerTxParams): Promise<RelayerResponse>;
    sendSafeRelayerTx(txParams: SendSafeRelayerTxParams): Promise<RelayerResponse>;
    getRelayerTxStatus(transactionId: string): Promise<RelayerTxStatus>;
    /**
     * Extract key transaction information from the full transaction status
     */
    extractTransactionInfo(txStatus: RelayerTxStatus): TransactionInfo;
    /**
     * Check if transaction is confirmed (has hash and receipt)
     */
    isTransactionConfirmed(txStatus: RelayerTxStatus): boolean;
    /**
     * Check if transaction is pending (no hash yet)
     */
    isTransactionPending(txStatus: RelayerTxStatus): boolean;
    /**
     * Check if transaction failed
     */
    isTransactionFailed(txStatus: RelayerTxStatus): boolean;
    /**
     * Get transaction hash safely (returns null if not available)
     */
    getTransactionHash(txStatus: RelayerTxStatus): string | null;
    /**
     * Send relayer transaction with real-time updates via WebSocket
     */
    sendRelayerTxWithRealTimeUpdates(params: SendRelayerTxWithWebSocketParams): Promise<RelayerResponse>;
    sendSafeRelayerTxWithRealTimeUpdates(params: SendSafeRelayerTxWithWebSocketParams): Promise<RelayerResponse>;
    /**
     * Subscribe to real-time transaction updates
     */
    subscribeToTransaction(transactionId: string, events?: RelayerWebSocketEvents): Promise<void>;
    /**
     * Unsubscribe from transaction updates
     */
    unsubscribeFromTransaction(transactionId: string): void;
    /**
     * Connect to WebSocket server
     */
    connectWebSocket(): void;
    /**
     * Disconnect from WebSocket server
     */
    disconnectWebSocket(): void;
    /**
     * Check if WebSocket is connected
     */
    isWebSocketConnected(): boolean;
    /**
     * Get WebSocket connection information
     */
    getWebSocketInfo(): {
        connected: boolean;
        subscribedTransactions: number;
        url: string;
    };
}
