Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changeset/cold-clubs-doubt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@evolution-sdk/evolution": patch
---

Add transaction chaining support via `SignBuilder.chainResult()`

- Add `chainResult()` method to `SignBuilder` for building dependent transactions
- Returns `ChainResult` with `consumed`, `available` UTxOs and pre-computed `txHash`
- Lazy evaluation with memoization - computed on first call, cached for subsequent calls
- Add `signAndSubmit()` convenience method combining sign and submit in one call
- Remove redundant `chain()`, `chainEffect()`, `chainEither()` methods from TransactionBuilder
18 changes: 18 additions & 0 deletions .changeset/common-ways-occur.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
"@evolution-sdk/evolution": patch
---

### Native Scripts & Multi-Sig Support

- **`addSigner` operation**: Add required signers to transactions for multi-sig and script validation
- **Native script minting**: Full support for `ScriptAll`, `ScriptAny`, `ScriptNOfK`, `InvalidBefore`, `InvalidHereafter`
- **Reference scripts**: Use native scripts via `readFrom` instead of attaching them to transactions
- **Multi-sig spending**: Spend from native script addresses with multi-party signing
- **Improved fee calculation**: Accurate fee estimation for transactions with native scripts and reference scripts

### API Changes

- `UTxO.scriptRef` type changed from `ScriptRef` to `Script` for better type safety
- `PayToAddressParams.scriptRef` renamed to `script` for consistency
- Wallet `signTx` now accepts `referenceUtxos` context for native script signer detection
- Client `signTx` auto-fetches reference UTxOs when signing transactions with reference inputs
14 changes: 14 additions & 0 deletions docs/content/docs/modules/core/NativeScripts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ parent: Modules
- [arbitrary](#arbitrary)
- [utilities](#utilities)
- [countRequiredSigners](#countrequiredsigners)
- [extractKeyHashes](#extractkeyhashes)
- [utils](#utils)
- [CDDLSchema](#cddlschema)
- [FromCBORBytes](#fromcborbytes-1)
Expand Down Expand Up @@ -374,6 +375,19 @@ export declare const countRequiredSigners: (script: NativeScriptVariants) => num

Added in v2.0.0

## extractKeyHashes

Extract all key hashes from a native script.
Recursively traverses nested scripts to find all ScriptPubKey key hashes.

**Signature**

```ts
export declare const extractKeyHashes: (script: NativeScriptVariants) => ReadonlyArray<Uint8Array>
```

Added in v2.0.0

# utils

## CDDLSchema
Expand Down
30 changes: 10 additions & 20 deletions docs/content/docs/modules/core/UTxO.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ parent: Modules
- [datumOptionToSDK](#datumoptiontosdk)
- [fromSDK](#fromsdk)
- [fromSDKArray](#fromsdkarray)
- [scriptRefFromSDK](#scriptreffromsdk)
- [scriptRefToSDKHex](#scriptreftosdkhex)
- [scriptFromSDK](#scriptfromsdk)
- [scriptToSDK](#scripttosdk)
- [toArray](#toarray)
- [toSDK](#tosdk)
- [toSDKArray](#tosdkarray)
Expand All @@ -37,7 +37,6 @@ parent: Modules
- [UTxO (class)](#utxo-class)
- [toJSON (method)](#tojson-method)
- [toString (method)](#tostring-method)
- [[Inspectable.NodeInspectSymbol] (method)](#inspectablenodeinspectsymbol-method)
- [[Equal.symbol] (method)](#equalsymbol-method)
- [[Hash.symbol] (method)](#hashsymbol-method)
- [models](#models)
Expand Down Expand Up @@ -207,29 +206,28 @@ export declare const fromSDKArray: (

Added in v2.0.0

## scriptRefFromSDK
## scriptFromSDK

Convert SDK Script to Core ScriptRef.
Convert SDK Script to Core Script.

**Signature**

```ts
export declare const scriptRefFromSDK: (
script: SDKScript.Script
) => Effect.Effect<ScriptRef.ScriptRef, ParseResult.ParseError>
export declare const scriptFromSDK: (
sdkScript: SDKScript.Script
) => Effect.Effect<Script.Script, ParseResult.ParseError>
```

Added in v2.0.0

## scriptRefToSDKHex
## scriptToSDK

Convert Core ScriptRef to SDK Script type string.
Note: We lose the script type information as ScriptRef only stores bytes.
Convert Core Script to SDK Script.

**Signature**

```ts
export declare const scriptRefToSDKHex: (scriptRef: ScriptRef.ScriptRef) => string
export declare const scriptToSDK: (script: Script.Script) => SDKScript.Script
```

Added in v2.0.0
Expand Down Expand Up @@ -332,14 +330,6 @@ toJSON()
toString(): string
```

### [Inspectable.NodeInspectSymbol] (method)

**Signature**

```ts
[Inspectable.NodeInspectSymbol](): unknown
```

### [Equal.symbol] (method)

**Signature**
Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Credential.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Credential.ts
nav_order: 180
nav_order: 181
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Datum.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Datum.ts
nav_order: 181
nav_order: 182
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Delegation.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Delegation.ts
nav_order: 182
nav_order: 183
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/EvalRedeemer.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/EvalRedeemer.ts
nav_order: 183
nav_order: 184
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Network.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Network.ts
nav_order: 184
nav_order: 185
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/OutRef.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/OutRef.ts
nav_order: 185
nav_order: 186
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/PolicyId.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/PolicyId.ts
nav_order: 186
nav_order: 187
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/PoolParams.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/PoolParams.ts
nav_order: 187
nav_order: 188
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/ProtocolParameters.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/ProtocolParameters.ts
nav_order: 188
nav_order: 189
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Relay.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Relay.ts
nav_order: 194
nav_order: 195
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/RewardAddress.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/RewardAddress.ts
nav_order: 195
nav_order: 196
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Script.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Script.ts
nav_order: 196
nav_order: 197
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Type.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Type.ts
nav_order: 197
nav_order: 198
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/UTxO.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/UTxO.ts
nav_order: 199
nav_order: 200
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/Unit.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/Unit.ts
nav_order: 198
nav_order: 199
parent: Modules
---

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/builders/RedeemerBuilder.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/builders/RedeemerBuilder.ts
nav_order: 169
nav_order: 170
parent: Modules
---

Expand Down
13 changes: 12 additions & 1 deletion docs/content/docs/modules/sdk/builders/SignBuilder.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/builders/SignBuilder.ts
nav_order: 170
nav_order: 171
parent: Modules
---

Expand All @@ -25,11 +25,21 @@ SignBuilder extends TransactionResultBase with signing capabilities.
Only available when the client has a signing wallet (seed, private key, or API wallet).
Provides access to unsigned transaction (via base interface) and signing operations.

Includes `chainResult` for transaction chaining - use `chainResult.available` as
`availableUtxos` for the next transaction in a chain.

**Signature**

```ts
export interface SignBuilder extends TransactionResultBase, EffectToPromiseAPI<SignBuilderEffect> {
readonly Effect: SignBuilderEffect
/**
* Compute chain result for building dependent transactions.
* Contains consumed UTxOs, available UTxOs (remaining + created), and txHash.
*
* Result is memoized - computed once on first call, cached for subsequent calls.
*/
readonly chainResult: () => ChainResult
}
```

Expand All @@ -52,6 +62,7 @@ export interface SignBuilderEffect {

// Signing methods
readonly sign: () => Effect.Effect<SubmitBuilder, TransactionBuilderError>
readonly signAndSubmit: () => Effect.Effect<string, TransactionBuilderError>
readonly signWithWitness: (
witnessSet: TransactionWitnessSet.TransactionWitnessSet
) => Effect.Effect<SubmitBuilder, TransactionBuilderError>
Expand Down
5 changes: 4 additions & 1 deletion docs/content/docs/modules/sdk/builders/SignBuilderImpl.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/builders/SignBuilderImpl.ts
nav_order: 171
nav_order: 172
parent: Modules
---

Expand Down Expand Up @@ -43,8 +43,11 @@ export declare const makeSignBuilder: (params: {
transactionWithFakeWitnesses: Transaction.Transaction
fee: bigint
utxos: ReadonlyArray<CoreUTxO.UTxO>
referenceUtxos: ReadonlyArray<CoreUTxO.UTxO>
provider: Provider.Provider
wallet: Wallet
outputs: ReadonlyArray<TxOut.TransactionOutput>
availableUtxos: ReadonlyArray<CoreUTxO.UTxO>
}) => SignBuilder
```

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/modules/sdk/builders/SubmitBuilder.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/builders/SubmitBuilder.ts
nav_order: 172
nav_order: 173
parent: Modules
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: sdk/builders/SubmitBuilderImpl.ts
nav_order: 173
nav_order: 174
parent: Modules
---

Expand Down
Loading