UNPKG

meta-contract-debug

Version:

Meta Contract SDK

240 lines (239 loc) 7.91 kB
/// <reference types="node" /> import { Bytes } from '../scryptlib'; import * as mvc from '../mvc'; import { Api, API_NET, API_TARGET } from '..'; import * as BN from '../bn.js'; import * as ftProto from './contract-proto/token.proto'; import { FungibleTokenUnspent } from '../api'; export declare const sighashType: number; declare type ParamUtxo = { txId: string; outputIndex: number; satoshis: number; wif?: string; address?: string | mvc.Address; }; declare type Mcp02Options = { network?: API_NET; apiTarget?: API_TARGET; apiHost?: string; purse?: string; feeb?: number; dustLimitFactor?: number; dustAmount?: number; debug?: boolean; }; declare type TokenReceiver = { address: string; amount: string; }; declare type ParamFtUtxo = { txId: string; outputIndex: number; tokenAddress: string; tokenAmount: string; wif?: string; }; export declare class FtManager { private network; private _api; private zeroAddress; private purse; private feeb; private dustCalculator?; transferCheckCodeHashArray: Bytes[]; unlockContractCodeHashArray: Bytes[]; private debug; get api(): Api; get sensibleApi(): Api; constructor({ network, apiTarget, purse, feeb, apiHost, dustLimitFactor, dustAmount, debug, }: Mcp02Options); /** * Create a transaction for genesis * @param tokenName token name, limited to 20 bytes * @param tokenSymbol the token symbol, limited to 10 bytes * @param decimalNum the decimal number, range 0-255 * @param utxos (Optional) specify mvc utxos * @param changeAddress (Optional) specify mvc changeAddress * @param opreturnData (Optional) append an opReturn output * @param genesisWif the private key of the token genesiser * @param noBroadcast (Optional) whether not to broadcast the transaction, the default is false * @returns */ genesis({ tokenName, tokenSymbol, decimalNum, utxos: utxosInput, changeAddress, opreturnData, genesisWif, noBroadcast, }: { tokenName: string; tokenSymbol: string; decimalNum: number; utxos?: any[]; changeAddress?: string | mvc.Address; opreturnData?: any; genesisWif?: string; noBroadcast?: boolean; }): Promise<{ txHex: string; txid: string; tx: mvc.Transaction; codehash: string; genesis: string; sensibleId: string; }>; issue(options: { genesis: string; codehash: string; sensibleId: string; genesisWif: string; receiverAddress: string | mvc.Address; tokenAmount: string | BN; allowIncreaseMints: boolean; utxos?: ParamUtxo[]; changeAddress?: string | mvc.Address; opreturnData?: any; noBroadcast?: boolean; }): Promise<{ txHex: string; txid: string; tx: mvc.Transaction; }>; mint({ sensibleId, genesisWif, receiverAddress, tokenAmount, allowIncreaseMints, utxos: utxosInput, changeAddress, opreturnData, noBroadcast, }: { sensibleId: string; genesisWif: string; receiverAddress: string | mvc.Address; tokenAmount: string | BN; allowIncreaseMints?: boolean; utxos?: any[]; changeAddress?: string | mvc.Address; opreturnData?: any; noBroadcast?: boolean; }): Promise<{ txHex: string; txid: string; tx: mvc.Transaction; }>; private _mint; private _prepareMintUtxo; private _getMintUtxo; private _calMintEstimateFee; merge({ codehash, genesis, ownerWif, utxos, changeAddress, noBroadcast, opreturnData, }: { codehash: string; genesis: string; ownerWif: string; utxos?: ParamUtxo[]; changeAddress?: string | mvc.Address; noBroadcast?: boolean; opreturnData?: any; }): Promise<{ tx: mvc.Transaction; txHex: string; txid: string; routeCheckTx: mvc.Transaction; routeCheckTxHex: string; }>; private _pretreatUtxos; /** * Estimate the cost of genesis * @param opreturnData * @param utxoMaxCount Maximum number of BSV UTXOs supported * @returns */ getGenesisEstimateFee({ opreturnData, utxoMaxCount, }: { opreturnData?: any; utxoMaxCount?: number; }): Promise<number>; private _genesis; transfer({ codehash, genesis, receivers, senderWif, ftUtxos, ftChangeAddress, utxos, changeAddress, middleChangeAddress, middlePrivateKey, minUtxoSet, isMerge, opreturnData, noBroadcast, }: { codehash: string; genesis: string; receivers?: TokenReceiver[]; senderWif?: string; ftUtxos?: ParamFtUtxo[]; ftChangeAddress?: string | mvc.Address; utxos?: ParamUtxo[]; changeAddress?: string | mvc.Address; middleChangeAddress?: string | mvc.Address; middlePrivateKey?: string | mvc.PrivateKey; minUtxoSet?: boolean; isMerge?: boolean; opreturnData?: any; noBroadcast?: boolean; }): Promise<{ tx: mvc.Transaction; txHex: string; txid: string; routeCheckTx: mvc.Transaction; routeCheckTxHex: string; }>; private _pretreatFtUtxos; private _prepareTransferTokens; private perfectFtUtxosInfo; private _transfer; private _calTransferEstimateFee; private getDustThreshold; getBalance({ codehash, genesis, address, }: { codehash: string; genesis: string; address: string; }): Promise<string>; /** * Query token balance detail * @param codehash * @param genesis * @param address * @returns */ getBalanceDetail({ codehash, genesis, address, }: { codehash: string; genesis: string; address: string; }): Promise<{ balance: string; pendingBalance: string; utxoCount: number; decimal: number; }>; /** * Query the Token list under this address. Get the balance of each token * @param address * @returns */ getSummary(address: string): Promise<import("../api").FungibleTokenSummary[]>; getFtUtxos(codehash: string, genesis: string, address: string, count?: number): Promise<FungibleTokenUnspent[]>; getMergeEstimateFee({ codehash, genesis, ownerWif, ownerPublicKey, ftUtxos, ftChangeAddress, opreturnData, utxoMaxCount, minUtxoSet, }: { codehash: string; genesis: string; ownerWif?: string; ownerPublicKey?: string | mvc.PublicKey; ftUtxos?: ParamFtUtxo[]; ftChangeAddress?: string | mvc.Address; opreturnData?: any; utxoMaxCount?: number; minUtxoSet?: boolean; }): Promise<number>; getTransferEstimateFee({ codehash, genesis, receivers, senderWif, senderPrivateKey, senderPublicKey, ftUtxos, ftChangeAddress, isMerge, opreturnData, utxoMaxCount, minUtxoSet, }: { codehash: string; genesis: string; receivers?: TokenReceiver[]; senderWif?: string; senderPrivateKey?: string | mvc.PrivateKey; senderPublicKey?: string | mvc.PublicKey; ftUtxos?: ParamFtUtxo[]; ftChangeAddress?: string | mvc.Address; isMerge?: boolean; opreturnData?: any; utxoMaxCount?: number; minUtxoSet?: boolean; }): Promise<number>; static parseTokenScript(scriptBuf: Buffer, network?: API_NET): { codehash: string; genesis: string; sensibleId: string; tokenName: string; tokenSymbol: string; decimalNum: number; tokenAddress: string; tokenAmount: any; genesisHash: string; sensibleID: ftProto.SensibleID; protoVersion: number; protoType: number; }; } export {};