import { GetSupportedRoutesFn, CheckRouteValidFn, KnownRoute_FromBitcoin } from '../utils/buildSupportedRoutes.mjs';
import * as btc from '@scure/btc-signer';
import { ReselectSpendableUTXOsFn, BitcoinTransactionPrepareResult } from '../bitcoinUtils/prepareTransaction.mjs';
import { ChainId, TokenId, SDKNumber } from './types.mjs';
import { S as SDKGlobalContext } from '../types.internal-8d3OI2Qm.mjs';
import '../utils/types/knownIds.mjs';
import '../utils/BigNumber.mjs';
import 'big.js';
import '../utils/typeHelpers.mjs';
import 'viem';
import '../evmUtils/evmContractAddresses.mjs';
import '../bitcoinUtils/bitcoinHelpers.mjs';
import '@c4/btc-utils';
import '../bitcoinUtils/createTransaction.mjs';

declare const supportedRoutes: {
    getSupportedRoutes: GetSupportedRoutesFn;
    checkRouteValid: CheckRouteValidFn;
};
type BridgeFromBitcoinInput_signPsbtFn = (tx: {
    psbt: Uint8Array;
    signInputs: number[];
}) => Promise<{
    psbt: Uint8Array;
}>;
interface BridgeFromBitcoinInput {
    fromChain: ChainId;
    toChain: ChainId;
    fromToken: TokenId;
    toToken: TokenId;
    fromAddress: string;
    fromAddressScriptPubKey: Uint8Array;
    toAddress: string;
    amount: SDKNumber;
    networkFeeRate: bigint;
    reselectSpendableUTXOs: ReselectSpendableUTXOsFn;
    signPsbt: BridgeFromBitcoinInput_signPsbtFn;
    sendTransaction: (tx: {
        hex: string;
    }) => Promise<{
        txid: string;
    }>;
}
interface BridgeFromBitcoinOutput {
    txid: string;
}
declare function bridgeFromBitcoin(ctx: SDKGlobalContext, info: BridgeFromBitcoinInput): Promise<BridgeFromBitcoinOutput>;
type PrepareBitcoinTransactionInput = KnownRoute_FromBitcoin & {
    fromAddressScriptPubKey: BridgeFromBitcoinInput["fromAddressScriptPubKey"];
    fromAddress: BridgeFromBitcoinInput["fromAddress"];
    toAddress: BridgeFromBitcoinInput["toAddress"];
    amount: BridgeFromBitcoinInput["amount"];
    networkFeeRate: BridgeFromBitcoinInput["networkFeeRate"];
    reselectSpendableUTXOs: BridgeFromBitcoinInput["reselectSpendableUTXOs"];
    orderData: Uint8Array;
    pegInAddress: {
        address: string;
        scriptPubKey: Uint8Array;
    };
};
declare function prepareBitcoinTransaction(sdkContext: Pick<SDKGlobalContext, "backendAPI">, info: PrepareBitcoinTransactionInput): Promise<BitcoinTransactionPrepareResult & {
    bitcoinNetwork: typeof btc.NETWORK;
    revealOutput?: {
        index: number;
        satsAmount: bigint;
    };
}>;

export { type BridgeFromBitcoinInput, type BridgeFromBitcoinInput_signPsbtFn, type BridgeFromBitcoinOutput, type PrepareBitcoinTransactionInput, bridgeFromBitcoin, prepareBitcoinTransaction, supportedRoutes };
