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 { BungeeApi, BungeeApiOptions } from './BungeeApi';
import { CowShedSdk, CowShedSdkOptions } from '../../../cow-shed';
import { BungeeBuildTx, BungeeQuote } from './types';
import type { JsonRpcProvider } from '@ethersproject/providers';
import type { Signer } from 'ethers';
export declare const BUNGEE_HOOK_DAPP_ID = "cow-sdk://bridging/providers/bungee";
export declare const BUNGEE_SUPPORTED_NETWORKS: ChainInfo[];
export interface BungeeBridgeProviderOptions {
    getRpcProvider(chainId: SupportedChainId): JsonRpcProvider;
    apiOptions?: BungeeApiOptions;
    cowShedOptions?: CowShedSdkOptions;
}
export interface BungeeQuoteResult extends BridgeQuoteResult {
    bungeeQuote: BungeeQuote;
    buildTx: BungeeBuildTx;
}
export declare class BungeeBridgeProvider implements BridgeProvider<BungeeQuoteResult> {
    private options;
    protected api: BungeeApi;
    protected cowShedSdk: CowShedSdk;
    getRpcProvider: (chainId: SupportedChainId) => JsonRpcProvider;
    constructor(options: BungeeBridgeProviderOptions);
    info: BridgeProviderInfo;
    getNetworks(): Promise<ChainInfo[]>;
    getBuyTokens(params: BuyTokensParams): Promise<TokenInfo[]>;
    getIntermediateTokens(request: QuoteBridgeRequest): Promise<TokenInfo[]>;
    getQuote(request: QuoteBridgeRequest): Promise<BungeeQuoteResult>;
    getUnsignedBridgeCall(request: QuoteBridgeRequest, quote: BungeeQuoteResult): Promise<EvmCall>;
    getGasLimitEstimationForHook(request: QuoteBridgeRequest): Promise<number>;
    getSignedHook(chainId: SupportedChainId, unsignedCall: EvmCall, signer: Signer, bridgeHookNonce: string, deadline: bigint, hookGasLimit: number): Promise<BridgeHook>;
    getBridgingParams(_chainId: ChainId, orderId: string, _txHash: string): Promise<{
        params: BridgingDepositParams;
        status: BridgeStatusResult;
    } | null>;
    decodeBridgeHook(_hook: latestAppData.CoWHook): Promise<BridgeDeposit>;
    getExplorerUrl(bridgingId: string): string;
    getStatus(_bridgingId: string): Promise<BridgeStatusResult>;
    getCancelBridgingTx(_bridgingId: string): Promise<EvmCall>;
    getRefundBridgingTx(_bridgingId: string): Promise<EvmCall>;
}
