# Packages structure

Dedot's source code is splitted into multiple packages for different purposes, all of the packages and their purposes are listing in the table below.

### Packages

<table><thead><tr><th width="219">Name</th><th>Description</th></tr></thead><tbody><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/api">@dedot/api</a></td><td>High-level abstraction apis (clients, API executors...)</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/providers">@dedot/providers</a></td><td>Providers for connection to JSON-RPC servers (WsProvider, SmoldotProvider)</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/types">@dedot/types</a></td><td>Generic shared types across the packages</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/runtime-specs">@dedot/runtime-specs</a></td><td>Explicit Runtime API definitions to use for chains only supports Metadata V14</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/shape">@dedot/shape</a></td><td>Basic codecs/shapes for scale-codec encode/decode</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/contracts">@dedot/contracts</a></td><td>APIs to interact with ink! smart contracts</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/codecs">@dedot/codecs</a></td><td>Known codecs for generic purposes ($Metadata, $AccountId32, $Extrinsic ...)</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/utils">@dedot/utils</a></td><td>Useful utility functions</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/storage">@dedot/storage</a></td><td>Storage API for different purposes (caching, ...)</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/codegen">@dedot/codegen</a></td><td>Types &#x26; APIs generation engine for chaintypes &#x26; ink! smart contracts</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/cli">@dedot/cli</a></td><td>Dedot's CLI</td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/merkleized-metadata">@dedot/merkleized-metadata</a></td><td><a href="https://polkadot-fellows.github.io/RFCs/approved/0078-merkleized-metadata.html#rfc-0078-merkleized-metadata">RFC-0078</a> Implementation, with utilities to calculate metadata hash/digest &#x26; proof for extrinsic, extrinsic payload... </td></tr><tr><td><a href="https://github.com/dedotdev/dedot/tree/main/packages/dedot">dedot</a></td><td>Umbrella package re-exporting primitives &#x26; APIs from other packages, including subpath packages</td></tr></tbody></table>

### `dedot` subpath packages

By default `dedot` package only re-exports primitives from `@dedot/api`, `@dedot/providers`, `@dedot/shape`, giving you enough APIs to connect to the network & making on-chain interactions. It also comes with a few subpath packages giving access to APIs to working with ink! contracts, known-codecs, utility functions...

<table><thead><tr><th width="250">Name</th><th>Description</th></tr></thead><tbody><tr><td><code>dedot</code></td><td>Re-exports <code>@dedot/api</code>, <code>@dedot/providers</code> &#x26; <code>@dedot/shape</code> packages</td></tr><tr><td><code>dedot/contracts</code></td><td>Re-exports <code>@dedot/contracts</code> package</td></tr><tr><td><code>dedot/codecs</code></td><td>Re-exports <code>@dedot/codecs</code> package</td></tr><tr><td><code>dedot/utils</code></td><td>Re-exports <code>@dedot/utils</code> package</td></tr><tr><td><code>dedot/types</code></td><td>Re-exports <code>@dedot/types</code> package</td></tr><tr><td><code>dedot/types/json-rpc</code></td><td>Re-exports <code>@dedot/types/json-rpc</code> package for Substrate JSON-RPC API types information (both new &#x26; legacy)</td></tr><tr><td><code>dedot/runtime-specs</code></td><td>Re-exports <code>@dedot/runtime-specs</code> package</td></tr><tr><td><code>dedot/shape</code></td><td>Re-exports <code>@dedot/shape</code> package</td></tr><tr><td><code>dedot/merkleized-metadata</code></td><td>Re-exports <code>@dedot/merkleized-metadata</code> package</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dedot.dev/getting-started/packages-structure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
