import { GoldSkyBackend, GoldSkyMessage, MessageFilter, MessageBackend } from '@nomad-xyz/sdk';
import * as config from '@nomad-xyz/configuration';
import { BridgeContext } from './BridgeContext';
/**
 * Abstract class required for operation of NomadMessage
 */
export default abstract class BridgeMessageBackend extends MessageBackend {
    abstract sender(messageHash: string): Promise<string | undefined>;
    abstract receivedTx(messageHash: string): Promise<string | undefined>;
}
/**
 * GoldSky bridge message representation
 */
export declare type GoldSkyBridgeMessage = GoldSkyMessage & {
    origin_and_nonce?: string;
    send_tx?: string;
    sent_at?: string;
    send_block?: string;
    original_sender?: string;
    receive_tx?: string;
    receive_block?: string;
    received_at?: string;
};
/**
 * GoldSky bridge backend for NomadMessage
 */
export declare class GoldSkyBridgeBackend extends GoldSkyBackend implements BridgeMessageBackend {
    context: BridgeContext;
    messageCache: Map<string, GoldSkyBridgeMessage>;
    constructor(env: string, secret: string, context: BridgeContext);
    /**
     * Checks whether an environment is supported by the backend. Throws on unsupported
     * @param environment environment to check
     */
    static checkEnvironment(environment: string): void;
    /**
     *  Returns default secret for Goldsky
     * @returns secret as a string
     */
    static defaultSecret(): string;
    /**
     * Creates a default GoldSky backend for an environment
     * @param environment environment to create the backend for
     * @returns backend
     */
    static default(environment: string | config.NomadConfig | undefined, context: BridgeContext): GoldSkyBridgeBackend;
    /**
     * Stores message into internal cache
     */
    storeMessage(m: GoldSkyBridgeMessage): void;
    /**
     * Get the message representation associated with this message (if any)
     * by message hash
     *
     * @returns A message representation (if any)
     */
    getMessage(messageHash: string, forceFetch?: boolean): Promise<GoldSkyBridgeMessage | undefined>;
    /**
     * Get the message representation associated with this message (if any)
     * by dispatch transaction
     *
     * @returns A message representation (if any)
     */
    getMessagesByTx(tx: string, limit?: number, forceFetch?: boolean): Promise<GoldSkyBridgeMessage[] | undefined>;
    /**
     * Gets an original sender of the message
     * @param messageHash
     * @returns sender's address
     */
    sender(messageHash: string): Promise<string | undefined>;
    /**
     * Gets a transaction related to Received event
     * @param messageHash
     * @returns transaction hash
     */
    receivedTx(messageHash: string): Promise<string | undefined>;
    /**
     * Fetches internal message from backend
     *
     * @returns Internal message representation (if any)
     */
    fetchMessages(f: Partial<MessageFilter>, limit?: number): Promise<GoldSkyBridgeMessage[] | undefined>;
}
//# sourceMappingURL=backend.d.ts.map