Skip to content

Commit

Permalink
Merge pull request #200 from bitcoin-sv/scriptTemplateFix
Browse files Browse the repository at this point in the history
Script template fix
  • Loading branch information
tonesnotes authored Feb 10, 2025
2 parents 944e0cd + fc0c890 commit a00dc29
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 23 deletions.
29 changes: 19 additions & 10 deletions docs/script.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
| --- |
| [ScriptChunk](#interface-scriptchunk) |
| [ScriptTemplate](#interface-scripttemplate) |
| [ScriptTemplateUnlock](#interface-scripttemplateunlock) |

Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)

Expand All @@ -31,15 +32,12 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](

```ts
export default interface ScriptTemplate {
lock: (...params: unknown[]) => LockingScript | Promise<LockingScript>;
unlock: (...params: unknown[]) => {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
};
lock: (...params: any[]) => LockingScript | Promise<LockingScript>;
unlock: (...params: any[]) => ScriptTemplateUnlock;
}
```

See also: [LockingScript](./script.md#class-lockingscript), [Transaction](./transaction.md#class-transaction), [UnlockingScript](./script.md#class-unlockingscript), [sign](./compat.md#variable-sign)
See also: [LockingScript](./script.md#class-lockingscript), [ScriptTemplateUnlock](./script.md#interface-scripttemplateunlock)

<details>

Expand All @@ -50,7 +48,7 @@ See also: [LockingScript](./script.md#class-lockingscript), [Transaction](./tran
Creates a locking script with the given parameters.

```ts
lock: (...params: unknown[]) => LockingScript | Promise<LockingScript>
lock: (...params: any[]) => LockingScript | Promise<LockingScript>
```
See also: [LockingScript](./script.md#class-lockingscript)

Expand All @@ -63,14 +61,25 @@ This method returns an object containing two functions:
2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.

```ts
unlock: (...params: unknown[]) => {
unlock: (...params: any[]) => ScriptTemplateUnlock
```
See also: [ScriptTemplateUnlock](./script.md#interface-scripttemplateunlock)

</details>

Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)

---
### Interface: ScriptTemplateUnlock

```ts
export default interface ScriptTemplateUnlock {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
}
```
See also: [Transaction](./transaction.md#class-transaction), [UnlockingScript](./script.md#class-unlockingscript), [sign](./compat.md#variable-sign)

</details>
See also: [Transaction](./transaction.md#class-transaction), [UnlockingScript](./script.md#class-unlockingscript), [sign](./compat.md#variable-sign)

Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bsv/sdk",
"version": "1.3.15",
"version": "1.3.16",
"type": "module",
"description": "BSV Blockchain Software Development Kit",
"main": "dist/cjs/mod.js",
Expand Down Expand Up @@ -239,6 +239,7 @@
"project": "tsconfig.eslint.json",
"ignore": [
"dist",
"src/script/ScriptTemplate.ts",
"src/transaction/Transaction.ts",
"src/auth/transports/SimplifiedFetchTransport.ts"
]
Expand Down
16 changes: 6 additions & 10 deletions src/script/ScriptTemplate.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import LockingScript from './LockingScript.js'
import UnlockingScript from './UnlockingScript.js'
import Transaction from '../transaction/Transaction.js'
import ScriptTemplateUnlock from './ScriptTemplateUnlock.js'

/**
* @interface
Expand All @@ -12,10 +11,10 @@ export default interface ScriptTemplate {
/**
* Creates a locking script with the given parameters.
*
* @param {...any} params - The parameters required to create the locking script.
* @param {...any[]} params - The parameters required to create the locking script.
* @returns {LockingScript} - An instance of LockingScript, or a Promise for one.
*/
lock: (...params: unknown[]) => LockingScript | Promise<LockingScript>
lock: (...params: any[]) => LockingScript | Promise<LockingScript>

/**
* Creates a function that generates an unlocking script along with its signature and length estimation.
Expand All @@ -24,11 +23,8 @@ export default interface ScriptTemplate {
* 1. `sign` - A function that, when called with a transaction and an input index, returns an UnlockingScript instance.
* 2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
*
* @param {...any} params - The parameters required to create the unlocking script.
* @returns {Object} - An object containing the `sign` and `estimateLength` functions.
* @param {...any[]} params - The parameters required to create the unlocking script.
* @returns {ScriptTemplateUnlock} - An object containing the `sign` and `estimateLength` functions.
*/
unlock: (...params: unknown[]) => {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>
}
unlock: (...params: any[]) => ScriptTemplateUnlock
}
7 changes: 7 additions & 0 deletions src/script/ScriptTemplateUnlock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import UnlockingScript from './UnlockingScript.js'
import Transaction from '../transaction/Transaction.js'

export default interface ScriptTemplateUnlock {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>
}
1 change: 1 addition & 0 deletions src/script/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ export { default as Script } from './Script.js'
export { default as LockingScript } from './LockingScript.js'
export { default as UnlockingScript } from './UnlockingScript.js'
export { default as Spend } from './Spend.js'
export type { default as ScriptTemplateUnlock } from './ScriptTemplateUnlock.js'
export type { default as ScriptTemplate } from './ScriptTemplate.js'
export * from './templates/index.js'

0 comments on commit a00dc29

Please sign in to comment.