import { AssetQueries } from "@neuraiproject/neurai-assets";
import { Wallet } from "../neuraiWallet";
export interface AssetOpResult {
    transactionId: string | null;
    rawTx: string;
    signedTransaction: string;
    fee: number;
    burnAmount: number;
    changeAddress: string | null;
    changeAmount: number | null;
    inputs: Array<{
        txid: string;
        vout: number;
        address: string;
    }>;
    outputs: Array<Record<string, unknown>>;
    assetData?: Record<string, unknown>;
    raw?: Record<string, unknown>;
}
export interface AssetOpExecuteOptions {
    /** Whether to broadcast after signing. Defaults to true. */
    broadcast?: boolean;
    /** Override toAddress (recipient). Defaults to wallet receiveAddress. */
    toAddress?: string;
    /** Override change address. Defaults to wallet changeAddress. */
    changeAddress?: string;
}
export declare class WalletAssets {
    readonly queries: AssetQueries;
    private readonly wallet;
    constructor(wallet: Wallet);
    issueRoot(params: {
        assetName: string;
        quantity: number;
        units?: number;
        reissuable?: boolean;
        hasIpfs?: boolean;
        ipfsHash?: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    issueSub(params: {
        assetName: string;
        quantity: number;
        units?: number;
        reissuable?: boolean;
        hasIpfs?: boolean;
        ipfsHash?: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    issueDepin(params: {
        assetName: string;
        quantity: number;
        ipfsHash?: string;
        reissuable?: boolean;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    issueUnique(params: {
        rootName: string;
        assetTags: string[];
        ipfsHashes?: Array<string | undefined>;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    issueQualifier(params: {
        assetName: string;
        quantity: number;
        ipfsHash?: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    issueRestricted(params: {
        assetName: string;
        quantity: number;
        verifierString: string;
        units?: number;
        reissuable?: boolean;
        ipfsHash?: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    reissue(params: {
        assetName: string;
        quantity: number;
        units?: number;
        reissuable?: boolean;
        ipfsHash?: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    reissueRestricted(params: {
        assetName: string;
        quantity: number;
        verifierString?: string;
        units?: number;
        reissuable?: boolean;
        ipfsHash?: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    tagAddresses(params: {
        qualifierName: string;
        targetAddresses: string[];
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    untagAddresses(params: {
        qualifierName: string;
        targetAddresses: string[];
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    freezeAddresses(params: {
        assetName: string;
        targetAddresses: string[];
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    unfreezeAddresses(params: {
        assetName: string;
        targetAddresses: string[];
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    freezeAssetGlobally(params: {
        assetName: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    unfreezeAssetGlobally(params: {
        assetName: string;
    } & AssetOpExecuteOptions): Promise<AssetOpResult>;
    private _exec;
    /**
     * Recover the full IUTXO objects for the inputs the assets builder selected,
     * then sign with the wallet's private keys.
     */
    private _signResult;
    private _resolveInputUTXOs;
}
