import { EthAddress, GrumpkinAddress } from '@polyaztec/barretenberg/address';
import { AssetValue } from '@polyaztec/barretenberg/asset';
import { TxId } from '@polyaztec/barretenberg/tx_id';
import { CoreSdk } from '../core_sdk/index.js';
import { Signer } from '../signer/index.js';
import { ClientEthereumBlockchain } from '@polyaztec/blockchain';
export declare class XChainWithdrawController {
    readonly userId: GrumpkinAddress;
    private readonly userSigner;
    readonly assetValue: AssetValue;
    readonly fee: AssetValue;
    readonly recipient: EthAddress;
    readonly sgChainId: number;
    readonly srcPoolId: number;
    readonly dstPoolId: number;
    private readonly core;
    private readonly blockchain;
    private readonly requireFeePayingTx;
    private proofOutputs;
    private feeProofOutputs;
    private txIds;
    private withdrawId;
    private withdrawAmount;
    constructor(userId: GrumpkinAddress, userSigner: Signer, assetValue: AssetValue, fee: AssetValue, recipient: EthAddress, sgChainId: number, srcPoolId: number, dstPoolId: number, core: CoreSdk, blockchain: ClientEthereumBlockchain);
    initWithdraw(): Promise<{
        id: any;
        txHash: any;
        withdrawAmount: any;
    }>;
    createProof(timeout?: number): Promise<void>;
    exportProofTxs(): import("@polyaztec/barretenberg/rollup_provider").Tx[];
    send(): Promise<TxId>;
    getTxIds(): TxId[];
    awaitSettlement(timeout?: number): Promise<void>;
}
//# sourceMappingURL=x_chain_withdraw_controller.d.ts.map