diff --git a/.changeset/config.json b/.changeset/config.json
new file mode 100644
index 00000000..ae49392f
--- /dev/null
+++ b/.changeset/config.json
@@ -0,0 +1,10 @@
+{
+ "changelog": "@changesets/changelog-github",
+ "commit": false,
+ "fixed": [],
+ "linked": [],
+ "access": "public",
+ "baseBranch": "main",
+ "updateInternalDependencies": "patch",
+ "ignore": []
+}
diff --git a/.envrc b/.envrc
new file mode 100644
index 00000000..8392d159
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
\ No newline at end of file
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 00000000..c9f1d556
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,18 @@
+# Global owners
+* @no-witness-labs
+
+# Evolution SDK core
+/packages/evolution/ @no-witness-labs
+
+# Documentation
+/docs/ @no-witness-labs
+/README.md @no-witness-labs
+
+# CI/CD and GitHub configuration
+/.github/ @no-witness-labs
+/.changeset/ @no-witness-labs
+
+# Package configuration
+/package.json @no-witness-labs
+/turbo.json @no-witness-labs
+/tsconfig*.json @no-witness-labs
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..1ab59ce4
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,119 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ lint:
+ name: โฌฃ ESLint
+ runs-on: ubuntu-latest
+ steps:
+ - name: โฌ๏ธ Checkout repo
+ uses: actions/checkout@v4
+
+ - name: ๐ฆ Install pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+
+ - name: ๐ฆ Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: ๐ฌ Lint
+ run: pnpm turbo run lint --affected
+
+ typecheck:
+ name: สฆ TypeScript
+ runs-on: ubuntu-latest
+ steps:
+ - name: โฌ๏ธ Checkout repo
+ uses: actions/checkout@v4
+
+ - name: ๐ฆ Install pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+
+ - name: ๐ฆ Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: ๐ Type check
+ run: pnpm turbo run type-check --affected
+
+ test:
+ name: ๐งช Test
+ runs-on: ubuntu-latest
+ steps:
+ - name: โฌ๏ธ Checkout repo
+ uses: actions/checkout@v4
+
+ - name: ๐ฆ Install pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+
+ - name: ๐ฆ Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: ๐งช Run tests
+ run: pnpm turbo run test --affected
+
+ build:
+ name: ๐ Build
+ runs-on: ubuntu-latest
+ steps:
+ - name: โฌ๏ธ Checkout repo
+ uses: actions/checkout@v4
+
+ - name: ๐ฆ Install pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+
+ - name: ๐ฆ Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: ๐ Build packages
+ run: pnpm turbo run build --affected
+
+ - name: ๐ Generate docs (validate examples)
+ run: pnpm turbo run docgen --affected || echo "No docgen script found, skipping"
+
+ # All jobs must pass
+ ci:
+ name: โ
CI
+ runs-on: ubuntu-latest
+ if: always()
+ needs: [lint, typecheck, test, build]
+ steps:
+ - name: โ
All jobs passed
+ if: ${{ !(contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}
+ run: exit 0
+
+ - name: โ Some jobs failed
+ if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
+ run: exit 1
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 00000000..ca5c4580
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,104 @@
+name: Deploy Documentation
+
+on:
+ push:
+ branches: [main]
+ paths:
+ - 'docs/**'
+ - 'packages/evolution/src/**'
+ - 'packages/evolution/docs/**'
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ outputs:
+ should_build: ${{ steps.changes.outputs.should_build }}
+ steps:
+ - name: โฌ๏ธ Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Need full history for turbo-ignore
+
+ - name: ๐ Check for documentation changes
+ id: changes
+ run: |
+ npx turbo-ignore docs
+ echo "should_build=$?" >> $GITHUB_OUTPUT
+ continue-on-error: true
+
+ - name: ๐ฆ Install pnpm
+ if: steps.changes.outputs.should_build == '1'
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ if: steps.changes.outputs.should_build == '1'
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+
+ - name: ๐ง Setup Pages
+ if: steps.changes.outputs.should_build == '1'
+ uses: actions/configure-pages@v4
+ with:
+ # Automatically inject basePath in your Next.js configuration file and disable
+ # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
+ #
+ # You may remove this line if you want to manage the configuration yourself.
+ static_site_generator: next
+
+ - name: ๐ฆ Install dependencies
+ if: steps.changes.outputs.should_build == '1'
+ run: pnpm install --frozen-lockfile
+
+ - name: ๐ Build packages (required for docs)
+ if: steps.changes.outputs.should_build == '1'
+ run: pnpm turbo run build
+
+ - name: ๐ Generate Evolution SDK docs
+ if: steps.changes.outputs.should_build == '1'
+ run: pnpm turbo run docgen
+ working-directory: packages/evolution
+
+ - name: ๐ Copy Evolution docs to website
+ if: steps.changes.outputs.should_build == '1'
+ run: node scripts/copy-evolution-docs.mjs
+ working-directory: docs
+
+ - name: ๐ Build documentation with Next.js
+ if: steps.changes.outputs.should_build == '1'
+ run: pnpm turbo run build
+ working-directory: docs
+
+ - name: ๐ค Upload artifact
+ if: steps.changes.outputs.should_build == '1'
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./docs/out
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ if: needs.build.outputs.should_build == '1' || github.event_name == 'workflow_dispatch'
+ steps:
+ - name: ๐ Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..81122eeb
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,59 @@
+name: Release
+
+on:
+ push:
+ branches:
+ - main
+
+concurrency: ${{ github.workflow }}-${{ github.ref }}
+
+jobs:
+ release:
+ name: ๐ Release
+ runs-on: ubuntu-latest
+ steps:
+ - name: โฌ๏ธ Checkout repo
+ uses: actions/checkout@v4
+ with:
+ # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
+ fetch-depth: 0
+
+ - name: ๐ฆ Install pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+ registry-url: 'https://registry.npmjs.org/'
+
+ - name: ๐ฆ Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: ๐ Build packages
+ run: pnpm turbo run build
+
+ - name: ๐งช Run tests
+ run: pnpm turbo run test
+
+ - name: ๐ Generate docs
+ run: pnpm turbo run docgen || echo "No docgen script found, skipping"
+
+ - name: ๐ฆ Create Release Pull Request or Publish to npm
+ id: changesets
+ uses: changesets/action@v1
+ with:
+ # This uses our custom publish script that builds before publishing
+ publish: pnpm changeset-publish
+ title: "ci(changesets): version packages"
+ commit: "ci(changesets): version packages"
+ createGithubReleases: true
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+
+ - name: ๐ข Send a Slack notification if a publish happened
+ if: steps.changesets.outputs.published == 'true'
+ # You can do something when a publish happens.
+ run: echo "A new version of Evolution SDK was published!"
diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml
new file mode 100644
index 00000000..038d17aa
--- /dev/null
+++ b/.github/workflows/update-dependencies.yml
@@ -0,0 +1,64 @@
+name: Update Dependencies
+
+on:
+ schedule:
+ # Run every Monday at 9:00 AM UTC
+ - cron: '0 9 * * 1'
+ workflow_dispatch:
+
+jobs:
+ update-dependencies:
+ name: ๐ Update Dependencies
+ runs-on: ubuntu-latest
+ steps:
+ - name: โฌ๏ธ Checkout repo
+ uses: actions/checkout@v4
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: ๐ฆ Install pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: โ Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: 'pnpm'
+
+ - name: ๐ฆ Install dependencies
+ run: pnpm install
+
+ - name: ๐ Update dependencies
+ run: |
+ pnpm update --latest --recursive
+ pnpm install
+
+ - name: ๐งช Run tests
+ run: pnpm turbo run test
+ continue-on-error: true
+
+ - name: ๐ Build packages
+ run: pnpm turbo run build
+ continue-on-error: true
+
+ - name: ๐ Create Pull Request
+ uses: peter-evans/create-pull-request@v6
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ commit-message: 'chore: update dependencies'
+ title: 'chore: update dependencies'
+ body: |
+ This PR updates all dependencies to their latest versions.
+
+ ## Changes
+ - Updated all dependencies to latest versions
+
+ ## Testing
+ - [ ] CI tests pass
+ - [ ] Manual testing required
+
+ ## Notes
+ Please review the changes carefully and test thoroughly before merging.
+ branch: chore/update-dependencies
+ delete-branch: true
+ base: main
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..03716b65
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+temp/
+.turbo
+node_modules
+dist
+*.log
+.DS_Store
+.direnv
+docs/out
+docs/.next
\ No newline at end of file
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 00000000..30716dac
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,8 @@
+{
+ "semi": false,
+ "trailingComma": "none",
+ "singleQuote": false,
+ "printWidth": 120,
+ "tabWidth": 2,
+ "useTabs": false
+}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..7279f0ef
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,74 @@
+# Contributing to Evolution SDK
+
+We love your input! We want to make contributing to Evolution SDK as easy and transparent as possible, whether it's:
+
+- Reporting a bug
+- Discussing the current state of the code
+- Submitting a fix
+- Proposing new features
+- Becoming a maintainer
+
+## Development Process
+
+We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
+
+### Pull Requests
+
+1. Fork the repo and create your branch from `main`.
+2. If you've added code that should be tested, add tests.
+3. If you've changed APIs, update the documentation.
+4. Ensure the test suite passes.
+5. Make sure your code follows the existing style.
+6. Issue that pull request!
+
+## Development Setup
+
+```bash
+# Clone your fork
+git clone https://github.com/your-username/evolution-sdk.git
+cd evolution-sdk
+
+# Enter development environment (optional but recommended)
+nix develop
+
+# Install dependencies
+pnpm install
+
+# Build the project
+pnpm turbo build
+
+# Run type checking
+pnpm turbo type-check
+
+# Start development mode
+pnpm turbo dev
+```
+
+## Code Style
+
+- Use TypeScript for all new code
+- Follow the existing code style (we use prettier and eslint)
+- Write meaningful commit messages
+- Keep pull requests focused and small
+
+## Reporting Bugs
+
+We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/no-witness-labs/evolution-sdk/issues/new).
+
+**Great Bug Reports** tend to have:
+
+- A quick summary and/or background
+- Steps to reproduce
+ - Be specific!
+ - Give sample code if you can
+- What you expected would happen
+- What actually happens
+- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
+
+## Feature Requests
+
+Feature requests are welcome! Please create an issue to discuss the feature before implementing it.
+
+## License
+
+By contributing, you agree that your contributions will be licensed under the MIT License.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..f9fb0210
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 No Witness Labs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 8208cad0..a0e3d681 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,456 @@
-# evolution-sdk
+
+

+
+ # Evolution SDK
+
+ **TypeScript-first Cardano development with static type inference**
+
+ Build robust Cardano applications with modern TypeScript, functional programming, and comprehensive type safety.
+
+ [](https://github.com/no-witness-labs/evolution-sdk/actions)
+ [](https://www.typescriptlang.org/)
+ [](https://effect.website/)
+ [](https://opensource.org/licenses/MIT)
+ [](http://makeapullrequest.com)
+
+ [๐ Documentation](https://no-witness-labs.github.io/evolution-sdk) โข [๐ Quick Start](#-quick-start) โข [๐ก Examples](./examples) โข [๐ค Contributing](#-contributing)
+
+
+---
+
+## What is Evolution SDK?
+
+Evolution SDK is a **TypeScript-first** Cardano development framework. Define your data schemas and build transactions with full type safety. You'll get back strongly typed, validated results with comprehensive error handling.
+
+```typescript
+import { Address, Transaction, Coin, Devnet } from "@evolution-sdk/evolution"
+
+// Define and validate a Cardano address
+const address = Address.Codec.Decode.bech32(
+ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3jcu5d8ps7zex2k2xt3uqxgjqnnj0vs2qd4a8cpkp0k8cqq0sq2nq"
+)
+
+// Convert between formats with type safety
+const addressHex = Address.Codec.Encode.hex(address)
+const addressBytes = Address.Codec.Encode.bytes(address)
+
+// Work with CBOR data confidently using Codec
+const transaction = Transaction.Codec.Decode.hex("84a3008282...")
+const coin = Coin.Codec.Decode.bytes(coinBytes)
+
+// Effect-powered error handling
+const addressEffect = Address.Codec.DecodeEffect.bech32(
+ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3jcu5d8ps7zex2k2xt3uqxgjqnnj0vs2qd4a8cpkp0k8cqq0sq2nq"
+)
+
+// Start a local development network instantly
+const devnet = await Devnet.Cluster.start({
+ kupo: { enabled: true },
+ ogmios: { enabled: true }
+})
+```
+
+## โจ Features
+
+โข **Zero runtime errors** - Comprehensive TypeScript types for all Cardano primitives
+โข **Effect-powered** - Built on Effect for robust error handling and async operations
+โข **Blazing fast** - Modern tooling with hot reload and optimized builds
+โข **DevNet ready** - Local blockchain development with Docker integration
+โข **Modular design** - Tree-shakeable exports for minimal bundle size
+โข **CBOR first-class** - Native support for Cardano's binary format
+โข **Battle-tested** - Production-ready with comprehensive test coverage
+
+---
+
+## ๐ Installation
+
+```bash
+npm install @evolution-sdk/evolution
+```
+
+## ๐ Quick Start
+
+```typescript
+import { Address, TransactionHash, Devnet } from "@evolution-sdk/evolution"
+
+// Create and validate addresses
+const address = Address.Codec.Decode.bech32(
+ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3jcu5d8ps7zex2k2xt3uqxgjqnnj0vs2qd4a8cpkp0k8cqq0sq2nq"
+)
+
+// Handle transactions with type safety
+const txHash = TransactionHash.Codec.Decode.hex("915cb8b7b58c6a4db9ff6c0c4b6e6e9b4c8b5a6f4e6e8a5b2c9d8f7e1a4b3c2d1")
+
+// Start a development network
+const devnet = await Devnet.Cluster.makeOrThrow({
+ clusterName: "my-devnet",
+ kupo: { enabled: true },
+ ogmios: { enabled: true }
+})
+
+await Devnet.Cluster.startOrThrow(devnet)
+```
+
+### Type Inference
+
+Evolution SDK provides comprehensive type inference for all Cardano primitives:
+
+```typescript
+import { Address, CBOR, Effect } from "@evolution-sdk/evolution"
+
+// Type-safe CBOR operations
+const encoded = CBOR.Codec.Encode.bytes(myData) // Uint8Array
+const decoded = CBOR.Codec.Decode.bytes(encoded) // Decoded data
+
+// Effect-powered error handling
+const result = await Effect.runPromise(
+ Address.Codec.DecodeEffect.bech32(bech32String)
+)
+```
+
+## ๐๏ธ Architecture
+
+Evolution SDK is built as a **single package** with a clean, modular structure that's ready for future expansion:
+
+```
+evolution-sdk/
+โโโ ๐ฆ packages/
+โ โโโ evolution/ # Main SDK package
+โ โโโ src/
+โ โ โโโ Address.ts # Address utilities
+โ โ โโโ Transaction.ts # Transaction building
+โ โ โโโ Devnet/ # Development network tools
+โ โ โโโ ...
+โ โโโ dist/ # Compiled output
+โโโ ๐ docs/ # Documentation
+โโโ ๐งช examples/ # Usage examples
+โโโ turbo.json # Turbo configuration
+โโโ pnpm-workspace.yaml # Workspace configuration
+โโโ flake.nix # Nix development environment
+```
+
+### Future Package Expansion
+
+The monorepo structure is designed to accommodate additional packages.
+
+## ๐ฆ Package
+
+| Package | Description | Status | Documentation |
+| -------------------------------------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
+| [`@evolution-sdk/evolution`](./packages/evolution) | Complete Cardano SDK with address management, transactions, and DevNet tools | ๐ง In Development | [README](./packages/evolution/README.md) |
+
+### Core Features
+
+- **๐ Address Management**: Create, validate, and convert Cardano addresses
+- **๐ฐ Transaction Building**: Construct and serialize transactions with type safety
+- **๐ง CBOR Encoding/Decoding**: Handle Cardano's binary data format
+- **๐ Network Utilities**: Tools for different Cardano networks
+- **๐ณ DevNet Integration**: Local development blockchain with Docker
+- **๐ Data Schemas**: Comprehensive Cardano data type definitions
+
+## ๐ ๏ธ Development
+
+### Setting Up the Development Environment
+
+```bash
+# Clone the repository
+git clone https://github.com/no-witness-labs/evolution-sdk.git
+cd evolution-sdk
+
+# Enter Nix development shell (optional but recommended)
+nix develop
+
+# Install dependencies
+pnpm install
+
+# Build all packages
+pnpm turbo build
+
+# Start development mode with file watching
+pnpm turbo dev
+
+# Run type checking
+pnpm turbo type-check
+```
+
+### Available Scripts
+
+| Command | Description |
+| ----------------------- | -------------------------------------- |
+| `pnpm turbo build` | Build the package with optimal caching |
+| `pnpm turbo dev` | Start development mode with hot reload |
+| `pnpm turbo type-check` | Run TypeScript type checking |
+| `pnpm turbo test` | Run all tests (when available) |
+| `pnpm turbo lint` | Run code quality checks |
+| `pnpm turbo clean` | Clean all build artifacts |
+
+### Tech Stack
+
+
+
+  TypeScript |
+  Turbo |
+  Effect |
+  Docker |
+  Nix |
+
+
+
+## ๐ Documentation
+
+### ๐ Website
+For comprehensive guides, tutorials, and interactive examples, visit our [official documentation](https://no-witness-labs.github.io/evolution-sdk).
+
+### ๐ API Reference
+Complete API documentation with type definitions and examples is available in our [API reference](https://no-witness-labs.github.io/evolution-sdk/api).
+
+### ๐ Learning Resources
+
+- **[Getting Started Guide](https://no-witness-labs.github.io/evolution-sdk/getting-started)** - Your first steps with Evolution SDK
+- **[Examples Repository](./examples)** - Real-world usage examples and patterns
+- **[Video Tutorials](https://no-witness-labs.github.io/evolution-sdk/videos)** - Visual guides for complex topics
+- **[Migration Guide](https://no-witness-labs.github.io/evolution-sdk/migration)** - Upgrading from other Cardano libraries
+
+### ๐ฅ Introduction Video
+Get started with Evolution SDK by watching our introductory video:
+[**Introduction to Evolution SDK โ**](https://youtu.be/EvolutionSDK)
+
+## ๐ค Community & Support
+
+Join our thriving community of Cardano developers:
+
+- ๐ฌ **[Discord](https://discord.gg/RcW9xqFC)** - Get help, share projects, and discuss development
+- **[X](https://x.com/nowitnesslabs)** - Latest announcements and ecosystem updates
+- ๐ **[GitHub Issues](https://github.com/no-witness-labs/evolution-sdk/issues)** - Bug reports and feature requests
+- ๐ก **[GitHub Discussions](https://github.com/no-witness-labs/evolution-sdk/discussions)** - Questions, ideas, and community showcases
+
+### Getting Help
+
+- **Found a bug?** Open an issue with a minimal reproduction
+- **Need help?** Ask in our Discord community
+- **Have an idea?** Start a discussion on GitHub
+- **Want to contribute?** Check our [contribution guide](#-contributing)
+
+## ๐ฏ Roadmap
+
+### โ
Phase 1: Foundation (Completed)
+- [x] **Core SDK Foundation**
+ - [x] TypeScript package setup with strict typing
+ - [x] Modern build configuration with Turbo
+ - [x] Comprehensive Cardano primitive types (78 modules)
+ - [x] Codec pattern for all data operations
+ - [x] Effect integration for error handling
+ - [x] Docker DevNet integration
+ - [x] ESM module format with tree-shaking
+ - [x] Complete type definitions and IntelliSense
+
+### โ
Phase 2: Core Features (Completed)
+- [x] **Address Management** (10 modules)
+ - [x] `Address` - Core address utilities with bech32/hex encoding
+ - [x] `BaseAddress`, `ByronAddress`, `EnterpriseAddress` - All address types
+ - [x] `PaymentAddress`, `PointerAddress`, `RewardAddress` - Specialized addresses
+ - [x] `AddressDetails`, `AddressTag`, `StakeReference` - Address metadata
+- [x] **Transaction Handling** (7 modules)
+ - [x] `Transaction`, `TransactionBody`, `TransactionHash` - Core transaction
+ - [x] `TransactionInput`, `TransactionOutput`, `TransactionIndex` - I/O handling
+ - [x] `TransactionMetadatumLabels` - Metadata support
+- [x] **Cryptography & Security** (9 modules)
+ - [x] `Ed25519Signature`, `KesSignature`, `VrfCert` - Digital signatures
+ - [x] `Hash28`, `KeyHash`, `VrfKeyHash` - Hash utilities
+ - [x] `VKey`, `KESVkey`, `VrfVkey` - Verification keys
+- [x] **Value & Assets** (7 modules)
+ - [x] `Coin`, `PositiveCoin`, `Value` - ADA and multi-asset handling
+ - [x] `MultiAsset`, `AssetName`, `PolicyId` - Asset management
+ - [x] `Mint` - Minting operations
+- [x] **Scripts & Certificates** (7 modules)
+ - [x] `Certificate`, `NativeScripts`, `NativeScriptJSON` - Script support
+ - [x] `ScriptDataHash`, `ScriptHash`, `ScriptRef` - Script utilities
+- [x] **Governance & Staking** (12 modules)
+ - [x] `DRep`, `DRepCredential`, `VotingProcedures` - Governance
+ - [x] `ProposalProcedures`, `CommitteeColdCredential`, `CommitteeHotCredential` - Committee
+ - [x] `PoolKeyHash`, `PoolMetadata`, `PoolParams` - Pool management
+ - [x] `Withdrawals`, `Credential` - Staking operations
+- [x] **Network & Communication** (11 modules)
+ - [x] `Network`, `NetworkId`, `Relay` - Network utilities
+ - [x] `IPv4`, `IPv6`, `Port`, `DnsName`, `Url` - Network addressing
+ - [x] `SingleHostAddr`, `SingleHostName`, `MultiHostName` - Host management
+- [x] **Data Types & Primitives** (15 modules)
+ - [x] `Bytes`, `BoundedBytes` + 8 fixed-size byte arrays
+ - [x] `Text`, `Text128`, `BigInt`, `Natural` - Text and numeric types
+ - [x] `NonZeroInt64`, `Numeric`, `UnitInterval` - Specialized numbers
+- [x] **Blockchain Primitives** (12 modules)
+ - [x] `Block`, `BlockBodyHash`, `BlockHeaderHash` - Block structure
+ - [x] `Header`, `HeaderBody`, `EpochNo` - Block components
+ - [x] `AuxiliaryDataHash`, `OperationalCert`, `ProtocolVersion` - Protocol
+ - [x] `Pointer`, `Anchor`, `RewardAccount` - Blockchain references
+- [x] **Core Utilities** (8 modules)
+ - [x] `CBOR`, `Codec`, `Combinator` - Core encoding/decoding
+ - [x] `Data`, `DataJson`, `DatumOption` - Data handling
+ - [x] `Bech32`, `FormatError` - Utilities and error handling
+- [x] **Development Tools** (2 modules)
+ - [x] `Devnet`, `DevnetDefault` - Local development network
+
+### ๐ง Phase 3: Transaction Building & Providers (In Progress)
+- [ ] **Transaction Builder Components**
+ - [ ] Transaction builder with fluent API
+ - [ ] UTXO selection algorithms
+ - [ ] Fee calculation utilities
+ - [ ] Balance and change computation
+ - [ ] Multi-asset transaction support
+ - [ ] Script witness attachment
+- [ ] **Provider Integrations**
+ - [ ] `Maestro` - Maestro API provider
+ - [ ] `Blockfrost` - Blockfrost API provider
+ - [ ] `Koios` - Koios API provider
+ - [ ] `KupoOgmios` - Kupo/Ogmios provider
+ - [ ] `UtxoRpc` - UTXO RPC provider
+ - [ ] Provider abstraction layer
+ - [ ] Failover and load balancing
+- [ ] **Wallet Integration**
+ - [ ] Hardware wallet support (Ledger, Trezor)
+ - [ ] Browser wallet integration (Nami, Eternl, Flint)
+ - [ ] Multi-signature wallet support
+ - [ ] Wallet connector abstraction layer
+ - [ ] CIP-30 standard implementation
+- [ ] **Smart Contract Support**
+ - [ ] UPLC evaluation from Aiken
+ - [ ] UPLC evaluation from Helios
+ - [ ] UPLC evaluation from Plu-ts
+ - [ ] UPLC evaluation from Scalus
+ - [ ] Script validation utilities
+ - [ ] Datum and redeemer handling
+ - [ ] Script cost estimation
+- [ ] **Effect 4.0 Migration**
+ - [ ] Upgrade to Effect 4.0 when released
+ - [ ] Leverage new Effect features and performance improvements
+ - [ ] Update all Codec and Error handling patterns
+ - [ ] Maintain backward compatibility where possible
+
+### ๐ฎ Phase 4: Advanced Features (Planned)
+- [x] **Enhanced DevNet** (Completed)
+ - [x] Custom network configuration
+ - [x] Automated testing framework
+ - [x] Transaction simulation
+ - [x] Performance monitoring
+- [ ] **Hydra Integration**
+ - [ ] Hydra Head management
+ - [ ] State channel operations
+ - [ ] Off-chain transaction handling
+ - [ ] Hydra Head lifecycle management
+ - [ ] Layer 2 scaling utilities
+- [ ] **DeFi Primitives**
+ - [ ] DEX integration utilities
+ - [ ] Liquidity pool management
+ - [ ] Yield farming helpers
+ - [ ] NFT marketplace tools
+- [ ] **Developer Experience**
+ - [ ] CLI tool for project scaffolding
+ - [ ] VS Code extension
+ - [ ] Interactive tutorials
+ - [ ] Schema types from Plutus blueprint types
+
+### ๐ Current Focus
+We're currently prioritizing **transaction building components** and **provider integrations** (Maestro, Blockfrost, Koios, Kupo/Ogmios, UTXO RPC) to provide developers with the essential infrastructure needed for building production Cardano applications.
+
+## ๐ค Contributing
+
+We love your input! We want to make contributing to Evolution SDK as easy and transparent as possible.
+
+### Quick Start for Contributors
+
+1. **Fork and clone** the repository
+ ```bash
+ git clone https://github.com/your-username/evolution-sdk.git
+ cd evolution-sdk
+ ```
+
+2. **Install dependencies**
+ ```bash
+ pnpm install
+ ```
+
+3. **Start development**
+ ```bash
+ pnpm turbo dev
+ ```
+
+4. **Make your changes** and test them
+ ```bash
+ pnpm turbo build
+ pnpm turbo type-check
+ ```
+
+5. **Create a pull request**
+
+### Development Workflow
+
+| Command | Description |
+|---------|-------------|
+| `pnpm turbo build` | Build all packages with optimal caching |
+| `pnpm turbo dev` | Start development mode with hot reload |
+| `pnpm turbo type-check` | Run TypeScript type checking |
+| `pnpm turbo test` | Run all tests |
+| `pnpm turbo lint` | Run code quality checks |
+| `pnpm turbo clean` | Clean all build artifacts |
+
+### What We're Looking For
+
+- ๐ **Bug fixes** - Help us squash those pesky issues
+- โจ **New features** - Extend Evolution SDK's capabilities
+- ๐ **Documentation** - Improve guides, examples, and API docs
+- ๐งช **Tests** - Increase our test coverage
+- ๐จ **Examples** - Show off creative use cases
+- ๐ **Performance** - Make Evolution SDK even faster
+
+### Contribution Guidelines
+
+- **Follow TypeScript best practices** - Use strict typing and modern patterns
+- **Add tests** for new features and bug fixes
+- **Update documentation** when adding new APIs
+- **Keep changes focused** - One feature/fix per pull request
+- **Follow conventional commits** - Use clear, descriptive commit messages
+
+Read our full [Contribution Guide](CONTRIBUTING.md) for detailed guidelines.
+
+## ๐ License
+
+This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
+
+---
+
+
+
+## ๐ Support Evolution SDK
+
+
+
+
+
+**Help us build the future of Cardano development**
+
+Your sponsorship helps us maintain Evolution SDK, create educational content, and support the community.
+
+
+
+## ๐ Acknowledgments
+
+Evolution SDK builds on the incredible work of:
+
+- ๐๏ธ **[Turborepo](https://turborepo.org/)** - For the incredible build system
+- โก **[Effect](https://effect.website/)** - For functional programming excellence
+- **Our [contributors](https://github.com/no-witness-labs/evolution-sdk/graphs/contributors)** - Building the future together
+
+---
+
+
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/next-env.d.ts b/docs/next-env.d.ts
new file mode 100644
index 00000000..a4a7b3f5
--- /dev/null
+++ b/docs/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
diff --git a/docs/next.config.js b/docs/next.config.js
new file mode 100644
index 00000000..08c15c33
--- /dev/null
+++ b/docs/next.config.js
@@ -0,0 +1,15 @@
+const withNextra = require("nextra")({
+ theme: "nextra-theme-docs",
+ themeConfig: "./theme.config.tsx"
+})
+
+module.exports = withNextra({
+ reactStrictMode: true,
+ trailingSlash: true,
+ basePath: "",
+ output: "export",
+ distDir: "out",
+ images: {
+ unoptimized: true
+ }
+})
diff --git a/docs/package.json b/docs/package.json
new file mode 100644
index 00000000..25c936b2
--- /dev/null
+++ b/docs/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@evolution-sdk/docs",
+ "version": "0.1.0",
+ "private": true,
+ "description": "Documentation for Evolution SDK",
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "export": "next build && next export",
+ "copy-evolution-docs": "node scripts/copy-evolution-docs.mjs",
+ "prebuild": "npm run copy-evolution-docs"
+ },
+ "dependencies": {
+ "next": "^14.0.0",
+ "nextra": "^2.13.0",
+ "nextra-theme-docs": "^2.13.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/node": "^20.0.0",
+ "@types/react": "^18.2.0",
+ "@types/react-dom": "^18.2.0",
+ "typescript": "^5.0.0"
+ }
+}
diff --git a/docs/pages/_meta.json b/docs/pages/_meta.json
new file mode 100644
index 00000000..b68244b3
--- /dev/null
+++ b/docs/pages/_meta.json
@@ -0,0 +1,6 @@
+{
+ "index": "Introduction",
+ "getting-started": "Getting Started",
+ "api": "API Reference",
+ "guides": "Guides"
+}
diff --git a/docs/pages/api/test.mdx b/docs/pages/api/test.mdx
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/pages/getting-started/_meta.json b/docs/pages/getting-started/_meta.json
new file mode 100644
index 00000000..46e6ac21
--- /dev/null
+++ b/docs/pages/getting-started/_meta.json
@@ -0,0 +1,5 @@
+{
+ "installation": "Installation",
+ "quick-start": "Quick Start",
+ "examples": "Examples"
+}
diff --git a/docs/pages/getting-started/examples.mdx b/docs/pages/getting-started/examples.mdx
new file mode 100644
index 00000000..c71444f4
--- /dev/null
+++ b/docs/pages/getting-started/examples.mdx
@@ -0,0 +1,245 @@
+# Examples
+
+Comprehensive examples showing how to use Evolution SDK for common Cardano development tasks.
+
+## Address Validation and Analysis
+
+### Validating Different Address Types
+
+```typescript
+import * as PaymentAddress from "@evolution-sdk/evolution/PaymentAddress"
+import * as RewardAddress from "@evolution-sdk/evolution/RewardAddress"
+
+// Collection of different address types from mainnet and testnet
+const addresses = {
+ // Mainnet addresses
+ mainnet: {
+ base: "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgse35a3x",
+ enterprise: "addr1vx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer66hrl8",
+ pointer: "addr1gx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer5pnz75xxcrzqf96k",
+ reward: "stake1uyehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gh6ffgw"
+ },
+ // Testnet addresses
+ testnet: {
+ base: "addr_test1qz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgs68faae",
+ enterprise: "addr_test1vz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzerspjrlsz",
+ pointer: "addr_test1gz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer5pnz75xxcrdw5vky",
+ reward: "stake_test1uqehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gssrtvn"
+ }
+}
+
+// Validate payment addresses (base, enterprise, pointer)
+function validatePaymentAddresses() {
+ const paymentAddresses = [
+ addresses.mainnet.base,
+ addresses.mainnet.enterprise,
+ addresses.mainnet.pointer,
+ addresses.testnet.base,
+ addresses.testnet.enterprise,
+ addresses.testnet.pointer
+ ]
+
+ paymentAddresses.forEach((address) => {
+ const isValid = PaymentAddress.isPaymentAddress(address)
+ console.log(`${address.substring(0, 20)}... is payment address: ${isValid}`)
+ })
+}
+
+// Validate reward addresses
+function validateRewardAddresses() {
+ const rewardAddresses = [addresses.mainnet.reward, addresses.testnet.reward]
+
+ rewardAddresses.forEach((address) => {
+ const isValid = RewardAddress.isRewardAddress(address)
+ console.log(`${address.substring(0, 20)}... is reward address: ${isValid}`)
+ })
+}
+
+validatePaymentAddresses()
+validateRewardAddresses()
+```
+
+## Address Format Conversion
+
+### Working with Hex and Bech32 Formats
+
+```typescript
+import * as Address from "@evolution-sdk/evolution/Address"
+
+// Sample hex addresses from the Cardano blockchain
+const validHexAddresses = [
+ "019493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e337b62cfff6403a06a3acbc34f8c46003c69fe79a3628cefa9c47251",
+ "60ba1d6b6283c219a0530e3682c316215d55819cf97bbf26552c6f8530"
+]
+
+function demonstrateConversion() {
+ validHexAddresses.forEach((hex) => {
+ try {
+ // Decode from hex
+ const address = Address.Codec.Decode.hex(hex)
+ console.log(`Decoded address from hex: ${hex.substring(0, 20)}...`)
+
+ // Encode to bech32
+ const bech32 = Address.Codec.Encode.bech32(address)
+ console.log(`Bech32 format: ${bech32}`)
+
+ // Round-trip back to hex
+ const backToHex = Address.Codec.Encode.hex(address)
+ console.log(`Round-trip successful: ${backToHex === hex}`)
+ console.log("---")
+ } catch (error) {
+ console.error(`Failed to process hex: ${hex}`, error)
+ }
+ })
+}
+
+demonstrateConversion()
+```
+
+### Specific Hex to Bech32 Example
+
+```typescript
+import * as Address from "@evolution-sdk/evolution/Address"
+
+// Real example from Cardano testnet
+const hexAddress = "60ba1d6b6283c219a0530e3682c316215d55819cf97bbf26552c6f8530"
+const expectedBech32 = "addr_test1vzap66mzs0ppngznpcmg9scky9w4tqvul9am7fj493hc2vq4ry02m"
+
+const address = Address.Codec.Decode.hex(hexAddress)
+const actualBech32 = Address.Codec.Encode.bech32(address)
+
+console.log(`Input hex: ${hexAddress}`)
+console.log(`Expected: ${expectedBech32}`)
+console.log(`Actual: ${actualBech32}`)
+console.log(`Match: ${actualBech32 === expectedBech32}`)
+```
+
+## Data Type Validation
+
+### Working with PlutusData Types
+
+```typescript
+import * as Data from "@evolution-sdk/evolution/Data"
+
+// Create a codec for data operations
+const codec = Data.Codec()
+
+// Valid hex examples (even-length hex strings)
+const validHexCases = ["deadbeef", "cafe0123", "abcdef0123456789", "00", "ff"]
+
+// Invalid hex examples
+const invalidHexCases = [
+ "not-hex",
+ "xyz",
+ "123g",
+ "deadbeef ", // trailing space
+ " deadbeef", // leading space
+ "0x123456" // hex prefix not allowed
+]
+
+function validateHexData() {
+ console.log("Valid hex data:")
+ validHexCases.forEach((hex) => {
+ const isValid = Data.isBytes(hex)
+ console.log(`"${hex}" -> ${isValid}`)
+ })
+
+ console.log("\nInvalid hex data:")
+ invalidHexCases.forEach((hex) => {
+ const isValid = Data.isBytes(hex)
+ console.log(`"${hex}" -> ${isValid}`)
+ })
+}
+
+validateHexData()
+```
+
+## Error Handling Patterns
+
+### Safe Address Operations with Effect
+
+```typescript
+import { Effect } from "effect"
+import * as Address from "@evolution-sdk/evolution/Address"
+
+// Safe address decoding with error handling
+function safeAddressOperations() {
+ const addresses = [
+ "60ba1d6b6283c219a0530e3682c316215d55819cf97bbf26552c6f8530", // valid
+ "invalid-hex-address", // invalid
+ "019493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e337b62cfff6403a06a3acbc34f8c46003c69fe79a3628cefa9c47251" // valid
+ ]
+
+ addresses.forEach((hex) => {
+ const program = Effect.gen(function* () {
+ // Try to decode the address
+ const address = yield* Effect.try(() => Address.Codec.Decode.hex(hex))
+
+ // If successful, convert to bech32
+ const bech32 = Address.Codec.Encode.bech32(address)
+
+ return {
+ success: true,
+ input: hex,
+ output: bech32
+ }
+ })
+
+ // Handle the result
+ Effect.runPromise(program)
+ .then((result) => {
+ console.log(`โ
Success: ${result.input.substring(0, 20)}... -> ${result.output}`)
+ })
+ .catch((error) => {
+ console.log(`โ Failed: ${hex.substring(0, 20)}... -> ${error.message || "Invalid address"}`)
+ })
+ })
+}
+
+safeAddressOperations()
+```
+
+### Batch Address Validation
+
+```typescript
+import * as PaymentAddress from "@evolution-sdk/evolution/PaymentAddress"
+import * as RewardAddress from "@evolution-sdk/evolution/RewardAddress"
+
+// Mixed collection of valid and invalid addresses
+const testAddresses = [
+ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgse35a3x",
+ "stake1uyehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gh6ffgw",
+ "not-an-address",
+ "addr_test1qz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgs68faae",
+ "stake_test1uqehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gssrtvn"
+]
+
+function batchValidation() {
+ const results = testAddresses.map((address) => {
+ const isPayment = PaymentAddress.isPaymentAddress(address)
+ const isReward = RewardAddress.isRewardAddress(address)
+
+ let type = "invalid"
+ if (isPayment) type = "payment"
+ else if (isReward) type = "reward"
+
+ return {
+ address: address.substring(0, 30) + "...",
+ type,
+ valid: isPayment || isReward
+ }
+ })
+
+ console.log("Batch validation results:")
+ console.table(results)
+}
+
+batchValidation()
+```
+
+## Next Steps
+
+- Check out the [API Reference](/api) for complete documentation
+- Learn about [Address Types](/getting-started/address-types) in detail
+- Explore [Advanced Usage](/guides/advanced) patterns
+- View the [Test Suite](https://github.com/your-repo/tests) for more examples
diff --git a/docs/pages/getting-started/installation.mdx b/docs/pages/getting-started/installation.mdx
new file mode 100644
index 00000000..812b7daa
--- /dev/null
+++ b/docs/pages/getting-started/installation.mdx
@@ -0,0 +1,73 @@
+# Installation
+
+## Prerequisites
+
+- Node.js 18+
+- TypeScript 5+
+- A package manager (npm, yarn, or pnpm)
+
+## Package Manager Installation
+
+### npm
+
+```bash
+npm install @evolution-sdk/evolution
+```
+
+### yarn
+
+```bash
+yarn add @evolution-sdk/evolution
+```
+
+### pnpm
+
+```bash
+pnpm add @evolution-sdk/evolution
+```
+
+## Development Dependencies
+
+If you're contributing to the SDK or need development dependencies:
+
+```bash
+# Clone the repository
+git clone https://github.com/no-witness-labs/evolution-sdk.git
+cd evolution-sdk
+
+# Install dependencies
+pnpm install
+
+# Build the project
+pnpm build
+
+# Run tests
+pnpm test
+```
+
+## TypeScript Configuration
+
+Evolution SDK requires TypeScript 5+ with strict mode enabled. Add to your `tsconfig.json`:
+
+```json
+{
+ "compilerOptions": {
+ "strict": true,
+ "target": "ES2022",
+ "moduleResolution": "node",
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true
+ }
+}
+```
+
+## Verify Installation
+
+Create a simple test file to verify the installation:
+
+```typescript
+import { Network, Address } from "@evolution-sdk/evolution"
+
+console.log("Evolution SDK installed successfully!")
+console.log("Mainnet ID:", Network.toId("Mainnet"))
+```
diff --git a/docs/pages/getting-started/quick-start.mdx b/docs/pages/getting-started/quick-start.mdx
new file mode 100644
index 00000000..540f3446
--- /dev/null
+++ b/docs/pages/getting-started/quick-start.mdx
@@ -0,0 +1,135 @@
+# Quick Start
+
+Get up and running with Evolution SDK in minutes.
+
+## Installation
+
+First, install the Evolution SDK in your project:
+
+```bash
+npm install @evolution-sdk/evolution
+# or
+yarn add @evolution-sdk/evolution
+# or
+pnpm add @evolution-sdk/evolution
+```
+
+## Basic Usage
+
+### Working with Cardano Addresses
+
+```typescript
+import * as Address from "@evolution-sdk/evolution/Address"
+import * as PaymentAddress from "@evolution-sdk/evolution/PaymentAddress"
+import * as RewardAddress from "@evolution-sdk/evolution/RewardAddress"
+
+// Sample mainnet addresses from the Cardano blockchain
+const mainnetBaseAddress =
+ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgse35a3x"
+const mainnetRewardAddress = "stake1uyehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gh6ffgw"
+
+// Sample testnet addresses
+const testnetBaseAddress =
+ "addr_test1qz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgs68faae"
+const testnetRewardAddress = "stake_test1uqehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gssrtvn"
+
+// Validate payment addresses
+console.log(PaymentAddress.isPaymentAddress(mainnetBaseAddress)) // true
+console.log(PaymentAddress.isPaymentAddress(mainnetRewardAddress)) // false
+
+// Validate reward addresses
+console.log(RewardAddress.isRewardAddress(mainnetRewardAddress)) // true
+console.log(RewardAddress.isRewardAddress(mainnetBaseAddress)) // false
+```
+
+### Address Format Conversion
+
+```typescript
+import * as Address from "@evolution-sdk/evolution/Address"
+
+// Convert between hex and bech32 formats
+const hexAddress = "60ba1d6b6283c219a0530e3682c316215d55819cf97bbf26552c6f8530"
+const expectedBech32 = "addr_test1vzap66mzs0ppngznpcmg9scky9w4tqvul9am7fj493hc2vq4ry02m"
+
+// Decode from hex
+const address = Address.Codec.Decode.hex(hexAddress)
+
+// Encode to bech32
+const actualBech32 = Address.Codec.Encode.bech32(address)
+console.log(actualBech32 === expectedBech32) // true
+
+// Round-trip conversion
+const backToHex = Address.Codec.Encode.hex(address)
+console.log(backToHex === hexAddress) // true
+```
+
+### Working with Different Address Types
+
+```typescript
+// Base address (payment key hash + stake key hash)
+const baseAddress =
+ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgse35a3x"
+
+// Enterprise address (payment key hash only)
+const enterpriseAddress = "addr1vx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzers66hrl8"
+
+// Pointer address (payment key hash + pointer)
+const pointerAddress = "addr1gx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer5pnz75xxcrzqf96k"
+
+// Reward address (stake key hash)
+const rewardAddress = "stake1uyehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gh6ffgw"
+
+// Each address type serves different purposes in the Cardano ecosystem
+console.log("All addresses are valid Cardano addresses")
+```
+
+### Working with Data Types
+
+```typescript
+import * as Data from "@evolution-sdk/evolution/Data"
+
+// Create a codec for encoding/decoding data
+const codec = Data.Codec()
+
+// Working with hex data
+const validHex = "deadbeef"
+const isValidBytes = Data.isBytes(validHex) // true
+
+// Invalid hex examples
+const invalidHex = "not-hex"
+const isInvalidBytes = Data.isBytes(invalidHex) // false
+```
+
+## Error Handling
+
+Evolution SDK uses Effect-TS for robust error handling. Most operations return an `Effect` that can either succeed or fail:
+
+```typescript
+import { Effect } from "effect"
+import * as Address from "@evolution-sdk/evolution/Address"
+
+// Operations that might fail are wrapped in Effect
+const program = Effect.gen(function* () {
+ // This will succeed with a valid address
+ const validAddress = yield* Effect.try(() =>
+ Address.Codec.Decode.hex("60ba1d6b6283c219a0530e3682c316215d55819cf97bbf26552c6f8530")
+ )
+
+ // Convert to bech32 format
+ const bech32 = Address.Codec.Encode.bech32(validAddress)
+
+ return bech32
+})
+
+// Run the program
+Effect.runPromise(program)
+ .then((result) => console.log("Address:", result))
+ .catch((error) => console.error("Error:", error))
+```
+
+## Next Steps
+
+- Explore the [API Reference](/api) for detailed documentation
+- Learn about [Address Types](/getting-started/address-types) for more details
+- Check out more [Examples](/getting-started/examples) for complex use cases
+- Read the [Guides](/guides) for specific development scenarios
diff --git a/docs/pages/index.mdx b/docs/pages/index.mdx
new file mode 100644
index 00000000..fcd5ab86
--- /dev/null
+++ b/docs/pages/index.mdx
@@ -0,0 +1,49 @@
+# Evolution SDK
+
+A comprehensive TypeScript SDK for Cardano blockchain development, built with Effect-TS.
+
+## Overview
+
+Evolution SDK provides a type-safe, functional programming approach to Cardano blockchain development. Built on top of Effect-TS, it offers:
+
+- **Type Safety**: Full TypeScript support with comprehensive type definitions
+- **CBOR Support**: Native CBOR encoding/decoding for Cardano data structures
+- **Effect Integration**: Leverages Effect-TS for error handling and composability
+- **Address Management**: Support for all Cardano address types
+- **Transaction Building**: Tools for constructing and signing transactions
+- **Plutus Data**: Native support for Plutus data structures
+
+## Quick Start
+
+```bash
+npm install @evolution-sdk/evolution
+```
+
+```typescript
+import { Address, Network } from "@evolution-sdk/evolution"
+
+// Create a base address
+const baseAddr = Address.Base.make({
+ network: Network.Mainnet,
+ paymentCredential: paymentCred,
+ stakeCredential: stakeCred
+})
+```
+
+## Features
+
+- ๐๏ธ **Address Utilities** - Create and validate all Cardano address types
+- ๐ **Cryptographic Primitives** - Ed25519 signatures, VRF, KES
+- ๐ฆ **CBOR Encoding** - RFC 8949 compliant CBOR implementation
+- ๐๏ธ **Governance** - DRep, committee, and voting procedure support
+- ๐ **Network Configuration** - Support for all Cardano networks
+- ๐ช **Native Tokens** - Multi-asset and minting utilities
+
+## Architecture
+
+Evolution SDK is designed around functional programming principles:
+
+- **Immutable Data Structures** - All data types are immutable by default
+- **Composable Operations** - Functions can be easily composed and chained
+- **Error Handling** - Leverages Effect-TS for robust error management
+- **Type Safety** - Comprehensive TypeScript definitions prevent runtime errors
diff --git a/docs/pages/reference/_meta.json b/docs/pages/reference/_meta.json
new file mode 100644
index 00000000..70e7367d
--- /dev/null
+++ b/docs/pages/reference/_meta.json
@@ -0,0 +1,4 @@
+{
+ "index": "Overview",
+ "modules": "Modules"
+}
\ No newline at end of file
diff --git a/docs/pages/reference/index.mdx b/docs/pages/reference/index.mdx
new file mode 100644
index 00000000..d77a4411
--- /dev/null
+++ b/docs/pages/reference/index.mdx
@@ -0,0 +1,4 @@
+---
+title: Home
+nav_order: 1
+---
diff --git a/docs/pages/reference/modules/_config.yml b/docs/pages/reference/modules/_config.yml
new file mode 100644
index 00000000..f3cae7a8
--- /dev/null
+++ b/docs/pages/reference/modules/_config.yml
@@ -0,0 +1,9 @@
+remote_theme: mikearnaldi/docgen-template
+
+# Enable or disable the site search
+search_enabled: true
+
+# Aux links for the upper right navigation
+aux_links:
+"@evolution-sdk/evolution on GitHub":
+ - "https://github.com/no-witness-labs/evolution-sdk"
diff --git a/docs/pages/reference/modules/_meta.json b/docs/pages/reference/modules/_meta.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/docs/pages/reference/modules/_meta.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/docs/pages/reference/modules/index.mdx b/docs/pages/reference/modules/index.mdx
new file mode 100644
index 00000000..d77a4411
--- /dev/null
+++ b/docs/pages/reference/modules/index.mdx
@@ -0,0 +1,4 @@
+---
+title: Home
+nav_order: 1
+---
diff --git a/docs/pages/reference/modules/modules/Address.mdx b/docs/pages/reference/modules/modules/Address.mdx
new file mode 100644
index 00000000..4ee830e2
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Address.mdx
@@ -0,0 +1,367 @@
+---
+title: Address.ts
+nav_order: 1
+parent: Modules
+---
+
+## Address overview
+
+---
+
+Table of contents
+
+- [encoding/decoding](#encodingdecoding)
+ - [Codec](#codec)
+- [model](#model)
+ - [Address](#address)
+ - [Address (type alias)](#address-type-alias)
+ - [AddressError (class)](#addresserror-class)
+- [schema](#schema)
+ - [FromBech32](#frombech32)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+- [testing](#testing)
+ - [generator](#generator)
+- [utils](#utils)
+ - [equals](#equals)
+
+---
+
+# encoding/decoding
+
+## Codec
+
+Codec utilities for addresses.
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: {
+ bech32: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => string & Brand<"Bech32">
+ hex: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => string
+ bytes: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => any
+ }
+ Decode: {
+ bech32: (
+ input: string & Brand<"Bech32">
+ ) =>
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ hex: (
+ input: string
+ ) =>
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ bytes: (
+ input: any
+ ) =>
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ }
+ EncodeEffect: {
+ bech32: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => Effect.Effect, InstanceType>
+ hex: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => Effect.Effect>
+ bytes: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => Effect.Effect>
+ }
+ DecodeEffect: {
+ bech32: (
+ input: string & Brand<"Bech32">
+ ) => Effect.Effect<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress,
+ InstanceType
+ >
+ hex: (
+ input: string
+ ) => Effect.Effect<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress,
+ InstanceType
+ >
+ bytes: (
+ input: any
+ ) => Effect.Effect<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress,
+ InstanceType
+ >
+ }
+ EncodeEither: {
+ bech32: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => Either, InstanceType>
+ hex: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => Either>
+ bytes: (
+ input:
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress
+ ) => Either>
+ }
+ DecodeEither: {
+ bech32: (
+ input: string & Brand<"Bech32">
+ ) => Either<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress,
+ InstanceType
+ >
+ hex: (
+ input: string
+ ) => Either<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress,
+ InstanceType
+ >
+ bytes: (
+ input: any
+ ) => Either<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+ | ByronAddress.ByronAddress,
+ InstanceType
+ >
+ }
+}
+```
+
+Added in v2.0.0
+
+# model
+
+## Address
+
+Union type representing all possible address types.
+
+**Signature**
+
+```ts
+export declare const Address: Schema.Union<
+ [
+ typeof BaseAddress.BaseAddress,
+ typeof EnterpriseAddress.EnterpriseAddress,
+ typeof PointerAddress.PointerAddress,
+ typeof RewardAccount.RewardAccount,
+ typeof ByronAddress.ByronAddress
+ ]
+>
+```
+
+Added in v2.0.0
+
+## Address (type alias)
+
+Type representing an address.
+
+**Signature**
+
+```ts
+export type Address = typeof Address.Type
+```
+
+Added in v2.0.0
+
+## AddressError (class)
+
+Error thrown when address operations fail
+
+**Signature**
+
+```ts
+export declare class AddressError
+```
+
+Added in v2.0.0
+
+# schema
+
+## FromBech32
+
+Schema for encoding/decoding addresses as Bech32 strings.
+
+**Signature**
+
+```ts
+export declare const FromBech32: Schema.transformOrFail<
+ Schema.SchemaClass, string & Brand<"Bech32">, never>,
+ Schema.Union<
+ [
+ typeof BaseAddress.BaseAddress,
+ typeof EnterpriseAddress.EnterpriseAddress,
+ typeof PointerAddress.PointerAddress,
+ typeof RewardAccount.RewardAccount,
+ typeof ByronAddress.ByronAddress
+ ]
+ >,
+ never
+>
+```
+
+Added in v2.0.0
+
+## FromBytes
+
+Schema for encoding/decoding addresses as bytes.
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transformOrFail<
+ typeof Schema.Uint8ArrayFromSelf,
+ Schema.Union<
+ [
+ typeof BaseAddress.BaseAddress,
+ typeof EnterpriseAddress.EnterpriseAddress,
+ typeof PointerAddress.PointerAddress,
+ typeof RewardAccount.RewardAccount,
+ typeof ByronAddress.ByronAddress
+ ]
+ >,
+ never
+>
+```
+
+Added in v2.0.0
+
+## FromHex
+
+Schema for encoding/decoding addresses as hex strings.
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.transform, typeof Schema.Uint8ArrayFromSelf>,
+ Schema.transformOrFail<
+ typeof Schema.Uint8ArrayFromSelf,
+ Schema.Union<
+ [
+ typeof BaseAddress.BaseAddress,
+ typeof EnterpriseAddress.EnterpriseAddress,
+ typeof PointerAddress.PointerAddress,
+ typeof RewardAccount.RewardAccount,
+ typeof ByronAddress.ByronAddress
+ ]
+ >,
+ never
+ >
+>
+```
+
+Added in v2.0.0
+
+# testing
+
+## generator
+
+FastCheck generator for addresses.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary<
+ | RewardAccount.RewardAccount
+ | BaseAddress.BaseAddress
+ | EnterpriseAddress.EnterpriseAddress
+ | PointerAddress.PointerAddress
+>
+```
+
+Added in v2.0.0
+
+# utils
+
+## equals
+
+Checks if two addresses are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (a: Address, b: Address) => boolean
+```
+
+Added in v2.0.0
diff --git a/docs/pages/reference/modules/modules/AddressDetails.mdx b/docs/pages/reference/modules/modules/AddressDetails.mdx
new file mode 100644
index 00000000..0d805c57
--- /dev/null
+++ b/docs/pages/reference/modules/modules/AddressDetails.mdx
@@ -0,0 +1,96 @@
+---
+title: AddressDetails.ts
+nav_order: 2
+parent: Modules
+---
+
+## AddressDetails overview
+
+---
+
+Table of contents
+
+- [schemas](#schemas)
+ - [AddressDetails (class)](#addressdetails-class)
+- [utils](#utils)
+ - [AddressDetailsError (class)](#addressdetailserror-class)
+ - [Codec](#codec)
+ - [FromBech32](#frombech32)
+ - [FromHex](#fromhex)
+
+---
+
+# schemas
+
+## AddressDetails (class)
+
+Pointer address with payment credential and pointer to stake registration
+
+**Signature**
+
+```ts
+export declare class AddressDetails
+```
+
+Added in v2.0.0
+
+# utils
+
+## AddressDetailsError (class)
+
+**Signature**
+
+```ts
+export declare class AddressDetailsError
+```
+
+## Codec
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: { bech32: (input: AddressDetails) => string & Brand<"Bech32">; hex: (input: AddressDetails) => string }
+ Decode: { bech32: (input: string & Brand<"Bech32">) => AddressDetails; hex: (input: string) => AddressDetails }
+ EncodeEffect: {
+ bech32: (input: AddressDetails) => Effect.Effect, InstanceType>
+ hex: (input: AddressDetails) => Effect.Effect>
+ }
+ DecodeEffect: {
+ bech32: (input: string & Brand<"Bech32">) => Effect.Effect>
+ hex: (input: string) => Effect.Effect>
+ }
+ EncodeEither: {
+ bech32: (input: AddressDetails) => Either, InstanceType>
+ hex: (input: AddressDetails) => Either>
+ }
+ DecodeEither: {
+ bech32: (input: string & Brand<"Bech32">) => Either>
+ hex: (input: string) => Either>
+ }
+}
+```
+
+## FromBech32
+
+**Signature**
+
+```ts
+export declare const FromBech32: Schema.transformOrFail<
+ Schema.SchemaClass, string & Brand<"Bech32">, never>,
+ typeof AddressDetails,
+ never
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transformOrFail<
+ Schema.refine,
+ typeof AddressDetails,
+ never
+>
+```
diff --git a/docs/pages/reference/modules/modules/AddressTag.mdx b/docs/pages/reference/modules/modules/AddressTag.mdx
new file mode 100644
index 00000000..03bbe158
--- /dev/null
+++ b/docs/pages/reference/modules/modules/AddressTag.mdx
@@ -0,0 +1,42 @@
+---
+title: AddressTag.ts
+nav_order: 3
+parent: Modules
+---
+
+## AddressTag overview
+
+---
+
+Table of contents
+
+- [model](#model)
+ - [AddressTag (type alias)](#addresstag-type-alias)
+ - [AddressTagError (class)](#addresstagerror-class)
+
+---
+
+# model
+
+## AddressTag (type alias)
+
+Address header kind - used to determine the type of address from its header
+Following CIP-0019 address types
+
+**Signature**
+
+```ts
+export type AddressTag = "Base" | "Enterprise" | "Pointer" | "Reward" | "Byron"
+```
+
+Added in v2.0.0
+
+## AddressTagError (class)
+
+**Signature**
+
+```ts
+export declare class AddressTagError
+```
+
+Added in v2.0.0
diff --git a/docs/pages/reference/modules/modules/Anchor.mdx b/docs/pages/reference/modules/modules/Anchor.mdx
new file mode 100644
index 00000000..ac3db7bb
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Anchor.mdx
@@ -0,0 +1,202 @@
+---
+title: Anchor.ts
+nav_order: 4
+parent: Modules
+---
+
+## Anchor overview
+
+---
+
+Table of contents
+
+- [constructors](#constructors)
+ - [make](#make)
+- [equality](#equality)
+ - [equals](#equals)
+- [errors](#errors)
+ - [AnchorError (class)](#anchorerror-class)
+- [generators](#generators)
+ - [generator](#generator)
+- [model](#model)
+ - [Anchor (class)](#anchor-class)
+- [schemas](#schemas)
+ - [FromBytes](#FromBytes)
+ - [FromHex](#FromHex)
+ - [FromCDDL](#fromcddl)
+- [utils](#utils)
+ - [Codec](#codec)
+
+---
+
+# constructors
+
+## make
+
+Create an Anchor from a URL string and hash string.
+
+**Signature**
+
+```ts
+export declare const make: (anchorUrl: string, anchorDataHash: string) => Anchor
+```
+
+Added in v2.0.0
+
+# equality
+
+## equals
+
+Check if two Anchor instances are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (self: Anchor, that: Anchor) => boolean
+```
+
+Added in v2.0.0
+
+# errors
+
+## AnchorError (class)
+
+Error class for Anchor related operations.
+
+**Signature**
+
+```ts
+export declare class AnchorError
+```
+
+Added in v2.0.0
+
+# generators
+
+## generator
+
+FastCheck generator for Anchor instances.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary
+```
+
+Added in v2.0.0
+
+# model
+
+## Anchor (class)
+
+Schema for Anchor representing an anchor with URL and data hash.
+anchor = [anchor_url: url, anchor_data_hash: Bytes32]
+
+**Signature**
+
+```ts
+export declare class Anchor
+```
+
+Added in v2.0.0
+
+# schemas
+
+## FromBytes
+
+CBOR bytes transformation schema for Anchor.
+
+**Signature**
+
+```ts
+export declare const FromBytes: (
+ options?: CBOR.CodecOptions
+) => Schema.transform<
+ Schema.transformOrFail<
+ typeof Schema.Uint8ArrayFromSelf,
+ Schema.declare,
+ never
+ >,
+ Schema.transformOrFail<
+ Schema.Tuple2,
+ Schema.SchemaClass,
+ never
+ >
+>
+```
+
+Added in v2.0.0
+
+## FromHex
+
+CBOR hex transformation schema for Anchor.
+
+**Signature**
+
+```ts
+export declare const FromHex: (
+ options?: CBOR.CodecOptions
+) => Schema.transform<
+ Schema.transform, typeof Schema.Uint8ArrayFromSelf>,
+ Schema.transform<
+ Schema.transformOrFail<
+ typeof Schema.Uint8ArrayFromSelf,
+ Schema.declare,
+ never
+ >,
+ Schema.transformOrFail<
+ Schema.Tuple2,
+ Schema.SchemaClass,
+ never
+ >
+ >
+>
+```
+
+Added in v2.0.0
+
+## FromCDDL
+
+CDDL schema for Anchor as tuple structure.
+anchor = [anchor_url: url, anchor_data_hash: Bytes32]
+
+**Signature**
+
+```ts
+export declare const FromCDDL: Schema.transformOrFail<
+ Schema.Tuple2,
+ Schema.SchemaClass,
+ never
+>
+```
+
+Added in v2.0.0
+
+# utils
+
+## Codec
+
+**Signature**
+
+```ts
+export declare const Codec: (options?: CBOR.CodecOptions) => {
+ Encode: { cborBytes: (input: Anchor) => any; cborHex: (input: Anchor) => string }
+ Decode: { cborBytes: (input: any) => Anchor; cborHex: (input: string) => Anchor }
+ EncodeEffect: {
+ cborBytes: (input: Anchor) => Effect.Effect>
+ cborHex: (input: Anchor) => Effect.Effect>
+ }
+ DecodeEffect: {
+ cborBytes: (input: any) => Effect.Effect>
+ cborHex: (input: string) => Effect.Effect>
+ }
+ EncodeEither: {
+ cborBytes: (input: Anchor) => Either>
+ cborHex: (input: Anchor) => Either>
+ }
+ DecodeEither: {
+ cborBytes: (input: any) => Either>
+ cborHex: (input: string) => Either>
+ }
+}
+```
diff --git a/docs/pages/reference/modules/modules/AssetName.mdx b/docs/pages/reference/modules/modules/AssetName.mdx
new file mode 100644
index 00000000..6f6f49b1
--- /dev/null
+++ b/docs/pages/reference/modules/modules/AssetName.mdx
@@ -0,0 +1,167 @@
+---
+title: AssetName.ts
+nav_order: 5
+parent: Modules
+---
+
+## AssetName overview
+
+---
+
+Table of contents
+
+- [encoding/decoding](#encodingdecoding)
+ - [Codec](#codec)
+- [equality](#equality)
+ - [equals](#equals)
+- [errors](#errors)
+ - [AssetNameError (class)](#assetnameerror-class)
+- [generators](#generators)
+ - [generator](#generator)
+- [model](#model)
+ - [AssetName](#assetname)
+- [schemas](#schemas)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+- [utils](#utils)
+ - [AssetName (type alias)](#assetname-type-alias)
+
+---
+
+# encoding/decoding
+
+## Codec
+
+Codec utilities for AssetName encoding and decoding operations.
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: { bytes: (input: string & Brand<"AssetName">) => any; hex: (input: string & Brand<"AssetName">) => string }
+ Decode: { bytes: (input: any) => string & Brand<"AssetName">; hex: (input: string) => string & Brand<"AssetName"> }
+ EncodeEffect: {
+ bytes: (input: string & Brand<"AssetName">) => Effect>
+ hex: (input: string & Brand<"AssetName">) => Effect>
+ }
+ DecodeEffect: {
+ bytes: (input: any) => Effect, InstanceType>
+ hex: (input: string) => Effect, InstanceType>
+ }
+ EncodeEither: {
+ bytes: (input: string & Brand<"AssetName">) => Either>
+ hex: (input: string & Brand<"AssetName">) => Either>
+ }
+ DecodeEither: {
+ bytes: (input: any) => Either, InstanceType>
+ hex: (input: string) => Either, InstanceType>
+ }
+}
+```
+
+Added in v2.0.0
+
+# equality
+
+## equals
+
+Check if two AssetName instances are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (a: AssetName, b: AssetName) => boolean
+```
+
+Added in v2.0.0
+
+# errors
+
+## AssetNameError (class)
+
+Error class for AssetName related operations.
+
+**Signature**
+
+```ts
+export declare class AssetNameError
+```
+
+Added in v2.0.0
+
+# generators
+
+## generator
+
+Generate a random AssetName.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary>
+```
+
+Added in v2.0.0
+
+# model
+
+## AssetName
+
+Schema for AssetName representing a native asset identifier.
+Asset names are limited to 32 bytes (0-64 hex characters).
+
+**Signature**
+
+```ts
+export declare const AssetName: Schema.brand<
+ Schema.refine>,
+ "AssetName"
+>
+```
+
+Added in v2.0.0
+
+# schemas
+
+## FromBytes
+
+Schema for encoding/decoding AssetName as bytes.
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.transform<
+ Schema.refine,
+ Schema.refine>
+ >,
+ Schema.brand>, "AssetName">
+>
+```
+
+Added in v2.0.0
+
+## FromHex
+
+Schema for encoding/decoding AssetName as hex strings.
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.refine>,
+ Schema.brand>, "AssetName">
+>
+```
+
+Added in v2.0.0
+
+# utils
+
+## AssetName (type alias)
+
+**Signature**
+
+```ts
+export type AssetName = typeof AssetName.Type
+```
diff --git a/docs/pages/reference/modules/modules/AuxiliaryDataHash.mdx b/docs/pages/reference/modules/modules/AuxiliaryDataHash.mdx
new file mode 100644
index 00000000..e4a9317e
--- /dev/null
+++ b/docs/pages/reference/modules/modules/AuxiliaryDataHash.mdx
@@ -0,0 +1,169 @@
+---
+title: AuxiliaryDataHash.ts
+nav_order: 6
+parent: Modules
+---
+
+## AuxiliaryDataHash overview
+
+Auxiliary Data Hash module - provides an alias for Bytes32 specialized for auxiliary data hashing.
+
+In Cardano, auxiliary_data_hash = Bytes32, representing a 32-byte hash
+used for auxiliary data (metadata) attached to transactions.
+
+Added in v2.0.0
+
+---
+
+Table of contents
+
+- [encoding/decoding](#encodingdecoding)
+ - [Codec](#codec)
+- [equality](#equality)
+ - [equals](#equals)
+- [errors](#errors)
+ - [AuxiliaryDataHashError (class)](#auxiliarydatahasherror-class)
+- [generators](#generators)
+ - [generator](#generator)
+- [schemas](#schemas)
+ - [AuxiliaryDataHash](#auxiliarydatahash)
+- [utils](#utils)
+ - [AuxiliaryDataHash (type alias)](#auxiliarydatahash-type-alias)
+ - [BytesSchema](#bytesschema)
+ - [HexSchema](#hexschema)
+
+---
+
+# encoding/decoding
+
+## Codec
+
+Codec utilities for AuxiliaryDataHash encoding and decoding operations.
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: {
+ bytes: (input: string & Brand<"AuxiliaryDataHash">) => any
+ hex: (input: string & Brand<"AuxiliaryDataHash">) => string
+ }
+ Decode: {
+ bytes: (input: any) => string & Brand<"AuxiliaryDataHash">
+ hex: (input: string) => string & Brand<"AuxiliaryDataHash">
+ }
+ EncodeEffect: {
+ bytes: (input: string & Brand<"AuxiliaryDataHash">) => Effect>
+ hex: (input: string & Brand<"AuxiliaryDataHash">) => Effect>
+ }
+ DecodeEffect: {
+ bytes: (input: any) => Effect, InstanceType>
+ hex: (input: string) => Effect, InstanceType>
+ }
+ EncodeEither: {
+ bytes: (input: string & Brand<"AuxiliaryDataHash">) => Either>
+ hex: (input: string & Brand<"AuxiliaryDataHash">) => Either>
+ }
+ DecodeEither: {
+ bytes: (input: any) => Either, InstanceType>
+ hex: (input: string) => Either, InstanceType>
+ }
+}
+```
+
+Added in v2.0.0
+
+# equality
+
+## equals
+
+Check if two AuxiliaryDataHash instances are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (a: AuxiliaryDataHash, b: AuxiliaryDataHash) => boolean
+```
+
+Added in v2.0.0
+
+# errors
+
+## AuxiliaryDataHashError (class)
+
+Error class for AuxiliaryDataHash related operations.
+
+**Signature**
+
+```ts
+export declare class AuxiliaryDataHashError
+```
+
+Added in v2.0.0
+
+# generators
+
+## generator
+
+Generate a random AuxiliaryDataHash.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary>
+```
+
+Added in v2.0.0
+
+# schemas
+
+## AuxiliaryDataHash
+
+Schema for AuxiliaryDataHash representing auxiliary data hashes.
+auxiliary_data_hash = Bytes32
+
+**Signature**
+
+```ts
+export declare const AuxiliaryDataHash: Schema.brand<
+ Schema.refine>,
+ "AuxiliaryDataHash"
+>
+```
+
+Added in v2.0.0
+
+# utils
+
+## AuxiliaryDataHash (type alias)
+
+**Signature**
+
+```ts
+export type AuxiliaryDataHash = typeof AuxiliaryDataHash.Type
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.transform<
+ Schema.transform<
+ Schema.refine,
+ Schema.refine>
+ >,
+ Schema.brand>, "AuxiliaryDataHash">
+>
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.transform<
+ Schema.refine>,
+ Schema.brand>, "AuxiliaryDataHash">
+>
+```
diff --git a/docs/pages/reference/modules/modules/BaseAddress.mdx b/docs/pages/reference/modules/modules/BaseAddress.mdx
new file mode 100644
index 00000000..21f72667
--- /dev/null
+++ b/docs/pages/reference/modules/modules/BaseAddress.mdx
@@ -0,0 +1,136 @@
+---
+title: BaseAddress.ts
+nav_order: 7
+parent: Modules
+---
+
+## BaseAddress overview
+
+---
+
+Table of contents
+
+- [equality](#equality)
+ - [equals](#equals)
+- [generators](#generators)
+ - [generator](#generator)
+- [schemas](#schemas)
+ - [BaseAddress (class)](#baseaddress-class)
+ - [[Symbol.for("nodejs.util.inspect.custom")] (method)](#symbolfornodejsutilinspectcustom-method)
+- [utils](#utils)
+ - [BaseAddressError (class)](#baseaddresserror-class)
+ - [Codec](#codec)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+
+---
+
+# equality
+
+## equals
+
+Check if two BaseAddress instances are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (a: BaseAddress, b: BaseAddress) => boolean
+```
+
+Added in v2.0.0
+
+# generators
+
+## generator
+
+Generate a random BaseAddress.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary
+```
+
+Added in v2.0.0
+
+# schemas
+
+## BaseAddress (class)
+
+Base address with both payment and staking credentials
+
+**Signature**
+
+```ts
+export declare class BaseAddress
+```
+
+Added in v2.0.0
+
+### [Symbol.for("nodejs.util.inspect.custom")] (method)
+
+**Signature**
+
+```ts
+;[Symbol.for("nodejs.util.inspect.custom")]()
+```
+
+# utils
+
+## BaseAddressError (class)
+
+**Signature**
+
+```ts
+export declare class BaseAddressError
+```
+
+## Codec
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: { hex: (input: BaseAddress) => string; bytes: (input: BaseAddress) => any }
+ Decode: { hex: (input: string) => BaseAddress; bytes: (input: any) => BaseAddress }
+ EncodeEffect: {
+ hex: (input: BaseAddress) => Effect.Effect>
+ bytes: (input: BaseAddress) => Effect.Effect>
+ }
+ DecodeEffect: {
+ hex: (input: string) => Effect.Effect>
+ bytes: (input: any) => Effect.Effect>
+ }
+ EncodeEither: {
+ hex: (input: BaseAddress) => Either>
+ bytes: (input: BaseAddress) => Either>
+ }
+ DecodeEither: {
+ hex: (input: string) => Either>
+ bytes: (input: any) => Either>
+ }
+}
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transformOrFail<
+ Schema.filter,
+ typeof BaseAddress,
+ never
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.transform, typeof Schema.Uint8ArrayFromSelf>,
+ Schema.transformOrFail, typeof BaseAddress, never>
+>
+```
diff --git a/docs/pages/reference/modules/modules/Bech32.mdx b/docs/pages/reference/modules/modules/Bech32.mdx
new file mode 100644
index 00000000..9dc8461b
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bech32.mdx
@@ -0,0 +1,60 @@
+---
+title: Bech32.ts
+nav_order: 8
+parent: Modules
+---
+
+## Bech32 overview
+
+---
+
+Table of contents
+
+- [model](#model)
+ - [Bech32Error (class)](#bech32error-class)
+- [utils](#utils)
+ - [Bech32 (type alias)](#bech32-type-alias)
+ - [Bech32Schema](#bech32schema)
+ - [FromBytes](#frombytes)
+
+---
+
+# model
+
+## Bech32Error (class)
+
+**Signature**
+
+```ts
+export declare class Bech32Error
+```
+
+Added in v2.0.0
+
+# utils
+
+## Bech32 (type alias)
+
+**Signature**
+
+```ts
+export type Bech32 = typeof Bech32Schema.Type
+```
+
+## Bech32Schema
+
+**Signature**
+
+```ts
+export declare const Bech32Schema: Schema.brand
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: (
+ prefix?: string
+) => Schema.transformOrFail, never>
+```
diff --git a/docs/pages/reference/modules/modules/BigInt.mdx b/docs/pages/reference/modules/modules/BigInt.mdx
new file mode 100644
index 00000000..de3c9929
--- /dev/null
+++ b/docs/pages/reference/modules/modules/BigInt.mdx
@@ -0,0 +1,187 @@
+---
+title: BigInt.ts
+nav_order: 9
+parent: Modules
+---
+
+## BigInt overview
+
+---
+
+Table of contents
+
+- [constructors](#constructors)
+ - [bigNInt](#bignint)
+ - [bigUInt](#biguint)
+ - [int](#int)
+- [errors](#errors)
+ - [BigIntError (class)](#biginterror-class)
+- [model](#model)
+ - [BigInt (type alias)](#bigint-type-alias)
+ - [BigNInt (type alias)](#bignint-type-alias)
+ - [BigUInt (type alias)](#biguint-type-alias)
+- [schemas](#schemas)
+ - [BigIntSchema](#bigintschema)
+ - [BigNIntSchema](#bignintschema)
+ - [BigUIntSchema](#biguintschema)
+- [utilities](#utilities)
+ - [match](#match)
+
+---
+
+# constructors
+
+## bigNInt
+
+Creates a big negative integer from bytes
+
+**Signature**
+
+```ts
+export declare const bigNInt: (bytes: Uint8Array) => BigInt
+```
+
+Added in v2.0.0
+
+## bigUInt
+
+Creates a big unsigned integer from bytes
+
+**Signature**
+
+```ts
+export declare const bigUInt: (bytes: Uint8Array) => BigInt
+```
+
+Added in v2.0.0
+
+## int
+
+Creates an integer value
+
+**Signature**
+
+```ts
+export declare const int: (value: number) => BigInt
+```
+
+Added in v2.0.0
+
+# errors
+
+## BigIntError (class)
+
+Error class for BigInt related operations.
+
+**Signature**
+
+```ts
+export declare class BigIntError
+```
+
+Added in v2.0.0
+
+# model
+
+## BigInt (type alias)
+
+Type alias for BigInt.
+
+**Signature**
+
+```ts
+export type BigInt = typeof BigIntSchema.Type
+```
+
+Added in v2.0.0
+
+## BigNInt (type alias)
+
+Type alias for BigNInt.
+
+**Signature**
+
+```ts
+export type BigNInt = typeof BigNIntSchema.Type
+```
+
+Added in v2.0.0
+
+## BigUInt (type alias)
+
+Type alias for BigUInt.
+
+**Signature**
+
+```ts
+export type BigUInt = typeof BigUIntSchema.Type
+```
+
+Added in v2.0.0
+
+# schemas
+
+## BigIntSchema
+
+BigInt schema based on Conway CDDL specification
+
+CDDL: big_int = int/ big_uint/ big_nint
+
+**Signature**
+
+```ts
+export declare const BigIntSchema: Schema.Union<
+ [
+ Schema.TaggedStruct<"Int", { value: typeof Schema.Number }>,
+ Schema.TaggedStruct<"BigUInt", { bytes: typeof Schema.Uint8ArrayFromSelf }>,
+ Schema.TaggedStruct<"BigNInt", { bytes: typeof Schema.Uint8ArrayFromSelf }>
+ ]
+>
+```
+
+Added in v2.0.0
+
+## BigNIntSchema
+
+BigNInt schema based on Conway CDDL specification
+
+CDDL: big_nint = #6.3(bounded_bytes)
+
+**Signature**
+
+```ts
+export declare const BigNIntSchema: Schema.TaggedStruct<"BigNInt", { bytes: typeof Schema.Uint8ArrayFromSelf }>
+```
+
+Added in v2.0.0
+
+## BigUIntSchema
+
+BigUInt schema based on Conway CDDL specification
+
+CDDL: big_uint = #6.2(bounded_bytes)
+
+**Signature**
+
+```ts
+export declare const BigUIntSchema: Schema.TaggedStruct<"BigUInt", { bytes: typeof Schema.Uint8ArrayFromSelf }>
+```
+
+Added in v2.0.0
+
+# utilities
+
+## match
+
+Pattern matching helper for BigInt types
+
+**Signature**
+
+```ts
+export declare const match: (
+ bigInt: BigInt,
+ cases: { Int: (value: number) => T; BigUInt: (bytes: Uint8Array) => T; BigNInt: (bytes: Uint8Array) => T }
+) => T
+```
+
+Added in v2.0.0
diff --git a/docs/pages/reference/modules/modules/Block.mdx b/docs/pages/reference/modules/modules/Block.mdx
new file mode 100644
index 00000000..d1af5664
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Block.mdx
@@ -0,0 +1,59 @@
+---
+title: Block.ts
+nav_order: 10
+parent: Modules
+---
+
+## Block overview
+
+---
+
+Table of contents
+
+- [model](#model)
+ - [BlockClass (class)](#blockclass-class)
+- [utils](#utils)
+ - [Block (type alias)](#block-type-alias)
+
+---
+
+# model
+
+## BlockClass (class)
+
+Block based on Conway CDDL specification
+
+```
+CDDL: block =
+ [ header
+ , transaction_bodies : [* transaction_body]
+ , transaction_witness_sets : [* transaction_witness_set]
+ , auxiliary_data_set : {* transaction_index => auxiliary_data}
+ , invalid_transactions : [* transaction_index]
+ ]
+```
+
+Valid blocks must also satisfy the following two constraints:
+
+1. the length of transaction_bodies and transaction_witness_sets
+ must be the same
+2. every transaction_index must be strictly smaller than the
+ length of transaction_bodies
+
+**Signature**
+
+```ts
+export declare class BlockClass
+```
+
+Added in v2.0.0
+
+# utils
+
+## Block (type alias)
+
+**Signature**
+
+```ts
+export type Block = Schema.Schema.Type
+```
diff --git a/docs/pages/reference/modules/modules/BlockBodyHash.mdx b/docs/pages/reference/modules/modules/BlockBodyHash.mdx
new file mode 100644
index 00000000..7b9071b4
--- /dev/null
+++ b/docs/pages/reference/modules/modules/BlockBodyHash.mdx
@@ -0,0 +1,163 @@
+---
+title: BlockBodyHash.ts
+nav_order: 11
+parent: Modules
+---
+
+## BlockBodyHash overview
+
+---
+
+Table of contents
+
+- [encoding/decoding](#encodingdecoding)
+ - [Codec](#codec)
+- [equality](#equality)
+ - [equals](#equals)
+- [errors](#errors)
+ - [BlockBodyHashError (class)](#blockbodyhasherror-class)
+- [generators](#generators)
+ - [generator](#generator)
+- [schemas](#schemas)
+ - [BlockBodyHash](#blockbodyhash)
+- [utils](#utils)
+ - [BlockBodyHash (type alias)](#blockbodyhash-type-alias)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+
+---
+
+# encoding/decoding
+
+## Codec
+
+Codec utilities for BlockBodyHash encoding and decoding operations.
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: {
+ bytes: (input: string & Brand<"BlockBodyHash">) => any
+ hex: (input: string & Brand<"BlockBodyHash">) => string
+ }
+ Decode: {
+ bytes: (input: any) => string & Brand<"BlockBodyHash">
+ hex: (input: string) => string & Brand<"BlockBodyHash">
+ }
+ EncodeEffect: {
+ bytes: (input: string & Brand<"BlockBodyHash">) => Effect>
+ hex: (input: string & Brand<"BlockBodyHash">) => Effect>
+ }
+ DecodeEffect: {
+ bytes: (input: any) => Effect, InstanceType>
+ hex: (input: string) => Effect, InstanceType>
+ }
+ EncodeEither: {
+ bytes: (input: string & Brand<"BlockBodyHash">) => Either>
+ hex: (input: string & Brand<"BlockBodyHash">) => Either>
+ }
+ DecodeEither: {
+ bytes: (input: any) => Either, InstanceType>
+ hex: (input: string) => Either, InstanceType>
+ }
+}
+```
+
+Added in v2.0.0
+
+# equality
+
+## equals
+
+Check if two BlockBodyHash instances are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (a: BlockBodyHash, b: BlockBodyHash) => boolean
+```
+
+Added in v2.0.0
+
+# errors
+
+## BlockBodyHashError (class)
+
+Error class for BlockBodyHash related operations.
+
+**Signature**
+
+```ts
+export declare class BlockBodyHashError
+```
+
+Added in v2.0.0
+
+# generators
+
+## generator
+
+Generate a random BlockBodyHash.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary>
+```
+
+Added in v2.0.0
+
+# schemas
+
+## BlockBodyHash
+
+Schema for BlockBodyHash representing a block body hash.
+block_body_hash = Bytes32
+Follows the Conway-era CDDL specification.
+
+**Signature**
+
+```ts
+export declare const BlockBodyHash: Schema.brand<
+ Schema.refine>,
+ "BlockBodyHash"
+>
+```
+
+Added in v2.0.0
+
+# utils
+
+## BlockBodyHash (type alias)
+
+**Signature**
+
+```ts
+export type BlockBodyHash = typeof BlockBodyHash.Type
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.transform<
+ Schema.refine,
+ Schema.refine>
+ >,
+ Schema.brand>, "BlockBodyHash">
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.refine>,
+ Schema.brand>, "BlockBodyHash">
+>
+```
diff --git a/docs/pages/reference/modules/modules/BlockHeaderHash.mdx b/docs/pages/reference/modules/modules/BlockHeaderHash.mdx
new file mode 100644
index 00000000..3366161f
--- /dev/null
+++ b/docs/pages/reference/modules/modules/BlockHeaderHash.mdx
@@ -0,0 +1,163 @@
+---
+title: BlockHeaderHash.ts
+nav_order: 12
+parent: Modules
+---
+
+## BlockHeaderHash overview
+
+---
+
+Table of contents
+
+- [encoding/decoding](#encodingdecoding)
+ - [Codec](#codec)
+- [equality](#equality)
+ - [equals](#equals)
+- [errors](#errors)
+ - [BlockHeaderHashError (class)](#blockheaderhasherror-class)
+- [generators](#generators)
+ - [generator](#generator)
+- [schemas](#schemas)
+ - [BlockHeaderHash](#blockheaderhash)
+- [utils](#utils)
+ - [BlockHeaderHash (type alias)](#blockheaderhash-type-alias)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+
+---
+
+# encoding/decoding
+
+## Codec
+
+Codec utilities for BlockHeaderHash encoding and decoding operations.
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: {
+ bytes: (input: string & Brand<"BlockHeaderHash">) => any
+ hex: (input: string & Brand<"BlockHeaderHash">) => string
+ }
+ Decode: {
+ bytes: (input: any) => string & Brand<"BlockHeaderHash">
+ hex: (input: string) => string & Brand<"BlockHeaderHash">
+ }
+ EncodeEffect: {
+ bytes: (input: string & Brand<"BlockHeaderHash">) => Effect>
+ hex: (input: string & Brand<"BlockHeaderHash">) => Effect>
+ }
+ DecodeEffect: {
+ bytes: (input: any) => Effect, InstanceType>
+ hex: (input: string) => Effect, InstanceType>
+ }
+ EncodeEither: {
+ bytes: (input: string & Brand<"BlockHeaderHash">) => Either>
+ hex: (input: string & Brand<"BlockHeaderHash">) => Either>
+ }
+ DecodeEither: {
+ bytes: (input: any) => Either, InstanceType>
+ hex: (input: string) => Either, InstanceType>
+ }
+}
+```
+
+Added in v2.0.0
+
+# equality
+
+## equals
+
+Check if two BlockHeaderHash instances are equal.
+
+**Signature**
+
+```ts
+export declare const equals: (a: BlockHeaderHash, b: BlockHeaderHash) => boolean
+```
+
+Added in v2.0.0
+
+# errors
+
+## BlockHeaderHashError (class)
+
+Error class for BlockHeaderHash related operations.
+
+**Signature**
+
+```ts
+export declare class BlockHeaderHashError
+```
+
+Added in v2.0.0
+
+# generators
+
+## generator
+
+Generate a random BlockHeaderHash.
+
+**Signature**
+
+```ts
+export declare const generator: FastCheck.Arbitrary>
+```
+
+Added in v2.0.0
+
+# schemas
+
+## BlockHeaderHash
+
+Schema for BlockHeaderHash representing a block header hash.
+block_header_hash = Bytes32
+Follows the Conway-era CDDL specification.
+
+**Signature**
+
+```ts
+export declare const BlockHeaderHash: Schema.brand<
+ Schema.refine>,
+ "BlockHeaderHash"
+>
+```
+
+Added in v2.0.0
+
+# utils
+
+## BlockHeaderHash (type alias)
+
+**Signature**
+
+```ts
+export type BlockHeaderHash = typeof BlockHeaderHash.Type
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.transform<
+ Schema.refine,
+ Schema.refine>
+ >,
+ Schema.brand>, "BlockHeaderHash">
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.refine>,
+ Schema.brand>, "BlockHeaderHash">
+>
+```
diff --git a/docs/pages/reference/modules/modules/BoundedBytes.mdx b/docs/pages/reference/modules/modules/BoundedBytes.mdx
new file mode 100644
index 00000000..2bdbcd8c
--- /dev/null
+++ b/docs/pages/reference/modules/modules/BoundedBytes.mdx
@@ -0,0 +1,44 @@
+---
+title: BoundedBytes.ts
+nav_order: 13
+parent: Modules
+---
+
+## BoundedBytes overview
+
+---
+
+Table of contents
+
+- [schemas](#schemas)
+ - [BoundedBytesSchema](#boundedbytesschema)
+
+---
+
+# schemas
+
+## BoundedBytesSchema
+
+BoundedBytes schema based on Conway CDDL specification
+
+CDDL: bounded_bytes = bytes .size (0 .. 64)
+
+The real bounded_bytes does not have this limit. it instead has
+a different limit which cannot be expressed in CDDL.
+
+The limit is as follows:
+
+- bytes with a definite-length encoding are limited to size 0..64
+- for bytes with an indefinite-length CBOR encoding, each chunk is
+ limited to size 0..64
+ ( reminder: in CBOR, the indefinite-length encoding of
+ bytestrings consists of a token #2.31 followed by a sequence
+ of definite-length encoded bytestrings and a stop code )
+
+**Signature**
+
+```ts
+export declare const BoundedBytesSchema: Schema.filter
+```
+
+Added in v2.0.0
diff --git a/docs/pages/reference/modules/modules/ByronAddress.mdx b/docs/pages/reference/modules/modules/ByronAddress.mdx
new file mode 100644
index 00000000..ac7ec193
--- /dev/null
+++ b/docs/pages/reference/modules/modules/ByronAddress.mdx
@@ -0,0 +1,51 @@
+---
+title: ByronAddress.ts
+nav_order: 14
+parent: Modules
+---
+
+## ByronAddress overview
+
+---
+
+Table of contents
+
+- [schemas](#schemas)
+ - [ByronAddress (class)](#byronaddress-class)
+ - [[Symbol.for("nodejs.util.inspect.custom")] (method)](#symbolfornodejsutilinspectcustom-method)
+- [utils](#utils)
+ - [BytesSchema](#bytesschema)
+
+---
+
+# schemas
+
+## ByronAddress (class)
+
+Byron legacy address format
+
+**Signature**
+
+```ts
+export declare class ByronAddress
+```
+
+Added in v2.0.0
+
+### [Symbol.for("nodejs.util.inspect.custom")] (method)
+
+**Signature**
+
+```ts
+;[Symbol.for("nodejs.util.inspect.custom")]()
+```
+
+# utils
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.transform
+```
diff --git a/docs/pages/reference/modules/modules/Bytes.mdx b/docs/pages/reference/modules/modules/Bytes.mdx
new file mode 100644
index 00000000..4213e460
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes.mdx
@@ -0,0 +1,159 @@
+---
+title: Bytes.ts
+nav_order: 15
+parent: Modules
+---
+
+## Bytes overview
+
+---
+
+Table of contents
+
+- [predicates](#predicates)
+ - [isHexLenient](#ishexlenient)
+- [schemas](#schemas)
+ - [FromBytesLenient](#frombyteslenient)
+ - [HexLenientSchema](#hexlenientschema)
+- [utils](#utils)
+ - [BytesError (class)](#byteserror-class)
+ - [Codec](#codec)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+ - [FromHexLenient](#fromhexlenient)
+ - [HexSchema](#hexschema)
+ - [isHex](#ishex)
+
+---
+
+# predicates
+
+## isHexLenient
+
+Lenient version of isHex that allows empty strings.
+Useful for PlutusData where empty byte arrays are valid.
+
+**Signature**
+
+```ts
+export declare const isHexLenient: (input: string) => boolean
+```
+
+Added in v2.0.0
+
+# schemas
+
+## FromBytesLenient
+
+Lenient version of FromBytes that allows empty byte arrays.
+Useful for PlutusData where empty byte arrays are valid.
+
+**Signature**
+
+```ts
+export declare const FromBytesLenient: Schema.transform<
+ typeof Schema.Uint8ArrayFromSelf,
+ Schema.refine
+>
+```
+
+Added in v2.0.0
+
+## HexLenientSchema
+
+Lenient hex schema that allows empty strings.
+Useful for PlutusData where empty byte arrays are valid.
+
+**Signature**
+
+```ts
+export declare const HexLenientSchema: Schema.refine
+```
+
+Added in v2.0.0
+
+# utils
+
+## BytesError (class)
+
+**Signature**
+
+```ts
+export declare class BytesError
+```
+
+## Codec
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: { bytes: (input: string) => any; bytesLenient: (input: string) => any }
+ Decode: { bytes: (input: any) => string; bytesLenient: (input: any) => string }
+ EncodeEffect: {
+ bytes: (input: string) => Effect>
+ bytesLenient: (input: string) => Effect>
+ }
+ DecodeEffect: {
+ bytes: (input: any) => Effect>
+ bytesLenient: (input: any) => Effect>
+ }
+ EncodeEither: {
+ bytes: (input: string) => Either>
+ bytesLenient: (input: string) => Either>
+ }
+ DecodeEither: {
+ bytes: (input: any) => Either>
+ bytesLenient: (input: any) => Either>
+ }
+}
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ typeof Schema.Uint8ArrayFromSelf,
+ Schema.refine
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.refine,
+ typeof Schema.Uint8ArrayFromSelf
+>
+```
+
+## FromHexLenient
+
+**Signature**
+
+```ts
+export declare const FromHexLenient: Schema.transform<
+ Schema.refine,
+ typeof Schema.Uint8ArrayFromSelf
+>
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.refine
+```
+
+## isHex
+
+**Signature**
+
+```ts
+export declare const isHex: (input: string) => boolean
+```
diff --git a/docs/pages/reference/modules/modules/Bytes16.mdx b/docs/pages/reference/modules/modules/Bytes16.mdx
new file mode 100644
index 00000000..5458bd80
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes16.mdx
@@ -0,0 +1,77 @@
+---
+title: Bytes16.ts
+nav_order: 16
+parent: Modules
+---
+
+## Bytes16 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesSchema](#bytesschema)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 16
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.filter,
+ Schema.filter>
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 32
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/Bytes29.mdx b/docs/pages/reference/modules/modules/Bytes29.mdx
new file mode 100644
index 00000000..acf10ef8
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes29.mdx
@@ -0,0 +1,65 @@
+---
+title: Bytes29.ts
+nav_order: 17
+parent: Modules
+---
+
+## Bytes29 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesFromHex](#bytesfromhex)
+ - [BytesSchema](#bytesschema)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 29
+```
+
+## BytesFromHex
+
+**Signature**
+
+```ts
+export declare const BytesFromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 58
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/Bytes32.mdx b/docs/pages/reference/modules/modules/Bytes32.mdx
new file mode 100644
index 00000000..ca210277
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes32.mdx
@@ -0,0 +1,170 @@
+---
+title: Bytes32.ts
+nav_order: 18
+parent: Modules
+---
+
+## Bytes32 overview
+
+---
+
+Table of contents
+
+- [encoding/decoding](#encodingdecoding)
+ - [Codec](#codec)
+- [schemas](#schemas)
+ - [BytesSchema](#bytesschema)
+ - [FromBytes](#frombytes)
+ - [FromVariableBytes](#fromvariablebytes)
+ - [HexSchema](#hexschema)
+ - [VariableBytesSchema](#variablebytesschema)
+ - [VariableHexSchema](#variablehexschema)
+- [utils](#utils)
+ - [Bytes32Error (class)](#bytes32error-class)
+ - [Bytes32_BYTES_LENGTH](#bytes32_bytes_length)
+ - [Bytes32_HEX_LENGTH](#bytes32_hex_length)
+
+---
+
+# encoding/decoding
+
+## Codec
+
+Codec for Bytes32 encoding and decoding operations.
+
+**Signature**
+
+```ts
+export declare const Codec: {
+ Encode: { bytes: (input: string) => any; variableBytes: (input: string) => any }
+ Decode: { bytes: (input: any) => string; variableBytes: (input: any) => string }
+ EncodeEffect: {
+ bytes: (input: string) => Effect>
+ variableBytes: (input: string) => Effect>
+ }
+ DecodeEffect: {
+ bytes: (input: any) => Effect>
+ variableBytes: (input: any) => Effect>
+ }
+ EncodeEither: {
+ bytes: (input: string) => Either>
+ variableBytes: (input: string) => Either>
+ }
+ DecodeEither: {
+ bytes: (input: any) => Either>
+ variableBytes: (input: any) => Either>
+ }
+}
+```
+
+Added in v2.0.0
+
+# schemas
+
+## BytesSchema
+
+Schema for Bytes32 bytes with 32-byte length validation.
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.refine
+```
+
+Added in v2.0.0
+
+## FromBytes
+
+Schema transformer for Bytes32 that converts between hex strings and byte arrays.
+Like Bytes.BytesSchema but with Bytes32-specific length validation.
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.refine,
+ Schema.refine>
+>
+```
+
+Added in v2.0.0
+
+## FromVariableBytes
+
+Schema transformer for variable-length data that converts between hex strings and byte arrays.
+Works with 0 to 32 bytes (0 to 64 hex characters).
+
+**Signature**
+
+```ts
+export declare const FromVariableBytes: Schema.transform<
+ Schema.refine,
+ Schema.refine>
+>
+```
+
+Added in v2.0.0
+
+## HexSchema
+
+Schema for Bytes32 hex strings with 64-character length validation.
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.refine>
+```
+
+Added in v2.0.0
+
+## VariableBytesSchema
+
+Schema for variable-length byte arrays from 0 to 32 bytes.
+Useful for asset names and other variable-length data structures.
+
+**Signature**
+
+```ts
+export declare const VariableBytesSchema: Schema.refine
+```
+
+Added in v2.0.0
+
+## VariableHexSchema
+
+Schema for variable-length hex strings from 0 to 64 characters (0 to 32 bytes).
+Useful for asset names and other variable-length data structures.
+
+**Signature**
+
+```ts
+export declare const VariableHexSchema: Schema.refine>
+```
+
+Added in v2.0.0
+
+# utils
+
+## Bytes32Error (class)
+
+**Signature**
+
+```ts
+export declare class Bytes32Error
+```
+
+## Bytes32_BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const Bytes32_BYTES_LENGTH: 32
+```
+
+## Bytes32_HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const Bytes32_HEX_LENGTH: 64
+```
diff --git a/docs/pages/reference/modules/modules/Bytes4.mdx b/docs/pages/reference/modules/modules/Bytes4.mdx
new file mode 100644
index 00000000..683d1d96
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes4.mdx
@@ -0,0 +1,77 @@
+---
+title: Bytes4.ts
+nav_order: 19
+parent: Modules
+---
+
+## Bytes4 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesSchema](#bytesschema)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 4
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.filter,
+ Schema.filter>
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 8
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/Bytes448.mdx b/docs/pages/reference/modules/modules/Bytes448.mdx
new file mode 100644
index 00000000..20e531e9
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes448.mdx
@@ -0,0 +1,77 @@
+---
+title: Bytes448.ts
+nav_order: 20
+parent: Modules
+---
+
+## Bytes448 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesSchema](#bytesschema)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 448
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.filter,
+ Schema.filter>
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 896
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/Bytes57.mdx b/docs/pages/reference/modules/modules/Bytes57.mdx
new file mode 100644
index 00000000..69b922eb
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes57.mdx
@@ -0,0 +1,65 @@
+---
+title: Bytes57.ts
+nav_order: 21
+parent: Modules
+---
+
+## Bytes57 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesFromHex](#bytesfromhex)
+ - [BytesSchema](#bytesschema)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 57
+```
+
+## BytesFromHex
+
+**Signature**
+
+```ts
+export declare const BytesFromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 114
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/Bytes64.mdx b/docs/pages/reference/modules/modules/Bytes64.mdx
new file mode 100644
index 00000000..4e14e1cb
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes64.mdx
@@ -0,0 +1,77 @@
+---
+title: Bytes64.ts
+nav_order: 22
+parent: Modules
+---
+
+## Bytes64 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesSchema](#bytesschema)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 64
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.filter,
+ Schema.filter>
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 128
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/Bytes80.mdx b/docs/pages/reference/modules/modules/Bytes80.mdx
new file mode 100644
index 00000000..f5bd8865
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Bytes80.mdx
@@ -0,0 +1,77 @@
+---
+title: Bytes80.ts
+nav_order: 23
+parent: Modules
+---
+
+## Bytes80 overview
+
+---
+
+Table of contents
+
+- [utils](#utils)
+ - [BYTES_LENGTH](#bytes_length)
+ - [BytesSchema](#bytesschema)
+ - [FromBytes](#frombytes)
+ - [FromHex](#fromhex)
+ - [HEX_LENGTH](#hex_length)
+ - [HexSchema](#hexschema)
+
+---
+
+# utils
+
+## BYTES_LENGTH
+
+**Signature**
+
+```ts
+export declare const BYTES_LENGTH: 80
+```
+
+## BytesSchema
+
+**Signature**
+
+```ts
+export declare const BytesSchema: Schema.filter
+```
+
+## FromBytes
+
+**Signature**
+
+```ts
+export declare const FromBytes: Schema.transform<
+ Schema.filter,
+ Schema.filter>
+>
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: Schema.transform<
+ Schema.filter>,
+ Schema.filter
+>
+```
+
+## HEX_LENGTH
+
+**Signature**
+
+```ts
+export declare const HEX_LENGTH: 160
+```
+
+## HexSchema
+
+**Signature**
+
+```ts
+export declare const HexSchema: Schema.filter>
+```
diff --git a/docs/pages/reference/modules/modules/CBOR.mdx b/docs/pages/reference/modules/modules/CBOR.mdx
new file mode 100644
index 00000000..555eb260
--- /dev/null
+++ b/docs/pages/reference/modules/modules/CBOR.mdx
@@ -0,0 +1,417 @@
+---
+title: CBOR.ts
+nav_order: 24
+parent: Modules
+---
+
+## CBOR overview
+
+---
+
+Table of contents
+
+- [constants](#constants)
+ - [CANONICAL_OPTIONS](#canonical_options)
+ - [CBOR_ADDITIONAL_INFO](#cbor_additional_info)
+ - [CBOR_MAJOR_TYPE](#cbor_major_type)
+ - [CBOR_SIMPLE](#cbor_simple)
+ - [DEFAULT_OPTIONS](#default_options)
+- [errors](#errors)
+ - [CBORError (class)](#cborerror-class)
+- [model](#model)
+ - [CBOR (type alias)](#cbor-type-alias)
+ - [CodecOptions (type alias)](#codecoptions-type-alias)
+- [schemas](#schemas)
+ - [CBORSchema](#cborschema)
+ - [FromBytes](#frombytes)
+ - [Integer](#integer)
+- [transformation](#transformation)
+ - [match](#match)
+- [utils](#utils)
+ - [ArraySchema](#arrayschema)
+ - [ByteArray](#bytearray)
+ - [FromHex](#FromHex)
+ - [Codec](#codec)
+ - [Float](#float)
+ - [MapSchema](#mapschema)
+ - [RecordSchema](#recordschema)
+ - [Simple](#simple)
+ - [Tag (class)](#tag-class)
+ - [Text](#text)
+ - [isArray](#isarray)
+ - [isByteArray](#isbytearray)
+ - [isInteger](#isinteger)
+ - [isMap](#ismap)
+ - [isRecord](#isrecord)
+ - [isTag](#istag)
+
+---
+
+# constants
+
+## CANONICAL_OPTIONS
+
+Canonical CBOR encoding options (RFC 8949 Section 4.2.1)
+
+**Signature**
+
+```ts
+export declare const CANONICAL_OPTIONS: CodecOptions
+```
+
+Added in v1.0.0
+
+## CBOR_ADDITIONAL_INFO
+
+CBOR additional information constants
+
+**Signature**
+
+```ts
+export declare const CBOR_ADDITIONAL_INFO: {
+ readonly DIRECT: 24
+ readonly UINT16: 25
+ readonly UINT32: 26
+ readonly UINT64: 27
+ readonly INDEFINITE: 31
+}
+```
+
+Added in v1.0.0
+
+## CBOR_MAJOR_TYPE
+
+CBOR major types as constants
+
+**Signature**
+
+```ts
+export declare const CBOR_MAJOR_TYPE: {
+ readonly UNSIGNED_INTEGER: 0
+ readonly NEGATIVE_INTEGER: 1
+ readonly BYTE_STRING: 2
+ readonly TEXT_STRING: 3
+ readonly ARRAY: 4
+ readonly MAP: 5
+ readonly TAG: 6
+ readonly SIMPLE_FLOAT: 7
+}
+```
+
+Added in v1.0.0
+
+## CBOR_SIMPLE
+
+Simple value constants for CBOR
+
+**Signature**
+
+```ts
+export declare const CBOR_SIMPLE: { readonly FALSE: 20; readonly TRUE: 21; readonly NULL: 22; readonly UNDEFINED: 23 }
+```
+
+Added in v1.0.0
+
+## DEFAULT_OPTIONS
+
+Default CBOR encoding options
+
+**Signature**
+
+```ts
+export declare const DEFAULT_OPTIONS: CodecOptions
+```
+
+Added in v1.0.0
+
+# errors
+
+## CBORError (class)
+
+Error class for CBOR value operations
+
+**Signature**
+
+```ts
+export declare class CBORError
+```
+
+Added in v1.0.0
+
+# model
+
+## CBOR (type alias)
+
+Type representing a CBOR value with simplified, non-tagged structure
+
+**Signature**
+
+```ts
+export type CBOR =
+ | bigint // integers (both positive and negative)
+ | Uint8Array // byte strings
+ | string // text strings
+ | ReadonlyArray // arrays
+ | ReadonlyMap // maps
+ | { readonly [key: string]: CBOR } // record alternative to maps
+ | Tag // tagged values
+ | boolean // boolean values
+ | null // null value
+ | undefined // undefined value
+ | number
+```
+
+Added in v1.0.0
+
+## CodecOptions (type alias)
+
+CBOR codec configuration options
+
+**Signature**
+
+```ts
+export type CodecOptions =
+ | {
+ readonly mode: "canonical"
+ }
+ | {
+ readonly mode: "custom"
+ readonly useIndefiniteArrays: boolean
+ readonly useIndefiniteMaps: boolean
+ readonly useDefiniteForEmpty: boolean
+ readonly sortMapKeys: boolean
+ readonly useMinimalEncoding: boolean
+ }
+```
+
+Added in v1.0.0
+
+# schemas
+
+## CBORSchema
+
+CBOR Value discriminated union schema representing all possible CBOR data types
+Inspired by OCaml and Rust CBOR implementations
+
+**Signature**
+
+```ts
+export declare const CBORSchema: Schema.Schema
+```
+
+Added in v1.0.0
+
+## FromBytes
+
+Create a CBOR bytes schema with custom codec options
+
+**Signature**
+
+```ts
+export declare const FromBytes: (
+ options: CodecOptions
+) => Schema.transformOrFail, never>
+```
+
+Added in v1.0.0
+
+## Integer
+
+CBOR Value schema definitions for each major type
+
+**Signature**
+
+```ts
+export declare const Integer: typeof Schema.BigIntFromSelf
+```
+
+Added in v1.0.0
+
+# transformation
+
+## match
+
+Pattern matching utility for CBOR values
+
+**Signature**
+
+```ts
+export declare const match: (
+ value: CBOR,
+ patterns: {
+ integer: (value: bigint) => R
+ bytes: (value: Uint8Array) => R
+ text: (value: string) => R
+ array: (value: ReadonlyArray) => R
+ map: (value: ReadonlyMap) => R
+ record: (value: { readonly [key: string]: CBOR }) => R
+ tag: (tag: number, value: CBOR) => R
+ boolean: (value: boolean) => R
+ null: () => R
+ undefined: () => R
+ float: (value: number) => R
+ }
+) => R
+```
+
+Added in v1.0.0
+
+# utils
+
+## ArraySchema
+
+**Signature**
+
+```ts
+export declare const ArraySchema: Schema.Array$>
+```
+
+## ByteArray
+
+**Signature**
+
+```ts
+export declare const ByteArray: typeof Schema.Uint8ArrayFromSelf
+```
+
+## FromHex
+
+**Signature**
+
+```ts
+export declare const FromHex: (
+ options: CodecOptions
+) => Schema.transform<
+ Schema.transform, typeof Schema.Uint8ArrayFromSelf>,
+ Schema.transformOrFail, never>
+>
+```
+
+## Codec
+
+**Signature**
+
+```ts
+export declare const Codec: (options?: CodecOptions) => {
+ Encode: { cborBytes: (input: CBOR) => any; cborHex: (input: CBOR) => string }
+ Decode: { cborBytes: (input: any) => CBOR; cborHex: (input: string) => CBOR }
+ EncodeEffect: {
+ cborBytes: (input: CBOR) => Effect.Effect>
+ cborHex: (input: CBOR) => Effect.Effect>
+ }
+ DecodeEffect: {
+ cborBytes: (input: any) => Effect.Effect>
+ cborHex: (input: string) => Effect.Effect>
+ }
+ EncodeEither: {
+ cborBytes: (input: CBOR) => Either>
+ cborHex: (input: CBOR) => Either>
+ }
+ DecodeEither: {
+ cborBytes: (input: any) => Either>
+ cborHex: (input: string) => Either>
+ }
+}
+```
+
+## Float
+
+**Signature**
+
+```ts
+export declare const Float: typeof Schema.Number
+```
+
+## MapSchema
+
+**Signature**
+
+```ts
+export declare const MapSchema: Schema.ReadonlyMapFromSelf<
+ Schema.suspend,
+ Schema.suspend
+>
+```
+
+## RecordSchema
+
+**Signature**
+
+```ts
+export declare const RecordSchema: Schema.Record$>
+```
+
+## Simple
+
+**Signature**
+
+```ts
+export declare const Simple: Schema.Union<[typeof Schema.Boolean, typeof Schema.Null, typeof Schema.Undefined]>
+```
+
+## Tag (class)
+
+**Signature**
+
+```ts
+export declare class Tag
+```
+
+## Text
+
+**Signature**
+
+```ts
+export declare const Text: typeof Schema.String
+```
+
+## isArray
+
+**Signature**
+
+```ts
+export declare const isArray: (u: unknown, overrideOptions?: ParseOptions | number) => u is readonly CBOR[]
+```
+
+## isByteArray
+
+**Signature**
+
+```ts
+export declare const isByteArray: (u: unknown, overrideOptions?: ParseOptions | number) => u is any
+```
+
+## isInteger
+
+**Signature**
+
+```ts
+export declare const isInteger: (u: unknown, overrideOptions?: ParseOptions | number) => u is bigint
+```
+
+## isMap
+
+**Signature**
+
+```ts
+export declare const isMap: (u: unknown, overrideOptions?: ParseOptions | number) => u is ReadonlyMap
+```
+
+## isRecord
+
+**Signature**
+
+```ts
+export declare const isRecord: (
+ u: unknown,
+ overrideOptions?: ParseOptions | number
+) => u is { readonly [x: string]: CBOR }
+```
+
+## isTag
+
+**Signature**
+
+```ts
+export declare const isTag: (u: unknown, overrideOptions?: ParseOptions | number) => u is Tag
+```
diff --git a/docs/pages/reference/modules/modules/Certificate.mdx b/docs/pages/reference/modules/modules/Certificate.mdx
new file mode 100644
index 00000000..43ffc4e6
--- /dev/null
+++ b/docs/pages/reference/modules/modules/Certificate.mdx
@@ -0,0 +1,468 @@
+---
+title: Certificate.ts
+nav_order: 25
+parent: Modules
+---
+
+## Certificate overview
+
+---
+
+Table of contents
+
+- [errors](#errors)
+ - [CertificateError (class)](#certificateerror-class)
+- [model](#model)
+ - [Certificate (type alias)](#certificate-type-alias)
+- [schemas](#schemas)
+ - [Certificate](#certificate)
+
+---
+
+# errors
+
+## CertificateError (class)
+
+Error class for Certificate related operations.
+
+**Signature**
+
+```ts
+export declare class CertificateError
+```
+
+Added in v2.0.0
+
+# model
+
+## Certificate (type alias)
+
+Type alias for Certificate.
+
+**Signature**
+
+```ts
+export type Certificate = typeof Certificate.Type
+```
+
+Added in v2.0.0
+
+# schemas
+
+## Certificate
+
+Certificate union schema based on Conway CDDL specification
+
+CDDL: certificate =
+[
+stake_registration
+// stake_deregistration
+// stake_delegation
+// pool_registration
+// pool_retirement
+// reg_cert
+// unreg_cert
+// vote_deleg_cert
+// stake_vote_deleg_cert
+// stake_reg_deleg_cert
+// vote_reg_deleg_cert
+// stake_vote_reg_deleg_cert
+// auth_committee_hot_cert
+// resign_committee_cold_cert
+// reg_drep_cert
+// unreg_drep_cert
+// update_drep_cert
+]
+
+stake_registration = (0, stake_credential)
+stake_deregistration = (1, stake_credential)
+stake_delegation = (2, stake_credential, pool_keyhash)
+pool_registration = (3, pool_params)
+pool_retirement = (4, pool_keyhash, epoch_no)
+reg_cert = (7, stake_credential, coin)
+unreg_cert = (8, stake_credential, coin)
+vote_deleg_cert = (9, stake_credential, drep)
+stake_vote_deleg_cert = (10, stake_credential, pool_keyhash, drep)
+stake_reg_deleg_cert = (11, stake_credential, pool_keyhash, coin)
+vote_reg_deleg_cert = (12, stake_credential, drep, coin)
+stake_vote_reg_deleg_cert = (13, stake_credential, pool_keyhash, drep, coin)
+auth_committee_hot_cert = (14, committee_cold_credential, committee_hot_credential)
+resign_committee_cold_cert = (15, committee_cold_credential, anchor/ nil)
+reg_drep_cert = (16, drep_credential, coin, anchor/ nil)
+unreg_drep_cert = (17, drep_credential, coin)
+update_drep_cert = (18, drep_credential, anchor/ nil)
+
+**Signature**
+
+```ts
+export declare const Certificate: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "StakeRegistration",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ }
+ >,
+ Schema.TaggedStruct<
+ "StakeDeregistration",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ }
+ >,
+ Schema.TaggedStruct<
+ "StakeDelegation",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ poolKeyHash: Schema.brand>, "PoolKeyHash">
+ }
+ >,
+ Schema.TaggedStruct<
+ "PoolRetirement",
+ {
+ poolKeyHash: Schema.brand>, "PoolKeyHash">
+ epoch: Schema.brand, "EpochNo">
+ }
+ >,
+ Schema.TaggedStruct<
+ "RegCert",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ coin: Schema.refine
+ }
+ >,
+ Schema.TaggedStruct<
+ "UnregCert",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ coin: Schema.refine
+ }
+ >,
+ Schema.TaggedStruct<
+ "VoteDelegCert",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ drep: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHashDRep",
+ { keyHash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHashDRep",
+ {
+ scriptHash: Schema.brand<
+ Schema.refine>,
+ "ScriptHash"
+ >
+ }
+ >,
+ Schema.TaggedStruct<"AlwaysAbstainDRep", {}>,
+ Schema.TaggedStruct<"AlwaysNoConfidenceDRep", {}>
+ ]
+ >
+ }
+ >,
+ Schema.TaggedStruct<
+ "StakeVoteDelegCert",
+ {
+ stakeCredential: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHash",
+ { hash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHash",
+ { hash: Schema.brand>, "ScriptHash"> }
+ >
+ ]
+ >
+ poolKeyHash: Schema.brand>, "PoolKeyHash">
+ drep: Schema.Union<
+ [
+ Schema.TaggedStruct<
+ "KeyHashDRep",
+ { keyHash: Schema.brand>, "KeyHash"> }
+ >,
+ Schema.TaggedStruct<
+ "ScriptHashDRep",
+ {
+ scriptHash: Schema.brand<
+ Schema.refine