meta-contract-debug
Version:
Meta Contract SDK
240 lines (239 loc) • 7.91 kB
TypeScript
/// <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 {};