import { IRequestTracer } from '../../api'; import { IBaseCoin, MessagePrebuild, SignedMessage, SignedTransaction, TransactionPrebuild, VerificationOptions } from '../baseCoin'; import { BitGoBase } from '../bitgoBase'; import { Keychain } from '../keychain'; import { IPendingApproval, PendingApprovalData } from '../pendingApproval'; import { IStakingWallet } from '../staking'; import { ITradingAccount } from '../trading'; import { CustomGShareGeneratingFunction, CustomRShareGeneratingFunction, TokenEnablement } from '../utils'; import { ILightning } from '../lightning'; export interface MaximumSpendableOptions { minValue?: number | string; maxValue?: number | string; minHeight?: number; minConfirms?: number; enforceMinConfirmsForChange?: boolean; feeRate?: number; maxFeeRate?: number; recipientAddress?: string; limit?: number; target?: number; plainTarget?: number; } export interface MaximumSpendable { maximumSpendable: number; coin: string; } export interface Memo { value: string; type: string; } export interface BuildConsolidationTransactionOptions extends PrebuildTransactionOptions { consolidateAddresses?: string[]; } export interface BuildTokenEnablementOptions extends PrebuildTransactionOptions { enableTokens: TokenEnablement[]; } export interface PrebuildTransactionOptions { reqId?: IRequestTracer; recipients?: { address: string; amount: string | number; tokenName?: string; }[]; numBlocks?: number; maxFeeRate?: number; minConfirms?: number; enforceMinConfirmsForChange?: boolean; targetWalletUnspents?: number; minValue?: number; maxValue?: number; sequenceId?: string; lastLedgerSequence?: number; ledgerSequenceDelta?: number; gasPrice?: number; noSplitChange?: boolean; unspents?: any[]; changeAddress?: string; type?: string; closeRemainderTo?: string; nonParticipation?: boolean; validFromBlock?: number; validToBlock?: number; instant?: boolean; memo?: Memo; addressType?: string; hop?: boolean; walletPassphrase?: string; reservation?: { expireTime?: string; pendingApprovalId?: string; }; offlineVerification?: boolean; walletContractAddress?: string; idfSignedTimestamp?: string; idfUserId?: string; idfVersion?: number; comment?: string; [index: string]: unknown; tokenName?: string; enableTokens?: TokenEnablement[]; nonce?: string; preview?: boolean; isTss?: boolean; } export interface PrebuildAndSignTransactionOptions extends PrebuildTransactionOptions, WalletSignTransactionOptions { prebuildTx?: string | PrebuildTransactionResult; verification?: VerificationOptions; } export interface PrebuildTransactionResult extends TransactionPrebuild { walletId: string; consolidateId?: string; consolidationDetails?: { senderAddressIndex: number; }; feeInfo?: { fee?: number; feeString?: string; }; } export interface CustomSigningFunction { (params: { coin: IBaseCoin; txPrebuild: TransactionPrebuild; pubs?: string[]; }): Promise; } export interface WalletSignBaseOptions { reqId?: IRequestTracer; prv?: string; pubs?: string[]; txRequestId?: string; cosignerPub?: string; isLastSignature?: boolean; customSigningFunction?: CustomSigningFunction; } export interface WalletSignTransactionOptions extends WalletSignBaseOptions { txPrebuild?: TransactionPrebuild; customRShareGeneratingFunction?: CustomRShareGeneratingFunction; customGShareGeneratingFunction?: CustomGShareGeneratingFunction; [index: string]: unknown; } export interface WalletSignMessageOptions extends WalletSignBaseOptions { messagePrebuild?: MessagePrebuild; } export interface GetUserPrvOptions { keychain?: Keychain; key?: Keychain; prv?: string; coldDerivationSeed?: string; walletPassphrase?: string; } export interface WalletCoinSpecific { tokenFlushThresholds?: any; addressVersion?: number; baseAddress?: string; rootAddress?: string; customChangeWalletId: string; } export interface PaginationOptions { prevId?: string; limit?: number; } export interface GetTransactionOptions extends PaginationOptions { txHash?: string; } export interface TransfersOptions extends PaginationOptions { txHash?: string; allTokens?: boolean; searchLabel?: string; address?: string[] | string; dateGte?: string; dateLt?: string; valueGte?: number; valueLt?: number; includeHex?: boolean; state?: string[] | string; type?: string; } export interface GetTransferOptions { id?: string; } export interface TransferBySequenceIdOptions { sequenceId?: string; } export interface UnspentsOptions extends PaginationOptions { minValue?: number; maxValue?: number; minHeight?: number; minConfirms?: number; target?: number; segwit?: boolean; chains?: number[]; } export interface ConsolidateUnspentsOptions extends WalletSignTransactionOptions { walletPassphrase?: string; xprv?: string; minValue?: number; maxValue?: number; minHeight?: number; numUnspentsToMake?: number; feeTxConfirmTarget?: number; limit?: number; minConfirms?: number; enforceMinConfirmsForChange?: boolean; feeRate?: number; maxFeeRate?: number; maxFeePercentage?: number; comment?: string; otp?: string; targetAddress?: string; [index: string]: unknown; } export interface FanoutUnspentsOptions extends WalletSignTransactionOptions { walletPassphrase?: string; xprv?: string; minValue?: number; maxValue?: number; minHeight?: number; maxNumInputsToUse?: number; numUnspentsToMake?: number; minConfirms?: number; enforceMinConfirmsForChange?: boolean; feeRate?: number; maxFeeRate?: number; maxFeePercentage?: number; feeTxConfirmTarget?: number; comment?: string; otp?: string; targetAddress?: string; [index: string]: unknown; } export interface SweepOptions { address?: string; walletPassphrase?: string; xprv?: string; otp?: string; feeRate?: number; maxFeeRate?: number; feeTxConfirmTarget?: number; allowPartialSweep?: boolean; [index: string]: unknown; } export interface FreezeOptions { duration?: number; } export interface TransferCommentOptions { id?: string; comment?: string; } export interface AddressesOptions extends PaginationOptions { mine?: boolean; sort?: number; labelContains?: string; segwit?: boolean; chains?: number[]; includeBalances?: boolean; includeTokens?: boolean; includeTotalAddressCount?: boolean; returnBalancesForToken?: string; pendingDeployment?: boolean; } export interface GetAddressOptions { address?: string; id?: string; reqId?: IRequestTracer; } export interface DeployForwardersOptions { address?: string; id?: string; } export interface FlushForwarderTokenOptions { address?: string; id?: string; tokenName: string; gasPrice?: number; eip1559?: { maxPriorityFeePerGas: number; maxFeePerGas: number; }; } export interface CreateAddressOptions { chain?: number; gasPrice?: number | string; count?: number; label?: string; lowPriority?: boolean; forwarderVersion?: number; format?: 'base58' | 'cashaddr'; baseAddress?: string; allowSkipVerifyAddress?: boolean; derivedAddress?: string; index?: number; } export interface UpdateAddressOptions { label?: string; address?: string; } export interface SimulateWebhookOptions { webhookId?: string; transferId?: string; pendingApprovalId?: string; } export interface ModifyWebhookOptions { url?: string; type?: string; } export interface GetPrvOptions { prv?: string; walletPassphrase?: string; } export interface CreateShareOptions { user?: string; permissions?: string; keychain?: { pub?: string; encryptedPrv?: string; fromPubKey?: string; toPubKey?: string; path?: string; }; reshare?: boolean; message?: string; disableEmail?: boolean; } export interface ShareWalletOptions { email?: string; permissions?: string; walletPassphrase?: string; message?: string; reshare?: boolean; skipKeychain?: boolean; disableEmail?: boolean; } export interface RemoveUserOptions { userId?: string; } export interface AccelerateTransactionOptions { cpfpTxIds?: string[]; cpfpFeeRate?: number; noCpfpFeeRate?: boolean; maxFee?: number; noMaxFee?: boolean; recipients?: { address: string; amount: string; }[]; [index: string]: unknown; } export interface SubmitTransactionOptions { otp?: string; txHex?: string; halfSigned?: { txHex?: string; payload?: string; txBase64?: string; }; comment?: string; txRequestId?: string; } export interface SendOptions { address?: string; amount?: number | string; data?: string; feeLimit?: string; message?: string; walletPassphrase?: string; prv?: string; minConfirms?: number; enforceMinConfirmsForChange?: boolean; custodianTransactionId?: string; [index: string]: unknown; tokenName?: string; } export interface SendManyOptions extends PrebuildAndSignTransactionOptions { reqId?: IRequestTracer; recipients?: { address: string; amount: string | number; feeLimit?: string; data?: string; tokenName?: string; }[]; numBlocks?: number; feeRate?: number; maxFeeRate?: number; minConfirms?: number; enforceMinConfirmsForChange?: boolean; targetWalletUnspents?: number; message?: string; minValue?: number; maxValue?: number; sequenceId?: string; lastLedgerSequence?: number; ledgerSequenceDelta?: number; gasPrice?: number; noSplitChange?: boolean; unspents?: string[]; comment?: string; otp?: string; changeAddress?: string; instant?: boolean; memo?: Memo; transferId?: number; [index: string]: unknown; } export declare type WalletType = 'backing' | 'cold' | 'custodial' | 'custodialPaired' | 'hot' | 'trading'; export interface WalletData { id: string; approvalsRequired: number; balance: number; confirmedBalance: number; spendableBalance: number; balanceString: string; confirmedBalanceString: string; spendableBalanceString: string; coin: string; label: string; keys: string[]; receiveAddress: { address: string; }; migratedFrom?: string; coinSpecific: WalletCoinSpecific; pendingApprovals: PendingApprovalData[]; enterprise: string; customChangeKeySignatures?: { user?: string; backup?: string; bitgo?: string; }; multisigType: 'onchain' | 'tss'; type?: WalletType; } export interface RecoverTokenOptions { tokenContractAddress?: string; recipient?: string; broadcast?: boolean; walletPassphrase?: string; prv?: string; } interface EIP1559 { maxPriorityFeePerGas: string; maxFeePerGas: string; } export interface ChangeFeeOptions { txid?: string; fee?: string; eip1559?: EIP1559; } export interface CreatePolicyRuleOptions { id?: string; type?: string; message?: string; condition?: unknown; action?: unknown; } export interface RemovePolicyRuleOptions { id?: string; message?: string; } export interface DownloadKeycardOptions { jsPDF?: any; QRCode?: any; userKeychain?: Keychain; backupKeychain?: Keychain; bitgoKeychain?: Keychain; passphrase?: string; passcodeEncryptionCode?: string; activationCode?: string; walletKeyID?: string; backupKeyID?: string; } export interface IWallet { bitgo: BitGoBase; baseCoin: IBaseCoin; url(extra?: string): string; id(): string; approvalsRequired(): number; balance(): number; prebuildWhitelistedParams(): string[]; prebuildConsolidateAccountParams(): string[]; confirmedBalance(): number; spendableBalance(): number; balanceString(): string; confirmedBalanceString(): string; spendableBalanceString(): string; coin(): string; label(): string; keyIds(): string[]; receiveAddress(): string; migratedFrom(): string | undefined; tokenFlushThresholds(): any; coinSpecific(): WalletCoinSpecific | undefined; pendingApprovals(): IPendingApproval[]; refresh(params?: Record): Promise; transactions(params?: PaginationOptions): Promise; getTransaction(params?: GetTransactionOptions): Promise; transfers(params?: TransfersOptions): Promise; getTransfer(params?: GetTransferOptions): Promise; transferBySequenceId(params?: TransferBySequenceIdOptions): Promise; maximumSpendable(params?: MaximumSpendableOptions): Promise; unspents(params?: UnspentsOptions): Promise; consolidateUnspents(params?: ConsolidateUnspentsOptions): Promise; fanoutUnspents(params?: FanoutUnspentsOptions): Promise; updateTokenFlushThresholds(thresholds?: any): Promise; updateForwarders(forwarderFlags?: any): Promise; deployForwarders(params: DeployForwardersOptions): Promise; flushForwarderToken(params: FlushForwarderTokenOptions): Promise; sweep(params?: SweepOptions): Promise; freeze(params?: FreezeOptions): Promise; transferComment(params?: TransferCommentOptions): Promise; addresses(params?: AddressesOptions): Promise; getAddress(params?: GetAddressOptions): Promise; createAddress(params?: CreateAddressOptions): Promise; updateAddress(params?: UpdateAddressOptions): Promise; listWebhooks(params?: PaginationOptions): Promise; simulateWebhook(params?: SimulateWebhookOptions): Promise; addWebhook(params?: ModifyWebhookOptions): Promise; removeWebhook(params?: ModifyWebhookOptions): Promise; getEncryptedUserKeychain(params?: Record): Promise<{ encryptedPrv: string; }>; getPrv(params?: GetPrvOptions): Promise; createShare(params?: CreateShareOptions): Promise; shareWallet(params?: ShareWalletOptions): Promise; removeUser(params?: RemoveUserOptions): Promise; prebuildTransaction(params?: PrebuildTransactionOptions): Promise; signTransaction(params?: WalletSignTransactionOptions): Promise; getUserPrv(params?: GetUserPrvOptions): string; prebuildAndSignTransaction(params?: PrebuildAndSignTransactionOptions): Promise; accelerateTransaction(params?: AccelerateTransactionOptions): Promise; submitTransaction(params?: SubmitTransactionOptions): Promise; send(params?: SendOptions): Promise; sendMany(params?: SendManyOptions): Promise; recoverToken(params?: RecoverTokenOptions): Promise; getFirstPendingTransaction(params?: Record): Promise; changeFee(params?: ChangeFeeOptions): Promise; getPaymentInfo(params?: { url?: string; }): Promise; sendPaymentResponse(params?: any): Promise; createPolicyRule(params?: CreatePolicyRuleOptions): Promise; setPolicyRule(params?: any): any; removePolicyRule(params?: RemovePolicyRuleOptions): Promise; remove(params?: Record): Promise; toJSON(): WalletData; toTradingAccount(): ITradingAccount; toStakingWallet(): IStakingWallet; downloadKeycard(params?: DownloadKeycardOptions): void; buildAccountConsolidations(params?: BuildConsolidationTransactionOptions): Promise; sendAccountConsolidation(params?: PrebuildAndSignTransactionOptions): Promise; sendAccountConsolidations(params?: BuildConsolidationTransactionOptions): Promise; buildTokenEnablements(params?: BuildTokenEnablementOptions): Promise; sendTokenEnablement(params?: PrebuildAndSignTransactionOptions): Promise; sendTokenEnablements(params?: BuildTokenEnablementOptions): Promise; lightning(): ILightning; signMessage(params: WalletSignMessageOptions): Promise; } export {}; //# sourceMappingURL=iWallet.d.ts.map