PHP WebShell

Текущая директория: /opt/BitGoJS/modules/abstract-utxo/dist/src

Просмотр файла: abstractUtxoCoin.d.ts

import * as utxolib from '@bitgo/utxo-lib';
import { bitgo } from '@bitgo/utxo-lib';
import { AddressCoinSpecific, BaseCoin, BitGoBase, CreateAddressFormat, ExtraPrebuildParamsOptions, HalfSignedUtxoTransaction, IBaseCoin, IRequestTracer, ITransactionExplanation as BaseTransactionExplanation, IWallet, KeychainsTriplet, MultisigType, ParseTransactionOptions as BaseParseTransactionOptions, PrecreateBitGoOptions, PresignTransactionOptions, RequestTracer, SignedTransaction, SignTransactionOptions as BaseSignTransactionOptions, SupplementGenerateWalletOptions, TransactionParams as BaseTransactionParams, TransactionPrebuild as BaseTransactionPrebuild, Triple, VerificationOptions, VerifyAddressOptions as BaseVerifyAddressOptions, VerifyTransactionOptions as BaseVerifyTransactionOptions, Wallet } from '@bitgo/sdk-core';
import { backupKeyRecovery, CrossChainRecoverySigned, CrossChainRecoveryUnsigned, RecoverParams, RecoveryProvider, v1BackupKeyRecovery, V1RecoverParams, v1Sweep, V1SweepParams } from './recovery';
import { CustomChangeOptions } from './transaction/fixedScript';
import { UtxoKeychain, UtxoNamedKeychains } from './keychains';
import { UtxoWallet } from './wallet';
import ScriptType2Of3 = utxolib.bitgo.outputScripts.ScriptType2Of3;
type UtxoCustomSigningFunction<TNumber extends number | bigint> = {
    (params: {
        coin: IBaseCoin;
        txPrebuild: TransactionPrebuild<TNumber>;
        pubs?: string[];
        /**
         * signingStep flag becomes applicable when both of the following conditions are met:
         * 1) When the external express signer is activated
         * 2) When the PSBT includes at least one taprootKeyPathSpend input.
         *
         * The signing process of a taprootKeyPathSpend input is a 4-step sequence:
         * i) user nonce generation - signerNonce - this is the first call to external express signer signTransaction
         * ii) bitgo nonce generation - cosignerNonce - this is the first and only call to local signTransaction
         * iii) user signature - signerSignature - this is the second call to external express signer signTransaction
         * iv) bitgo signature - not in signTransaction method’s scope
         *
         * In the absence of this flag, the aforementioned first three sequence is executed in a single signTransaction call.
         *
         * NOTE: We make a strong assumption that the external express signer and its caller uses sticky sessions,
         * since PSBTs are cached in step 1 to be used in step 3 for MuSig2 user secure nonce access.
         */
        signingStep?: 'signerNonce' | 'signerSignature' | 'cosignerNonce';
    }): Promise<SignedTransaction>;
};
type Unspent<TNumber extends number | bigint = number> = bitgo.Unspent<TNumber>;
export type DecodedTransaction<TNumber extends number | bigint> = utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoPsbt;
export type RootWalletKeys = bitgo.RootWalletKeys;
export type UtxoCoinSpecific = AddressCoinSpecific | DescriptorAddressCoinSpecific;
export interface VerifyAddressOptions<TCoinSpecific extends UtxoCoinSpecific> extends BaseVerifyAddressOptions {
    chain?: number;
    index: number;
    coinSpecific?: TCoinSpecific;
}
export interface BaseOutput<TAmount = string | number> {
    address: string;
    amount: TAmount;
    external?: boolean;
}
export interface FixedScriptWalletOutput<TAmount = string | number> extends BaseOutput<TAmount> {
    needsCustomChangeKeySignatureVerification?: boolean;
    chain: number;
    index: number;
}
export type Output<TAmount = string | number> = BaseOutput<TAmount> | FixedScriptWalletOutput<TAmount>;
export declare function isWalletOutput(output: Output): output is FixedScriptWalletOutput;
export interface TransactionExplanation extends BaseTransactionExplanation<string, string> {
    locktime: number;
    /** NOTE: this actually only captures external outputs */
    outputs: Output[];
    changeOutputs: Output[];
    /**
     * Number of input signatures per input.
     */
    inputSignatures: number[];
    /**
     * Highest input signature count for the transaction
     */
    signatures: number;
}
export interface TransactionInfo<TNumber extends number | bigint = number> {
    /** Maps txid to txhex. Required for offline signing. */
    txHexes?: Record<string, string>;
    changeAddresses?: string[];
    /** psbt does not require unspents. */
    unspents?: Unspent<TNumber>[];
}
export interface ExplainTransactionOptions<TNumber extends number | bigint = number> {
    txHex: string;
    txInfo?: TransactionInfo<TNumber>;
    feeInfo?: string;
    pubs?: Triple<string>;
}
export interface DecoratedExplainTransactionOptions<TNumber extends number | bigint = number> extends ExplainTransactionOptions<TNumber> {
    changeInfo?: {
        address: string;
        chain: number;
        index: number;
    }[];
}
export type UtxoNetwork = utxolib.Network;
export interface TransactionPrebuild<TNumber extends number | bigint = number> extends BaseTransactionPrebuild {
    txInfo?: TransactionInfo<TNumber>;
    blockHeight?: number;
}
export interface TransactionParams extends BaseTransactionParams {
    walletPassphrase?: string;
    allowExternalChangeAddress?: boolean;
    changeAddress?: string;
    rbfTxIds?: string[];
}
export interface ParseTransactionOptions<TNumber extends number | bigint = number> extends BaseParseTransactionOptions {
    txParams: TransactionParams;
    txPrebuild: TransactionPrebuild<TNumber>;
    wallet: UtxoWallet;
    verification?: VerificationOptions;
    reqId?: IRequestTracer;
}
export type BaseParsedTransactionOutputs<TNumber extends number | bigint, TOutput> = {
    /** all transaction outputs */
    outputs: TOutput[];
    /** transaction outputs that were specified as recipients but are missing from the transaction */
    missingOutputs: TOutput[];
    /** transaction outputs that were specified as recipients and are present in the transaction */
    explicitExternalOutputs: TOutput[];
    /** transaction outputs that were not specified as recipients but are present in the transaction */
    implicitExternalOutputs: TOutput[];
    /** transaction outputs that are change outputs */
    changeOutputs: TOutput[];
    /** sum of all explicit external outputs */
    explicitExternalSpendAmount: TNumber;
    /** sum of all implicit external outputs */
    implicitExternalSpendAmount: TNumber;
};
export type BaseParsedTransaction<TNumber extends number | bigint, TOutput> = BaseParsedTransactionOutputs<TNumber, TOutput> /** Some extra properties that have nothing to do with an individual transaction */ & {
    keychains: UtxoNamedKeychains;
    keySignatures: {
        backupPub?: string;
        bitgoPub?: string;
    };
    needsCustomChangeKeySignatureVerification: boolean;
    customChange?: CustomChangeOptions;
};
/**
 * This type is a bit silly because it allows the type for the aggregate amounts to be different from the type of
 * individual amounts.
 */
export type ParsedTransaction<TNumber extends number | bigint = number> = BaseParsedTransaction<TNumber, Output>;
export interface GenerateAddressOptions {
    addressType?: ScriptType2Of3;
    threshold?: number;
    chain?: number;
    index?: number;
    segwit?: boolean;
    bech32?: boolean;
}
export interface GenerateFixedScriptAddressOptions extends GenerateAddressOptions {
    format?: CreateAddressFormat;
    keychains: {
        pub: string;
        aspKeyId?: string;
    }[];
}
export interface AddressDetails {
    address: string;
    chain: number;
    index: number;
    coin: string;
    coinSpecific: AddressCoinSpecific | DescriptorAddressCoinSpecific;
    addressType?: string;
}
export interface DescriptorAddressCoinSpecific extends AddressCoinSpecific {
    descriptorName: string;
    descriptorChecksum: string;
}
type UtxoBaseSignTransactionOptions<TNumber extends number | bigint = number> = BaseSignTransactionOptions & {
    /** Transaction prebuild from bitgo server */
    txPrebuild: {
        /**
         * walletId is required in following 2 scenarios.
         * 1. External signer express mode is used.
         * 2. bitgo MuSig2 nonce is requested
         */
        walletId?: string;
        txHex: string;
        txInfo?: TransactionInfo<TNumber>;
    };
    /** xpubs triple for wallet (user, backup, bitgo). Required only when txPrebuild.txHex is not a PSBT */
    pubs?: Triple<string>;
    /** xpub for cosigner (defaults to bitgo) */
    cosignerPub?: string;
    /**
     * When true, creates full-signed transaction without placeholder signatures.
     * When false, creates half-signed transaction with placeholder signatures.
     */
    isLastSignature?: boolean;
    /**
     * If true, allows signing a non-segwit input with a witnessUtxo instead requiring a previous
     * transaction (nonWitnessUtxo)
     */
    allowNonSegwitSigningWithoutPrevTx?: boolean;
    wallet?: UtxoWallet;
};
export type SignTransactionOptions<TNumber extends number | bigint = number> = UtxoBaseSignTransactionOptions<TNumber> & ({
    prv: string;
    signingStep?: 'signerNonce' | 'signerSignature';
} | {
    signingStep: 'cosignerNonce';
});
export interface MultiSigAddress {
    outputScript: Buffer;
    redeemScript?: Buffer;
    witnessScript?: Buffer;
    address: string;
}
export interface RecoverFromWrongChainOptions {
    txid: string;
    recoveryAddress: string;
    wallet: string;
    walletPassphrase?: string;
    xprv?: string;
    apiKey?: string;
    /** @deprecated */
    coin?: AbstractUtxoCoin;
    recoveryCoin?: AbstractUtxoCoin;
    signed?: boolean;
}
export interface VerifyKeySignaturesOptions {
    userKeychain: {
        pub?: string;
    };
    keychainToVerify: {
        pub?: string;
    };
    keySignature: string;
}
export interface VerifyUserPublicKeyOptions {
    userKeychain?: UtxoKeychain;
    disableNetworking: boolean;
    txParams: TransactionParams;
}
export interface VerifyTransactionOptions<TNumber extends number | bigint = number> extends BaseVerifyTransactionOptions {
    txPrebuild: TransactionPrebuild<TNumber>;
    txParams: TransactionParams;
    wallet: UtxoWallet;
}
export interface SignPsbtRequest {
    psbt: string;
}
export interface SignPsbtResponse {
    psbt: string;
}
export declare abstract class AbstractUtxoCoin extends BaseCoin {
    altScriptHash?: number;
    supportAltScriptDestination?: boolean;
    readonly amountType: 'number' | 'bigint';
    private readonly _network;
    protected constructor(bitgo: BitGoBase, network: utxolib.Network, amountType?: 'number' | 'bigint');
    get network(): utxolib.Network;
    getChain(): string;
    getFamily(): "btc" | "bch" | "bcha" | "bsv" | "btg" | "dash" | "doge" | "ltc" | "zec";
    getFullName(): string;
    /** Indicates whether the coin supports a block target */
    supportsBlockTarget(): boolean;
    sweepWithSendMany(): boolean;
    /** @deprecated */
    static get validAddressTypes(): ScriptType2Of3[];
    /**
     * Returns the factor between the base unit and its smallest subdivison
     * @return {number}
     */
    getBaseFactor(): number;
    /**
     * @deprecated
     */
    getCoinLibrary(): typeof utxolib;
    /**
     * Check if an address is valid
     * @param address
     * @param param
     */
    isValidAddress(address: string, param?: {
        anyFormat: boolean;
    } | /* legacy parameter */ boolean): boolean;
    /**
     * Return boolean indicating whether input is valid public key for the coin.
     *
     * @param {String} pub the pub to be checked
     * @returns {Boolean} is it valid?
     */
    isValidPub(pub: string): boolean;
    preprocessBuildParams(params: Record<string, any>): Record<string, any>;
    /**
     * Get the latest block height
     * @param reqId
     */
    getLatestBlockHeight(reqId?: RequestTracer): Promise<number>;
    checkRecipient(recipient: {
        address: string;
        amount: number | string;
    }): void;
    /**
     * Run custom coin logic after a transaction prebuild has been received from BitGo
     * @param prebuild
     */
    postProcessPrebuild<TNumber extends number | bigint>(prebuild: TransactionPrebuild<TNumber>): Promise<TransactionPrebuild<TNumber>>;
    /**
     * Determine an address' type based on its witness and redeem script presence
     * @param addressDetails
     */
    static inferAddressType(addressDetails: {
        chain: number;
    }): ScriptType2Of3 | null;
    createTransactionFromHex<TNumber extends number | bigint = number>(hex: string): utxolib.bitgo.UtxoTransaction<TNumber>;
    decodeTransaction<TNumber extends number | bigint>(input: Buffer | string): DecodedTransaction<TNumber>;
    decodeTransactionFromPrebuild<TNumber extends number | bigint>(prebuild: {
        txHex?: string;
        txBase64?: string;
    }): DecodedTransaction<TNumber>;
    toCanonicalTransactionRecipient(output: {
        valueString: string;
        address?: string;
    }): {
        amount: bigint;
        address?: string;
    };
    /**
     * Extract and fill transaction details such as internal/change spend, external spend (explicit vs. implicit), etc.
     * @param params
     * @returns {*}
     */
    parseTransaction<TNumber extends number | bigint = number>(params: ParseTransactionOptions<TNumber>): Promise<ParsedTransaction<TNumber>>;
    /**
     * @deprecated - use function verifyUserPublicKey instead
     */
    protected verifyUserPublicKey(params: VerifyUserPublicKeyOptions): boolean;
    /**
     * @deprecated - use function verifyKeySignature instead
     */
    verifyKeySignature(params: VerifyKeySignaturesOptions): boolean;
    /**
     * Verify that a transaction prebuild complies with the original intention
     *
     * @param params
     * @param params.txParams params object passed to send
     * @param params.txPrebuild prebuild object returned by server
     * @param params.txPrebuild.txHex prebuilt transaction's txHex form
     * @param params.wallet Wallet object to obtain keys to verify against
     * @param params.verification Object specifying some verification parameters
     * @param params.verification.disableNetworking Disallow fetching any data from the internet for verification purposes
     * @param params.verification.keychains Pass keychains manually rather than fetching them by id
     * @param params.verification.addresses Address details to pass in for out-of-band verification
     * @returns {boolean}
     */
    verifyTransaction<TNumber extends number | bigint = number>(params: VerifyTransactionOptions<TNumber>): Promise<boolean>;
    /**
     * Make sure an address is valid and throw an error if it's not.
     * @param params.address The address string on the network
     * @param params.addressType
     * @param params.keychains Keychain objects with xpubs
     * @param params.coinSpecific Coin-specific details for the address such as a witness script
     * @param params.chain Derivation chain
     * @param params.index Derivation index
     * @throws {InvalidAddressError}
     * @throws {InvalidAddressDerivationPropertyError}
     * @throws {UnexpectedAddressError}
     */
    isWalletAddress(params: VerifyAddressOptions<UtxoCoinSpecific>, wallet?: IWallet): Promise<boolean>;
    /**
     * @param addressType
     * @returns true iff coin supports spending from unspentType
     */
    supportsAddressType(addressType: ScriptType2Of3): boolean;
    /** {@inheritDoc } **/
    supportsMultisig(): boolean;
    /** inherited doc */
    getDefaultMultisigType(): MultisigType;
    /**
     * @param chain
     * @return true iff coin supports spending from chain
     */
    supportsAddressChain(chain: number): boolean;
    keyIdsForSigning(): number[];
    /**
     * TODO(BG-11487): Remove addressType, segwit, and bech32 params in SDKv6
     * Generate an address for a wallet based on a set of configurations
     * @param params.addressType {string}   Deprecated
     * @param params.keychains   {[object]} Array of objects with xpubs
     * @param params.threshold   {number}   Minimum number of signatures
     * @param params.chain       {number}   Derivation chain (see https://github.com/BitGo/unspents/blob/master/src/codes.ts for
     *                                                 the corresponding address type of a given chain code)
     * @param params.index       {number}   Derivation index
     * @param params.segwit      {boolean}  Deprecated
     * @param params.bech32      {boolean}  Deprecated
     * @returns {{chain: number, index: number, coin: number, coinSpecific: {outputScript, redeemScript}}}
     */
    generateAddress(params: GenerateFixedScriptAddressOptions): AddressDetails;
    /**
     * @returns input psbt added with deterministic MuSig2 nonce for bitgo key for each MuSig2 inputs.
     * @param psbtHex all MuSig2 inputs should contain user MuSig2 nonce
     * @param walletId
     */
    signPsbt(psbtHex: string, walletId: string): Promise<SignPsbtResponse>;
    /**
     * @returns input psbt added with deterministic MuSig2 nonce for bitgo key for each MuSig2 inputs from OVC.
     * @param ovcJson JSON object provided by OVC with fields psbtHex and walletId
     */
    signPsbtFromOVC(ovcJson: Record<string, unknown>): Promise<Record<string, unknown>>;
    /**
     * Assemble keychain and half-sign prebuilt transaction
     * @param params - {@see SignTransactionOptions}
     * @returns {Promise<SignedTransaction | HalfSignedUtxoTransaction>}
     */
    signTransaction<TNumber extends number | bigint = number>(params: SignTransactionOptions<TNumber>): Promise<SignedTransaction | HalfSignedUtxoTransaction>;
    /**
     * Sign a transaction with a custom signing function. Example use case is express external signer
     * @param customSigningFunction custom signing function that returns a single signed transaction
     * @param signTransactionParams parameters for custom signing function. Includes txPrebuild and pubs (for legacy tx only).
     *
     * @returns signed transaction as hex string
     */
    signWithCustomSigningFunction<TNumber extends number | bigint>(customSigningFunction: UtxoCustomSigningFunction<TNumber>, signTransactionParams: {
        txPrebuild: TransactionPrebuild<TNumber>;
        pubs?: string[];
    }): Promise<SignedTransaction>;
    /**
     * @param unspent
     * @returns {boolean}
     */
    isBitGoTaintedUnspent<TNumber extends number | bigint>(unspent: Unspent<TNumber>): boolean;
    /**
     * @deprecated - use utxolib.bitgo.getDefaultSigHash(network) instead
     * @returns {number}
     */
    get defaultSigHashType(): number;
    /**
     * @deprecated - use utxolib.bitcoin.verifySignature() instead
     */
    verifySignature(transaction: any, inputIndex: number, amount: number, verificationSettings?: {
        signatureIndex?: number;
        publicKey?: string;
    }): boolean;
    /**
     * Decompose a raw psbt/transaction into useful information, such as the total amounts,
     * change amounts, and transaction outputs.
     * @param params
     */
    explainTransaction<TNumber extends number | bigint = number>(params: ExplainTransactionOptions<TNumber>): Promise<TransactionExplanation>;
    /**
     * Create a multisig address of a given type from a list of keychains and a signing threshold
     * @param addressType
     * @param signatureThreshold
     * @param keys
     */
    createMultiSigAddress(addressType: ScriptType2Of3, signatureThreshold: number, keys: Buffer[]): MultiSigAddress;
    /**
     * @deprecated - use {@see backupKeyRecovery}
     * Builds a funds recovery transaction without BitGo
     * @param params - {@see backupKeyRecovery}
     */
    recover(params: RecoverParams): ReturnType<typeof backupKeyRecovery>;
    recoverV1(params: V1RecoverParams): ReturnType<typeof v1BackupKeyRecovery>;
    sweepV1(params: V1SweepParams): ReturnType<typeof v1Sweep>;
    /**
     * Recover coin that was sent to wrong chain
     * @param params
     * @param params.txid The txid of the faulty transaction
     * @param params.recoveryAddress address to send recovered funds to
     * @param params.wallet the wallet that received the funds
     * @param params.recoveryCoin the coin type of the wallet that received the funds
     * @param params.signed return a half-signed transaction (default=true)
     * @param params.walletPassphrase the wallet passphrase
     * @param params.xprv the unencrypted xprv (used instead of wallet passphrase)
     * @param params.apiKey for utxo coins other than [BTC,TBTC] this is a Block Chair api key
     * @returns {*}
     */
    recoverFromWrongChain<TNumber extends number | bigint = number>(params: RecoverFromWrongChainOptions): Promise<CrossChainRecoverySigned<TNumber> | CrossChainRecoveryUnsigned<TNumber>>;
    /**
     * Generate bip32 key pair
     *
     * @param seed
     * @returns {Object} object with generated pub and prv
     */
    generateKeyPair(seed: Buffer): {
        pub: string;
        prv: string;
    };
    private shouldDefaultToPsbtTxFormat;
    getExtraPrebuildParams(buildParams: ExtraPrebuildParamsOptions & {
        wallet: Wallet;
    }): Promise<{
        txFormat?: 'legacy' | 'psbt';
        changeAddressType?: ScriptType2Of3[] | ScriptType2Of3;
    }>;
    preCreateBitGo(params: PrecreateBitGoOptions): void;
    presignTransaction(params: PresignTransactionOptions): Promise<any>;
    supplementGenerateWallet(walletParams: SupplementGenerateWalletOptions, keychains: KeychainsTriplet): Promise<any>;
    transactionDataAllowed(): boolean;
    valuelessTransferAllowed(): boolean;
    getRecoveryProvider(apiToken?: string): RecoveryProvider;
}
export {};
//# sourceMappingURL=abstractUtxoCoin.d.ts.map

Выполнить команду


Для локальной разработки. Не используйте в интернете!