///
import { BIP32Interface } from 'bip32';
import { TxInput, TxOutput } from 'bitcoinjs-lib';
import { UtxoTransaction } from './UtxoTransaction';
import { UtxoTransactionBuilder } from './UtxoTransactionBuilder';
import { ScriptType, ScriptType2Of3 } from './outputScripts';
import { Triple } from './types';
import { Network } from '../networks';
declare const inputTypes: readonly ["multisig", "nonstandard", "nulldata", "pubkey", "pubkeyhash", "scripthash", "witnesspubkeyhash", "witnessscripthash", "taproot", "taprootnofn", "witnesscommitment"];
declare type InputType = typeof inputTypes[number];
export declare function isPlaceholderSignature(v: number | Buffer): boolean;
export interface ParsedSignatureScript {
scriptType: ScriptType | 'p2pkh' | undefined;
isSegwitInput: boolean;
inputClassification: InputType;
p2shOutputClassification?: string;
}
export interface ParsedSignatureScriptUnknown extends ParsedSignatureScript {
scriptType: undefined;
}
export interface ParsedSignatureScriptP2PK extends ParsedSignatureScript {
scriptType: 'p2shP2pk';
inputClassification: 'scripthash';
}
export interface ParsedSignatureScriptP2PKH extends ParsedSignatureScript {
scriptType: 'p2pkh';
inputClassification: 'pubkeyhash';
signatures: [Buffer];
publicKeys: [Buffer];
pubScript?: Buffer;
}
export interface ParsedSignatureScript2Of3 extends ParsedSignatureScript {
scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh';
inputClassification: 'scripthash' | 'witnessscripthash';
publicKeys: [Buffer, Buffer, Buffer];
signatures: [Buffer, Buffer] | [Buffer | 0, Buffer | 0, Buffer | 0];
pubScript: Buffer;
}
export interface ParsedSignatureScriptTaproot extends ParsedSignatureScript {
scriptType: 'p2tr';
inputClassification: 'taproot';
publicKeys: [Buffer] | [Buffer, Buffer];
signatures: [Buffer] | [Buffer, Buffer];
controlBlock: Buffer | undefined;
scriptPathLevel: number | undefined;
pubScript: Buffer;
}
export declare function getDefaultSigHash(network: Network, scriptType?: ScriptType2Of3): number;
/**
* Parse a transaction's signature script to obtain public keys, signatures, the sig script,
* and other properties.
*
* Only supports script types used in BitGo transactions.
*
* @param input
* @returns ParsedSignatureScript
*/
export declare function parseSignatureScript(input: TxInput): ParsedSignatureScriptUnknown | ParsedSignatureScriptP2PK | ParsedSignatureScriptP2PKH | ParsedSignatureScript2Of3 | ParsedSignatureScriptTaproot;
export declare function parseSignatureScript2Of3(input: TxInput): ParsedSignatureScript2Of3 | ParsedSignatureScriptTaproot;
/**
* Constraints for signature verifications.
* Parameters are conjunctive: if multiple parameters are set, a verification for an individual
* signature must satisfy all of them.
*/
export declare type VerificationSettings = {
/**
* The index of the signature to verify. Only iterates over non-empty signatures.
*/
signatureIndex?: number;
/**
* The public key to verify.
*/
publicKey?: Buffer;
};
/**
* Result for a individual signature verification
*/
export declare type SignatureVerification = {
/** Set to the public key that signed for the signature */
signedBy: Buffer | undefined;
};
/**
* @deprecated - use {@see verifySignaturesWithPublicKeys} instead
* Get signature verifications for multsig transaction
* @param transaction
* @param inputIndex
* @param amount - must be set for segwit transactions and BIP143 transactions
* @param verificationSettings
* @param prevOutputs - must be set for p2tr transactions
* @returns SignatureVerification[] - in order of parsed non-empty signatures
*/
export declare function getSignatureVerifications(transaction: UtxoTransaction, inputIndex: number, amount: TNumber, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput[]): SignatureVerification[];
/**
* @deprecated use {@see verifySignatureWithPublicKeys} instead
* @param transaction
* @param inputIndex
* @param amount
* @param verificationSettings - if publicKey is specified, returns true iff any signature is signed by publicKey.
* @param prevOutputs - must be set for p2tr transactions
*/
export declare function verifySignature(transaction: UtxoTransaction, inputIndex: number, amount: TNumber, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput[]): boolean;
/**
* @param transaction
* @param inputIndex
* @param prevOutputs - transaction outputs for inputs
* @param publicKeys - public keys to check signatures for
* @return array of booleans indicating a valid signature for every pubkey in _publicKeys_
*/
export declare function verifySignatureWithPublicKeys(transaction: UtxoTransaction, inputIndex: number, prevOutputs: TxOutput[], publicKeys: Buffer[]): boolean[];
/**
* Wrapper for {@see verifySignatureWithPublicKeys} for single pubkey
* @param transaction
* @param inputIndex
* @param prevOutputs
* @param publicKey
* @return true iff signature is valid
*/
export declare function verifySignatureWithPublicKey(transaction: UtxoTransaction, inputIndex: number, prevOutputs: TxOutput[], publicKey: Buffer): boolean;
export declare function signInputP2shP2pk(txBuilder: UtxoTransactionBuilder, vin: number, keyPair: BIP32Interface): void;
export declare function signInput2Of3(txBuilder: UtxoTransactionBuilder, vin: number, scriptType: ScriptType2Of3, pubkeys: Triple, keyPair: BIP32Interface, cosigner: Buffer, amount: TNumber): void;
export {};
//# sourceMappingURL=signature.d.ts.map