diff --git a/src/transaction_builder.js b/src/transaction_builder.js index f6a8625..098e6c1 100644 --- a/src/transaction_builder.js +++ b/src/transaction_builder.js @@ -166,7 +166,7 @@ class TransactionBuilder { `Unknown prevOutScriptType "${signParams.prevOutScriptType}"`, ); } - typeforce(typeforce.tuple(typeforce.Number, typeforce.Object), [ + typeforce(typeforce.tuple(typeforce.Number, types.Signer), [ signParams.vin, signParams.keyPair, ]); diff --git a/src/types.js b/src/types.js index be95266..8bcee2c 100644 --- a/src/types.js +++ b/src/types.js @@ -13,6 +13,14 @@ exports.BIP32Path = BIP32Path; BIP32Path.toJSON = () => { return 'BIP32 derivation path'; }; +function Signer(obj) { + return ( + (typeforce.Buffer(obj.publicKey) || + typeof obj.getPublicKey === 'function') && + typeof obj.sign === 'function' + ); +} +exports.Signer = Signer; const SATOSHI_MAX = 21 * 1e14; function Satoshi(value) { return typeforce.UInt53(value) && value <= SATOSHI_MAX; diff --git a/ts_src/transaction_builder.ts b/ts_src/transaction_builder.ts index 33ea48b..a2ccc8b 100644 --- a/ts_src/transaction_builder.ts +++ b/ts_src/transaction_builder.ts @@ -256,7 +256,7 @@ export class TransactionBuilder { `Unknown prevOutScriptType "${signParams.prevOutScriptType}"`, ); } - typeforce(typeforce.tuple(typeforce.Number, typeforce.Object), [ + typeforce(typeforce.tuple(typeforce.Number, types.Signer), [ signParams.vin, signParams.keyPair, ]); diff --git a/ts_src/types.ts b/ts_src/types.ts index 06c247d..2e41267 100644 --- a/ts_src/types.ts +++ b/ts_src/types.ts @@ -12,6 +12,14 @@ BIP32Path.toJSON = (): string => { return 'BIP32 derivation path'; }; +export function Signer(obj: any): boolean { + return ( + (typeforce.Buffer(obj.publicKey) || + typeof obj.getPublicKey === 'function') && + typeof obj.sign === 'function' + ); +} + const SATOSHI_MAX: number = 21 * 1e14; export function Satoshi(value: number): boolean { return typeforce.UInt53(value) && value <= SATOSHI_MAX; diff --git a/types/types.d.ts b/types/types.d.ts index 242bab8..e7c588d 100644 --- a/types/types.d.ts +++ b/types/types.d.ts @@ -3,6 +3,7 @@ export declare function BIP32Path(value: string): boolean; export declare namespace BIP32Path { var toJSON: () => string; } +export declare function Signer(obj: any): boolean; export declare function Satoshi(value: number): boolean; export declare const ECPoint: any; export declare const Network: any;