airgap-coin-lib
Version:
The airgap-coin-lib is a protocol agnostic library to prepare, sign and broadcast cryptocurrency transactions.
102 lines (101 loc) • 6.81 kB
TypeScript
/// <reference types="node" />
import { CosmosTransactionResult, CosmosTransactionCursor } from './CosmosTypes';
import { KeyPair } from '../../data/KeyPair';
import BigNumber from '../../dependencies/src/bignumber.js-9.0.0/bignumber';
import { AirGapTransactionStatus, IAirGapTransaction } from '../../interfaces/IAirGapTransaction';
import { SignedCosmosTransaction } from '../../serializer/schemas/definitions/signed-transaction-cosmos';
import { UnsignedCosmosTransaction } from '../../serializer/types';
import { DelegateeDetails, DelegationDetails, DelegatorDetails, ICoinDelegateProtocol } from '../ICoinDelegateProtocol';
import { CurrencyUnit, FeeDefaults } from '../ICoinProtocol';
import { ICoinSubProtocol } from '../ICoinSubProtocol';
import { NonExtendedProtocol } from '../NonExtendedProtocol';
import { CosmosInfoClient } from './CosmosInfoClient';
import { CosmosDelegation, CosmosNodeClient, CosmosUnbondingDelegation, CosmosValidator } from './CosmosNodeClient';
import { CosmosProtocolOptions } from './CosmosProtocolOptions';
import { CosmosTransaction } from './CosmosTransaction';
import { ProtocolSymbols } from '../../utils/ProtocolSymbols';
export declare enum CosmosDelegationActionType {
DELEGATE = "delegate",
UNDELEGATE = "undelegate",
WITHDRAW_ALL_REWARDS = "withdraw_all_rewards",
WITHDRAW_VALIDATOR_REWARDS = "withdraw_validator_rewards"
}
export declare class CosmosProtocol extends NonExtendedProtocol implements ICoinDelegateProtocol {
readonly options: CosmosProtocolOptions;
symbol: string;
name: string;
marketSymbol: string;
feeSymbol: string;
feeDefaults: FeeDefaults;
decimals: number;
feeDecimals: number;
identifier: ProtocolSymbols;
units: CurrencyUnit[];
supportsHD: boolean;
standardDerivationPath: string;
addressIsCaseSensitive: boolean;
addressValidationPattern: string;
addressPlaceholder: string;
subProtocols?: ICoinSubProtocol[];
private readonly addressPrefix;
private readonly defaultGas;
get infoClient(): CosmosInfoClient;
get nodeClient(): CosmosNodeClient;
constructor(options?: CosmosProtocolOptions);
getBlockExplorerLinkForAddress(address: string): Promise<string>;
getBlockExplorerLinkForTxId(txId: string): Promise<string>;
generateKeyPair(mnemonic: string, derivationPath?: string, password?: string): KeyPair;
private generateKeyPairFromNode;
getPublicKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise<string>;
getPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise<Buffer>;
getPublicKeyFromHexSecret(secret: string, derivationPath: string): Promise<string>;
getPublicKeyFromPrivateKey(privateKey: Buffer): Buffer;
getPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise<Buffer>;
getAddressFromPublicKey(publicKey: string): Promise<string>;
getAddressesFromPublicKey(publicKey: string): Promise<string[]>;
getTransactionsFromPublicKey(publicKey: string, limit: number, cursor?: CosmosTransactionCursor): Promise<CosmosTransactionResult>;
getTransactionsFromAddresses(addresses: string[], limit: number, cursor?: CosmosTransactionCursor): Promise<CosmosTransactionResult>;
signWithPrivateKey(privateKey: Buffer, transaction: CosmosTransaction): Promise<string>;
getTransactionDetails(transaction: UnsignedCosmosTransaction): Promise<IAirGapTransaction[]>;
getTransactionDetailsFromSigned(transaction: SignedCosmosTransaction): Promise<IAirGapTransaction[]>;
getBalanceOfAddresses(addresses: string[]): Promise<string>;
getBalanceOfPublicKey(publicKey: string): Promise<string>;
getAvailableBalanceOfAddresses(addresses: string[]): Promise<string>;
getBalanceOfPublicKeyForSubProtocols(publicKey: string, subProtocols: ICoinSubProtocol[]): Promise<string[]>;
private getBalance;
estimateMaxTransactionValueFromPublicKey(publicKey: string, recipients: string[], fee?: string): Promise<string>;
estimateFeeDefaultsFromPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise<FeeDefaults>;
prepareTransactionFromPublicKey(publicKey: string, recipients: string[], values: string[], fee: string, data?: unknown): Promise<CosmosTransaction>;
getDefaultDelegatee(): Promise<string>;
getCurrentDelegateesForPublicKey(publicKey: string): Promise<string[]>;
getCurrentDelegateesForAddress(address: string): Promise<string[]>;
getDelegateeDetails(address: string): Promise<DelegateeDetails>;
isPublicKeyDelegating(publicKey: string): Promise<boolean>;
isAddressDelegating(address: string): Promise<boolean>;
getDelegatorDetailsFromPublicKey(publicKey: string): Promise<DelegatorDetails>;
getDelegatorDetailsFromAddress(address: string): Promise<DelegatorDetails>;
getDelegationDetailsFromPublicKey(publicKey: string, delegatees: string[]): Promise<DelegationDetails>;
getDelegationDetailsFromAddress(address: string, delegatees: string[]): Promise<DelegationDetails>;
prepareDelegatorActionFromPublicKey(publicKey: string, type: CosmosDelegationActionType, data?: any): Promise<CosmosTransaction[]>;
undelegate(publicKey: string, validatorAddress: string, amount: string, memo?: string): Promise<CosmosTransaction>;
delegate(publicKey: string, validatorAddress: string | string[], amount: string, undelegate?: boolean, memo?: string): Promise<CosmosTransaction>;
withdrawDelegationRewards(publicKey: string, _validatorAddresses?: string[], memo?: string): Promise<CosmosTransaction>;
withdrawAllDelegationRewards(delegatorAddress: string, fee: BigNumber, memo?: string): Promise<string>;
fetchTotalReward(delegatorAddress: string): Promise<BigNumber>;
fetchRewardForDelegation(delegatorAddress: string, validatorAddress: string): Promise<BigNumber>;
fetchDelegations(address: string): Promise<CosmosDelegation[]>;
fetchTotalDelegatedAmount(address: string): Promise<BigNumber>;
fetchValidator(address: string): Promise<CosmosValidator>;
fetchUnbondingDelegations(delegatorAddress: string): Promise<CosmosUnbondingDelegation[]>;
fetchTotalUnbondingAmount(address: string): Promise<BigNumber>;
fetchValidators(): Promise<CosmosValidator[]>;
fetchSelfDelegation(address: string): Promise<CosmosDelegation>;
broadcastTransaction(rawTransaction: string): Promise<string>;
private getDelegatorDetails;
private getAvailableDelegatorActions;
signMessage(message: string, keypair: {
privateKey: Buffer;
}): Promise<string>;
verifyMessage(message: string, signature: string, publicKey: string): Promise<boolean>;
getTransactionStatuses(transactionHashes: string[]): Promise<AirGapTransactionStatus[]>;
}