{"_id":"@ada-anvil/vault","_rev":"7-15dedd6fad2beb5f6177621a219ecd2b","name":"@ada-anvil/vault","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.2":{"name":"@ada-anvil/vault","version":"0.0.2","keywords":["typescript","vault","key-management","signature","wallet","crypto","blockchain","cardano","csl","bip39","cip1852","cms","ed25519"],"author":{"name":"Ada-Anvil"},"_id":"@ada-anvil/vault@0.0.2","maintainers":[{"name":"pabz-anvil","email":"pabz@ada-anvil.io"},{"name":"tqueri","email":"tqueri@ada-anvil.io"},{"name":"dodilanne","email":"vincaudet@gmail.com"},{"name":"mrabdibdi-anvil","email":"mrabdibdi@ada-anvil.io"}],"dist":{"shasum":"26ebe1971131842ad4eb89fc6cd9aeafa8516306","tarball":"https://registry.npmjs.org/@ada-anvil/vault/-/vault-0.0.2.tgz","fileCount":37,"integrity":"sha512-WoV7HD2GqDCMPh5xVncATCa00ZXY2oTkwXaVSlt939njQclY+1l510dC87LfUWCOoJE7dB6BeWI/jkdwZ8eROg==","signatures":[{"sig":"MEUCIEmV9lGAFjzROH+iXRPI15KoiuQ/KsFR1xWWsPgNeZ2MAiEAmqAbLnaRslQ68hWEqp7aWSzGuwzluKqYqP/BgWzXaNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165473},"type":"module","types":"./index.d.ts","exports":{".":{"import":{"types":"./index.d.ts","import":"./index.js"},"require":{"types":"./index.d.cts","require":"./index.cjs"}},"./cms":{"import":{"types":"./cms.d.ts","import":"./cms.js"},"require":{"types":"./cms.d.cts","require":"./cms.cjs"}},"./csl":{"import":{"types":"./csl.d.ts","import":"./csl.js"},"require":{"types":"./csl.d.cts","require":"./csl.cjs"}},"./hono":{"import":{"types":"./hono.d.ts","import":"./hono.js"},"require":{"types":"./hono.d.cts","require":"./hono.cjs"}},"./bip39":{"import":{"types":"./bip39.d.ts","import":"./bip39.js"},"require":{"types":"./bip39.d.cts","require":"./bip39.cjs"}},"./utils":{"import":{"types":"./utils.d.ts","import":"./utils.js"},"require":{"types":"./utils.d.cts","require":"./utils.cjs"}},"./vault":{"import":{"types":"./vault.d.ts","import":"./vault.js"},"require":{"types":"./vault.d.cts","require":"./vault.cjs"}},"./express":{"import":{"types":"./express.d.ts","import":"./express.js"},"require":{"types":"./express.d.cts","require":"./express.cjs"}},"./handler":{"import":{"types":"./handler.d.ts","import":"./handler.js"},"require":{"types":"./handler.d.cts","require":"./handler.cjs"}},"./package.json":"./package.json"},"gitHead":"11306f0a645c7b57a08db4d8575ab6c871ebca3e","_npmUser":{"name":"pabz-anvil","email":"pabz@ada-anvil.io"},"_npmVersion":"10.9.2","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"peerDependencies":{"bip39":">=3.1.0","@emurgo/cardano-message-signing-nodejs-gc":">=1.0.0","@emurgo/cardano-serialization-lib-nodejs-gc":">=14.0.0"},"peerDependenciesMeta":{"bip39":{"optional":true},"@emurgo/cardano-message-signing-nodejs-gc":{"optional":true},"@emurgo/cardano-serialization-lib-nodejs-gc":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vault_0.0.2_1764692904489_0.24305929550002414","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@ada-anvil/vault","version":"0.0.3","keywords":["typescript","vault","key-management","signature","wallet","crypto","blockchain","cardano","csl","bip39","cip1852","cms","ed25519"],"author":{"name":"Ada-Anvil"},"license":"MIT","_id":"@ada-anvil/vault@0.0.3","maintainers":[{"name":"pabz-anvil","email":"pabz@ada-anvil.io"},{"name":"tqueri","email":"tqueri@ada-anvil.io"},{"name":"dodilanne","email":"vincaudet@gmail.com"},{"name":"mrabdibdi-anvil","email":"mrabdibdi@ada-anvil.io"}],"homepage":"https://github.com/cardano-forge/anvil-vault","bugs":{"url":"https://github.com/cardano-forge/anvil-vault/issues"},"dist":{"shasum":"5d47d470912aa1a5791f059646bc28161d563bcc","tarball":"https://registry.npmjs.org/@ada-anvil/vault/-/vault-0.0.3.tgz","fileCount":37,"integrity":"sha512-ZOJ04frOvcLJF9Z6PDdlrpY4dDmVjwUfQtjfFVMCqDNyaW8KNDRTT5m6DB8uOeTpyquySXWiwcqWWmWQI67icQ==","signatures":[{"sig":"MEQCIFnWPda6Ghx+lkTIDb1DepG5nHBrqpZKtvYE95eXMfVPAiAPBUqFC1CRUdIqw7m4quj5RmDqDobgRrSEphi2f5n6VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165898},"type":"module","types":"./index.d.ts","exports":{".":{"import":{"types":"./index.d.ts","import":"./index.js"},"require":{"types":"./index.d.cts","require":"./index.cjs"}},"./cms":{"import":{"types":"./cms.d.ts","import":"./cms.js"},"require":{"types":"./cms.d.cts","require":"./cms.cjs"}},"./csl":{"import":{"types":"./csl.d.ts","import":"./csl.js"},"require":{"types":"./csl.d.cts","require":"./csl.cjs"}},"./hono":{"import":{"types":"./hono.d.ts","import":"./hono.js"},"require":{"types":"./hono.d.cts","require":"./hono.cjs"}},"./bip39":{"import":{"types":"./bip39.d.ts","import":"./bip39.js"},"require":{"types":"./bip39.d.cts","require":"./bip39.cjs"}},"./utils":{"import":{"types":"./utils.d.ts","import":"./utils.js"},"require":{"types":"./utils.d.cts","require":"./utils.cjs"}},"./vault":{"import":{"types":"./vault.d.ts","import":"./vault.js"},"require":{"types":"./vault.d.cts","require":"./vault.cjs"}},"./express":{"import":{"types":"./express.d.ts","import":"./express.js"},"require":{"types":"./express.d.cts","require":"./express.cjs"}},"./handler":{"import":{"types":"./handler.d.ts","import":"./handler.js"},"require":{"types":"./handler.d.cts","require":"./handler.cjs"}},"./package.json":"./package.json"},"gitHead":"11306f0a645c7b57a08db4d8575ab6c871ebca3e","_npmUser":{"name":"pabz-anvil","email":"pabz@ada-anvil.io"},"repository":{"url":"git+https://github.com/cardano-forge/anvil-vault.git","type":"git"},"_npmVersion":"10.9.2","description":"TypeScript tools for generating and managing cardano wallet.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"bip39":">=3.1.0","@emurgo/cardano-message-signing-nodejs-gc":">=1.0.0","@emurgo/cardano-serialization-lib-nodejs-gc":">=14.0.0"},"peerDependenciesMeta":{"bip39":{"optional":true},"@emurgo/cardano-message-signing-nodejs-gc":{"optional":true},"@emurgo/cardano-serialization-lib-nodejs-gc":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vault_0.0.3_1764693119887_0.5055275172339193","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@ada-anvil/vault","version":"0.0.4","keywords":["typescript","vault","key-management","signature","wallet","crypto","blockchain","cardano","csl","bip39","cip1852","cms","ed25519"],"author":{"name":"Ada-Anvil"},"license":"MIT","_id":"@ada-anvil/vault@0.0.4","maintainers":[{"name":"pabz-anvil","email":"pabz@ada-anvil.io"},{"name":"tqueri","email":"tqueri@ada-anvil.io"},{"name":"dodilanne","email":"vincaudet@gmail.com"},{"name":"mrabdibdi-anvil","email":"mrabdibdi@ada-anvil.io"}],"homepage":"https://github.com/Cardano-Forge/anvil-vault","bugs":{"url":"https://github.com/Cardano-Forge/anvil-vault/issues"},"dist":{"shasum":"9112d091c4ba1857e55e04fd8eff2303097ff8bf","tarball":"https://registry.npmjs.org/@ada-anvil/vault/-/vault-0.0.4.tgz","fileCount":49,"integrity":"sha512-DIAYBD8te7kzb8nV62WExiW2m1KerU/YzAZetRY8d3HZqhdrqgtQExfIixucw5svvrzZxCZcQakPg75XT3A7Ag==","signatures":[{"sig":"MEUCIQDrAkiO/cQIb8nHSEEU27Cgt/aROHHSZzhaeRnOqqv2mAIgIzwksydTwgwgsiuLsJgDBYR+TFohM7uEo5GwjJxzEN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ada-anvil%2fvault@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112288},"type":"module","types":"./index.d.ts","exports":{".":{"import":{"types":"./index.d.ts","import":"./index.js"},"require":{"types":"./index.d.cts","require":"./index.cjs"}},"./cms":{"import":{"types":"./cms.d.ts","import":"./cms.js"},"require":{"types":"./cms.d.cts","require":"./cms.cjs"}},"./csl":{"import":{"types":"./csl.d.ts","import":"./csl.js"},"require":{"types":"./csl.d.cts","require":"./csl.cjs"}},"./hono":{"import":{"types":"./hono.d.ts","import":"./hono.js"},"require":{"types":"./hono.d.cts","require":"./hono.cjs"}},"./bip39":{"import":{"types":"./bip39.d.ts","import":"./bip39.js"},"require":{"types":"./bip39.d.cts","require":"./bip39.cjs"}},"./utils":{"import":{"types":"./utils.d.ts","import":"./utils.js"},"require":{"types":"./utils.d.cts","require":"./utils.cjs"}},"./vault":{"import":{"types":"./vault.d.ts","import":"./vault.js"},"require":{"types":"./vault.d.cts","require":"./vault.cjs"}},"./express":{"import":{"types":"./express.d.ts","import":"./express.js"},"require":{"types":"./express.d.cts","require":"./express.cjs"}},"./handler":{"import":{"types":"./handler.d.ts","import":"./handler.js"},"require":{"types":"./handler.d.cts","require":"./handler.cjs"}},"./package.json":"./package.json"},"gitHead":"505878baee2a5ffcaf07720966e8ecf5a7c564ac","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2e780432-d141-4dae-847b-4083222a9291"}},"repository":{"url":"git+https://github.com/Cardano-Forge/anvil-vault.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript tools for generating and managing cardano wallet.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"bip39":">=3.1.0","@emurgo/cardano-message-signing-nodejs-gc":">=1.0.0","@emurgo/cardano-serialization-lib-nodejs-gc":">=14.0.0"},"peerDependenciesMeta":{"bip39":{"optional":true},"@emurgo/cardano-message-signing-nodejs-gc":{"optional":true},"@emurgo/cardano-serialization-lib-nodejs-gc":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vault_0.0.4_1769628684008_0.6302030336534226","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@ada-anvil/vault","version":"0.0.5","keywords":["typescript","vault","key-management","signature","wallet","crypto","blockchain","cardano","csl","bip39","cip1852","cms","ed25519"],"author":{"name":"Ada-Anvil"},"license":"MIT","_id":"@ada-anvil/vault@0.0.5","maintainers":[{"name":"pabz-anvil","email":"pabz@ada-anvil.io"},{"name":"tqueri","email":"tqueri@ada-anvil.io"},{"name":"dodilanne","email":"vincaudet@gmail.com"},{"name":"mrabdibdi-anvil","email":"mrabdibdi@ada-anvil.io"}],"homepage":"https://github.com/Cardano-Forge/anvil-vault","bugs":{"url":"https://github.com/Cardano-Forge/anvil-vault/issues"},"dist":{"shasum":"42c2f942affaedcdd76267a10b7667cd4d50258a","tarball":"https://registry.npmjs.org/@ada-anvil/vault/-/vault-0.0.5.tgz","fileCount":50,"integrity":"sha512-Y6zk/OXB8oxXIMho9oj9OoWpCe4VcjehHmmHbQ7CUtGZgrcqiqrYFYYYE8ClZ6oYKCfIzgH8hi3BkaSpx3wwwg==","signatures":[{"sig":"MEUCIQCb5q00QIr1vcQgAmBFMdjy0NMNTJVJkrBbjdxWS59OTwIgP2G0MTODc0+U8B3f8DB/j/G3ZZNTFNyyT00XU1jFu04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ada-anvil%2fvault@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118391},"type":"module","types":"./index.d.ts","exports":{".":{"import":{"types":"./index.d.ts","import":"./index.js"},"require":{"types":"./index.d.cts","require":"./index.cjs"}},"./cms":{"import":{"types":"./cms.d.ts","import":"./cms.js"},"require":{"types":"./cms.d.cts","require":"./cms.cjs"}},"./csl":{"import":{"types":"./csl.d.ts","import":"./csl.js"},"require":{"types":"./csl.d.cts","require":"./csl.cjs"}},"./hono":{"import":{"types":"./hono.d.ts","import":"./hono.js"},"require":{"types":"./hono.d.cts","require":"./hono.cjs"}},"./bip39":{"import":{"types":"./bip39.d.ts","import":"./bip39.js"},"require":{"types":"./bip39.d.cts","require":"./bip39.cjs"}},"./utils":{"import":{"types":"./utils.d.ts","import":"./utils.js"},"require":{"types":"./utils.d.cts","require":"./utils.cjs"}},"./vault":{"import":{"types":"./vault.d.ts","import":"./vault.js"},"require":{"types":"./vault.d.cts","require":"./vault.cjs"}},"./express":{"import":{"types":"./express.d.ts","import":"./express.js"},"require":{"types":"./express.d.cts","require":"./express.cjs"}},"./handler":{"import":{"types":"./handler.d.ts","import":"./handler.js"},"require":{"types":"./handler.d.cts","require":"./handler.cjs"}},"./package.json":"./package.json"},"gitHead":"3c9ed8be4e8cac260fc976e3077747756f6398cb","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2e780432-d141-4dae-847b-4083222a9291"}},"repository":{"url":"git+https://github.com/Cardano-Forge/anvil-vault.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript tools for generating and managing cardano wallet.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"bip39":">=3.1.0","@emurgo/cardano-message-signing-nodejs-gc":">=1.0.0","@emurgo/cardano-serialization-lib-nodejs-gc":">=14.0.0"},"peerDependenciesMeta":{"bip39":{"optional":true},"@emurgo/cardano-message-signing-nodejs-gc":{"optional":true},"@emurgo/cardano-serialization-lib-nodejs-gc":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vault_0.0.5_1769629085176_0.7866424946533965","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-12-02T16:28:24.391Z","modified":"2026-05-08T20:30:53.256Z","0.0.1":"2025-12-02T16:13:56.253Z","0.0.2":"2025-12-02T16:28:24.682Z","0.0.3":"2025-12-02T16:32:00.084Z","0.0.4":"2026-01-28T19:31:24.143Z","0.0.5":"2026-01-28T19:38:05.331Z"},"bugs":{"url":"https://github.com/Cardano-Forge/anvil-vault/issues"},"author":{"name":"Ada-Anvil"},"license":"MIT","homepage":"https://github.com/Cardano-Forge/anvil-vault","keywords":["typescript","vault","key-management","signature","wallet","crypto","blockchain","cardano","csl","bip39","cip1852","cms","ed25519"],"repository":{"url":"git+https://github.com/Cardano-Forge/anvil-vault.git","type":"git"},"description":"TypeScript tools for generating and managing cardano wallet.","maintainers":[{"email":"tqueri@ada-anvil.io","name":"tqueri"},{"email":"vincaudet@gmail.com","name":"dodilanne"},{"email":"mrabdibdi@ada-anvil.io","name":"mrabdibdi-anvil"}],"readme":"<div align=\"center\">\n  <h1>Anvil Vault</h1>\n  <p>\n    <strong>Custodial wallet framework for Cardano</strong>\n  </p>\n<p>\n    <a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"></a>\n    <a href=\"https://www.typescriptlang.org/\"><img src=\"https://img.shields.io/badge/TypeScript-5.3.3+-blue.svg\" alt=\"TypeScript\"></a>\n    <a href=\"https://www.npmjs.com/\"><img src=\"https://img.shields.io/badge/npm-10.2.3-blue.svg\" alt=\"npm version\"></a>\n</p>\n</div>\n\n## Table of Contents\n\n- [About](#about)\n- [Why Anvil Vault?](#why-anvil-vault)\n- [Getting Started](#getting-started)\n  - [Installation](#installation)\n  - [Quick Start](#quick-start)\n  - [Examples](#examples)\n- [Packages](#packages)\n  - [Core Packages](#core-packages)\n  - [Framework Adapters](#framework-adapters)\n- [Security Considerations](#security-considerations)\n- [Error Handling](#error-handling)\n- [Getting Help](#getting-help)\n\n## About\n\n`@ada-anvil/vault` is a comprehensive custodial wallet solution for Cardano.\n\n## Why Anvil Vault?\n\n- **Hierarchical Deterministic (HD) Wallets**: Generate unlimited addresses from a single seed phrase, following Cardano's CIP-1852\n  standard\n- **Message & Transaction Signing**: Sign blockchain transactions and messages with full CIP-8 and CIP-30 compliance\n- **Type-Safe Blockchain Integration**: Comprehensive TypeScript wrappers around Cardano Serialization Library (CSL)\n- **Framework Agnostic**: Drop-in adapters for Express.js and Hono\n- **Modern Error Handling**: Type-safe Result patterns using `trynot`\n\n## Getting Started\n\n### Installation\n\n```bash\nnpm install @ada-anvil/vault\n```\n\n### Quick Start\n\nSee the [Vault Quick Start Guide](../vault/README.md#usage) for a complete walkthrough.\n\n### Examples\n\nFor complete working examples:\n\n- **[Express Example](../../examples/express/README.md)** - Full Express.js integration\n- **[Hono Example](../../examples/hono/README.md)** - Full Hono integration\n\n## Packages\n\nAnvil Vault is composed of specialized packages:\n\n### Core Packages\n\n#### [@ada-anvil/vault](../vault/README.md)\n\n- Core vault orchestration for key derivation, address generation, and signing operations\n- CIP-1852 compliant derivation with flexible strategies\n\n> [!WARNING]\n> **Peer Dependencies** <br/>- **`@emurgo/cardano-message-signing-nodejs-gc`**: COSE signing implementation <br/>- **`@emurgo/cardano-serialization-lib-nodejs-gc`**: Cardano cryptography\n\n#### [@ada-anvil/vault/csl](../csl/README.md)\n\n- Type-safe wrappers around Cardano Serialization Library\n- Derivation, address generation, signing, verification, parsing, and network utilities\n\n> [!WARNING]\n> **Peer Dependencies** <br/>- **`@emurgo/cardano-serialization-lib-nodejs-gc`**: Cardano cryptography\n\n#### [@ada-anvil/vault/cms](../cms/README.md)\n\n- Cardano Message Signing (CIP-8/CIP-30) using COSE\n- Sign and verify wallet messages\n\n> [!WARNING]\n> **Peer Dependencies** <br/>- **`@emurgo/cardano-message-signing-nodejs-gc`**: COSE signing implementation\n\n#### [@ada-anvil/vault/bip39](../bip39/README.md)\n\n- BIP-39 mnemonic generation and entropy parsing\n\n> [!WARNING]\n> **Peer Dependencies** <br/>- **`bip39`**: BIP-39 mnemonic operations and wordlist management\n\n#### [@ada-anvil/vault/handler](../handler/README.md)\n\n- Framework-agnostic HTTP handler builder and derivation utilities\n\n#### [@ada-anvil/vault/utils](../utils/README.md)\n\n- Shared utilities for error handling, validation, parsing, and helper types\n\n### Framework Adapters\n\n#### [@ada-anvil/vault/express](../express/README.md)\n\n- Adapter to use handlers with Express.js\n\n#### [@ada-anvil/vault/hono](../hono/README.md)\n\n- Adapter to use handlers with Hono\n\n---\n\n## Security Considerations\n\n### Root Key Management\n\n> [!WARNING]\n> **Your root key is the master secret that controls all wallets.**\n> If compromised, an attacker can access all user funds.\n\n- **Never hardcode root keys** in your source code or configuration files\n- Store root keys in dedicated key management systems\n- Use different keys per environment\n\n### Derivation Strategies (User Address Generation)\n\n**How you generate user addresses directly impacts security and privacy.**\n\n#### Payment Keys (Spending Addresses)\n\n- **Never use `constant` derivation in production** - this generates the same address for all users, creating a security and privacy\n  vulnerability\n- **Always use `unique` derivation with scrambling** - this ensures each user gets cryptographically isolated addresses\n- The `pool` strategy was designed for stake keys (see below)\n\n#### Stake Keys (Reward Addresses)\n\n- **Use `pool` derivation for stake keys** - this allows you to consolidate all users' staking rewards to a set of addresses for easier\n  management. Each user is deterministically assigned one of the available addresses\n- Pool derivation is safe for stake keys because they don't control spendable funds\n\n---\n\n## Error Handling\n\nAll functions return `Result` types from the [`trynot`](https://www.npmjs.com/package/trynot) library for consistent, type-safe error handling:\n\n```typescript\nimport { isOk, unwrap } from \"trynot\";\n\nconst result = await vault.getWallet({ userId: \"user123\" });\n\nif (isOk(result)) {\n  console.log(result.addresses.base.bech32);\n}\n\n// Or unwrap (throws on error)\nconst unwrapped = unwrap(await vault.getWallet({ userId: \"user123\" }));\n```\n\n---\n\n## Getting Help\n\n- **Issues**: [GitHub Issues](https://github.com/Cardano-Forge/anvil-vault/issues)\n- **Discord**: [Join our Discord](https://discord.gg/yyTG6wUqCh)\n- **Documentation**: Individual package READMEs for detailed API docs\n- **Examples**: See [examples/](../../examples) for complete working examples\n\n---\n\n<p align=\"center\">\n  <a href=\"https://ada-anvil.io\">Ada Anvil Website</a>\n  |\n  <a href=\"https://discord.gg/yyTG6wUqCh\">\n    <img src=\"../../logo/discord.svg\" alt=\"Discord Icon\" height=\"18px\" style=\"vertical-align: text-top;\" /> Discord\n  </a>\n  |\n  <a href=\"https://x.com/AnvilDevAgency\">\n    <img src=\"../../logo/x.svg\" alt=\"X Icon\" height=\"18px\" style=\"vertical-align: text-top;\" /> @AnvilDevAgency\n  </a>\n</p>\n","readmeFilename":"README.md"}