slpjs
Version:
Simple Ledger Protocol (SLP) JavaScript Library
190 lines (189 loc) • 7.42 kB
TypeScript
/// <reference path="lib/vendors.d.ts" />
/// <reference types="node" />
export * from "./lib/slp";
export * from "./lib/utils";
export * from "./lib/crypto";
export * from "./lib/primatives";
export * from "./lib/bitdbnetwork";
export * from "./lib/localvalidator";
export * from "./lib/trustedvalidator";
export * from "./lib/bitboxnetwork";
export * from "./lib/bchdnetwork";
export * from "./lib/transactionhelpers";
export * from "./lib/bchdtrustedvalidator";
import * as bitcore from "bitcore-lib-cash";
export { bitcore };
export interface logger {
log: (s: string) => any;
}
export declare enum SlpTransactionType {
"GENESIS" = "GENESIS",
"MINT" = "MINT",
"SEND" = "SEND"
}
export declare enum SlpVersionType {
"TokenVersionType1" = 1,
"TokenVersionType1_NFT_Child" = 65,
"TokenVersionType1_NFT_Parent" = 129
}
export declare enum SlpUtxoJudgement {
"UNKNOWN" = "UNKNOWN",
"INVALID_BATON_DAG" = "INVALID_BATON_DAG",
"INVALID_TOKEN_DAG" = "INVALID_TOKEN_DAG",
"NOT_SLP" = "NOT_SLP",
"SLP_TOKEN" = "SLP_TOKEN",
"SLP_BATON" = "SLP_BATON",
"UNSUPPORTED_TYPE" = "UNSUPPORTED_TYPE"
}
export interface SlpTransactionDetails {
transactionType: SlpTransactionType;
tokenIdHex: string;
versionType: SlpVersionType;
timestamp?: string;
symbol: string;
name: string;
documentUri: string;
documentSha256: Buffer | null;
decimals: number;
containsBaton: boolean;
batonVout: number | null;
genesisOrMintQuantity: BigNumber | null;
sendOutputs?: BigNumber[] | null;
}
export interface SlpTxnDetailsResult extends TxnDetailsResult {
tokenInfo: SlpTransactionDetails;
tokenIsValid: boolean;
tokenNftParentId: string;
}
export interface SlpBalancesResult {
satoshis_available_bch: number;
satoshis_in_slp_baton: number;
satoshis_in_slp_token: number;
satoshis_in_invalid_token_dag: number;
satoshis_in_invalid_baton_dag: number;
satoshis_in_unknown_token_type: number;
slpTokenBalances: {
[key: string]: BigNumber;
};
nftParentChildBalances: {
[key: string]: {
[key: string]: BigNumber;
};
};
slpTokenUtxos: {
[key: string]: SlpAddressUtxoResult[];
};
slpBatonUtxos: {
[key: string]: SlpAddressUtxoResult[];
};
nonSlpUtxos: SlpAddressUtxoResult[];
invalidTokenUtxos: SlpAddressUtxoResult[];
invalidBatonUtxos: SlpAddressUtxoResult[];
unknownTokenTypeUtxos: SlpAddressUtxoResult[];
}
export declare class SlpAddressUtxoResult {
txid: string;
vout: number;
scriptPubKey: string;
amount: number;
satoshis: number;
value?: number;
height: number;
confirmations: number;
legacyAddress: string;
cashAddress: string;
wif: string;
tx?: TxnDetailsDeep;
txBuf?: Buffer;
slpTransactionDetails: SlpTransactionDetails;
slpUtxoJudgement: SlpUtxoJudgement;
slpUtxoJudgementAmount: BigNumber;
nftParentId?: string;
}
export interface utxo {
txid: string;
vout: number;
satoshis: BigNumber;
wif?: string;
slpTransactionDetails: SlpTransactionDetails;
slpUtxoJudgement: SlpUtxoJudgement;
slpUtxoJudgementAmount: BigNumber;
}
export interface ScriptPubKey {
hex: string;
asm: string;
addresses: string[];
type: string;
}
export interface Vout {
value: Number;
n: number;
scriptPubKey: ScriptPubKey;
}
export interface Vin {
txid: string;
sequence: number;
n: number;
scriptSig: ScriptSig;
value: number;
legacyAddress: string;
cashAddress: string;
}
export interface ScriptSig {
hex: string;
asm: string;
}
export interface TxnDetailsDeep {
txid: string;
version: number;
locktime: number;
vin: Vin[];
vout: Vout[];
blockhash: string;
blockheight: number;
confirmations: number;
time: number;
blocktime: number;
isCoinBase: boolean;
valueOut: number;
size: number;
raw?: string | Buffer;
}
import BigNumber from "bignumber.js";
import { AddressDetailsResult, AddressUtxoResult, TxnDetailsResult } from "bitcoin-com-rest";
import { Slp, SlpValidator } from "./lib/slp";
import { TransactionHelpers } from "./lib/transactionhelpers";
export interface INetwork extends SlpValidator {
slp: Slp;
validator?: SlpValidator;
txnHelpers: TransactionHelpers;
logger: logger;
getNftParentId(tokenIdHex: string): Promise<string>;
getTokenInformation(txid: string, decimalConversion?: boolean): Promise<SlpTransactionDetails>;
getTransactionDetails(txid: string, decimalConversion?: boolean): Promise<any>;
getUtxos(address: string): Promise<AddressUtxoResult>;
getAllSlpBalancesAndUtxos(address: string | string[]): Promise<SlpBalancesResult | Array<{
address: string;
result: SlpBalancesResult;
}>>;
simpleTokenSend(tokenId: string, sendAmounts: BigNumber | BigNumber[], inputUtxos: SlpAddressUtxoResult[], tokenReceiverAddresses: string | string[], changeReceiverAddress: string, requiredNonTokenOutputs?: Array<{
satoshis: number;
receiverAddress: string;
}>): Promise<string>;
simpleBchSend(sendAmounts: BigNumber | BigNumber[], inputUtxos: SlpAddressUtxoResult[], bchReceiverAddresses: string | string[], changeReceiverAddress: string): Promise<string>;
simpleTokenGenesis(tokenName: string, tokenTicker: string, tokenAmount: BigNumber, documentUri: string | null, documentHash: Buffer | null, decimals: number, tokenReceiverAddress: string, batonReceiverAddress: string, bchChangeReceiverAddress: string, inputUtxos: SlpAddressUtxoResult[]): Promise<string>;
simpleNFT1ParentGenesis(tokenName: string, tokenTicker: string, tokenAmount: BigNumber, documentUri: string | null, documentHash: Buffer | null, tokenReceiverAddress: string, batonReceiverAddress: string, bchChangeReceiverAddress: string, inputUtxos: SlpAddressUtxoResult[], decimals?: number): Promise<string>;
simpleNFT1ChildGenesis(nft1GroupId: string, tokenName: string, tokenTicker: string, documentUri: string | null, documentHash: Buffer | null, tokenReceiverAddress: string, bchChangeReceiverAddress: string, inputUtxos: SlpAddressUtxoResult[], allowBurnAnyAmount?: boolean): Promise<string>;
simpleTokenMint(tokenId: string, mintAmount: BigNumber, inputUtxos: SlpAddressUtxoResult[], tokenReceiverAddress: string, batonReceiverAddress: string, changeReceiverAddress: string): Promise<string>;
simpleTokenBurn(tokenId: string, burnAmount: BigNumber, inputUtxos: SlpAddressUtxoResult[], changeReceiverAddress: string): Promise<string>;
getUtxoWithRetry(address: string, retries?: number): Promise<AddressUtxoResult>;
getUtxoWithTxDetails(address: string): Promise<SlpAddressUtxoResult[]>;
getTransactionDetailsWithRetry(txids: string[], retries?: number): Promise<TxnDetailsResult[] | undefined>;
getAddressDetailsWithRetry(address: string, retries?: number): Promise<AddressDetailsResult | undefined>;
sendTx(hex: string): Promise<string>;
monitorForPayment(paymentAddress: string, fee: number, onPaymentCB: Function): Promise<void>;
getRawTransactions(txids: string[]): Promise<string[]>;
processUtxosForSlp(utxos: SlpAddressUtxoResult[]): Promise<SlpBalancesResult>;
isValidSlpTxid(txid: string): Promise<boolean>;
validateSlpTransactions(txids: string[]): Promise<string[]>;
}