///
import { TransactionBuilder } from './TransactionBuilder';
import GXRPC from './GXRPC';
import * as types from '../types/types';
/**
* This callback is displayed as a global member.
* @callback signatureProvider
* @param transaction {TransactionBuilder}
* @param chain_id {String} - Chain Id
*/
/**
* GXClient Class
*/
declare class GXClient {
private_key: string;
account_id_or_name: string;
account_id: string;
account: string;
connected: boolean;
chain_id: string;
witness: string;
signProvider: (transaction: TransactionBuilder, chain_id: string) => Promise;
nonceProvider: () => string;
host: string;
rpc: GXRPC;
isTaskStarted: boolean;
latestBlock: number;
/**
*
* @param {String} private_key - private key
* @param {String} account_id_or_name - e.g: '1.2.44'|'gxcaccount'
* @param {String} entry_point - entry point network address
* @param {signatureProvider} signProvider
*/
constructor(private_key: string, account_id_or_name: string, entry_point?: string, signProvider?: (transaction: TransactionBuilder, chain_id: string) => Promise, nonceProvider?: () => string);
/**
* generate key pair locally
* @returns {{brainKey: *, privateKey: *, publicKey: *}}
*/
generateKey(brainKey?: string): {
brainKey: string;
privateKey: string;
publicKey: string;
};
/**
* export public key from private key
* @param privateKey {String}
* @returns {String}
*/
privateToPublic(privateKey: string): string;
/**
* check if public key is valid
* @param publicKey {String}
* @returns {boolean}
*/
isValidPublic(publicKey: string): boolean;
/**
* check if private key is valid
* @param privateKey {String}
* @returns {boolean}
*/
isValidPrivate(privateKey: string): boolean;
/**
* register an account by faucet
* @param account {String} - Account name
* @param activeKey {String} - Public Key for account operator
* @param ownerKey {String} - Public Key for account owner
* @param memoKey {String} - Public Key for memo
* @param faucet {String} - faucet url
* @returns {Promise}
* @example
* curl ‘https://opengateway.gxb.io/account/register' -H 'Content-type: application/json' -H 'Accept: application/json’ -d ‘{“account”:{“name”:”gxb123”,”owner_key”:”GXC5wQ4RtjouyobBV57vTx7boBj4Kt3BUxZEMsUD3TU369d3C9DqZ”,”active_key”:”GXC7cPVyB9F1Pfiaaxw4nY3xKADo5993hEsTjFs294LKwhqsUrFZs”,”memo_key”:”GXC7cPVyB9F1Pfiaaxw4nY3xKADo5993hEsTjFs294LKwhqsUrFZs”,”refcode”:null,”referrer”:null}}’
*/
register(account: string, activeKey: string, ownerKey: string, memoKey: string, faucet?: string): Promise;
/**
* get object by id
* @param object_id {String} - e.g: '1.2.3'
* @returns {Request|PromiseLike|Promise}
*/
getObject(object_id: string): Promise;
/**
* get objects
* @param {String[]} object_ids
* @returns {Request|PromiseLike|Promise}
*/
getObjects(object_ids: string[]): Promise;
/**
* get account info by account name
* @param account_name {String}
* @returns {Promise}
*/
getAccount(account_name: string): Promise<{
id: string;
membership_expiration_date: string;
merchant_expiration_date: string;
datasource_expiration_date: string;
data_transaction_member_expiration_date: string;
registrar: string;
referrer: string;
lifetime_referrer: string;
merchant_auth_referrer: string;
datasource_auth_referrer: string;
network_fee_percentage: number;
lifetime_referrer_fee_percentage: number;
referrer_rewards_percentage: number;
name: string;
vm_type: string;
vm_version: string;
code: string;
code_version: string;
abi: {
version: string;
types: any[];
structs: any[];
actions: any[];
tables: any[];
error_messages: any[];
abi_extensions: any[];
};
owner: {
weight_threshold: number;
account_auths: any[];
key_auths: [string, number][];
address_auths: any[];
};
active: {
weight_threshold: number;
account_auths: any[];
key_auths: [string, number][];
address_auths: any[];
};
options: {
memo_key: string;
voting_account: string;
num_witness: number;
num_committee: number;
votes: any[];
extensions: any[];
};
statistics: string;
whitelisting_accounts: any[];
blacklisting_accounts: any[];
whitelisted_accounts: any[];
blacklisted_accounts: any[];
cashback_vb: string;
owner_special_authority: any[];
active_special_authority: any[];
top_n_control_flags: number;
}>;
/**
* get current blockchain id
* @returns {Request|PromiseLike|Promise}
*/
getChainID(): Promise;
/**
* get dynamic global properties
* @returns {Request|PromiseLike|Promise}
*/
getDynamicGlobalProperties(): Promise<{
id: string;
head_block_number: number;
head_block_id: string;
time: string;
current_witness: string;
next_maintenance_time: string;
last_budget_time: string;
witness_budget: number;
accounts_registered_this_interval: number;
recently_missed_count: number;
current_aslot: number;
recent_slots_filled: string;
dynamic_flags: number;
last_irreversible_block_num: number;
}>;
/**
* get account_ids by public key
* @param publicKey {String}
* @returns {Request|PromiseLike|Promise}
*/
getAccountByPublicKey(publicKey: string): Promise<{
amount: string;
asset_id: string;
}[]>;
/**
* get account balances by account name
* @param account_name {String}
* @returns {Promise}
*/
getAccountBalances(account_name: string): Promise<{
amount: string;
asset_id: string;
}[]>;
/**
* get asset info by symbol
* @param symbol {String} - e.g: 'GXC'
* @returns {Promise}
*/
getAsset(symbol: string): Promise<{
id: string;
symbol: string;
precision: number;
issuer: string;
options: {
max_supply: string;
market_fee_percent: number;
max_market_fee: number;
issuer_permissions: number;
flags: number;
core_exchange_rate: {
base: {
amount: number;
asset_id: string;
};
quote: {
amount: number;
asset_id: string;
};
};
whitelist_authorities: any[];
blacklist_authorities: any[];
whitelist_markets: any[];
blacklist_markets: any[];
description: string;
extensions: any[];
};
dynamic_asset_data_id: string;
}>;
/**
* get block by block height
* @param blockHeight {Number} - block height
* @returns {Promise}
*/
getBlock(blockHeight: number): Promise<{
previous: string;
timestamp: string;
witness: string;
transaction_merkle_root: string;
extensions: any[];
witness_signature: string;
transactions: types.signed_transaction[];
block_id: string;
signing_key: string;
transaction_ids: string[];
}>;
/**
* send transfer request to witness node
* @param to {String} - to account name
* @param memo {String|Function} - memo
* @param amount_asset {String} - e.g: '1 GXC'
* @param broadcast {Boolean}
* @param options {Object}
* @param options.fee_symbol {String} - e.g: 'GXC'
* @returns {Promise}
*/
transfer(to: string, memo: string | ((from: string, to: string) => Promise), amount_asset: string, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
transfer(to: string, memo: string | ((from: string, to: string) => Promise), amount_asset: string, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
transfer(to: string, memo: string | ((from: string, to: string) => Promise), amount_asset: string, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* get staking programs
*/
getStakingPrograms(): Promise<[
string,
{
staking_days: number;
weight: number;
is_valid: boolean;
}
][]>;
/**
* @param {String} to - trust node account name
* @param {Number} amount - the amount of GXC to staking
* @param {String} program_id - the staking program id
* @param {Object} options
* @param {String} options.fee_symbol - e.g: 'GXC'
* @returns {Promise}
*/
createStaking(to: string, amount: number, program_id: string, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
createStaking(to: string, amount: number, program_id: string, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
createStaking(to: string, amount: number, program_id: string, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* @param {String} to - trust node account name
* @param {String} staking_id - the staking id
* @param {Object} options
* @param {String} options.fee_symbol - e.g: 'GXC'
* @returns {Promise}
*/
updateStaking(to: string, staking_id: string, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
updateStaking(to: string, staking_id: string, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
updateStaking(to: string, staking_id: string, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* @param {String} staking_id - the staking id
* @param {Object} options
* @param {String} options.fee_symbol - e.g: 'GXC'
* @returns {Promise}
*/
claimStaking(staking_id: string, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
claimStaking(staking_id: string, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
claimStaking(staking_id: string, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* @param {String} vesting_id - the vesting id
* @param {Number} availableAmount - the amount of available withdraw
* @param {Object} options
* @param {String} options.fee_symbol - e.g: 'GXC'
* @returns {Promise}
*/
withdrawVestingBalance(vesting_id: string, availableAmount: number, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
withdrawVestingBalance(vesting_id: string, availableAmount: number, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
withdrawVestingBalance(vesting_id: string, availableAmount: number, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* get contract abi by contract_name
* @param contract_name {String}
* @returns {Promise}
*/
getContractABI(contract_name: string): Promise;
/**
* get contract table by contract_name
* @param contract_name {String}
* @returns {Promise}
*/
getContractTable(contract_name: string): Promise;
/**
* fetch contract table record by contract_name and table_name
* @param contract_name {String}
* @param table_name {String}
* @param start {Number}
* @param limit {Number}
* @returns {Promise}
*/
getTableObjects(contract_name: string, table_name: string, start?: number, limit?: number): Promise;
/**
* fetch contract table record by contract_name and table_name
* @param contract_name
* @param table_name
* @param lower_bound
* @param upper_bound
* @param limit
* @param reverse
* @returns {*}
*/
getTableObjectsEX(contract_name: string, table_name: string, lower_bound?: number, upper_bound?: number, limit?: number, reverse?: boolean): Promise;
/**
* deploy smart contract
* @param contract_name {String}
* @param code {String} - bytecode
* @param abi {Object} - abi object
* @param vm_type {String}
* @param vm_version {String}
* @param broadcast {Boolean}
* @param options {Object}
* @param options.fee_symbol {String} - e.g: 'GXC'
* @returns {Promise}
*/
createContract(contract_name: string, code: string, abi: types.abi_def, vm_type?: string, vm_version?: string, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
createContract(contract_name: string, code: string, abi: types.abi_def, vm_type?: string, vm_version?: string, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
createContract(contract_name: string, code: string, abi: types.abi_def, vm_type?: string, vm_version?: string, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* update smart contract
* @param contract_name {String}
* @param newOwner {String} - new owner account name
* @param code {String} - same to createContract
* @param abi {Object} - same to createContract
* @param broadcast {Boolean}
* @param options {Object}
* @param options.fee_symbol {String} - e.g: 'GXC'
* @returns {Request|PromiseLike|Promise}
*/
updateContract(contract_name: string, newOwner: string, code: string, abi: types.abi_def, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
updateContract(contract_name: string, newOwner: string, code: string, abi: types.abi_def, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
updateContract(contract_name: string, newOwner: string, code: string, abi: types.abi_def, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* call smart contract method
* @param contract_name {String} - The name of the smart contract
* @param method_name {String} - Method/Action name
* @param params {JSON} - parameters
* @param amount_asset {String} - same to transfer eg."100 GXC"
* @param broadcast {Boolean} - Broadcast the transaction or just return a serialized transaction
* @param options {Object}
* @param options.fee_symbol {String} - e.g: 'GXC'
* @returns {Promise}
*/
callContract(contract_name: string, method_name: string, params: any, amount_asset: string, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
callContract(contract_name: string, method_name: string, params: any, amount_asset: string, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
callContract(contract_name: string, method_name: string, params: any, amount_asset: string, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* vote for accounts - Deprecated
* @param accounts {String[]} - An array of account_names to vote
* @param broadcast {Boolean}
* @param options {Object}
* @param options.fee_symbol {String} - e.g: 'GXC'
* @params options.append {bool} - default: true
* @returns {Promise}
*/
vote(accounts?: string[], broadcast?: false, options?: {
fee_symbol?: string;
append?: boolean;
}): SerializeTransactionResult;
vote(accounts?: string[], broadcast?: true, options?: {
fee_symbol?: string;
append?: boolean;
}): BroadcaseTransactionResult;
vote(accounts?: string[], broadcast?: boolean, options?: {
fee_symbol?: string;
append?: boolean;
}): ProcessTransactionResult;
/**
* Since committee account is controled by multiple account
* so broadcast = false
* will use create_proposal to send this transaction
* @param {Object} new_params Same structure as getObject('2.0.0').parameters
* @param {Object} options
*/
proposeUpdateGPO(new_params: any, broadcast?: false, options?: {
fee_symbol?: string;
append?: boolean;
}): SerializeTransactionResult;
proposeUpdateGPO(new_params: any, broadcast?: true, options?: {
fee_symbol?: string;
append?: boolean;
}): BroadcaseTransactionResult;
proposeUpdateGPO(new_params: any, broadcast?: boolean, options?: {
fee_symbol?: string;
append?: boolean;
}): ProcessTransactionResult;
/**
* create a proposal
* @param {Array} ops
* @param {Date} expiration_time
* @param {Number} review_period_seconds
* @param {Boolean} broadcast
* @param {Object} options
*/
createProposal(ops: types.op_wrapper[], expiration_time: number | string, review_period_seconds?: number, broadcast?: false, options?: {
fee_symbol?: string;
}): SerializeTransactionResult;
createProposal(ops: types.op_wrapper[], expiration_time: number | string, review_period_seconds?: number, broadcast?: true, options?: {
fee_symbol?: string;
}): BroadcaseTransactionResult;
createProposal(ops: types.op_wrapper[], expiration_time: number | string, review_period_seconds?: number, broadcast?: boolean, options?: {
fee_symbol?: string;
}): ProcessTransactionResult;
/**
* calculate fee of a operation
* @param operation {Object}
* @param feeAssetId {String}
* @returns {Promise}
*/
fee(operation: types.operation, feeAssetId?: string): Promise<{
amount: number;
asset_id: string;
}[]>;
/**
* accurate multiply - fix the accurate issue of javascript
* @private
* @param arg1
* @param arg2
* @returns {number}
*/
_accMult(arg1: any, arg2: any): number;
/**
*
* @private
*/
_connect(): Promise;
/**
*
* @private
*/
_query(method: any, params: any): Promise;
/**
* WARNING: This function have to be used after connected
* @returns {*}
* @private
*/
_createTransaction(): any;
/**
* process transaction
* @private
* @param tr
* @param broadcast
* @returns {Promise}
*/
_processTransaction(tr: any, broadcast: true, useRemoteSerializer?: boolean): BroadcaseTransactionResult;
_processTransaction(tr: any, broadcast: false, useRemoteSerializer?: boolean): SerializeTransactionResult;
_processTransaction(tr: any, broadcast: boolean, useRemoteSerializer?: boolean): ProcessTransactionResult;
/**
* broadcast transaction
* @param {TransactionBuilder} tx
* @returns {Promise}
*/
broadcast(tx: types.signed_transaction): Promise;
}
declare type BroadcaseTransactionResult = Promise;
declare type SerializeTransactionResult = Promise;
declare type ProcessTransactionResult = Promise;
export default GXClient;