/**
* @prettier
*/
///
import { BaseCoin as StaticsBaseCoin, CoinFamily } from '@bitgo-beta/statics';
import { BaseCoin, BitGoBase, KeyPair, Memo, MPCAlgorithm, ParsedTransaction, ParseTransactionOptions as BaseParseTransactionOptions, PresignTransactionOptions, SignedTransaction, SignTransactionOptions, TokenEnablementConfig, TransactionExplanation, TransactionPrebuild as BaseTransactionPrebuild, TransactionRecipient, VerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
import * as request from 'superagent';
export interface TransactionFee {
fee: string;
}
export declare type SolTransactionExplanation = TransactionExplanation;
export interface ExplainTransactionOptions {
txBase64: string;
feeInfo: TransactionFee;
tokenAccountRentExemptAmount?: string;
}
export interface TxInfo {
recipients: TransactionRecipient[];
from: string;
txid: string;
}
export interface SolSignTransactionOptions extends SignTransactionOptions {
txPrebuild: TransactionPrebuild;
prv: string | string[];
pubKeys?: string[];
}
export interface TransactionPrebuild extends BaseTransactionPrebuild {
txBase64: string;
txInfo: TxInfo;
source: string;
}
export interface SolVerifyTransactionOptions extends VerifyTransactionOptions {
memo?: Memo;
feePayer: string;
blockhash: string;
durableNonce?: {
walletNonceAddress: string;
authWalletAddress: number;
};
}
interface TransactionOutput {
address: string;
amount: number | string;
tokenName?: string;
}
declare type TransactionInput = TransactionOutput;
export interface SolParsedTransaction extends ParsedTransaction {
inputs: TransactionInput[];
outputs: TransactionOutput[];
}
export interface SolParseTransactionOptions extends BaseParseTransactionOptions {
txBase64: string;
feeInfo: TransactionFee;
tokenAccountRentExemptAmount?: string;
}
interface SolTx {
serializedTx: string;
}
interface SolDurableNonceFromNode {
authority: string;
blockhash: string;
}
interface RecoveryOptions {
userKey?: string;
backupKey?: string;
bitgoKey: string;
recoveryDestination: string;
walletPassphrase?: string;
durableNonce?: {
publicKey: string;
secretKey: string;
};
}
export declare class Sol extends BaseCoin {
protected readonly _staticsCoin: Readonly;
constructor(bitgo: BitGoBase, staticsCoin?: Readonly);
static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly): BaseCoin;
allowsAccountConsolidations(): boolean;
supportsTss(): boolean;
getMPCAlgorithm(): MPCAlgorithm;
supportsStaking(): boolean;
getChain(): string;
getFamily(): CoinFamily;
getFullName(): string;
getBaseFactor(): string | number;
verifyTransaction(params: SolVerifyTransactionOptions): Promise;
isWalletAddress(params: VerifyAddressOptions): boolean;
/**
* Generate Solana key pair
*
* @param {Buffer} seed - Seed from which the new SolKeyPair should be generated, otherwise a random seed is used
* @returns {Object} object with generated pub and prv
*/
generateKeyPair(seed?: Buffer | undefined): KeyPair;
/**
* Return boolean indicating whether input is valid public key for the coin
*
* @param {string} pub the prv to be checked
* @returns is it valid?
*/
isValidPub(pub: string): boolean;
/**
* Return boolean indicating whether input is valid private key for the coin
*
* @param {string} prv the prv to be checked
* @returns is it valid?
*/
isValidPrv(prv: string): boolean;
isValidAddress(address: string): boolean;
signMessage(key: KeyPair, message: string | Buffer): Promise;
/**
* Signs Solana transaction
* @param params
* @param callback
*/
signTransaction(params: SolSignTransactionOptions): Promise;
parseTransaction(params: SolParseTransactionOptions): Promise;
/**
* Explain a Solana transaction from txBase64
* @param params
*/
explainTransaction(params: ExplainTransactionOptions): Promise;
/** @inheritDoc */
getSignablePayload(serializedTx: string): Promise;
/** @inheritDoc */
presignTransaction(params: PresignTransactionOptions): Promise;
protected getPublicNodeUrl(): string;
/**
* Make a request to one of the public EOS nodes available
* @param params.payload
*/
protected getDataFromNode(params: {
payload?: Record;
}): Promise;
protected getBlockhash(): Promise;
/** TODO Update to getFeeForMessage and make necssary changes in fee calculation, GetFees is deprecated */
protected getFees(): Promise;
protected getAccountBalance(pubKey: string): Promise;
protected getAccountInfo(pubKey?: string): Promise;
/**
* Builds a funds recovery transaction without BitGo
* @param params
*/
recover(params: RecoveryOptions): Promise;
getTokenEnablementConfig(): TokenEnablementConfig;
private getBuilder;
}
export {};
//# sourceMappingURL=sol.d.ts.map