mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-01-30 05:27:30 +00:00
568 lines
15 KiB
TypeScript
568 lines
15 KiB
TypeScript
// Type definitions for bitcoinjs-lib 3.3
|
|
// Project: https://github.com/bitcoinjs/bitcoinjs-lib
|
|
// Definitions by: Mohamed Hegazy <https://github.com/mhegazy>
|
|
// Daniel <https://github.com/dlebrecht>
|
|
// Ron Buckton <https://github.com/rbuckton>
|
|
// Satana Charuwichitratana <https://github.com/micksatana>
|
|
// Youssef GHOUBACH <https://github.com/youssefgh>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// Declaration file initially generated by dts-gen for bitcoinjs-lib 3.0.3
|
|
// based on the flow version found at https://github.com/flowtype/flow-typed/blob/master/definitions/npm/bitcoinjs-lib_v2.x.x/flow_v0.17.x-/bitcoinjs-lib_v2.x.x.js
|
|
|
|
/// <reference types="node" />
|
|
|
|
import BigInteger = require('bigi');
|
|
|
|
export interface Out {
|
|
script: Buffer;
|
|
value: number;
|
|
}
|
|
|
|
export interface In {
|
|
script: Buffer;
|
|
hash: Buffer;
|
|
index: number;
|
|
sequence: number;
|
|
}
|
|
|
|
export interface Network {
|
|
bip32: {
|
|
public: number;
|
|
private: number;
|
|
};
|
|
messagePrefix: string;
|
|
pubKeyHash: number;
|
|
scriptHash: number;
|
|
wif: number;
|
|
}
|
|
|
|
export class Block {
|
|
constructor();
|
|
|
|
byteLength(headersOnly?: boolean): number;
|
|
|
|
checkMerkleRoot(): any;
|
|
|
|
checkProofOfWork(): any;
|
|
|
|
getHash(): Buffer;
|
|
|
|
getId(): string;
|
|
|
|
getUTCDate(): any;
|
|
|
|
toBuffer(headersOnly?: boolean): Buffer;
|
|
|
|
toHex(headersOnly?: boolean): string;
|
|
|
|
static calculateMerkleRoot(transactions: Transaction[] | Array<{ getHash(): Buffer; }>): Buffer;
|
|
|
|
static calculateTarget(bits: number): Buffer;
|
|
|
|
static fromBuffer(buffer: Buffer): Block;
|
|
|
|
static fromHex(hex: string): Block;
|
|
}
|
|
|
|
export class ECPair {
|
|
constructor(d: BigInteger, Q?: null, options?: { compressed?: boolean, network?: Network });
|
|
|
|
constructor(d: null | undefined, Q: any, options?: { compressed?: boolean, network?: Network }); // Q should be ECPoint, but not sure how to define such type
|
|
|
|
d: BigInteger;
|
|
|
|
getAddress(): string;
|
|
|
|
getNetwork(): Network;
|
|
|
|
getPublicKeyBuffer(): Buffer;
|
|
|
|
sign(hash: Buffer): ECSignature;
|
|
|
|
toWIF(): string;
|
|
|
|
verify(hash: Buffer, signature: ECSignature): boolean;
|
|
|
|
static fromPublicKeyBuffer(buffer: Buffer, network: Network): ECPair;
|
|
|
|
static fromWIF(string: string, network: Network): ECPair;
|
|
|
|
static makeRandom(options?: { compressed?: boolean, network?: Network, rng?: Rng }): ECPair;
|
|
}
|
|
|
|
export type Rng = (size: number) => Buffer;
|
|
|
|
export class ECSignature {
|
|
constructor(r: BigInteger, s: BigInteger);
|
|
|
|
toCompact(i: number, compressed: boolean): Buffer;
|
|
|
|
toDER(): Buffer;
|
|
|
|
toScriptSignature(hashType: number): Buffer;
|
|
|
|
static fromDER(buffer: Buffer): ECSignature;
|
|
|
|
static parseCompact(buffer: Buffer): { compressed: boolean, i: number, signature: ECSignature };
|
|
|
|
static parseScriptSignature(buffer: Buffer): { signature: ECSignature, hashType: number };
|
|
}
|
|
|
|
export class HDNode {
|
|
constructor(keyPair: ECPair, chainCode: Buffer);
|
|
|
|
keyPair: ECPair;
|
|
|
|
derive(index: number): HDNode;
|
|
|
|
deriveHardened(index: number): HDNode;
|
|
|
|
derivePath(path: string): HDNode;
|
|
|
|
getAddress(): string;
|
|
|
|
getFingerprint(): Buffer;
|
|
|
|
getIdentifier(): Buffer;
|
|
|
|
getNetwork(): Network;
|
|
|
|
getPublicKeyBuffer(): Buffer;
|
|
|
|
isNeutered(): boolean;
|
|
|
|
neutered(): HDNode;
|
|
|
|
sign(hash: Buffer): ECSignature;
|
|
|
|
toBase58(): string;
|
|
|
|
verify(hash: Buffer, signature: ECSignature): boolean;
|
|
|
|
static HIGHEST_BIT: number;
|
|
|
|
static LENGTH: number;
|
|
|
|
static fromBase58(string: string, networks?: Network[] | Network): HDNode;
|
|
|
|
static fromSeedBuffer(seed: Buffer, network?: Network): HDNode;
|
|
|
|
static fromSeedHex(hex: string, network?: Network): HDNode;
|
|
|
|
static MASTER_SECRET: Buffer;
|
|
}
|
|
|
|
export class Transaction {
|
|
version: number;
|
|
locktime: number;
|
|
ins: In[];
|
|
outs: Out[];
|
|
constructor();
|
|
|
|
addInput(hash: Buffer, index: number, sequence?: number, scriptSig?: Buffer): number;
|
|
|
|
addOutput(scriptPubKey: Buffer | string, value: number): number;
|
|
|
|
byteLength(): number;
|
|
|
|
clone(): Transaction;
|
|
|
|
getHash(): Buffer;
|
|
|
|
getId(): string;
|
|
|
|
/** @since 3.0.0 */
|
|
hasWitnesses(): boolean;
|
|
|
|
hashForSignature(inIndex: number, prevOutScript: Buffer, hashType: number): Buffer;
|
|
|
|
/** @since 3.0.0 */
|
|
hashForWitnessV0(inIndex: number, prevOutScript: Buffer, value: number, hashType: number): Buffer;
|
|
|
|
isCoinbase(): boolean;
|
|
|
|
setInputScript(index: number, scriptSig: Buffer): void;
|
|
|
|
/** @since 3.0.0 */
|
|
setWitness(index: number, witness: any, ...args: any[]): void;
|
|
|
|
/** @since 3.0.0 */
|
|
toBuffer(buffer?: Buffer, initialOffset?: number): Buffer;
|
|
|
|
toHex(): string;
|
|
|
|
/** @since 3.1.0 */
|
|
virtualSize(): number;
|
|
|
|
/** @since 3.1.0 */
|
|
weight(): number;
|
|
|
|
static ADVANCED_TRANSACTION_FLAG: number;
|
|
|
|
static ADVANCED_TRANSACTION_MARKER: number;
|
|
|
|
static DEFAULT_SEQUENCE: number;
|
|
|
|
static SIGHASH_ALL: number;
|
|
|
|
static SIGHASH_ANYONECANPAY: number;
|
|
|
|
static SIGHASH_NONE: number;
|
|
|
|
static SIGHASH_SINGLE: number;
|
|
|
|
static fromBuffer(buffer: Buffer, __noStrict?: boolean): Transaction;
|
|
|
|
static fromHex(hex: string): Transaction;
|
|
|
|
static isCoinbaseHash(buffer: Buffer): boolean;
|
|
}
|
|
|
|
export interface Input {
|
|
pubKeys: Buffer[];
|
|
signatures: Buffer[];
|
|
prevOutScript: Buffer;
|
|
prevOutType: string;
|
|
signType: string;
|
|
signScript: Buffer;
|
|
witness: boolean;
|
|
}
|
|
|
|
export class TransactionBuilder {
|
|
tx: Transaction;
|
|
inputs: Input[];
|
|
|
|
constructor(network?: Network, maximumFeeRate?: number);
|
|
|
|
addInput(txhash: Buffer | string | Transaction, vout: number, sequence?: number, prevOutScript?: Buffer): number;
|
|
|
|
addOutput(scriptPubKey: Buffer | string, value: number): number;
|
|
|
|
build(): Transaction;
|
|
|
|
buildIncomplete(): Transaction;
|
|
|
|
setLockTime(locktime: number): void;
|
|
|
|
setVersion(version: number): void;
|
|
|
|
/** @since 3.0.0 */
|
|
sign(vin: number, keyPair: ECPair, redeemScript?: Buffer, hashType?: number, witnessValue?: number, witnessScript?: Buffer): void;
|
|
|
|
static fromTransaction(transaction: Transaction, network: Network): TransactionBuilder;
|
|
}
|
|
|
|
export const networks: {
|
|
bitcoin: Network;
|
|
litecoin: Network;
|
|
testnet: Network;
|
|
};
|
|
|
|
export const opcodes: {
|
|
OP_0: number;
|
|
OP_0NOTEQUAL: number;
|
|
OP_1: number;
|
|
OP_10: number;
|
|
OP_11: number;
|
|
OP_12: number;
|
|
OP_13: number;
|
|
OP_14: number;
|
|
OP_15: number;
|
|
OP_16: number;
|
|
OP_1ADD: number;
|
|
OP_1NEGATE: number;
|
|
OP_1SUB: number;
|
|
OP_2: number;
|
|
OP_2DIV: number;
|
|
OP_2DROP: number;
|
|
OP_2DUP: number;
|
|
OP_2MUL: number;
|
|
OP_2OVER: number;
|
|
OP_2ROT: number;
|
|
OP_2SWAP: number;
|
|
OP_3: number;
|
|
OP_3DUP: number;
|
|
OP_4: number;
|
|
OP_5: number;
|
|
OP_6: number;
|
|
OP_7: number;
|
|
OP_8: number;
|
|
OP_9: number;
|
|
OP_ABS: number;
|
|
OP_ADD: number;
|
|
OP_AND: number;
|
|
OP_BOOLAND: number;
|
|
OP_BOOLOR: number;
|
|
OP_CAT: number;
|
|
OP_CHECKLOCKTIMEVERIFY: number;
|
|
OP_CHECKMULTISIG: number;
|
|
OP_CHECKMULTISIGVERIFY: number;
|
|
OP_CHECKSIG: number;
|
|
OP_CHECKSIGVERIFY: number;
|
|
OP_CODESEPARATOR: number;
|
|
OP_DEPTH: number;
|
|
OP_DIV: number;
|
|
OP_DROP: number;
|
|
OP_DUP: number;
|
|
OP_ELSE: number;
|
|
OP_ENDIF: number;
|
|
OP_EQUAL: number;
|
|
OP_EQUALVERIFY: number;
|
|
OP_FALSE: number;
|
|
OP_FROMALTSTACK: number;
|
|
OP_GREATERTHAN: number;
|
|
OP_GREATERTHANOREQUAL: number;
|
|
OP_HASH160: number;
|
|
OP_HASH256: number;
|
|
OP_IF: number;
|
|
OP_IFDUP: number;
|
|
OP_INVALIDOPCODE: number;
|
|
OP_INVERT: number;
|
|
OP_LEFT: number;
|
|
OP_LESSTHAN: number;
|
|
OP_LESSTHANOREQUAL: number;
|
|
OP_LSHIFT: number;
|
|
OP_MAX: number;
|
|
OP_MIN: number;
|
|
OP_MOD: number;
|
|
OP_MUL: number;
|
|
OP_NEGATE: number;
|
|
OP_NIP: number;
|
|
OP_NOP: number;
|
|
OP_NOP1: number;
|
|
OP_NOP10: number;
|
|
OP_NOP2: number;
|
|
OP_NOP3: number;
|
|
OP_NOP4: number;
|
|
OP_NOP5: number;
|
|
OP_NOP6: number;
|
|
OP_NOP7: number;
|
|
OP_NOP8: number;
|
|
OP_NOP9: number;
|
|
OP_NOT: number;
|
|
OP_NOTIF: number;
|
|
OP_NUMEQUAL: number;
|
|
OP_NUMEQUALVERIFY: number;
|
|
OP_NUMNOTEQUAL: number;
|
|
OP_OR: number;
|
|
OP_OVER: number;
|
|
OP_PICK: number;
|
|
OP_PUBKEY: number;
|
|
OP_PUBKEYHASH: number;
|
|
OP_PUSHDATA1: number;
|
|
OP_PUSHDATA2: number;
|
|
OP_PUSHDATA4: number;
|
|
OP_RESERVED: number;
|
|
OP_RESERVED1: number;
|
|
OP_RESERVED2: number;
|
|
OP_RETURN: number;
|
|
OP_RIGHT: number;
|
|
OP_RIPEMD160: number;
|
|
OP_ROLL: number;
|
|
OP_ROT: number;
|
|
OP_RSHIFT: number;
|
|
OP_SHA1: number;
|
|
OP_SHA256: number;
|
|
OP_SIZE: number;
|
|
OP_SUB: number;
|
|
OP_SUBSTR: number;
|
|
OP_SWAP: number;
|
|
OP_TOALTSTACK: number;
|
|
OP_TRUE: number;
|
|
OP_TUCK: number;
|
|
OP_VER: number;
|
|
OP_VERIF: number;
|
|
OP_VERIFY: number;
|
|
OP_VERNOTIF: number;
|
|
OP_WITHIN: number;
|
|
OP_XOR: number;
|
|
};
|
|
|
|
export namespace address {
|
|
function fromBase58Check(address: string): { hash: Buffer, version: number };
|
|
|
|
/** @since 3.2.0 */
|
|
function fromBech32(address: string): { data: Buffer, prefix: string, version: number };
|
|
|
|
function fromOutputScript(outputScript: Buffer, network?: Network): string;
|
|
|
|
function toBase58Check(hash: Buffer, version: number): string;
|
|
|
|
/** @since 3.2.0 */
|
|
function toBech32(data: Buffer, version: number, prefix: string): string;
|
|
|
|
function toOutputScript(address: string, network?: Network): Buffer;
|
|
}
|
|
|
|
export namespace bufferutils {
|
|
function pushDataSize(i: number): number;
|
|
|
|
function readPushDataInt(buffer: Buffer, offset: number): { opcode: number, number: number, size: number };
|
|
|
|
function readUInt64LE(buffer: Buffer, offset: number): number;
|
|
|
|
function readVarInt(buffer: Buffer, offset: number): { number: number, size: number };
|
|
|
|
function varIntBuffer(number: number, buffer: Buffer, offset: number): Buffer;
|
|
|
|
function varIntSize(number: number): number;
|
|
|
|
function writePushDataInt(buffer: Buffer, number: number, offset: number): number;
|
|
|
|
function writeUInt64LE(buffer: Buffer, value: number, offset: number): number;
|
|
|
|
function writeVarInt(buffer: Buffer, number: number, offset: number): number;
|
|
}
|
|
|
|
export namespace crypto {
|
|
function hash160(buffer: Buffer): Buffer;
|
|
|
|
function hash256(buffer: Buffer): Buffer;
|
|
|
|
function ripemd160(buffer: Buffer): Buffer;
|
|
|
|
function sha1(buffer: Buffer): Buffer;
|
|
|
|
function sha256(buffer: Buffer): Buffer;
|
|
}
|
|
|
|
export namespace script {
|
|
function classifyInput(script: Buffer | Array<Buffer | number>, allowIncomplete?: boolean): "pubkeyhash" | "scripthash" | "multisig" | "pubkey" | "nonstandard";
|
|
|
|
function classifyOutput(script: Buffer | Array<Buffer | number>): "witnesspubkeyhash" | "witnessscripthash" | "pubkeyhash"
|
|
| "scripthash" | "multisig" | "pubkey" | "witnesscommitment" | "nulldata" | "nonstandard";
|
|
|
|
function classifyWitness(script: Buffer | Array<Buffer | number>, allowIncomplete: boolean): "witnesspubkeyhash" | "witnessscripthash" | "nonstandard";
|
|
|
|
function compile(chunks: Array<Buffer | number>): Buffer;
|
|
|
|
function decompile(buffer: Buffer): Array<Buffer | number>;
|
|
|
|
function fromASM(asm: string): Buffer;
|
|
|
|
function isCanonicalPubKey(buffer: Buffer): boolean;
|
|
|
|
function isCanonicalSignature(buffer: Buffer): boolean;
|
|
|
|
function isDefinedHashType(hashType: any): boolean;
|
|
|
|
function isPushOnly(value: any): boolean;
|
|
|
|
function toASM(chunks: Buffer | Array<Buffer | number>): string;
|
|
|
|
function toStack(chunks: Buffer | Array<Buffer | number>): Buffer[];
|
|
|
|
namespace number {
|
|
function decode(buffer: Buffer, maxLength: number, minimal: boolean): number;
|
|
|
|
function encode(number: number): Buffer;
|
|
}
|
|
|
|
const multisig: {
|
|
input: {
|
|
check(script: Buffer, allowIncomplete: boolean): boolean;
|
|
decode(buffer: Buffer): Array<Buffer | number>;
|
|
decodeStack(stack: Buffer[], allowIncomplete: boolean): Array<Buffer | number>;
|
|
encode(signatures: ECSignature[], scriptPubKey: Buffer): Buffer;
|
|
encodeStack(signatures: ECSignature[], scriptPubKey: Buffer): ECSignature[];
|
|
};
|
|
output: {
|
|
check(script: Buffer, allowIncomplete: boolean): boolean;
|
|
decode(buffer: Buffer, allowIncomplete: boolean): { m: number; pubKeys: Array<Buffer | number> };
|
|
encode(m: number, pubKeys: Array<Buffer | number>): Buffer;
|
|
};
|
|
};
|
|
|
|
const pubKey: {
|
|
input: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Array<Buffer | number>;
|
|
decodeStack(stack: Buffer[]): Array<Buffer | number>;
|
|
encode(signature: ECSignature): Buffer;
|
|
encodeStack(signature: ECSignature): ECSignature[];
|
|
};
|
|
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer | number;
|
|
encode(pubKey: Buffer): Buffer;
|
|
};
|
|
};
|
|
|
|
const pubKeyHash: {
|
|
input: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): { signature: ECSignature; pubKey: Buffer };
|
|
decodeStack(stack: Buffer[]): { signature: ECSignature; pubKey: Buffer };
|
|
encode(signature: ECSignature, pubKey: Buffer): Buffer;
|
|
encodeStack(signature: ECSignature, pubKey: Buffer): [ECSignature, Buffer];
|
|
};
|
|
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer;
|
|
encode(pubKeyHash: Buffer): Buffer;
|
|
};
|
|
};
|
|
|
|
const scriptHash: {
|
|
input: {
|
|
check(script: Buffer, allowIncomplete: boolean): boolean;
|
|
decode(buffer: Buffer): { redeemScriptStack: Buffer[]; redeemScript: Buffer };
|
|
decodeStack(stack: Buffer[]): { redeemScriptStack: Buffer[]; redeemScript: Buffer };
|
|
encode(redeemScriptSig: Array<Buffer | number>, redeemScript: Buffer): Buffer;
|
|
encodeStack(redeemScriptStack: Buffer[], redeemScript: Buffer): Buffer;
|
|
};
|
|
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer;
|
|
encode(scriptHash: Buffer): Buffer;
|
|
};
|
|
};
|
|
|
|
const witnessCommitment: {
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer[];
|
|
encode(commitment: Buffer): Buffer;
|
|
};
|
|
};
|
|
|
|
const witnessPubKeyHash: {
|
|
input: {
|
|
check(script: Buffer): boolean;
|
|
decodeStack(stack: Buffer[]): { signature: ECSignature; pubKey: Buffer };
|
|
encodeStack(signature: ECSignature, pubKey: Buffer): [ECSignature, Buffer];
|
|
};
|
|
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer;
|
|
encode(pubKeyHash: Buffer): Buffer;
|
|
};
|
|
};
|
|
|
|
const witnessScriptHash: {
|
|
input: {
|
|
check(script: Buffer, allowIncomplete: boolean): boolean;
|
|
decodeStack(stack: Buffer[]): { redeemScriptStack: Buffer[]; redeemScript: Buffer };
|
|
encodeStack(redeemScriptStack: Buffer[], redeemScript: Buffer): Buffer;
|
|
};
|
|
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer;
|
|
encode(scriptHash: Buffer): Buffer;
|
|
};
|
|
};
|
|
|
|
const nullData: {
|
|
output: {
|
|
check(script: Buffer): boolean;
|
|
decode(buffer: Buffer): Buffer;
|
|
encode(data: Buffer): Buffer;
|
|
};
|
|
};
|
|
}
|