@types/bitcore-lib-cash
Version:
TypeScript definitions for bitcore-lib-cash
603 lines (501 loc) • 19.3 kB
TypeScript
// TypeScript Version: 2.2
/// <reference types="node" />
export namespace crypto {
class BN {
constructor(n: number);
static fromNumber(n: number): BN;
toNumber(): number;
}
namespace ECDSA {
function sign(message: Buffer, key: PrivateKey): Signature;
function verify(hashbuf: Buffer, sig: Signature, pubkey: PublicKey, endian?: "little"): boolean;
}
namespace Hash {
function sha1(buffer: Buffer): Buffer;
function sha256(buffer: Buffer): Buffer;
function sha256sha256(buffer: Buffer): Buffer;
function sha256ripemd160(buffer: Buffer): Buffer;
function sha512(buffer: Buffer): Buffer;
function ripemd160(buffer: Buffer): Buffer;
function sha256hmac(data: Buffer, key: Buffer): Buffer;
function sha512hmac(data: Buffer, key: Buffer): Buffer;
}
namespace Random {
function getRandomBuffer(size: number): Buffer;
}
namespace Point {}
class Signature {
static fromDER(sig: Buffer): Signature;
static fromString(data: string): Signature;
static SIGHASH_ALL: number;
static SIGHASH_FORKID: number;
toString(): string;
}
class TransactionSignature extends Signature {
constructor(arg: object | string | TransactionSignature);
toObject(): object;
static fromObject(obj: object): TransactionSignature;
}
}
export namespace encoding {
class BufferReader {
constructor(buf: Buffer);
set(obj: object): this;
eof(): boolean;
finished(): boolean;
read(len: number): Buffer;
readAll(): Buffer;
readUInt8(): number;
readUInt16BE(): number;
readUInt16LE(): number;
readUInt32BE(): number;
readUInt32LE(): number;
readUInt64BEBN(): crypto.BN;
readUInt64LEBN(): crypto.BN;
readVarintNum(): number | crypto.BN;
readVarLengthBuffer(): Buffer;
readVarintBuf(): Buffer;
readVarintBN(): crypto.BN;
reverse(): this;
readReverse(len: number): Buffer;
}
class BufferWriter {
constructor(obj: object);
set(obj: object): this;
toBuffer(): Buffer;
concat(): Buffer;
write(buf: Buffer): this;
writeReverse(buf: Buffer): this;
writeUInt8(n: number): this;
writeUInt16BE(n: number): this;
writeUInt16LE(n: number): this;
writeUInt32BE(n: number): this;
writeUInt32LE(n: number): this;
writeUInt64BEBN(bn: crypto.BN): this;
writeUInt64LEBN(bn: crypto.BN): this;
writeVarintNum(bn: crypto.BN): this;
writeVarintBN(bn: crypto.BN): this;
varintBufNum(n: number): Buffer;
varintBufBN(bn: crypto.BN): Buffer;
}
}
export namespace Transaction {
class UnspentOutput {
static fromObject(o: object): UnspentOutput;
readonly address: Address;
readonly txId: string;
readonly outputIndex: number;
readonly script: Script;
readonly satoshis: number;
constructor(data: object);
inspect(): string;
toObject(): this;
toString(): string;
}
class Output {
readonly script: Script;
readonly satoshis: number;
constructor(data: object);
setScript(script: Script | string | Buffer): this;
inspect(): string;
toObject(): object;
}
namespace Input {
class Multisig extends Input {
constructor(
input: Input,
pubkeys?: PublicKey[],
threshold?: number,
signatures?: crypto.Signature[],
opts?: object,
);
toObject(): object;
getSignatures(
transaction: Transaction,
privateKey: PrivateKey,
index: number,
sigtype?: number,
hashData?: any,
signingMethod?: string,
): crypto.TransactionSignature[];
addSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): this;
clearSignatures(): this;
isFullySigned(): boolean;
countMissingSignatures(): number;
countSignatures(): number;
publicKeysWithoutSignature(): number;
isValidSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): boolean;
normalizeSignatures(
transaction: Transaction,
input: Input,
inputIndex: number,
signatures: Buffer[],
publicKeys: PublicKey[],
signingMethod?: string,
): crypto.TransactionSignature[];
}
class MultisigScriptHash extends Input {
constructor(
input: Input,
pubkeys?: PublicKey[],
threshold?: number,
signatures?: crypto.Signature[],
opts?: object,
);
toObject(): object;
getSignatures(
transaction: Transaction,
privateKey: PrivateKey,
index: number,
sigtype?: number,
hashData?: any,
signingMethod?: string,
): crypto.TransactionSignature[];
addSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): this;
clearSignatures(): this;
isFullySigned(): boolean;
countMissingSignatures(): number;
countSignatures(): number;
publicKeysWithoutSignature(): number;
isValidSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): boolean;
normalizeSignatures(
transaction: Transaction,
input: Input,
inputIndex: number,
signatures: Buffer[],
publicKeys: PublicKey[],
signingMethod?: string,
): crypto.TransactionSignature[];
}
class PublicKey extends Input {
getSignatures(
transaction: Transaction,
privateKey: PrivateKey,
index: number,
sigtype?: number,
hashData?: any,
signingMethod?: string,
): crypto.TransactionSignature[];
addSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): this;
clearSignatures(): this;
isFullySigned(): boolean;
}
class PublicKeyHash extends Input {
getSignatures(
transaction: Transaction,
privateKey: PrivateKey,
index: number,
sigtype?: number,
hashData?: any,
signingMethod?: string,
): crypto.TransactionSignature[];
addSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): this;
clearSignatures(): this;
isFullySigned(): boolean;
}
}
class Input {
readonly prevTxId: Buffer;
readonly outputIndex: number;
readonly sequenceNumber: number;
readonly script: Script;
readonly output?: Output | undefined;
constructor(params: object);
static fromObject(obj: object): Input;
static fromBufferReader(br: encoding.BufferReader): Input;
toObject(): object;
toBufferWriter(writer: encoding.BufferWriter): encoding.BufferWriter;
setScript(script: Script): this;
getSignatures(
transaction: Transaction,
privateKey: PrivateKey,
index: number,
sigtype?: number,
hashData?: any,
signingMethod?: string,
): crypto.TransactionSignature[];
isFullySigned(): boolean;
isFinal(): boolean;
addSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): this;
clearSignatures(): this;
isValidSignature(transaction: Transaction, signature: crypto.Signature, signingMethod?: string): boolean;
isNull(): boolean;
lockForSeconds(seconds: number): this;
lockUntilBlockHeight(heightDiff: number): this;
getLockTime(): Date | number;
}
namespace sighash {
function sign(
transaction: Transaction,
privateKey: PrivateKey,
sighashType: number,
inputIndex: number,
subscript: Script,
inputSatoshis: crypto.BN,
flags: number,
signingMethod: "ecdsa" | "schnorr",
): crypto.Signature;
}
}
export class Transaction {
inputs: Transaction.Input[];
outputs: Transaction.Output[];
readonly id: string;
readonly hash: string;
nid: string;
constructor(serialized?: any);
shallowCopy(transaction: Transaction): Transaction;
serialize(unsafe?: object | boolean): string;
uncheckedSerialize(): string;
checkedSerialize(opts: object): string;
invalidSatoshis(): boolean;
getSerializationError(opts: object): Error;
toBuffer(): Buffer;
toBufferWriter(): encoding.BufferWriter;
toObject(): object;
toJSON(): object;
static fromBuffer(buffer: Buffer): Transaction;
static fromBufferReader(reader: encoding.BufferReader): Transaction;
static fromObject(arg: object): Transaction;
static fromString(str: string): Transaction;
from(utxos: Transaction.UnspentOutput[], pubkeys?: PublicKey[], threshold?: number, opts?: object): this;
to(address: Address[] | Address | string, amount: number): this;
change(address: Address | string): this;
fee(amount: number): this;
feePerKb(amount: number): this;
feePerByte(amount: number): this;
sign(
privateKey: Array<PrivateKey | string> | PrivateKey | string,
sigtype?: number | null,
signingMethod?: string,
): this;
getSignatures(
privKey: PrivateKey | string,
sigtype?: number,
signingMethod?: string,
): crypto.TransactionSignature[];
applySignature(sig: crypto.Signature, signingMethod?: string): this;
isFullySigned(): boolean;
isValidSignature(sig: crypto.TransactionSignature): boolean;
verifySignature(
sig: crypto.Signature,
pubkey: PublicKey,
nin: number,
subscript: Script,
satoshisBN: crypto.BN,
flags?: number,
signingMethod?: string,
): boolean;
addInput(input: Transaction.Input, outputScript?: string | Script, satoshis?: number): this;
uncheckedAddInput(input: Transaction.Input): this;
hasAllUtxoInfo(): boolean;
lockUntilDate(time: Date | number): this;
lockUntilBlockHeight(height: number): this;
addOutput(output: Transaction.Output): this;
addData(value: Buffer | string): this;
clearOutputs(): this;
removeOutput(index: number): void;
sort(): this;
shuffleOutputs(): this;
sortOutputs(sortingFunction: (outputs: Transaction.Output[]) => Transaction.Output[]): this;
sortInputs(sortingFunction: (inputs: Transaction.Input[]) => Transaction.Input[]): this;
removeInput(index: number): void;
setVersion(version: number): this;
getFee(): number;
getChangeOutput(): Transaction.Output | null;
getLockTime(): Date | number;
verify(): string | boolean;
isCoinbase(): boolean;
inspect(): string;
}
export class Block {
hash: string;
height: number;
transactions: Transaction[];
header: {
time: number;
prevHash: string;
};
constructor(data: Buffer | object);
}
export class PrivateKey {
readonly publicKey: PublicKey;
readonly network: Networks.Network;
toAddress(network?: string | Networks.Network): Address;
toPublicKey(): PublicKey;
toString(): string;
toObject(): object;
toJSON(): object;
toWIF(): string;
static fromString(str: string): PrivateKey;
static fromWIF(str: string): PrivateKey;
static fromObject(obj: object): PrivateKey;
static fromRandom(network?: string | Networks.Network): PrivateKey;
getValidationError(data: any, network?: string | Networks.Network): null | Error;
isValid(data: any, network?: string | Networks.Network): boolean;
inspect(): string;
constructor(key?: string, network?: string | Networks.Network);
}
export class PublicKey {
constructor(source: string);
static fromPrivateKey(privateKey: PrivateKey): PublicKey;
toBuffer(): Buffer;
toDER(): Buffer;
}
export class HDPrivateKey {
readonly hdPublicKey: HDPublicKey;
readonly privateKey: PrivateKey;
constructor(data?: string | Buffer | object);
isValidPath(arg: string | number, hardened?: boolean): boolean;
isValidSerialized(data: string | Buffer, network?: string | Networks.Network): boolean;
getSerializedError(data: string | Buffer, network?: string | Networks.Network): null | Error;
derive(arg: string | number, hardened?: boolean): HDPrivateKey;
deriveChild(arg: string | number, hardened?: boolean): HDPrivateKey;
deriveNonCompliantChild(arg: string | number, hardened?: boolean): HDPrivateKey;
toString(): string;
toObject(): object;
toJSON(): object;
toBuffer(): Buffer;
static fromString(arg: string): HDPrivateKey;
static fromObject(obj: object): HDPrivateKey;
static fromSeed(hexa: string | Buffer, network?: string | Networks.Network): HDPrivateKey;
inspect(): string;
}
export class HDPublicKey {
readonly xpubkey: Buffer;
readonly network: Networks.Network;
readonly depth: number;
readonly publicKey: PublicKey;
readonly fingerPrint: Buffer;
constructor(arg: string | Buffer | object);
derive(arg: string | number, hardened?: boolean): HDPublicKey;
deriveChild(arg: string | number, hardened?: boolean): HDPublicKey;
toString(): string;
}
export namespace Script {
const types: {
DATA_OUT: string;
};
function buildMultisigOut(publicKeys: PublicKey[], threshold: number, opts: object): Script;
function buildMultisigIn(pubkeys: PublicKey[], threshold: number, signatures: Buffer[], opts: object): Script;
function buildP2SHMultisigIn(pubkeys: PublicKey[], threshold: number, signatures: Buffer[], opts: object): Script;
function buildPublicKeyHashOut(address: Address): Script;
function buildPublicKeyOut(pubkey: PublicKey): Script;
function buildDataOut(data: string | Buffer, encoding?: string): Script;
function buildScriptHashOut(script: Script): Script;
function buildPublicKeyIn(signature: crypto.Signature | Buffer, sigtype: number): Script;
function buildPublicKeyHashIn(publicKey: PublicKey, signature: crypto.Signature | Buffer, sigtype: number): Script;
function empty(): Script;
}
export class Script {
constructor(data: string | object | Buffer | Script);
set(obj: object): this;
toBuffer(): Buffer;
toASM(): string;
toString(): string;
toHex(): string;
toAddress(network?: string | Networks.Network): Address;
static fromBuffer(str: Buffer): Script;
static fromASM(str: string): Script;
static fromHex(str: string): Script;
static fromString(str: string): Script;
static fromAddress(address: Address): Script;
isPublicKeyHashOut(): boolean;
isPublicKeyHashIn(): boolean;
getPublicKey(): Buffer;
getPublicKeyHash(): Buffer;
isPublicKeyOut(): boolean;
isPublicKeyIn(): boolean;
isScriptHashOut(): boolean;
isScriptHashIn(): boolean;
isMultisigOut(): boolean;
isMultisigIn(): boolean;
isDataOut(): boolean;
getData(): Buffer;
isPushOnly(): boolean;
classify(): string;
classifyInput(): string;
classifyOutput(): string;
isStandard(): boolean;
prepend(obj: any): this;
add(obj: any): this;
hasCodeseparators(): boolean;
removeCodeseparators(): this;
equals(script: Script): boolean;
getAddressInfo(): Address | boolean;
findAndDelete(script: Script): this;
checkMinimalPush(i: number): boolean;
getSignatureOperationsCount(accurate: boolean): number;
}
export class Message {
constructor(message: string);
magicHash(): Buffer;
sign(privateKey: PrivateKey): string;
verify(bitcoinAddress: Address | string, signatureString: string): boolean;
fromString(str: string): Message;
fromJSON(json: string): Message;
toObject(): { message: string };
toJSON(): string;
toString(): string;
inspect(): string;
}
export interface Util {
readonly buffer: {
reverse(a: any): any;
};
}
export namespace Networks {
interface Network {
readonly name: string;
readonly alias: string;
}
const livenet: Network;
const mainnet: Network;
const testnet: Network;
function add(data: any): Network;
function remove(network: Network): void;
function get(args: string | number | Network, keys: string | string[]): Network;
}
export interface CashAddressDecoding {
readonly hashBuffer: Buffer;
readonly network: Networks.Network;
readonly type: string;
}
export class Address {
readonly hashBuffer: Buffer;
readonly network: Networks.Network;
readonly type: string;
constructor(data: Buffer | Uint8Array | string | object, network?: string | Networks.Network, type?: string);
static createMultisig(publicKeys: PublicKey[], threshold: number, network: string | Networks.Network): Address;
static payingTo(script: Script, network: string | Networks.Network): Address;
static decodeCashAddress(address: string): CashAddressDecoding;
static fromPublicKey(data: PublicKey, network: string | Networks.Network): Address;
static fromPublicKeyHash(hash: Buffer, network: string | Networks.Network): Address;
static fromScriptHash(hash: Buffer, network: string | Networks.Network): Address;
static fromScript(script: Script, network: string | Networks.Network): Address;
static fromBuffer(buffer: Buffer, network?: string | Networks.Network, type?: string): Address;
static fromString(str: string, network?: string | Networks.Network, type?: string): Address;
static fromObject(obj: object): Address;
toBuffer(): Buffer;
toCashBuffer(): Buffer;
toObject(): object;
toLegacyAddress(): string;
toCashAddress(): string;
toString(): string;
getValidationError(data: string, network?: string | Networks.Network, type?: string): null | Error;
isValid(data: string, network?: string | Networks.Network, type?: string): boolean;
isPayToPublicKeyHash(): boolean;
isPayToScriptHash(): boolean;
inspect(): string;
}
export class Unit {
static fromBTC(amount: number): Unit;
static fromMilis(amount: number): Unit;
static fromBits(amount: number): Unit;
static fromSatoshis(amount: number): Unit;
constructor(amount: number, unitPreference: string);
toBTC(): number;
toMilis(): number;
toBits(): number;
toSatoshis(): number;
}