import { CoinConfig } from '../../types/coin';
import { CoinData, MoveCallInfo } from '../../types';
import { Transaction, TransactionObjectArgument } from '@mysten/sui/transactions';
type MintMultiSCoinResult<T extends boolean> = T extends true ? [TransactionObjectArgument[], MoveCallInfo[]] : TransactionObjectArgument[];
type MintMultiSCoinParams<T extends boolean = false> = {
    debug?: T;
    amount: string | string[];
    address: string;
    tx: Transaction;
    vaultId?: string;
    slippage: string;
    limited: boolean;
    coinData: CoinData[];
    config: CoinConfig;
    splitAmounts: string[];
    coinAmount: string | number;
};
export declare const mintMultiSCoin: <T extends boolean = false>({ tx, amount, limited, vaultId, address, coinData, slippage, coinAmount, config, splitAmounts, debug, }: MintMultiSCoinParams<T>) => Promise<MintMultiSCoinResult<T>>;
type MintSCoinResult<T extends boolean> = T extends true ? [TransactionObjectArgument, MoveCallInfo[]] : TransactionObjectArgument;
type MintSCoinParams<T extends boolean = false> = {
    debug?: T;
    amount: string;
    tx: Transaction;
    address: string;
    vaultId?: string;
    slippage: string;
    coinData?: CoinData[];
    config: CoinConfig;
    coin?: TransactionObjectArgument;
};
export declare const mintSCoin: <T extends boolean = false>({ tx, coin, amount, config, address, vaultId, slippage, coinData, debug, }: MintSCoinParams<T>) => Promise<MintSCoinResult<T>>;
type GetCoinValueResult<T extends boolean> = T extends true ? [TransactionObjectArgument, MoveCallInfo] : TransactionObjectArgument;
export declare const getCoinValue: <T extends boolean = false>(tx: Transaction, coin: TransactionObjectArgument, coinType: string, debug?: T) => GetCoinValueResult<T>;
type BurnSCoinResult<T extends boolean> = T extends true ? [TransactionObjectArgument, MoveCallInfo[]] : TransactionObjectArgument;
type BurnSCoinParams<T extends boolean = false> = {
    debug?: T;
    tx: Transaction;
    address: string;
    config: CoinConfig;
    sCoin: TransactionObjectArgument;
};
export declare const burnSCoin: <T extends boolean = false>({ tx, sCoin, config, address, debug, }: BurnSCoinParams<T>) => Promise<BurnSCoinResult<T>>;
interface SplitCoinHelperParams {
    tx: Transaction;
    amounts: string[];
    coinType?: string;
    coinData: CoinData[];
}
/**
 * Split coins based on amounts array.
 * @param amounts - 数组长度必须 >= 1
 * @returns TransactionObjectArgument[] - 长度等于 amounts.length
 */
export declare function splitCoinHelper({ tx, amounts, coinType, coinData, }: SplitCoinHelperParams): TransactionObjectArgument[];
export {};
//# sourceMappingURL=coin.d.ts.map