import { fixedScriptWallet, type CoinName } from '@bitgo/wasm-utxo';
import { SatPoint } from './SatPoint';
import { OutputLayout } from './OutputLayout';
type WalletKeysArg = fixedScriptWallet.WalletKeysArg;
type SignPath = fixedScriptWallet.SignPath;
/**
 * Network type from utxo-lib for backward compatibility.
 */
type UtxolibNetwork = {
    messagePrefix?: string;
    bech32?: string;
    pubKeyHash: number;
    scriptHash: number;
    wif: number;
};
export type WalletUnspent = {
    id: string;
    value: bigint;
    chain: number;
    index: number;
};
export type WalletOutputPath = {
    chain: fixedScriptWallet.ChainCode;
    index: number;
};
export type WalletInputBuilder = {
    walletKeys: WalletKeysArg;
    signer: SignPath['signer'];
    cosigner: SignPath['cosigner'];
};
/**
 * Describes all outputs of an inscription transaction
 */
export type InscriptionTransactionOutputs = {
    inscriptionRecipient: string | Uint8Array;
    changeOutputs: [WalletOutputPath, WalletOutputPath];
};
/** @deprecated */
export type InscriptionOutputs = InscriptionTransactionOutputs;
export type InscriptionTransactionConstraints = {
    feeRateSatKB: number;
    minChangeOutput?: bigint;
    minInscriptionOutput?: bigint;
    maxInscriptionOutput?: bigint;
};
export declare const DefaultInscriptionConstraints: {
    minChangeOutput: bigint;
    minInscriptionOutput: bigint;
    maxInscriptionOutput: bigint;
};
export declare function createPsbtFromOutputLayout(networkOrCoinName: CoinName | UtxolibNetwork, inputBuilder: WalletInputBuilder, unspents: WalletUnspent[], outputs: InscriptionTransactionOutputs, outputLayout: OutputLayout): fixedScriptWallet.BitGoPsbt;
/**
 * @param inputs - inscription input must come first
 * @param satPoint - location of the inscription
 * @param outputs
 * @param constraints
 * @param minimizeInputs
 */
export declare function findOutputLayoutForWalletUnspents(inputs: WalletUnspent[], satPoint: SatPoint, outputs: InscriptionTransactionOutputs, constraints: InscriptionTransactionConstraints, { minimizeInputs }?: {
    minimizeInputs?: boolean | undefined;
}): {
    inputs: WalletUnspent[];
    layout: OutputLayout;
} | undefined;
export declare const MAX_UNSPENTS_FOR_OUTPUT_LAYOUT = 5;
export declare class ErrorNoLayout extends Error {
    constructor();
}
/**
 * @param networkOrCoinName - Coin name (e.g., "btc", "tbtc") or utxo-lib Network object
 * @param inputBuilder
 * @param unspent
 * @param satPoint
 * @param outputs
 * @param constraints
 * @param supplementaryUnspents - additional inputs to cover fee.
 * @param [minimizeInputs=true] - try to find input combination with minimal fees. Limits supplementaryUnspents to 4.
 */
export declare function createPsbtForSingleInscriptionPassingTransaction(networkOrCoinName: CoinName | UtxolibNetwork, inputBuilder: WalletInputBuilder, unspent: WalletUnspent | WalletUnspent[], satPoint: SatPoint, outputs: InscriptionTransactionOutputs, constraints: InscriptionTransactionConstraints, { supplementaryUnspents, minimizeInputs, }?: {
    supplementaryUnspents?: WalletUnspent[];
    minimizeInputs?: boolean;
}): fixedScriptWallet.BitGoPsbt;
export {};
//# sourceMappingURL=psbt.d.ts.map