import { Signer } from 'ethers';
import { latest as latestAppData } from '@cowprotocol/app-data';
import { BridgeDeposit, BridgeHook, BridgeProvider, BridgeProviderInfo, BridgeQuoteResult, BridgeStatusResult, BridgingDepositParams, BuyTokensParams, QuoteBridgeRequest } from '../../types';
import { ChainId, ChainInfo, SupportedChainId } from '../../../chains';
import { EvmCall, TokenInfo } from '../../../common';
import { AcrossApi, AcrossApiOptions } from './AcrossApi';
import { CowShedSdk, CowShedSdkOptions } from '../../../cow-shed';
import { SuggestedFeesResponse } from './types';
import { JsonRpcProvider } from '@ethersproject/providers';
export declare const ACROSS_HOOK_DAPP_ID = "cow-sdk://bridging/providers/across";
export declare const ACROSS_SUPPORTED_NETWORKS: ChainInfo[];
export interface AcrossBridgeProviderOptions {
    getRpcProvider(chainId: SupportedChainId): JsonRpcProvider;
    apiOptions?: AcrossApiOptions;
    cowShedOptions?: CowShedSdkOptions;
}
export interface AcrossQuoteResult extends BridgeQuoteResult {
    suggestedFees: SuggestedFeesResponse;
}
export declare class AcrossBridgeProvider implements BridgeProvider<AcrossQuoteResult> {
    protected api: AcrossApi;
    protected cowShedSdk: CowShedSdk;
    getRpcProvider: (chainId: SupportedChainId) => JsonRpcProvider;
    private supportedTokens;
    constructor(options: AcrossBridgeProviderOptions);
    info: BridgeProviderInfo;
    getNetworks(): Promise<ChainInfo[]>;
    getBuyTokens(params: BuyTokensParams): Promise<TokenInfo[]>;
    getIntermediateTokens(request: QuoteBridgeRequest): Promise<TokenInfo[]>;
    getQuote(request: QuoteBridgeRequest): Promise<AcrossQuoteResult>;
    getUnsignedBridgeCall(request: QuoteBridgeRequest, quote: AcrossQuoteResult): Promise<EvmCall>;
    getGasLimitEstimationForHook(request: QuoteBridgeRequest): Promise<number>;
    getSignedHook(chainId: SupportedChainId, unsignedCall: EvmCall, signer: Signer, bridgeHookNonce: string, deadline: bigint, hookGasLimit: number): Promise<BridgeHook>;
    decodeBridgeHook(_hook: latestAppData.CoWHook): Promise<BridgeDeposit>;
    getBridgingParams(chainId: ChainId, orderUid: string, txHash: string): Promise<{
        params: BridgingDepositParams;
        status: BridgeStatusResult;
    } | null>;
    getExplorerUrl(bridgingId: string): string;
    getStatus(bridgingId: string, originChainId: SupportedChainId): Promise<BridgeStatusResult>;
    getCancelBridgingTx(_bridgingId: string): Promise<EvmCall>;
    getRefundBridgingTx(_bridgingId: string): Promise<EvmCall>;
    private getSupportedTokensState;
}
