@esteemapp/dhive
Version:
Hive blockchain RPC client library
1,292 lines (1,283 loc) • 109 kB
TypeScript
declare module 'dhive/version' {
const _default: string;
export default _default;
}
declare module 'dhive/chain/asset' {
/**
* @file Hive asset type definitions and helpers.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
export interface SMTAsset {
amount: string | number;
precision: number;
nai: string;
}
/**
* Asset symbol string.
*/
export type AssetSymbol = 'HIVE' | 'VESTS' | 'HBD' | 'TESTS' | 'TBD' | 'STEEM' | 'SBD';
/**
* Class representing a hive asset, e.g. `1.000 HIVE` or `12.112233 VESTS`.
*/
export class Asset {
readonly amount: number;
readonly symbol: AssetSymbol;
constructor(amount: number, symbol: AssetSymbol);
/**
* Create a new Asset instance from a string, e.g. `42.000 HIVE`.
*/
static fromString(string: string, expectedSymbol?: AssetSymbol): Asset;
/**
* Convenience to create new Asset.
* @param symbol Symbol to use when created from number. Will also be used to validate
* the asset, throws if the passed value has a different symbol than this.
*/
static from(value: string | Asset | number, symbol?: AssetSymbol): Asset;
/**
* Return the smaller of the two assets.
*/
static min(a: Asset, b: Asset): Asset;
/**
* Return the larger of the two assets.
*/
static max(a: Asset, b: Asset): Asset;
/**
* Return asset precision.
*/
getPrecision(): number;
/**
* returns a representation of this asset using only STEEM SBD for
* legacy purposes
*/
steem_symbols(): Asset;
/**
* Return a string representation of this asset, e.g. `42.000 HIVE`.
*/
toString(): string;
/**
* Return a new Asset instance with amount added.
*/
add(amount: Asset | string | number): Asset;
/**
* Return a new Asset instance with amount subtracted.
*/
subtract(amount: Asset | string | number): Asset;
/**
* Return a new Asset with the amount multiplied by factor.
*/
multiply(factor: Asset | string | number): Asset;
/**
* Return a new Asset with the amount divided.
*/
divide(divisor: Asset | string | number): Asset;
/**
* For JSON serialization, same as toString().
*/
toJSON(): string;
}
export type PriceType = Price | {
base: Asset | string;
quote: Asset | string;
};
/**
* Represents quotation of the relative value of asset against another asset.
* Similar to 'currency pair' used to determine value of currencies.
*
* For example:
* 1 EUR / 1.25 USD where:
* 1 EUR is an asset specified as a base
* 1.25 USD us an asset specified as a qute
*
* can determine value of EUR against USD.
*/
export class Price {
readonly base: Asset;
readonly quote: Asset;
/**
* @param base - represents a value of the price object to be expressed relatively to quote
* asset. Cannot have amount == 0 if you want to build valid price.
* @param quote - represents an relative asset. Cannot have amount == 0, otherwise
* asertion fail.
*
* Both base and quote shall have different symbol defined.
*/
constructor(base: Asset, quote: Asset);
/**
* Convenience to create new Price.
*/
static from(value: PriceType): Price;
/**
* Return a string representation of this price pair.
*/
toString(): string;
/**
* Return a new Asset with the price converted between the symbols in the pair.
* Throws if passed asset symbol is not base or quote.
*/
convert(asset: Asset): Asset;
}
}
declare module 'dhive/chain/account' {
/**
* @file Hive account type definitions.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
import { PublicKey } from 'dhive/crypto';
import { Asset } from 'dhive/chain/asset';
export interface AuthorityType {
weight_threshold: number;
account_auths: [string, number][];
key_auths: [string | PublicKey, number][];
}
export class Authority implements AuthorityType {
weight_threshold: number;
account_auths: [string, number][];
key_auths: [string | PublicKey, number][];
constructor({ weight_threshold, account_auths, key_auths }: AuthorityType);
/**
* Convenience to create a new instance from PublicKey or authority object.
*/
static from(value: string | PublicKey | AuthorityType): Authority;
}
export interface Account {
id: number;
name: string;
owner: Authority;
active: Authority;
posting: Authority;
memo_key: string;
json_metadata: string;
proxy: string;
last_owner_update: string;
last_account_update: string;
created: string;
mined: boolean;
owner_challenged: boolean;
active_challenged: boolean;
last_owner_proved: string;
last_active_proved: string;
recovery_account: string;
reset_account: string;
last_account_recovery: string;
comment_count: number;
lifetime_vote_count: number;
post_count: number;
can_vote: boolean;
voting_power: number;
last_vote_time: string;
voting_manabar: {
current_mana: string | number;
last_update_time: number;
};
balance: string | Asset;
savings_balance: string | Asset;
hbd_balance?: string | Asset;
hbd_seconds?: string;
hbd_seconds_last_update?: string;
hbd_last_interest_payment?: string;
savings_hbd_balance?: string | Asset;
savings_hbd_seconds?: string;
savings_hbd_seconds_last_update?: string;
savings_hbd_last_interest_payment?: string;
sbd_balance?: string | Asset;
sbd_seconds?: string;
sbd_seconds_last_update?: string;
sbd_last_interest_payment?: string;
savings_sbd_balance?: string | Asset;
savings_sbd_seconds?: string;
savings_sbd_seconds_last_update?: string;
savings_sbd_last_interest_payment?: string;
savings_withdraw_requests: number;
reward_hbd_balance?: string | Asset;
reward_hive_balance?: string | Asset;
reward_sbd_balance?: string | Asset;
reward_steem_balance?: string | Asset;
reward_vesting_balance: string | Asset;
reward_vesting_hive?: string | Asset;
reward_vesting_steem?: string | Asset;
curation_rewards: number | string;
posting_rewards: number | string;
vesting_shares: string | Asset;
delegated_vesting_shares: string | Asset;
received_vesting_shares: string | Asset;
vesting_withdraw_rate: string | Asset;
next_vesting_withdrawal: string;
withdrawn: number | string;
to_withdraw: number | string;
withdraw_routes: number;
proxied_vsf_votes: number[];
witnesses_voted_for: number;
average_bandwidth: number | string;
lifetime_bandwidth: number | string;
last_bandwidth_update: string;
average_market_bandwidth: number | string;
lifetime_market_bandwidth: number | string;
last_market_bandwidth_update: string;
last_post: string;
last_root_post: string;
}
export interface ExtendedAccount extends Account {
/**
* Convert vesting_shares to vesting hive.
*/
vesting_balance: string | Asset;
reputation: string | number;
/**
* Transfer to/from vesting.
*/
transfer_history: any[];
/**
* Limit order / cancel / fill.
*/
market_history: any[];
post_history: any[];
vote_history: any[];
other_history: any[];
witness_votes: string[];
tags_usage: string[];
guest_bloggers: string[];
open_orders?: any[];
comments?: any[];
blog?: any[];
feed?: any[];
recent_replies?: any[];
recommended?: any[];
}
}
declare module 'dhive/chain/misc' {
/// <reference types="node" />
/**
* @file Misc hive type definitions.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
import { Account } from 'dhive/chain/account';
import { Asset, Price } from 'dhive/chain/asset';
/**
* Large number that may be unsafe to represent natively in JavaScript.
*/
export type Bignum = string;
/**
* Buffer wrapper that serializes to a hex-encoded string.
*/
export class HexBuffer {
buffer: Buffer;
constructor(buffer: Buffer);
/**
* Convenience to create a new HexBuffer, does not copy data if value passed is already a buffer.
*/
static from(value: Buffer | HexBuffer | number[] | string): HexBuffer;
toString(encoding?: string): string;
toJSON(): string;
}
/**
* Chain roperties that are decided by the witnesses.
*/
export interface ChainProperties {
/**
* This fee, paid in HIVE, is converted into VESTING SHARES for the new account. Accounts
* without vesting shares cannot earn usage rations and therefore are powerless. This minimum
* fee requires all accounts to have some kind of commitment to the network that includes the
* ability to vote and make transactions.
*
* @note This has to be multiplied by STEEMIT ? `CREATE_ACCOUNT_WITH_HIVE_MODIFIER`
* (defined as 30 on the main chain) to get the minimum fee needed to create an account.
*
*/
account_creation_fee: string | Asset;
/**
* This witnesses vote for the maximum_block_size which is used by the network
* to tune rate limiting and capacity.
*/
maximum_block_size: number;
/**
* The SBD interest percentage rate decided by witnesses, expressed 0 to 10000.
*/
hbd_interest_rate?: number;
sbd_interest_rate?: number;
}
export interface VestingDelegation {
/**
* Delegation id.
*/
id: number;
/**
* Account that is delegating vests to delegatee.
*/
delegator: string;
/**
* Account that is receiving vests from delegator.
*/
delegatee: string;
/**
* Amount of VESTS delegated.
*/
vesting_shares: Asset | string;
/**
* Earliest date delegation can be removed.
*/
min_delegation_time: string;
}
/**
* Node state.
*/
export interface DynamicGlobalProperties {
id: number;
/**
* Current block height.
*/
head_block_number: number;
head_block_id: string;
/**
* UTC Server time, e.g. 2020-01-15T00:42:00
*/
time: string;
/**
* Currently elected witness.
*/
current_witness: string;
/**
* The total POW accumulated, aka the sum of num_pow_witness at the time
* new POW is added.
*/
total_pow: number;
/**
* The current count of how many pending POW witnesses there are, determines
* the difficulty of doing pow.
*/
num_pow_witnesses: number;
virtual_supply: Asset | string;
current_supply: Asset | string;
/**
* Total asset held in confidential balances.
*/
confidential_supply: Asset | string;
current_hbd_supply?: Asset | string;
current_sbd_supply?: Asset | string;
/**
* Total asset held in confidential balances.
*/
confidential_hbd_supply?: Asset | string;
confidential_sbd_supply?: Asset | string;
total_vesting_fund_hive?: Asset | string;
total_vesting_fund_steem?: Asset | string;
total_vesting_shares: Asset | string;
total_reward_fund_hive?: Asset | string;
total_reward_fund_steem?: Asset | string;
/**
* The running total of REWARD^2.
*/
total_reward_shares2: string;
pending_rewarded_vesting_shares: Asset | string;
pending_rewarded_vesting_hive?: Asset | string;
pending_rewarded_vesting_steem?: Asset | string;
/**
* This property defines the interest rate that HBD deposits receive.
*/
hbd_interest_rate?: number;
hbd_print_rate?: number;
sbd_interest_rate?: number;
sbd_print_rate?: number;
/**
* Average block size is updated every block to be:
*
* average_block_size = (99 * average_block_size + new_block_size) / 100
*
* This property is used to update the current_reserve_ratio to maintain
* approximately 50% or less utilization of network capacity.
*/
average_block_size: number;
/**
* Maximum block size is decided by the set of active witnesses which change every round.
* Each witness posts what they think the maximum size should be as part of their witness
* properties, the median size is chosen to be the maximum block size for the round.
*
* @note the minimum value for maximum_block_size is defined by the protocol to prevent the
* network from getting stuck by witnesses attempting to set this too low.
*/
maximum_block_size: number;
/**
* The current absolute slot number. Equal to the total
* number of slots since genesis. Also equal to the total
* number of missed slots plus head_block_number.
*/
current_aslot: number;
/**
* Used to compute witness participation.
*/
recent_slots_filled: Bignum;
participation_count: number;
last_irreversible_block_num: number;
/**
* The maximum bandwidth the blockchain can support is:
*
* max_bandwidth = maximum_block_size * BANDWIDTH_AVERAGE_WINDOW_SECONDS / BLOCK_INTERVAL
*
* The maximum virtual bandwidth is:
*
* max_bandwidth * current_reserve_ratio
*/
max_virtual_bandwidth: Bignum;
/**
* Any time average_block_size <= 50% maximum_block_size this value grows by 1 until it
* reaches MAX_RESERVE_RATIO. Any time average_block_size is greater than
* 50% it falls by 1%. Upward adjustments happen once per round, downward adjustments
* happen every block.
*/
current_reserve_ratio: number;
/**
* The number of votes regenerated per day. Any user voting slower than this rate will be
* "wasting" voting power through spillover; any user voting faster than this rate will have
* their votes reduced.
*/
vote_power_reserve_rate: number;
}
/**
* Return the vesting share price.
*/
export function getVestingSharePrice(props: DynamicGlobalProperties): Price;
/**
* Returns the vests of specified account. Default: Subtract delegated & add received
*/
export function getVests(account: Account, subtract_delegated?: boolean, add_received?: boolean): number;
}
declare module 'dhive/chain/serializer' {
/**
* @file Hive protocol serialization.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
/// <reference types="node" />
import * as ByteBuffer from 'bytebuffer';
import { PublicKey } from 'dhive/crypto';
import { Asset } from 'dhive/chain/asset';
import { HexBuffer } from 'dhive/chain/misc';
import { Operation } from 'dhive/chain/operation';
export type Serializer = (buffer: ByteBuffer, data: any) => void;
export const updateOperations: () => void;
export const Types: {
Array: (itemSerializer: Serializer) => (buffer: ByteBuffer, data: any[]) => void;
Asset: (buffer: ByteBuffer, data: string | number | Asset) => void;
Authority: (buffer: ByteBuffer, data: {
[key: string]: any;
}) => void;
Binary: (size?: number | undefined) => (buffer: ByteBuffer, data: HexBuffer | Buffer) => void;
Boolean: (buffer: ByteBuffer, data: boolean) => void;
Date: (buffer: ByteBuffer, data: string) => void;
FlatMap: (keySerializer: Serializer, valueSerializer: Serializer) => (buffer: ByteBuffer, data: [any, any][]) => void;
Int16: (buffer: ByteBuffer, data: number) => void;
Int32: (buffer: ByteBuffer, data: number) => void;
Int64: (buffer: ByteBuffer, data: number) => void;
Int8: (buffer: ByteBuffer, data: number) => void;
Object: (keySerializers: [string, Serializer][]) => (buffer: ByteBuffer, data: {
[key: string]: any;
}) => void;
Operation: (buffer: ByteBuffer, operation: Operation) => void;
Optional: (valueSerializer: Serializer) => (buffer: ByteBuffer, data: any) => void;
Price: (buffer: ByteBuffer, data: {
[key: string]: any;
}) => void;
PublicKey: (buffer: ByteBuffer, data: string | PublicKey | null) => void;
StaticVariant: (itemSerializers: Serializer[]) => (buffer: ByteBuffer, data: [number, any]) => void;
String: (buffer: ByteBuffer, data: string) => void;
Transaction: (buffer: ByteBuffer, data: {
[key: string]: any;
}) => void;
UInt16: (buffer: ByteBuffer, data: number) => void;
UInt32: (buffer: ByteBuffer, data: number) => void;
UInt64: (buffer: ByteBuffer, data: number) => void;
UInt8: (buffer: ByteBuffer, data: number) => void;
Void: (buffer: ByteBuffer) => never;
};
}
declare module 'dhive/chain/transaction' {
/**
* @file Hive transaction type definitions.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
import { Operation } from 'dhive/chain/operation';
export interface Transaction {
ref_block_num: number;
ref_block_prefix: number;
expiration: string;
operations: Operation[];
extensions: any[];
}
export interface SignedTransaction extends Transaction {
signatures: string[];
}
export interface TransactionConfirmation {
id: string;
block_num: number;
trx_num: number;
expired: boolean;
}
}
declare module 'dhive/crypto' {
/**
* @file Hive crypto helpers.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
/// <reference types="node" />
import { SignedTransaction, Transaction } from 'dhive/chain/transaction';
/**
* Network id used in WIF-encoding.
*/
export const NETWORK_ID: Buffer; function ripemd160(input: Buffer | string): Buffer; function sha256(input: Buffer | string): Buffer; function doubleSha256(input: Buffer | string): Buffer; function encodePublic(key: Buffer, prefix: string): string; function encodePrivate(key: Buffer): string; function decodePrivate(encodedKey: string): Buffer; function isCanonicalSignature(signature: Buffer): boolean; function isWif(privWif: string | Buffer): boolean;
/**
* ECDSA (secp256k1) public key.
*/
export class PublicKey {
readonly key: Buffer;
readonly prefix: string;
constructor(key: Buffer, prefix?: string);
/**
* Create a new instance from a WIF-encoded key.
*/
static fromString(wif: string): PublicKey;
/**
* Create a new instance.
*/
static from(value: string | PublicKey): PublicKey;
/**
* Verify a 32-byte signature.
* @param message 32-byte message to verify.
* @param signature Signature to verify.
*/
verify(message: Buffer, signature: Signature): boolean;
/**
* Return a WIF-encoded representation of the key.
*/
toString(): string;
/**
* Return JSON representation of this key, same as toString().
*/
toJSON(): string;
/**
* Used by `utils.inspect` and `console.log` in node.js.
*/
inspect(): string;
}
export type KeyRole = 'owner' | 'active' | 'posting' | 'memo';
/**
* ECDSA (secp256k1) private key.
*/
export class PrivateKey {
private key;
constructor(key: Buffer);
/**
* Convenience to create a new instance from WIF string or buffer.
*/
static from(value: string | Buffer): PrivateKey;
/**
* Create a new instance from a WIF-encoded key.
*/
static fromString(wif: string): PrivateKey;
/**
* Create a new instance from a seed.
*/
static fromSeed(seed: string): PrivateKey;
/**
* Create key from username and password.
*/
static fromLogin(username: string, password: string, role?: KeyRole): PrivateKey;
/**
* Sign message.
* @param message 32-byte message.
*/
sign(message: Buffer): Signature;
/**
* Derive the public key for this private key.
*/
createPublic(prefix?: string): PublicKey;
/**
* Return a WIF-encoded representation of the key.
*/
toString(): string;
/**
* Used by `utils.inspect` and `console.log` in node.js. Does not show the full key
* to get the full encoded key you need to explicitly call {@link toString}.
*/
inspect(): string;
}
/**
* ECDSA (secp256k1) signature.
*/
export class Signature {
data: Buffer;
recovery: number;
constructor(data: Buffer, recovery: number);
static fromBuffer(buffer: Buffer): Signature;
static fromString(string: string): Signature;
/**
* Recover public key from signature by providing original signed message.
* @param message 32-byte message that was used to create the signature.
*/
recover(message: Buffer, prefix?: string): PublicKey;
toBuffer(): Buffer;
toString(): string;
} function transactionDigest(transaction: Transaction | SignedTransaction, chainId?: Buffer): Buffer; function signTransaction(transaction: Transaction, keys: PrivateKey | PrivateKey[], chainId?: Buffer): SignedTransaction;
/** Misc crypto utility functions. */
export const cryptoUtils: {
decodePrivate: typeof decodePrivate;
doubleSha256: typeof doubleSha256;
encodePrivate: typeof encodePrivate;
encodePublic: typeof encodePublic;
isCanonicalSignature: typeof isCanonicalSignature;
isWif: typeof isWif;
ripemd160: typeof ripemd160;
sha256: typeof sha256;
signTransaction: typeof signTransaction;
transactionDigest: typeof transactionDigest;
};
export {};
}
declare module 'dhive/chain/block' {
/**
* @file Hive block type definitions.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
import { Transaction } from 'dhive/chain/transaction';
/**
* Unsigned block header.
*/
export interface BlockHeader {
previous: string;
timestamp: string;
witness: string;
transaction_merkle_root: string;
extensions: any[];
}
/**
* Signed block header.
*/
export interface SignedBlockHeader extends BlockHeader {
witness_signature: string;
}
/**
* Full signed block.
*/
export interface SignedBlock extends SignedBlockHeader {
block_id: string;
signing_key: string;
transaction_ids: string[];
transactions: Transaction[];
}
}
declare module 'dhive/chain/comment' {
/**
* @file Hive type definitions related to comments and posting.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
import { Asset } from 'dhive/chain/asset';
export interface Comment {
id: number;
category: string;
parent_author: string;
parent_permlink: string;
author: string;
permlink: string;
title: string;
body: string;
json_metadata: string;
last_update: string;
created: string;
active: string;
last_payout: string;
depth: number;
children: number;
net_rshares: string;
abs_rshares: string;
vote_rshares: string;
children_abs_rshares: string;
cashout_time: string;
max_cashout_time: string;
total_vote_weight: number;
reward_weight: number;
total_payout_value: Asset | string;
curator_payout_value: Asset | string;
author_rewards: string;
net_votes: number;
root_comment: number;
max_accepted_payout: string;
percent_hbd?: number;
percent_steem_dollars?: number;
allow_replies: boolean;
allow_votes: boolean;
allow_curation_rewards: boolean;
beneficiaries: BeneficiaryRoute[];
}
/**
* Discussion a.k.a. Post.
*/
export interface Discussion extends Comment {
url: string;
root_title: string;
pending_payout_value: Asset | string;
total_pending_payout_value: Asset | string;
active_votes: any[];
replies: string[];
author_reputation: number;
promoted: Asset | string;
body_length: string;
reblogged_by: any[];
first_reblogged_by?: any;
first_reblogged_on?: any;
}
export interface BeneficiaryRoute {
account: string;
weight: number;
}
}
declare module 'dhive/chain/operation' {
/**
* @file Hive operation type definitions.
* @author Johan Nordberg <code@johan-nordberg.com>
* @license
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You acknowledge that this software is not designed, licensed or intended for use
* in the design, construction, operation or maintenance of any military facility.
*/
/// <reference types="node" />
import { PublicKey } from 'dhive/crypto';
import { AuthorityType } from 'dhive/chain/account';
import { Asset, PriceType } from 'dhive/chain/asset';
import { SignedBlockHeader } from 'dhive/chain/block';
import { BeneficiaryRoute } from 'dhive/chain/comment';
import { ChainProperties, HexBuffer } from 'dhive/chain/misc';
/**
* Operation name.
*/
export type OperationName = 'account_create' | 'account_create_with_delegation' | 'account_update' | 'account_update2' | 'account_witness_proxy' | 'account_witness_vote' | 'cancel_transfer_from_savings' | 'change_recovery_account' | 'claim_account' | 'claim_reward_balance' | 'create_proposal' | 'comment' | 'comment_options' | 'convert' | 'create_claimed_account' | 'custom' | 'custom_binary' | 'custom_json' | 'decline_voting_rights' | 'delegate_vesting_shares' | 'delete_comment' | 'escrow_approve' | 'escrow_dispute' | 'escrow_release' | 'escrow_transfer' | 'feed_publish' | 'limit_order_cancel' | 'limit_order_create' | 'limit_order_create2' | 'pow' | 'pow2' | 'recover_account' | 'remove_proposal' | 'report_over_production' | 'request_account_recovery' | 'reset_account' | 'set_reset_account' | 'set_withdraw_vesting_route' | 'transfer' | 'transfer_from_savings' | 'transfer_to_savings' | 'transfer_to_vesting' | 'update_proposal_votes' | 'vote' | 'withdraw_vesting' | 'witness_set_properties' | 'witness_update';
/**
* Virtual operation name.
*/
export type VirtualOperationName = 'author_reward' | 'comment_benefactor_reward' | 'comment_payout_update' | 'comment_reward' | 'curation_reward' | 'fill_convert_request' | 'fill_order' | 'fill_transfer_from_savings' | 'fill_vesting_withdraw' | 'hardfork' | 'interest' | 'liquidity_reward' | 'return_vesting_delegation' | 'shutdown_witness';
/**
* Generic operation.
*/
export interface Operation {
0: OperationName | VirtualOperationName;
1: {
[key: string]: any;
};
}
export interface AppliedOperation {
trx_id: string;
block: number;
trx_in_block: number;
op_in_trx: number;
virtual_op: number;
timestamp: string;
op: Operation;
}
export interface AccountCreateOperation extends Operation {
0: 'account_create';
1: {
fee: string | Asset;
creator: string;
new_account_name: string;
owner: AuthorityType;
active: AuthorityType;
posting: AuthorityType;
memo_key: string | PublicKey;
json_metadata: string;
};
}
export interface AccountCreateWithDelegationOperation extends Operation {
0: 'account_create_with_delegation';
1: {
fee: string | Asset;
delegation: string | Asset;
creator: string;
new_account_name: string;
owner: AuthorityType;
active: AuthorityType;
posting: AuthorityType;
memo_key: string | PublicKey;
json_metadata: string;
/**
* Extensions. Not currently used.
*/
extensions: any[];
};
}
export interface AccountUpdateOperation extends Operation {
0: 'account_update';
1: {
account: string;
owner?: AuthorityType;
active?: AuthorityType;
posting?: AuthorityType;
memo_key: string | PublicKey;
json_metadata: string;
};
}
export interface AccountWitnessProxyOperation extends Operation {
0: 'account_witness_proxy';
1: {
account: string;
proxy: string;
};
}
export interface AccountWitnessVoteOperation extends Operation {
0: 'account_witness_vote';
1: {
account: string;
witness: string;
approve: boolean;
};
}
export interface CancelTransferFromSavingsOperation extends Operation {
0: 'cancel_transfer_from_savings';
1: {
from: string;
request_id: number;
};
}
/**
* Each account lists another account as their recovery account.
* The recovery account has the ability to create account_recovery_requests
* for the account to recover. An account can change their recovery account
* at any time with a 30 day delay. This delay is to prevent
* an attacker from changing the recovery account to a malicious account
* during an attack. These 30 days match the 30 days that an
* owner authority is valid for recovery purposes.
*
* On account creation the recovery account is set either to the creator of
* the account (The account that pays the creation fee and is a signer on the transaction)
* or to the empty string if the account was mined. An account with no recovery
* has the top voted witness as a recovery account, at the time the recover
* request is created. Note: This does mean the effective recovery account
* of an account with no listed recovery account can change at any time as
* witness vote weights. The top voted witness is explicitly the most trusted
* witness according to stake.
*/
export interface ChangeRecoveryAccountOperation extends Operation {
0: 'change_recovery_account';
1: {
/**
* The account that would be recovered in case of compromise.
*/
account_to_recover: string;
/**
* The account that creates the recover request.
*/
new_recovery_account: string;
/**
* Extensions. Not currently used.
*/
extensions: any[];
};
}
export interface ClaimRewardBalanceOperation extends Operation {
0: 'claim_reward_balance';
1: {
account: string;
reward_hive?: string | Asset;
reward_hbd?: string | Asset;
reward_steem?: string | Asset;
reward_sbd?: string | Asset;
reward_vests: string | Asset;
};
}
export interface ClaimAccountOperation extends Operation {
0: 'claim_account';
1: {
creator: string;
fee: string | Asset;
/**
* Extensions. Not currently used.
*/
extensions: any[];
};
}
export interface CommentOperation extends Operation {
0: 'comment';
1: {
parent_author: string;
parent_permlink: string;
author: string;
permlink: string;
title: string;
body: string;
json_metadata: string;
};
}
export interface CommentOptionsOperation extends Operation {
0: 'comment_options';
1: {
author: string;
permlink: string;
/** HBD value of the maximum payout this post will receive. */
max_accepted_payout: Asset | string;
/** The percent of Hive Dollars to key, unkept amounts will be received as Hive Power. */
percent_steem_dollars?: number;
percent_hbd?: number;
/** Whether to allow post to receive votes. */
allow_votes: boolean;
/** Whether to allow post to recieve curation rewards. */
allow_curation_rewards: boolean;
extensions: [0, {
beneficiaries: BeneficiaryRoute[];
}][];
};
}
export interface ConvertOperation extends Operation {
0: 'convert';
1: {
owner: string;
requestid: number;
amount: Asset | string;
};
}
export interface CreateClaimedAccountOperation extends Operation {
0: 'create_claimed_account';
1: {
creator: string;
new_account_name: string;
owner: AuthorityType;
active: AuthorityType;
posting: AuthorityType;
memo_key: string | PublicKey;
json_metadata: string;
/**
* Extensions. Not currently used.
*/
extensions: any[];
};
}
export interface CustomOperation extends Operation {
0: 'custom';
1: {
required_auths: string[];
id: number;
data: Buffer | HexBuffer | number[];
};
}
export interface CustomBinaryOperation extends Operation {
0: 'custom_binary';
1: {
required_owner_auths: string[];
required_active_auths: string[];
required_posting_auths: string[];
required_auths: AuthorityType[];
/**
* ID string, must be less than 32 characters long.
*/
id: string;
data: Buffer | HexBuffer | number[];
};
}
export interface CustomJsonOperation extends Operation {
0: 'custom_json';
1: {
required_auths: string[];
required_posting_auths: string[];
/**
* ID string, must be less than 32 characters long.
*/
id: string;
/**
* JSON encoded string, must be valid JSON.
*/
json: string;
};
}
export interface DeclineVotingRightsOperation extends Operation {
0: 'decline_voting_rights';
1: {
account: string;
decline: boolean;
};
}
export interface DelegateVestingSharesOperation extends Operation {
0: 'delegate_vesting_shares';
1: {
/**
* The account delegating vesting shares.
*/
delegator: string;
/**
* The account receiving vesting shares.
*/
delegatee: string;
/**
* The amount of vesting shares delegated.
*/
vesting_shares: string | Asset;
};
}
export interface DeleteCommentOperation extends Operation {
0: 'delete_comment';
1: {
author: string;
permlink: string;
};
}
/**
* The agent and to accounts must app