airgap-coin-lib
Version:
The airgap-coin-lib is a protocol agnostic library to prepare, sign and broadcast cryptocurrency transactions.
71 lines (70 loc) • 5.44 kB
TypeScript
/// <reference types="node" />
import { IAirGapSignedTransaction } from '../../interfaces/IAirGapSignedTransaction';
import { AirGapTransactionStatus, IAirGapTransaction } from '../../interfaces/IAirGapTransaction';
import { Network } from '../../networks';
import { SignedEthereumTransaction } from '../../serializer/schemas/definitions/signed-transaction-ethereum';
import { UnsignedTransaction } from '../../serializer/schemas/definitions/unsigned-transaction';
import { RawEthereumTransaction } from '../../serializer/types';
import { ProtocolSymbols } from '../../utils/ProtocolSymbols';
import { CurrencyUnit, FeeDefaults, ICoinProtocol } from '../ICoinProtocol';
import { ICoinSubProtocol } from '../ICoinSubProtocol';
import { EthereumInfoClient } from './clients/info-clients/InfoClient';
import { EthereumNodeClient } from './clients/node-clients/NodeClient';
import { EthereumProtocolOptions } from './EthereumProtocolOptions';
import { EthereumTransactionResult, EthereumTransactionCursor } from './EthereumTypes';
export declare abstract class BaseEthereumProtocol<NodeClient extends EthereumNodeClient, InfoClient extends EthereumInfoClient> implements ICoinProtocol {
readonly options: EthereumProtocolOptions;
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;
network: Network;
get subProtocols(): ICoinSubProtocol[];
constructor(options?: EthereumProtocolOptions);
getBlockExplorerLinkForAddress(address: string): Promise<string>;
getBlockExplorerLinkForTxId(txId: string): Promise<string>;
getPublicKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise<string>;
getPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise<Buffer>;
getExtendedPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise<string>;
getPublicKeyFromHexSecret(secret: string, derivationPath: string): Promise<string>;
getPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise<Buffer>;
getExtendedPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise<string>;
getAddressFromPublicKey(publicKey: string | Buffer): Promise<string>;
getAddressesFromPublicKey(publicKey: string | Buffer): Promise<string[]>;
getAddressFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressDerivationIndex: number): Promise<string>;
getAddressesFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressCount: number, offset: number): Promise<string[]>;
signWithExtendedPrivateKey(extendedPrivateKey: string, transaction: RawEthereumTransaction): Promise<IAirGapSignedTransaction>;
signWithPrivateKey(privateKey: Buffer, transaction: RawEthereumTransaction): Promise<IAirGapSignedTransaction>;
getTransactionDetails(unsignedTx: UnsignedTransaction): Promise<IAirGapTransaction[]>;
getTransactionDetailsFromSigned(transaction: SignedEthereumTransaction): Promise<IAirGapTransaction[]>;
getBalanceOfPublicKey(publicKey: string): Promise<string>;
getBalanceOfAddresses(addresses: string[]): Promise<string>;
getBalanceOfPublicKeyForSubProtocols(publicKey: string, subProtocols: ICoinSubProtocol[]): Promise<string[]>;
getBalanceOfExtendedPublicKey(extendedPublicKey: string, offset?: number): Promise<string>;
getAvailableBalanceOfAddresses(addresses: string[]): Promise<string>;
estimateMaxTransactionValueFromExtendedPublicKey(extendedPublicKey: string, recipients: string[], fee?: string): Promise<string>;
estimateFeeDefaultsFromExtendedPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise<FeeDefaults>;
prepareTransactionFromExtendedPublicKey(extendedPublicKey: string, offset: number, recipients: string[], values: string[], fee: string): Promise<RawEthereumTransaction>;
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?: any): Promise<RawEthereumTransaction>;
broadcastTransaction(rawTransaction: string): Promise<string>;
getTransactionsFromExtendedPublicKey(extendedPublicKey: string, limit: number, cursor: EthereumTransactionCursor): Promise<EthereumTransactionResult>;
getTransactionsFromPublicKey(publicKey: string, limit?: number, cursor?: EthereumTransactionCursor): Promise<EthereumTransactionResult>;
getTransactionsFromAddresses(addresses: string[], limit: number, cursor?: EthereumTransactionCursor): Promise<EthereumTransactionResult>;
signMessage(message: string, keypair: {
privateKey: Buffer;
}): Promise<string>;
verifyMessage(message: string, signature: string, publicKey: string): Promise<boolean>;
getTransactionStatuses(transactionHashes: string[]): Promise<AirGapTransactionStatus[]>;
}