From 528dff01c11ab7c25d0a56dd56a0f733818db77b Mon Sep 17 00:00:00 2001
From: junderw <junderwood@bitcoinbank.co.jp>
Date: Fri, 28 Dec 2018 14:55:30 +0900
Subject: [PATCH] Add P2WSH

---
 src/templates/witnessscripthash/index.ts  | 10 ++++++----
 src/templates/witnessscripthash/input.ts  | 16 ++++++----------
 src/templates/witnessscripthash/output.ts |  7 ++-----
 src/types.ts                              |  2 +-
 4 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/src/templates/witnessscripthash/index.ts b/src/templates/witnessscripthash/index.ts
index 7192cfd..42aeb7b 100644
--- a/src/templates/witnessscripthash/index.ts
+++ b/src/templates/witnessscripthash/index.ts
@@ -1,5 +1,7 @@
-module.exports = {
-  input: require('./input'),
-  output: require('./output')
+import * as input from './input'
+import * as output from './output'
+
+export {
+  input,
+  output,
 }
-export {}
diff --git a/src/templates/witnessscripthash/input.ts b/src/templates/witnessscripthash/input.ts
index c6d47e3..7f7e415 100644
--- a/src/templates/witnessscripthash/input.ts
+++ b/src/templates/witnessscripthash/input.ts
@@ -1,15 +1,14 @@
 // <scriptSig> {serialized scriptPubKey script}
 
-const bscript = require('../../script')
-const types = require('../../types')
+import * as bscript from '../../script'
 const typeforce = require('typeforce')
 
-const p2ms = require('../multisig/')
-const p2pk = require('../pubkey/')
-const p2pkh = require('../pubkeyhash/')
+import * as p2ms from '../multisig'
+import * as p2pk from '../pubkey'
+import * as p2pkh from '../pubkeyhash'
 
-function check (chunks, allowIncomplete) {
-  typeforce(types.Array, chunks)
+export function check (chunks: Array<Buffer>, allowIncomplete?: boolean): boolean {
+  typeforce(typeforce.Array, chunks)
   if (chunks.length < 1) return false
 
   const witnessScript = chunks[chunks.length - 1]
@@ -35,6 +34,3 @@ function check (chunks, allowIncomplete) {
   return false
 }
 check.toJSON = function () { return 'witnessScriptHash input' }
-
-module.exports = { check }
-export {}
diff --git a/src/templates/witnessscripthash/output.ts b/src/templates/witnessscripthash/output.ts
index 3bc327f..0b13cd1 100644
--- a/src/templates/witnessscripthash/output.ts
+++ b/src/templates/witnessscripthash/output.ts
@@ -1,9 +1,9 @@
 // OP_0 {scriptHash}
 
-const bscript = require('../../script')
+import * as bscript from '../../script'
 const OPS = require('bitcoin-ops')
 
-function check (script) {
+export function check (script: Buffer | Array<number | Buffer>): boolean {
   const buffer = bscript.compile(script)
 
   return buffer.length === 34 &&
@@ -11,6 +11,3 @@ function check (script) {
     buffer[1] === 0x20
 }
 check.toJSON = function () { return 'Witness scriptHash output' }
-
-module.exports = { check }
-export {}
diff --git a/src/types.ts b/src/types.ts
index 790b95e..ad603c5 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -34,4 +34,4 @@ export const Buffer256bit = typeforce.BufferN(32)
 export const Hash160bit = typeforce.BufferN(20)
 export const Hash256bit = typeforce.BufferN(32)
 export * from 'typeforce'
-export { Number } from 'typeforce'
+export { Number, Array } from 'typeforce'