Was this page helpful?
+ {feedbackForm(feedback)} +Need further help?
+-
+
- + Join our{' '} + + Discord + + +
Contribute
+-
+
- + Join our{' '} + + Discord + + +
- + Submit a{' '} + + feature request 🌉 + + +
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index ac00976..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @prestwich @ltchang2019 @erinhales @yourbuddyconner @kekonen @anna-carroll @imti @pranaymohan @barbaraliau \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/track-documentation-task.md b/.github/ISSUE_TEMPLATE/track-documentation-task.md new file mode 100644 index 0000000..7b30728 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/track-documentation-task.md @@ -0,0 +1,34 @@ +--- +name: Track documentation task +about: Template to track a documentation task +title: '' +labels: '' +assignees: '' + +--- + +## Description + +I'm working on pull request/ issue: + + +Supply further description as needed. + +## Research + +- [ ] New documents: Collect input from engineers +- [ ] Existing documents: Get familiar with existing documents +- [ ] Add more tasks as needed + +## Production + +- [ ] New documents: Create draft +- [ ] Existing documents: Refine document +- [ ] Get technical review +- [ ] Get peer review + +## Publication + +- [ ] Merge PR +- [ ] Approve ingest PR on netdata/learn +- [ ] Check for broken links in build log diff --git a/.github/workflows/check-broken-links.md b/.github/workflows/check-broken-links.md new file mode 100644 index 0000000..3dcc8f4 --- /dev/null +++ b/.github/workflows/check-broken-links.md @@ -0,0 +1,11 @@ +--- +title: Nomad docs contains broken links! +labels: broken-links +assignees: '' +--- + +## Nomad docs contains broken links! + + +[View the results](https://github.com/nomad-xyz/learn/commit/{{sha}}/checks). + diff --git a/.github/workflows/check-broken-links.yml b/.github/workflows/check-broken-links.yml new file mode 100644 index 0000000..f2efc4a --- /dev/null +++ b/.github/workflows/check-broken-links.yml @@ -0,0 +1,26 @@ +name: Test internal links +on: + workflow_dispatch: + schedule: + - cron: '0 17 * * *' +env: + WEBSITE_URL: "https://docs.nomad.xyz/" + ISSUE_TEMPLATE: ".github/workflows/check-broken-links.md" + +jobs: + check: + runs-on: ubuntu-latest + + steps: + - name: Run BLC on internal links + run: npx broken-link-checker $WEBSITE_URL --ordered --recursive --exclude-external --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36' + + - uses: actions/checkout@v2 + if: failure() + + - uses: JasonEtco/create-an-issue@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + filename: ${{ env.ISSUE_TEMPLATE }} + if: failure() diff --git a/.gitignore b/.gitignore index 3d6a3b1..106e768 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,26 @@ -node_modules -docs/.vitepress/dist -.DS_STORE \ No newline at end of file +# Dependencies +node_modules/ +docs/.vitepress/ +# Production +/build + +# Generated files +.docusaurus/ +.cache-loader + +# Misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Local Netlify folder +.netlify +.vscode/settings.json +/.idea/ diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index f0b10f1..0000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v16.13.1 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..38e5be8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Copyright 2022 Illusory Systems Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md index ddcf93d..8a37d63 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,21 @@ -# Documentation Site +# Nomad Docs -## Install -```sh -npm install -``` +## Development -## Build +- You will need `docusaurus` and `node 16` to develop and test locally the documentation website +- [Install Docusaurus](https://docusaurus.io/docs/installation) +- `git clone` the repository locally +- Run `yarn` or `npm install` from inside the repository to install all dependencies +- `yarn start`: Will start a local dev server that will automatically reload with every change to the source code +- Please use named or forked branches. All changes should be PRed to `dev` and if everything works as expected, only then `dev` should be merged into `main` -```sh -npm run docs:build -``` +## Deployment -## Serve Dev Environment +- The docs are automatically deployed from the github repo via Netlify + - `main` is deployed to `docs.nomad.xyz` + - `dev` is deployed to `dev.docs.nomad.xyz` -```sh -npm run docs:dev -``` +## License -## Serve Prod Environment - -```sh -npm run docs:serve -``` +Apache License 2.0 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..03afab4 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; \ No newline at end of file diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js deleted file mode 100644 index 79cdc26..0000000 --- a/docs/.vitepress/config.js +++ /dev/null @@ -1,94 +0,0 @@ -module.exports = { - lang: "en-US", - title: "Nomad", - description: "Documentation", - - head: [["link", { rel: "icon", href: `/favicon.png` }]], - - themeConfig: { - // repo: 'https://github.com/nomad-xyz/nomad-monorepo', - docsDir: "docs", - - nav: [ - { text: "Home", link: "/", activeMatch: "^/$|^/home/" }, - { text: "Bridge", link: "/bridge/index.html", activeMatch: "^/bridge" }, - { - text: "Developer Resources", - link: "/dev/index.html", - activeMatch: "^/dev/", - }, - ], - - sidebar: { - "/home/": getHomeSidebar(), - "/bridge/": getBridgeSidebar(), - "/dev": getIntegrationsSidebar(), - "/": getHomeSidebar(), - }, - }, -}; - -function getHomeSidebar() { - return [ - { text: "What is Nomad?", link: "/" }, - { text: "Brand Kit", link: "/brand-kit.html" }, - ]; -} - -function getBridgeSidebar() { - return [ - { text: "Getting Started", link: "/bridge/index.html" }, - { - text: "Resources", - children: [ - { text: "Deployed Domains and Addresses", link: "/bridge/domains.html" }, - ], - }, - { text: "FAQs", link: "/bridge/faq.html" }, - { - text: "Ways to Bridge Using Nomad", - children: [ - { text: "Nomad GUI", link: "/bridge/nomad-gui.html" }, - { - text: "Send Native Tokens Using Etherscan", - link: "/bridge/etherscan-native.html", - }, - { - text: "Send ERC-20 Tokens Using Etherscan", - link: "/bridge/etherscan.html", - }, - ], - }, - ]; -} - -function getIntegrationsSidebar() { - return [ - { - text: "Developer Resources", - children: [ - { text: "Nomad Domain IDs", link: "/dev/domain-ids.html" }, - { text: "SDK Documentation", link: "/dev/sdk.html" }, - { text: "Writing a xApp", link: "/dev/xapps.html" }, - ], - }, - { - text: "Technical Docs", - children: [ - { text: "Nomad Architecture", link: "/dev/architecture.html" }, - { text: "Token Bridge xApp", link: "/dev/token-bridge.html" }, - { text: "Governance", link: "/dev/governance.html" }, - { text: "Upgrade Setup", link: "/dev/upgrade-setup.html" }, - { - text: "Deploy Contracts to Dev", - link: "/dev/dev-contract-deployment.html", - }, - { - text: "Deploy Contracts to Prod", - link: "/dev/prod-contract-deployment.html", - }, - { text: "Off-Chain Agents", link: "/dev/agents/" }, - ], - }, - ]; -} diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css deleted file mode 100644 index b64dddc..0000000 --- a/docs/.vitepress/theme/custom.css +++ /dev/null @@ -1,8 +0,0 @@ -:root { - --c-brand: #4b7bec; - --c-brand-light: #5b8bfc; -} - -.container { - max-width: 60rem !important; -} \ No newline at end of file diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js deleted file mode 100644 index 42fe9a9..0000000 --- a/docs/.vitepress/theme/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import DefaultTheme from 'vitepress/theme' -import './custom.css' - -export default DefaultTheme diff --git a/docs/agents/overview.md b/docs/agents/overview.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/agents/processor.md b/docs/agents/processor.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/agents/relayer.md b/docs/agents/relayer.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/agents/updater.md b/docs/agents/updater.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/agents/watcher.md b/docs/agents/watcher.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/brand-kit.md b/docs/brand-kit.md deleted file mode 100644 index f3c3064..0000000 --- a/docs/brand-kit.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Nomad Brand Kit -lang: en-US ---- - -# Brand kit - -
-Nomad is a novel new cross-chain protocol. Please only bridge funds to the extent that you feel comfortable deploying on chain.
diff --git a/docs/bridge/nomad-gui.md b/docs/bridge/nomad-gui.md deleted file mode 100644 index bf5c3c4..0000000 --- a/docs/bridge/nomad-gui.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Nomad Bridge GUI -lang: en-US ---- - -# Nomad Bridge GUI - -## Nomad vs Connext, which should I use? - -There are two options available to send funds through the GUI, Nomad and Connext. These are two distinct protocols that are complimentary to one another. We have partnered with Connext to provide an optimal experience for users! - -Nomad is a secure gas efficient cross-chain protocol that allows users to bridge funds between networks. This takes, on average, 35-60 minutes. There are no fees associated with Nomad, just pay gas! Connext provides liquidity pools for Nomad assets, meaning users can receive funds on the destination chain much faster (less than 10 minutes) for an additional fee. Nomad is advised for large transfers. - -Connext is not available for every asset and may not be available for larger sums. We recommend using Nomad if you intend to send large transfers. - -## Bridging Through Nomad - -Bridging assets across chains using Nomad should be intuitive and easy with the Nomad GUI. In this tutorial, we will walk through the steps required to bridge your assets. - -Please find our production bridge GUI at [app.nomad.xyz](https://app.nomad.xyz/). - -If you would like to test our bridge using testnet funds before using real funds, please visit our development GUI at [development.app.nomad.xyz](https://development.app.nomad.xyz/). - -
-
-The sending (or “home”) chain produces a series of documents ("messages") that needs notarization. A notary (called the “updater”) is contracted to sign it. The notary can produce a fraudulent copy, but they will be punished by having their bond and license publicly revoked. When this happens, everyone relying on the notary learns that the notary is malicious. All the notary's customers can immediately block the notary and prevent any malicious access to their accounts.
-
-## How does Nomad work?
-
-Nomad is patterned after optimistic systems. It sees an attestation of some data, and accepts it as valid after a timer elapses. While the timer is running, honest participants have a chance to respond to the attestation and/or submit fraud proofs.
-
-Unlike most optimistic systems, Nomad spans multiple chains. The sending chain is the source of truth, and contains the “Home” contract where messages are enqueued. Messages are committed to in a merkle tree (the “message tree”). The root of this tree is notarized by the updater and relayed to the receiving chain in an “update”. Updates are signed by the updater. They commit to the previous root and a new root.
-
-Any chain can maintain a “Replica” contract, which holds knowledge of the updater and the current root. Signed updates are held by the Replica, and accepted after a timeout. The Replica effectively replays a series of updates to reach the same root as the Home chain. Because the root commits to the message tree, once the root has been transmitted this way, the message can be proven and processed.
-
-This leaves open the possibility that the Updater signs a fraudulent update. Unlike an optimistic rollup, Nomad permits fraud. This is the single most important change to the security model. Importantly, fraud can always be proven to the Home contract on the sending chain. Because of this, the updater must submit a bonded stake on the sending chain. Fraud can always be proven on the sending chain, and the bond can be slashed as punishment.
-
-Unfortunately, certain types of fraud can't be objectively proven on the receiving chain; Replicas can't know which messages the home chain intended to send and therefore can't check message tree validity in all cases. However, if a message is falsified by an Updater and submitted to the Replica, that update is public. This means that any honest actor can prove this fraud on the original Home contract and cause slashing. There is no way to hide fraud.
-
-In addition, because the Replica waits to process messages, Nomad guarantees that honest dapps can always prevent processing of dishonest messages. Fraud is always public knowledge before the fraudulent message is processed. In this sense, Nomad (like atomic swaps and other locally verified systems) includes a requirement for honest users to stay online. We have built a robust system for delegating this responsibility.
-
-All off-chain observers can be immediately convinced of fraud (as they can check the home chain). This means that the validity of a message sent by Nomad is not 100% guaranteed.
-
-Instead, Nomad guarantees the following:
-
-- Fraud is costly
-- All users can learn about fraud
-- All users can block a fraudulent message before they are accepted
-
- In other words, rather than using a globally verifiable fraud-proof, Nomad relies on local verification by participants. This tradeoff allows Nomad to save 90% on gas fees compared to pessimistic relays, while still maintaining a high degree of security.
-
-## Nomad Architecture
-
-Nomad contains several on-chain and off-chain components. For convenience, we’ll be referring to the Home and Replica as contracts, when in fact they are several contracts working together.
-
-
-
-## On-chain (Contracts)
-
-### Home
-
-The home contract is responsible for managing production of the message tree and holding custody of the updater bond.
-
-__It performs the following functions:__
-
-- Expose a "send message" API to other contracts on the home chain
-- Enforce the message format
-- Commit messages to the message tree
-- Maintain a queue of tree roots
-- Slash the updater's bond
- - Double-update proofs
- - Improper update proofs
-
-### Replica
-
-The replica contract is responsible for managing optimistic replication and dispatching messages to end recipients.
-
-__It performs the following functions:__
-
-- Maintain a queue of pending updates
-- Finalize updates as their timeouts elapse
-- Accept double-update proofs
-- Validate message inclusion proofs
-- Enforce the message format
-- Dispatch messages to their destination
-
-## Off-chain (Agents)
-
-### Updater
-
-The updater is responsible for signing attestations of new roots.
-
-__It is an off-chain actor that does the following:__
-
-- Observe the home chain contract
-- Sign attestations to new roots
-- Publish the signed attestation to the home chain
-
-### Watcher
-
-The watcher observes the Updater's interactions with the Home contract (by watching the Home contract) and reacts to malicious or faulty attestations. It also observes any number of replicas to ensure the Updater does not bypass the Home and go straight to a replica.
-
-__It is an off-chain actor that does the following:__
-
-- Observe the home
-- Observe 1 or more replicas
-- Maintain a DB of seen updates
-- Submit double-update proofs
-- Submit invalid update proofs
-- If configured, issue an emergency halt transaction
-
-### Relayer
-
-The relayer forwards updates from the home to one or more replicas.
-
-__It is an off-chain actor that does the following:__
-
-- Observe the home
-- Observe 1 or more replicas
-- Polls home for new signed updates (since replica's current root) and submits them to replica
-- Polls replica for confirmable updates (that have passed their optimistic time window) and confirms if available (updating replica's current root)
-
-### Processor
-
-The processor proves the validity of pending messages and sends them to end recipients.
-
-__It is an off-chain actor that does the following:__
-
-- Observe the home
-- Maintain local merkle tree with all leaves
-- Observe 1 or more replicas
-- Maintain list of messages corresponding to each leaf
-- Generate and submit merkle proofs for pending (unproven) messages
-- Dispatch proven messages to end recipients
-
-## How Nomad passes messages between chains
-
-Nomad creates an authenticated data structure on a home chain, and relays updates to that data structure on any number of replicas. As a result, the home chain and all replicas will agree on the state of the data structure. By embedding data ("messages") in this data structure we can propagate it between chains with a high degree of confidence.
-
-The home chain enforces rules on the creation of this data structure. In the current design, this data structure is a sparse merkle tree based on the design used in the eth2 deposit contract. This tree commits to the vector of all previous messages. The home chain enforces an addressing and message scheme for messages and calculates the tree root. This root will be propagated to the replicas. The home chain maintains a queue of roots (one for each message).
-
-The home chain elects an "updater" that must attest to the state of the message tree. The updater places a bond on the home chain and is required to periodically sign attestations (updates or U). Each attestation contains the root from the previous attestation (U_prev), and a new root (U_new).
-
-The home chain slashes when it sees two conflicting updates (U_i and U_i' where U_i_prev == U_i'_prev && U_i_new != U_i'_new) or a single update where U_new is not an element of the queue. The new root MUST be a member of the queue. E.g a list of updates U_1...U_i should follow the form [(A, B), (B, C), (C, D)...].
-
-Semantically, updates represent a batch commitment to the messages between the two roots. Updates contain one or more messages that ought to be propagated to the replica chain. Updates may occur at any frequency, as often as once per message. Because updates are chain-independent, any home chain update may be presented to any replica, and any replica update may be presented to the home chain. In other words, data availability of signed updates is guaranteed by each chain.
-
-Before accepting an update, a replica places it into a queue of pending updates. Each update must wait for some time parameter before being accepted. While a replica can't know that an update is certainly valid, the waiting system guarantees that fraud is publicly visible on the home chain before being accepted by the replica. In other words, the security guarantee of the system is that all frauds may be published by any participant, all published frauds may be slashed, and all participants have a window to react to any fraud. Therefore updates that are not blacklisted by participants are sufficiently trustworthy for the replica to accept.
-
-## Nomad Channels for Cross-Chain Communication
-
-Nomad sends messages from one chain to another in the form of raw bytes. A cross-chain application that wishes to use Nomad will need to define the rules for sending and receiving messages for its use case.
-
-Each cross-chain application must implement its own messaging protocol. By convention, we call the contracts that implement this protocol the application's Router contracts. Their function is broadly similar to routers in local networks. They ensure that incoming and outgoing messages are in the protocol-defined format, and facilitate handling and dispatch.
-
-__These Router contracts must:__
-
-- maintain a permissioned set of the contract(s) on remote chains from which it will accept messages via Nomad — this could be a single owner of the application on one chain; it could be a registry of other applications implementing the same rules on various chains
-- encode messages in a standardized format, so they can be decoded by the Router contract on the destination chain
-- handle messages from remote Router contracts
-- dispatch messages to remote Router contracts
-
- By implementing these pieces of functionality within a Router contract and deploying it across multiple chains, we create a working cross-chain application using a common language and set of rules. Applications of this kind may use Nomad as the cross-chain courier for sending and receiving messages to each other.
-
-## Benefits and Trade-offs of the Nomad Architecture
-
-__Benefits__ | __Challenges__
--- | --
-Broadcast channel | 1-of-N fraud-proof trust model
-Cheap | Liveness failure if updater goes down
-One-solution fits all | Updater could voluntarily forfeit bond to try to pass forged messages
-Simple |
-
-The benefit of Nomad is that the broadcast channel allows for a single-producer, multi-consumer model. This ensures that 1 accumulator can communicate with any number of receiving chains. It’s also much cheaper than other options, allowing updates and proofs to cost <100k gas and be checked by only 1 signature. With Nomad, one-solution fits all meaning that constraints on receiving chains are minimal (1 hash function + 1 signature check). There is no implementation or security difference between Proof of Stake and Proof of Work chains. There is also many fewer LoC than a Relay, much lower design maintenance overhead, and much less expertise required to maintain and operate.
-
-We’ve been careful to address all concerns with the Nomad system and have designed solutions that allow for optimal speed, cost, and security of the network. For example, we rely on fraud publication rather than fraud proofs to improve the speed and cost of sending messages. In this security model, any potential fraud is disincentivized and costly, and all participants will always learn of any potential fraud with plenty of time to mitigate harm.
-
-## Governance
-
-Nomad will roll out its finalized governance process and signer composition in April 2022.
-
-### Governor
-
-[Etherscan](https://etherscan.io/address/0x93277b8f5939975b9e6694d5fd2837143afbf68a), [Gnosis Safe](https://gnosis-safe.io/app/eth:0x93277b8f5939975b9E6694d5Fd2837143afBf68A/settings/owners)
-
-**Policy:** 3 of 5 - of the five total signers, three signatures are required to execute a transaction
-
-**Signers:**
-- [Layne Haber](https://twitter.com/LayneHaber): `0xC69b66cc2811B509829448FBFfb2553c4CBb627e`
-- [Praneeth Srikanti](https://twitter.com/bees_neeth): `0x9bdD76b2a69Db43Fa695a10f5977b8FD891225f3`
-- [Pranay Mohan](https://twitter.com/pranaymohan): `0xab0614cE8d53ea2c67B87f8ad4d8Fac7A4a516e5`
-- [Anna Carroll](https://twitter.com/annascarroll): `0x25270d2e6980C5b343C4866Aea904a9A9bCA733F`
-- [Katherine Wu](https://twitter.com/katherineykwu): `0x83865712c50f702fA4650C7fadEd90A54242046e`
-
-----
-### Ethereum Recovery Manager
-
-[Etherscan](https://etherscan.io/address/0xda2f881f7f4e9d2b9559f97c7670472a85c1986a), [Gnosis Safe](https://gnosis-safe.io/app/eth:0xda2f881f7f4e9d2b9559f97c7670472a85c1986a/settings/owners)
-
-**Policy:** 2 of 3 - of the three total signers, two signatures are required to execute a transaction
-
-**Signers:**
-- [Eli Krenzke](https://twitter.com/eKRENZKE): `0x347Ae1a35BED71BB796A5279CD85FED964468aE9`
-- [Barbara Liau](https://twitter.com/barbaraliau): `0xDE9cfb1216889Dee0cAB8afB04c63911427659E4`
-- [Conner Swann](https://twitter.com/YourBuddyConner): `0xea24Ac04DEFb338CA8595C3750E20166F3b4998A`
-
-----
-### Moonbeam Recovery Manager
-
-[Moonscan](https://moonbeam.moonscan.io/address/0x2D23B3865D5B7CD88Ce9CE7514a13545672d9eF7), [Gnosis Safe](https://multisig.moonbeam.network/mbeam:0x2D23B3865D5B7CD88Ce9CE7514a13545672d9eF7/settings/owners)
-
-**Policy:** 3 of 5 - of the five total signers, three signatures are required to execute a transaction
-
-**Signers:**
-- [Barbara Liau](https://twitter.com/barbaraliau): `0xDE9cfb1216889Dee0cAB8afB04c63911427659E4`
-- [Conner Swann](https://twitter.com/YourBuddyConner): `0xea24Ac04DEFb338CA8595C3750E20166F3b4998A`
-- [Alberto Viera](https://twitter.com/theAlbertoV19): `0x4E8ee1AEFEf37c431c6B68F1F5fE6e309ba44376`
-- [Arthur Kaseman](https://www.purestake.com/about/): `0x9A23197B7d8bA57E8fe62c3047003C8854F688Cc`
-- [Aaron Evans](https://www.linkedin.com/in/aaron-evans-a2366/): `0x3DfED02fEFDDA06A80E21f35097fb910a4a790ef`
diff --git a/docs/overview/nomad-vs-the-world.md b/docs/overview/nomad-vs-the-world.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/overview/what-is-nomad.md b/docs/overview/what-is-nomad.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/overview/why-nomad.md b/docs/overview/why-nomad.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/partners/nomad-appendix.md b/docs/partners/nomad-appendix.md
deleted file mode 100644
index 2d01940..0000000
--- a/docs/partners/nomad-appendix.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Nomad - Appendix
-lang: en-US
----
-
-# Appendix
-
- - **Nomad**: A security-first cross-chain messaging protocol. Nomad is radically cheaper compared to a traditional header relay. Additionally, it is designed for high reusability, meaning it can be quickly deployed to any EVM chain without the need for any custom logic.
-
- - **Nomad Token Bridge**: A xApp (cross-chain application) that leverages the Nomad messaging channels to enable sending ERC-20 tokens between supported chains.
-
- - **Connext**: An interoperability protocol that allows users to swap/transact existing liquidity across chains. Connext is closely partnered with Nomad and is a complementary piece for a seamless end-user experience. Nomad includes a thirty minute dispute window as part of its security model. However, Connext routers are able to bridge funds in advance and pre-fill liquidity for a faster bridging experience.
-
- - **Message**: Bytes transferred via Nomad that encode some application-specific instructions via a standardized set of rules.
-
- - **Messaging Channel**: The infrustructure laid by the core Nomad protocol that allows for the passing of arbitrary bytes between chains.
-
- - **Origin vs Destination**: Most often refers to the direction of a message, where `origin` is the sending chain and `destination` is the receiving chain.
-
- - **Local vs Remote**: In the context of discussing a particular contract, it is deployed on a particular chain. Contracts and assets on that chain are `local`. Contracts and assets on another chain are `remote`.
-
- - **Native Assets**: Any asset that resides on it's original chain (e.g. `ETH`, `DAI` and `USDC` are native to the Ethereum chain)
-
- - **Representations**: When an asset is sent cross-chain, the Token Bridge mints a representation of that token on the destination chain.
-
- - **Core**: Reference to the core Nomad protocol, or the messaging channels implemented by the core protocol.
-
- - **xApps**: Pronounced `zap`. A cross-chain application that utilizes the infrastructure of the core Nomad protocol. xApps define the rules for encoding and decoding messages sent via Nomad.
-
- - **Routers**: A xApp contract that implements a cross-chain application by specifying the message format, as well as rules for dispatching and handling messages.
-
- - **Domain**: The Nomad-specific id associated with a chain.
-
- - **Home**: The on-chain contract that is responsible for managing production of the message tree and holding custody of the updater bond.
-
- - **Replica**: The on-chain contract that is responsible for managing optimistic replication and dispatching messages to end recipients. There is a Replica responsible for each remote chain.
-
- - **Updater**: The off-chain agent responsible for signing attestations of new roots.
-
- - **Watcher**: The off-chain agent responsible for reporting faulty attestations. Note that Nomad needs only *one* honest watcher to maintain security of the entire system, rather that relying on custodians or external validators. This allows Nomad to be decentralized and *highly* secure.
-
- - **Relayer**: The off-chain agent which forwards updates from the home to one or more replicas.
-
- - **Processor**: The off-chain agent which proves the validity of pending messages and sends them to end recipients.
-
- - **Governor**: A multi-sig with the power to perform permissioned actions across chains. [Learn more](../dev/governance.md)
-
- - **Dispute Window**: The time period during which fraud (if any) would be reported. Currently 30 minutes for each chain.
-
- - **Merkle (or Message) Tree**: A data structure that encodes data efficiently and securely. Used to verify message authenticity by the Home, Updater and Watcher.
-
- - **Processing or Claiming**: The final step of dispatching a message to the recipient. Processing gas fees are subsidized on most chains. However, when sending to Ethereum (due to the high gas fees), users are required to submit an additional transaction to process messages or token transfers.
diff --git a/docs/partners/nomad-bridging-to-evmos.md b/docs/partners/nomad-bridging-to-evmos.md
deleted file mode 100644
index 81fa213..0000000
--- a/docs/partners/nomad-bridging-to-evmos.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Nomad Bridge GUI
-lang: en-US
----
-
-# Nomad Bridge GUI
-
-## Nomad vs Connext, which should I use?
-
-There are two options available to send funds through the GUI, Nomad and Connext. These are two distinct protocols that are complimentary to one another. We have partnered with Connext to provide an optimal experience for users!
-
-Nomad is a secure gas efficient cross-chain protocol that allows users to bridge funds between networks. This takes, on average, 35-60 minutes. There are no fees associated with Nomad, just pay gas! Connext provides liquidity pools for Nomad assets, meaning users can receive funds on the destination chain much faster (less than 10 minutes) for an additional fee. Nomad is advised for large transfers.
-
-Connext is not available for every asset and may not be available for larger sums. We recommend using Nomad if you intend to send large transfers.
-
-## Bridging Through Nomad
-
-Bridging assets across chains using Nomad should be intuitive and easy with the Nomad GUI. In this tutorial, we will walk through the steps required to bridge your assets.
-
-Please find our production bridge GUI at [app.nomad.xyz](https://app.nomad.xyz/).
-
-If you would like to test our bridge using testnet funds before using real funds, please visit our development GUI at [development.app.nomad.xyz](https://development.app.nomad.xyz/).
-
-
-
-The sending (or “home”) chain produces a series of documents ("messages") that needs notarization. A notary (called the “updater”) is contracted to sign it. The notary can produce a fraudulent copy, but they will be punished by having their bond and license publicly revoked. When this happens, everyone relying on the notary learns that the notary is malicious. All the notary's customers can immediately block the notary and prevent any malicious access to their accounts.
-
-Nomad's Core system is split between on-chain and off-chain components. The protocol is implemented in Smart Contracts, with the bulk of the protocol interactions being automated by a series of off-chain "Agents".
-
-
-
-For a detailed deep dive on the protocol, check out the complete [Nomad Documentation](https://docs.nomad.xyz/)
-
-## Connext Architecture
-
-### How it works
-
-This iteration of Connext's network utilizes NXTP, a lightweight protocol for generalized crosschain transfers.
-
-Nxtp is made up of a simple contract that uses a locking pattern to prepare and fulfill transactions, a network of offchain routers that participate in pricing auctions and pass calldata between chains, and a user-side sdk that finds routes and prompts onchain transactions.
-
-### Transaction Lifecycle
-
-
-
-Transactions go through three phases:
-
-1. **Route Auction**: User broadcasts to our network signalling their desired route. Routers respond with sealed bids containing commitments to fulfilling the transaction within a certain time and price range.
-2. **Prepare**: Once the auction is completed, the transaction can be prepared. The user submits a transaction to TransactionManager contract on sender-side chain containing router's signed bid. This transaction locks up the users funds on the sending chiain. Upon detecting an event containing their signed bid from the chain, router submits the same transaction to TransactionManager on the receiver-side chain, and locks up a corresponding amount of liquidity. The amount locked on the receiving chain is sending amount - auction fee so the router is incentivized to complete the transaction.
-3. **Fulfill**: Upon detecting the TransactionPrepared event on the receiver-side chain, the user signs a message and sends it to a relayer, who will earn a fee for submission. The relayer (which is typically another router) then submits the message to the TransactionManager to complete the user's transaction on receiver-side chain and claim the funds locked by the router. A relayer is used here to allow users to submit transactions with arbitrary calldata on the receiving chain without needing gas to do so. The router then submits the same signed message and completes transaction on sender-side, unlocking the original amount.
-
-If a transaction is not fulfilled within a fixed expiry, it reverts and can be reclaimed by the party that called prepare on each chain (initiator).
-
-Additionally, transactions can be cancelled unilaterally by the person owed funds on that chain (router for sending chain, user for receiving chain) prior to expiry.
-
-It is important to note that neither participant should require a store to complete these transactions. All information to `prepare`, `fulfill`, or `cancel` transactions should be retrievable through contract events.
-
-### Architecture
-
-
-
-The system contains the following pieces:
-
- - Contracts - hold funds for all network participants, and lock/unlock based on data submitted by users and routers
- - Subgraph - enables scalable querying/responding by caching onchain data and events.
- - TxService - resiliently attempts to send transactions to chain (with retries, etc.)
- - Messaging - prepares, sends, and listens for message data over nats
- - Router - listens for events from messaging service and subgraph, and then dispatches transactions to txService
- - SDK - creates auctions, listens for events and creates transactions on the user side.
-
-## Nomad x Connext vs XYZ Bridge
-
-| Approach | Mechanism | Examples | Trust Minimized | Generalized | Cheap/Fast to Implement |
-| ------------------- | ---------------------------------------------------- | ------------------------------------------------------ | --------------- | ----------- | ----------------------- |
-| Natively Verified | Chain's own validator set verifies xchain data. | IBC, Near Rainbowbridge, BTC Relay, rollup entry/exit | ✅ | ✅ | ❌ |
-| Externally Verified | 3rd party validator set verifies data across chains. | Thorchain, Anyswap, Synapse, Hyphen, many many others. | ❌ | ✅ | ✅ |
-| Locally Verified | N-party system is reduced to 1:1 interaction | Connext, Hop, Nomad, simple atomic swaps. | ✅ | ❌ | ✅ |
-
-### The Nomad x Connext Approach to Bridging
-
-Nomad's core protocol facilitates generalized cross-chain message passing via an Optimistic Mechaism. While not 100% locally verified, it enables broad protocol participation via the inclusion of fraud proofs, enabling anyone with a computer to participate in securing the protocol. The main trade-off that results in the desirable trust model, also introduces a period of latency for each message. Many users will opt to leverage the highly secure Nomad Messaging channels, despite the increased latency!
-
-This is where the properties of Connext become highly desirable, as it provides comparatively quick settlement of cross-chain transfers without sacrificing on trust model, assuming there's enough liquidity to complete the transfer.
-
-## Try It For Yourself
-
-You can bridge today via the [Nomad Bridge App](https://app.nomad.xyz)!
\ No newline at end of file
diff --git a/docs/protocol/agents.md b/docs/protocol/agents.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/protocol/governance.md b/docs/protocol/governance.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/protocol/messaging.md b/docs/protocol/messaging.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/protocol/overview.md b/docs/protocol/overview.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/protocol/security.md b/docs/protocol/security.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/public/Logo-Black.png b/docs/public/Logo-Black.png
deleted file mode 100644
index 76fb618..0000000
Binary files a/docs/public/Logo-Black.png and /dev/null differ
diff --git a/docs/public/Logo-White.png b/docs/public/Logo-White.png
deleted file mode 100644
index 0c9867e..0000000
Binary files a/docs/public/Logo-White.png and /dev/null differ
diff --git a/docs/public/Nomad-Architecture.png b/docs/public/Nomad-Architecture.png
deleted file mode 100644
index 5486999..0000000
Binary files a/docs/public/Nomad-Architecture.png and /dev/null differ
diff --git a/docs/public/Upgrade-Setup-1.png b/docs/public/Upgrade-Setup-1.png
deleted file mode 100644
index 098a02a..0000000
Binary files a/docs/public/Upgrade-Setup-1.png and /dev/null differ
diff --git a/docs/public/Upgrade-Setup-2.png b/docs/public/Upgrade-Setup-2.png
deleted file mode 100644
index d3b550e..0000000
Binary files a/docs/public/Upgrade-Setup-2.png and /dev/null differ
diff --git a/docs/public/brand-kit.css b/docs/public/brand-kit.css
deleted file mode 100644
index d55c06c..0000000
--- a/docs/public/brand-kit.css
+++ /dev/null
@@ -1,27 +0,0 @@
-.logo {
- width: 100%;
- margin: 20px 0;
-}
-
-.logo--black {
- background-color: white;
- border: 1px solid black;
-}
-
-.logo--white {
- background-color: black;
-}
-
-.download {
- color: black;
- text-decoration: none;
- cursor: pointer;
- display: flex;
- align-items: center;
- margin-top: 30px;
-}
-
-.download__text {
- margin-top: 0;
- margin-right: 5px;
-}
\ No newline at end of file
diff --git a/docs/public/download.svg b/docs/public/download.svg
deleted file mode 100644
index 5965951..0000000
--- a/docs/public/download.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/public/favicon.png b/docs/public/favicon.png
deleted file mode 100644
index d7a5200..0000000
Binary files a/docs/public/favicon.png and /dev/null differ
diff --git a/docs/public/governance-diagram.png b/docs/public/governance-diagram.png
deleted file mode 100644
index d8b5c79..0000000
Binary files a/docs/public/governance-diagram.png and /dev/null differ
diff --git a/docs/public/multi-provider/.nojekyll b/docs/public/multi-provider/.nojekyll
deleted file mode 100644
index e2ac661..0000000
--- a/docs/public/multi-provider/.nojekyll
+++ /dev/null
@@ -1 +0,0 @@
-TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
\ No newline at end of file
diff --git a/docs/public/multi-provider/assets/highlight.css b/docs/public/multi-provider/assets/highlight.css
deleted file mode 100644
index b31fca2..0000000
--- a/docs/public/multi-provider/assets/highlight.css
+++ /dev/null
@@ -1,85 +0,0 @@
-:root {
- --light-hl-0: #AF00DB;
- --dark-hl-0: #C586C0;
- --light-hl-1: #000000;
- --dark-hl-1: #D4D4D4;
- --light-hl-2: #001080;
- --dark-hl-2: #9CDCFE;
- --light-hl-3: #A31515;
- --dark-hl-3: #CE9178;
- --light-hl-4: #0000FF;
- --dark-hl-4: #569CD6;
- --light-hl-5: #0070C1;
- --dark-hl-5: #4FC1FF;
- --light-hl-6: #795E26;
- --dark-hl-6: #DCDCAA;
- --light-hl-7: #267F99;
- --dark-hl-7: #4EC9B0;
- --light-hl-8: #098658;
- --dark-hl-8: #B5CEA8;
- --light-code-background: #F5F5F5;
- --dark-code-background: #1E1E1E;
-}
-
-@media (prefers-color-scheme: light) { :root {
- --hl-0: var(--light-hl-0);
- --hl-1: var(--light-hl-1);
- --hl-2: var(--light-hl-2);
- --hl-3: var(--light-hl-3);
- --hl-4: var(--light-hl-4);
- --hl-5: var(--light-hl-5);
- --hl-6: var(--light-hl-6);
- --hl-7: var(--light-hl-7);
- --hl-8: var(--light-hl-8);
- --code-background: var(--light-code-background);
-} }
-
-@media (prefers-color-scheme: dark) { :root {
- --hl-0: var(--dark-hl-0);
- --hl-1: var(--dark-hl-1);
- --hl-2: var(--dark-hl-2);
- --hl-3: var(--dark-hl-3);
- --hl-4: var(--dark-hl-4);
- --hl-5: var(--dark-hl-5);
- --hl-6: var(--dark-hl-6);
- --hl-7: var(--dark-hl-7);
- --hl-8: var(--dark-hl-8);
- --code-background: var(--dark-code-background);
-} }
-
-body.light {
- --hl-0: var(--light-hl-0);
- --hl-1: var(--light-hl-1);
- --hl-2: var(--light-hl-2);
- --hl-3: var(--light-hl-3);
- --hl-4: var(--light-hl-4);
- --hl-5: var(--light-hl-5);
- --hl-6: var(--light-hl-6);
- --hl-7: var(--light-hl-7);
- --hl-8: var(--light-hl-8);
- --code-background: var(--light-code-background);
-}
-
-body.dark {
- --hl-0: var(--dark-hl-0);
- --hl-1: var(--dark-hl-1);
- --hl-2: var(--dark-hl-2);
- --hl-3: var(--dark-hl-3);
- --hl-4: var(--dark-hl-4);
- --hl-5: var(--dark-hl-5);
- --hl-6: var(--dark-hl-6);
- --hl-7: var(--dark-hl-7);
- --hl-8: var(--dark-hl-8);
- --code-background: var(--dark-code-background);
-}
-
-.hl-0 { color: var(--hl-0); }
-.hl-1 { color: var(--hl-1); }
-.hl-2 { color: var(--hl-2); }
-.hl-3 { color: var(--hl-3); }
-.hl-4 { color: var(--hl-4); }
-.hl-5 { color: var(--hl-5); }
-.hl-6 { color: var(--hl-6); }
-.hl-7 { color: var(--hl-7); }
-.hl-8 { color: var(--hl-8); }
-pre, code { background: var(--code-background); }
diff --git a/docs/public/multi-provider/assets/icons.css b/docs/public/multi-provider/assets/icons.css
deleted file mode 100644
index 776a356..0000000
--- a/docs/public/multi-provider/assets/icons.css
+++ /dev/null
@@ -1,1043 +0,0 @@
-.tsd-kind-icon {
- display: block;
- position: relative;
- padding-left: 20px;
- text-indent: -20px;
-}
-.tsd-kind-icon:before {
- content: "";
- display: inline-block;
- vertical-align: middle;
- width: 17px;
- height: 17px;
- margin: 0 3px 2px 0;
- background-image: url(./icons.png);
-}
-@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) {
- .tsd-kind-icon:before {
- background-image: url(./icons@2x.png);
- background-size: 238px 204px;
- }
-}
-
-.tsd-signature.tsd-kind-icon:before {
- background-position: 0 -153px;
-}
-
-.tsd-kind-object-literal > .tsd-kind-icon:before {
- background-position: 0px -17px;
-}
-.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -17px;
-}
-.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -17px;
-}
-
-.tsd-kind-class > .tsd-kind-icon:before {
- background-position: 0px -34px;
-}
-.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -34px;
-}
-.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -34px;
-}
-
-.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before {
- background-position: 0px -51px;
-}
-.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -17px -51px;
-}
-.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -51px;
-}
-
-.tsd-kind-interface > .tsd-kind-icon:before {
- background-position: 0px -68px;
-}
-.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -68px;
-}
-.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -68px;
-}
-
-.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before {
- background-position: 0px -85px;
-}
-.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -17px -85px;
-}
-.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -34px -85px;
-}
-
-.tsd-kind-namespace > .tsd-kind-icon:before {
- background-position: 0px -102px;
-}
-.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -102px;
-}
-.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -102px;
-}
-
-.tsd-kind-module > .tsd-kind-icon:before {
- background-position: 0px -102px;
-}
-.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -102px;
-}
-.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -102px;
-}
-
-.tsd-kind-enum > .tsd-kind-icon:before {
- background-position: 0px -119px;
-}
-.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -119px;
-}
-.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -119px;
-}
-
-.tsd-kind-enum-member > .tsd-kind-icon:before {
- background-position: 0px -136px;
-}
-.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -136px;
-}
-.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -136px;
-}
-
-.tsd-kind-signature > .tsd-kind-icon:before {
- background-position: 0px -153px;
-}
-.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -153px;
-}
-.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -153px;
-}
-
-.tsd-kind-type-alias > .tsd-kind-icon:before {
- background-position: 0px -170px;
-}
-.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -17px -170px;
-}
-.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before {
- background-position: -34px -170px;
-}
-
-.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before {
- background-position: 0px -187px;
-}
-.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -17px -187px;
-}
-.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -34px -187px;
-}
-
-.tsd-kind-variable > .tsd-kind-icon:before {
- background-position: -136px -0px;
-}
-.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -0px;
-}
-.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -0px;
-}
-.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -0px;
-}
-
-.tsd-kind-property > .tsd-kind-icon:before {
- background-position: -136px -0px;
-}
-.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -0px;
-}
-.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -0px;
-}
-.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -0px;
-}
-
-.tsd-kind-get-signature > .tsd-kind-icon:before {
- background-position: -136px -17px;
-}
-.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -17px;
-}
-.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -17px;
-}
-.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -17px;
-}
-
-.tsd-kind-set-signature > .tsd-kind-icon:before {
- background-position: -136px -34px;
-}
-.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -34px;
-}
-.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -34px;
-}
-.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -34px;
-}
-
-.tsd-kind-accessor > .tsd-kind-icon:before {
- background-position: -136px -51px;
-}
-.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -51px;
-}
-.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -51px;
-}
-.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -51px;
-}
-
-.tsd-kind-function > .tsd-kind-icon:before {
- background-position: -136px -68px;
-}
-.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -68px;
-}
-.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -68px;
-}
-.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -68px;
-}
-
-.tsd-kind-method > .tsd-kind-icon:before {
- background-position: -136px -68px;
-}
-.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -68px;
-}
-.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -187px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -68px;
-}
-.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -68px;
-}
-
-.tsd-kind-call-signature > .tsd-kind-icon:before {
- background-position: -136px -68px;
-}
-.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -68px;
-}
-.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -68px;
-}
-.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -68px;
-}
-
-.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before {
- background-position: -136px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -153px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class
- > .tsd-kind-icon:before {
- background-position: -51px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum
- > .tsd-kind-icon:before {
- background-position: -170px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -85px;
-}
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -85px;
-}
-
-.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before {
- background-position: -136px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -153px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class
- > .tsd-kind-icon:before {
- background-position: -51px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum
- > .tsd-kind-icon:before {
- background-position: -170px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -85px;
-}
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -85px;
-}
-
-.tsd-kind-constructor > .tsd-kind-icon:before {
- background-position: -136px -102px;
-}
-.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -102px;
-}
-.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -102px;
-}
-.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -102px;
-}
-
-.tsd-kind-constructor-signature > .tsd-kind-icon:before {
- background-position: -136px -102px;
-}
-.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -102px;
-}
-.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -102px;
-}
-.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -102px;
-}
-
-.tsd-kind-index-signature > .tsd-kind-icon:before {
- background-position: -136px -119px;
-}
-.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -119px;
-}
-.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -119px;
-}
-.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -119px;
-}
-
-.tsd-kind-event > .tsd-kind-icon:before {
- background-position: -136px -136px;
-}
-.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -136px;
-}
-.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before {
- background-position: -68px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -85px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -187px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -136px;
-}
-.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -136px;
-}
-
-.tsd-is-static > .tsd-kind-icon:before {
- background-position: -136px -153px;
-}
-.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -153px;
-}
-.tsd-is-static.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -153px;
-}
-.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -153px;
-}
-.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before {
- background-position: -68px -153px;
-}
-.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -85px -153px;
-}
-.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -153px;
-}
-.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -153px;
-}
-.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -153px;
-}
-.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -187px -153px;
-}
-.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -153px;
-}
-.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before {
- background-position: -204px -153px;
-}
-.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -153px;
-}
-
-.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before {
- background-position: -136px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -170px;
-}
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -170px;
-}
-
-.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before {
- background-position: -136px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -170px;
-}
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -170px;
-}
-
-.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before {
- background-position: -136px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -153px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class
- > .tsd-kind-icon:before {
- background-position: -51px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum
- > .tsd-kind-icon:before {
- background-position: -170px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -170px;
-}
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -170px;
-}
-
-.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before {
- background-position: -136px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before {
- background-position: -153px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before {
- background-position: -119px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before {
- background-position: -51px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -68px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -85px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -102px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before {
- background-position: -170px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected
- > .tsd-kind-icon:before {
- background-position: -187px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private
- > .tsd-kind-icon:before {
- background-position: -119px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface
- > .tsd-kind-icon:before {
- background-position: -204px -187px;
-}
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited
- > .tsd-kind-icon:before {
- background-position: -221px -187px;
-}
diff --git a/docs/public/multi-provider/assets/icons.png b/docs/public/multi-provider/assets/icons.png
deleted file mode 100644
index 3836d5f..0000000
Binary files a/docs/public/multi-provider/assets/icons.png and /dev/null differ
diff --git a/docs/public/multi-provider/assets/icons@2x.png b/docs/public/multi-provider/assets/icons@2x.png
deleted file mode 100644
index 5a209e2..0000000
Binary files a/docs/public/multi-provider/assets/icons@2x.png and /dev/null differ
diff --git a/docs/public/multi-provider/assets/main.js b/docs/public/multi-provider/assets/main.js
deleted file mode 100644
index 54869f4..0000000
--- a/docs/public/multi-provider/assets/main.js
+++ /dev/null
@@ -1,52 +0,0 @@
-(()=>{var Ce=Object.create;var J=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=t=>J(t,"__esModule",{value:!0});var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&(r||i!=="default")&&J(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t},Ae=(t,e)=>De(Me(J(t!=null?Ce(Re(t)):{},"default",!e&&t&&t.__esModule?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var de=Fe((ce,he)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;iAny arguments for the Contracts object.
-Generated using TypeDoc
The MultiProvider manages a collection of Domains and allows -developers to enroll ethers Providers and Signers for each domain. It is -intended to enable faster multi-chain development by housing all chain -connections under a single roof.
-Generally, we intend developers inherit the MultiProvider. Which is to say,
-the expected usage pattern is class AppContext<T> extends MultiProvider<T>.
-This way, the MultiProvider registration methods are available on the app
-context.
However, the multiprovider also works well as a property on a Context
-class. E.g. class AppContext<T> { protected provider: MultiProvider<T> }
The Domain type parameter to the MultiProvider specifies an internal data
-carrier that describes chains. This can be as simple as a name and a number.
-This is the logical place to insert app-specific chain information. E.g. if
-your application needs to know the blocktime of a chain, it should be on the
-Domain type.
Clear all signers from all registered domains.
-Resolves the address of a Signer on a domain (or undefined, if no Signer)
-A domain name or number.
-A Promise for the address of the registered signer (if any)
-Returns the most privileged connection registered to a domain. E.g. -this function will attempt to return a Signer, then attempt to return the -Provider (if no Signer is registered). If neither Signer nor Provider is -registered for a domain, it will return undefined
-A domain name or number.
-A Signer (if any), otherwise a Provider (if any), otherwise - undefined
-Get the Provider associated with a doman (if any)
-A domain name or number.
-The currently registered Provider (or none)
-Return the signer registered to a domain (if any).
-A domain name or number.
-The registered signer (or undefined)
-Check whether the MultiProvider is aware of a domain.
-A domain name or number.
-true if the Domain has been registered, else false.
-Get the Connection associated with a doman (or error)
-A domain name or number.
-A Signer
-Get the Provider associated with a doman (or error)
-A domain name or number.
-A Provider
-Get the Signer associated with a doman (or error)
-A domain name or number.
-A Signer
-Resgister a domain with the MultiProvider. This allows the multiprovider -to resolves tha domain info, and reference it by name or number.
-The Domain object to register.
-Register an ethers Provider for a specified domain.
-A domain name or number.
-An ethers Provider to be used by requests to that domain.
-Shortcut to register a provider by its HTTP RPC URL.
-A domain name or number.
-The HTTP RPC Url
-Register an ethers Signer for a specified domain.
-A domain name or number.
-An ethers Signer to be used by requests to that domain.
-A shortcut for registering a basic local privkey signer on a domain.
-A domain name or number.
-A private key string passed to ethers.Wallet
Resolve a domain name (or number) to the canonical number.
-This function is used extensively to disambiguate domains.
-A domain name or number.
-The canonical domain number.
-Resolve the name of a registered Domain, from its name or number.
-Similar to resolveDomain.
A domain name or number.
-The name
-Remove the registered ethers Signer from a domain. This function will -attempt to preserve any Provider that was previously connected to this -domain.
-A domain name or number.
-Generated using TypeDoc
The MultiProvider is a management system for
-ethers.js providers and signers that helps
-developers connect to multiple networks simultaneously. It is part
-of the Nomad project, but may
-be useful to other multi-chain systems.
import { MultiProvider, Domain } from '@nomad-xyz/multi-provider';
const myApp = new MultiProvider<Domain>();
myApp.registerDomain({ name: 'polygon', id: 50 });
myApp.registerDomain({ name: 'ethereum', id: 1 });
myApp.registerRpcProvider('ethereum', 'https://...');
myApp.registerRpcProvider('polygon', 'https://...');
myApp.registerSigner('ethereum', someSigner);
myApp.registerSigner('polygon', someSigner);
-
-
-
- yarn build
-
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Converts a 20-byte (or other length) ID to a 32-byte ID. -Ensures that a bytes-like is 32 long. left-padding with 0s if not.
-A string or array of bytes to canonize
-A Uint8Array of length 32
-Converts a chain id (listed at at chainlist.org) to a Nomad domain.
-A chain id number
-A Nomad domain number in decimal
-Sleep async for some time.
-the number of milliseconds to sleep
-A delay promise
-Equality for the NomadIdentifier
Lhs of equality
-Rhs of equality
-true if equal, else false
-Converts an Nomad ID of 20 or 32 bytes to the corresponding EVM Address.
-For 32-byte IDs this enforces the EVM convention of using the LAST 20 bytes.
-The data to truncate
-A 20-byte, 0x-prepended hex string representing the EVM Address
-Converts a string (e.g. "eth" for Ethereum) to a decimal formatted Nomad -domain.
-The chain string
-A Nomad domain number in decimal
-Converts a string (e.g. "eth" for Ethereum) to a Nomad domain displayed as -a hex string.
-The chain string
-A 0x prefixed Nomad domain in hex (string)
-Parse a number or string into an integer number
-A number, decimal string, or hex string
-The integer it represents
-Generated using TypeDoc
The BridgeContext manages connections to Nomad Bridge contracts. -It inherits from the {@link MultiProvider} and {@link NomadContext} and -ensures that its contracts always use the latest registered providers and -signers.
-Clear all signers from all registered domains.
-Resolves the address of a Signer on a domain (or undefined, if no Signer)
-A domain name or number.
-A Promise for the address of the registered signer (if any)
-Get the BridgeContracts for a given domain (or undefined)
-A domain name or number.
-a BridgeContracts object (or undefined)
-Returns the most privileged connection registered to a domain. E.g. -this function will attempt to return a Signer, then attempt to return the -Provider (if no Signer is registered). If neither Signer nor Provider is -registered for a domain, it will return undefined
-A domain name or number.
-A Signer (if any), otherwise a Provider (if any), otherwise - undefined
-Get the {@link CoreContracts} for a given domain (or undefined)
-A domain name or number.
-a {@link CoreContracts} object (or undefined)
-Get the registered {@link Domain} object (if any)
-A domain name or number.
-A {@link Domain} (if the domain has been registered)
-Get the Provider associated with a doman (if any)
-A domain name or number.
-The currently registered Provider (or none)
-Resolve the replica for the Home domain on the Remote domain (if any).
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-the sending domain
-the receiving domain
-An interface for the Replica (if any)
-Return the signer registered to a domain (if any).
-A domain name or number.
-The registered signer (or undefined)
-Discovers the governor domain of this nomad deployment and returns the -associated Core.
-The identifier of the governing domain
-Check whether the {@link MultiProvider} is aware of a domain.
-A domain name or number.
-true if the {@link Domain} has been registered, else false.
-Get the BridgeContracts for a given domain (or throw an error)
-A domain name or number.
-a BridgeContracts object
-Get the Connection associated with a doman (or error)
-A domain name or number.
-A Signer
-Get the {@link CoreContracts} for a given domain (or throw an error)
-A domain name or number.
-a {@link CoreContracts} object
-Get the registered {@link Domain} object (or error)
-A domain name or number.
-A {@link Domain}
-Get the Provider associated with a doman (or error)
-A domain name or number.
-A Provider
-Resolve the replica for the Home domain on the Remote domain (or throws).
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-the sending domain
-the receiving domain
-An interface for the Replica
-Get the Signer associated with a doman (or error)
-A domain name or number.
-A Signer
-Ensure that the contracts on a given domain are connected to the -currently-registered signer or provider.
-Resgister a domain with the MultiProvider. This allows the multiprovider -to resolves tha domain info, and reference it by name or number.
-The Domain object to register.
-Register an ethers Provider for a specified domain.
-A domain name or number.
-An ethers Provider to be used by requests to that domain.
-Shortcut to register a provider by its HTTP RPC URL.
-A domain name or number.
-The HTTP RPC Url
-Register an ethers Signer for a specified domain.
-A domain name or number.
-An ethers Signer to be used by requests to that domain.
-A shortcut for registering a basic local privkey signer on a domain.
-A domain name or number.
-A private key string passed to ethers.Wallet
Resolve the canonical domain and identifier for a representation on some -domain.
-The domain hosting the representation
-The address of the representation on that domain
-The domain and ID for the canonical token
-Resolve an interface for the canonical token corresponding to a -representation on some domain.
-The domain hosting the representation
-The address of the representation on that domain
-An interface for that token
-Resolve a domain name (or number) to the canonical number.
-This function is used extensively to disambiguate domains.
-A domain name or number.
-The canonical domain number.
-Resolve the name of a registered {@link Domain}, from its name or number.
-Similar to resolveDomain.
A domain name or number.
-The name
-Resolve the local representation of a token on some domain. E.g. find the -deployed Celo address of Ethereum's Sushi Token.
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-the target domain, which hosts the representation
-The token to locate on that domain
-An interface for that token (if it has been deployed on that -domain)
-Resolve the local representation of a token on ALL known domain. E.g. -find ALL deployed addresses of Ethereum's Sushi Token, on all registered -domains.
-WARNING: do not hold references to these contracts, as they will not be -reconnected in the event the chain connection changes.
-The token to locate on ALL domains
-A ResolvedTokenInfo object with representation addresses
-Send tokens from one domain to another. Approves the bridge if necessary.
-The domain to send from
-The domain to send to
-The canonical token to send (details from originating chain)
-The amount (in smallest unit) to send
-The identifier to send to on the to domain
TRUE to enable fast liquidity; FALSE to require no fast liquidity
-Any tx overrides (e.g. gas price)
-a TransferMessage object representing the in-flight - transfer
-Send a chain's native asset from one chain to another using the
-EthHelper contract.
The domain to send from
-The domain to send to
-The amount (in smallest unit) to send
-The identifier to send to on the to domain
TRUE to enable fast liquidity; FALSE to require no fast liquidity
-Any tx overrides (e.g. gas price)
-a TransferMessage object representing the in-flight - transfer
-Remove the registered ethers Signer from a domain. This function will -attempt to preserve any Provider that was previously connected to this -domain.
-A domain name or number.
-Generated using TypeDoc
Generated using TypeDoc
The BridgeMessage extends {@link nomadMessage} with Bridge-specific -functionality.
-The message body
-The keccak256 hash of the message body
-The committed root when this message was dispatched.
-The destination domain for this message
-The destination and nonceof this message.
-The domain from which the message was sent
-The messageHash committed to the tree in the Home contract.
-The index of the leaf in the contract.
-The domain nonce for this message
-The domain from which the message was sent. Alias for from
The receipt of the TX that dispatched this message
-The identifer for the recipient for this message
-The identifier for the sender of this message
-The hash of the transaction that dispatched this message
-Resolves the asset that is being transfered
-WARNING: do not hold references to these contract, as they will not be -reconnected in the event the chain connection changes.
-The resolved token information.
-Resolves an interface for the asset that is being transfered on the chain -TO WHICH it is being transferred
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-The resolved token interface.
-Resolves an interface for the asset that is being transfered on the chain -FROM WHICH it is being transferred
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-The resolved token interface.
-Returns the timestamp after which it is possible to process this message.
-Note: return the timestamp after which it is possible to process messages -within an Update. The timestamp is most relevant during the time AFTER the -Update has been Relayed to the Replica and BEFORE the message in question -has been Processed.
-Considerations:
-The timestamp at which a message can confirm
-Checks whether the message has been delivered.
-true if processed, else false.
-Get all lifecycle events associated with this message
-An array of {@link AnnotatedLifecycleEvent} objects
-Get the Home Update event associated with this message (if any)
An {@link AnnotatedUpdate} (if any)
-Get the Replica Process event associated with this message (if any)
An {@link AnnotatedProcess} (if any)
-Get the Replica Update event associated with this message (if any)
An {@link AnnotatedUpdate} (if any)
-Retrieve the replica status of this message.
-The {@link ReplicaMessageStatus} corresponding to the solidity -status of the message.
-Returns a promise that resolves when the message has been delivered.
-WARNING: May never resolve. Oftern takes hours to resolve.
-Polling options.
-Instantiate one or more messages from a receipt.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-the receipt
-an array of {@link NomadMessage} objects
-Instantiate one or more messages from a tx hash.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-an array of {@link NomadMessage} objects
-Instantiate EXACTLY one message from a receipt.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-the receipt
-an array of {@link NomadMessage} objects
-Instantiate EXACTLY one message from a transaction has.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-an array of {@link NomadMessage} objects
-Attempt to instantiate a BridgeMessage from an existing -{@link nomadMessage}
-The {@link NomadContext} to use.
-The existing nomadMessage
-A Bridge message
-Attempt to instantiate some BridgeMessages from a transaction receipt
-The {@link NomadContext} to use.
-the domain on which the receipt was logged
-The receipt
-an array of BridgeMessage objects
-Attempt to instantiate some BridgeMessages from a transaction hash by -retrieving and parsing the receipt.
-The {@link NomadContext} to use.
-the domain on which the receipt was logged
-The transaction hash
-an array of BridgeMessage objects
-Attempt to instantiate EXACTLY one BridgeMessage from a transaction receipt
-The BridgeContext to use.
-the domain on which the receipt was logged
-The receipt
-an array of BridgeMessage objects
-Attempt to instantiate EXACTLY one BridgeMessages from a transaction hash -by retrieving and parsing the receipt.
-The {@link NomadContext} to use.
-the domain on which the receipt was logged
-The transaction hash
-an array of BridgeMessage objects
-Generated using TypeDoc
A TransferMessage extends the BridgeMessage with transfer-specific -functionality.
-The amount of tokens being transferred (in the smallest unit)
-The message body
-The keccak256 hash of the message body
-The committed root when this message was dispatched.
-The destination domain for this message
-The destination and nonceof this message.
-The domain from which the message was sent
-The messageHash committed to the tree in the Home contract.
-The index of the leaf in the contract.
-The domain nonce for this message
-The domain from which the message was sent. Alias for from
The ID used for prefilling this transfer message.
-The receipt of the TX that dispatched this message
-The identifer for the recipient for this message
-The identifier for the sender of this message
-The identifier for the recipient of the tokens
-The hash of the transaction that dispatched this message
-Resolves the asset that is being transfered
-WARNING: do not hold references to these contract, as they will not be -reconnected in the event the chain connection changes.
-The resolved token information.
-Resolves an interface for the asset that is being transfered on the chain -TO WHICH it is being transferred
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-The resolved token interface.
-Resolves an interface for the asset that is being transfered on the chain -FROM WHICH it is being transferred
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-The resolved token interface.
-Returns the timestamp after which it is possible to process this message.
-Note: return the timestamp after which it is possible to process messages -within an Update. The timestamp is most relevant during the time AFTER the -Update has been Relayed to the Replica and BEFORE the message in question -has been Processed.
-Considerations:
-The timestamp at which a message can confirm
-Check if the transfer has been prefilled using the fast liquidity system.
-true if the transfer has been prefilled. Else false.
-Checks whether the message has been delivered.
-true if processed, else false.
-Get all lifecycle events associated with this message
-An array of {@link AnnotatedLifecycleEvent} objects
-Get the Home Update event associated with this message (if any)
An {@link AnnotatedUpdate} (if any)
-Get the Replica Process event associated with this message (if any)
An {@link AnnotatedProcess} (if any)
-Get the Replica Update event associated with this message (if any)
An {@link AnnotatedUpdate} (if any)
-Retrieve the replica status of this message.
-The {@link ReplicaMessageStatus} corresponding to the solidity -status of the message.
-Returns a promise that resolves when the message has been delivered.
-WARNING: May never resolve. Oftern takes hours to resolve.
-Polling options.
-Instantiate one or more messages from a receipt.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-the receipt
-an array of {@link NomadMessage} objects
-Instantiate one or more messages from a tx hash.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-an array of {@link NomadMessage} objects
-Instantiate EXACTLY one message from a receipt.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-the receipt
-an array of {@link NomadMessage} objects
-Instantiate EXACTLY one message from a transaction has.
-the {@link NomadContext} object to use
-the domain on which the receipt was logged
-an array of {@link NomadMessage} objects
-Attempt to instantiate a BridgeMessage from an existing -{@link nomadMessage}
-The {@link NomadContext} to use.
-The existing nomadMessage
-A Bridge message
-Attempt to instantiate some BridgeMessages from a transaction receipt
-The {@link NomadContext} to use.
-the domain on which the receipt was logged
-The receipt
-an array of BridgeMessage objects
-Attempt to instantiate some BridgeMessages from a transaction hash by -retrieving and parsing the receipt.
-The {@link NomadContext} to use.
-the domain on which the receipt was logged
-The transaction hash
-an array of BridgeMessage objects
-Attempt to instantiate EXACTLY one BridgeMessage from a transaction receipt
-The BridgeContext to use.
-the domain on which the receipt was logged
-The receipt
-an array of BridgeMessage objects
-Attempt to instantiate EXACTLY one BridgeMessages from a transaction hash -by retrieving and parsing the receipt.
-The {@link NomadContext} to use.
-the domain on which the receipt was logged
-The transaction hash
-an array of BridgeMessage objects
-Generated using TypeDoc
This package includes the BridgeContext, a management system for Nomad core
-contracts, which inherits from the MultiProvider. BridgeContext allows
-developers to easily interact with the Nomad Token Bridge on any number of
-networks.
yarn build
-
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
This package includes the CallBatch, a management system for Nomad governance
-actions. CallBatch allows developers to easily instruct the Nomad governance
-system to interact with contracts on any network. It is intended to be used in
-conjunction with a NomadContext object.
yarn build
-
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Optional override for formatting stack traces
-Create .stack property on a target object
-Generated using TypeDoc
The NomadContext manages connections to Nomad core and Bridge contracts. -It inherits from the {@link MultiProvider}, and ensures that its contracts -always use the latest registered providers and signers.
-For convenience, we've pre-constructed contexts for mainnet and testnet -deployments. These can be imported directly.
-Clear all signers from all registered domains.
-Resolves the address of a Signer on a domain (or undefined, if no Signer)
-A domain name or number.
-A Promise for the address of the registered signer (if any)
-Returns the most privileged connection registered to a domain. E.g. -this function will attempt to return a Signer, then attempt to return the -Provider (if no Signer is registered). If neither Signer nor Provider is -registered for a domain, it will return undefined
-A domain name or number.
-A Signer (if any), otherwise a Provider (if any), otherwise - undefined
-Get the CoreContracts for a given domain (or undefined)
-A domain name or number.
-a CoreContracts object (or undefined)
-Get the registered {@link Domain} object (if any)
-A domain name or number.
-A {@link Domain} (if the domain has been registered)
-Get the Provider associated with a doman (if any)
-A domain name or number.
-The currently registered Provider (or none)
-Resolve the replica for the Home domain on the Remote domain (if any).
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-the sending domain
-the receiving domain
-An interface for the Replica (if any)
-Return the signer registered to a domain (if any).
-A domain name or number.
-The registered signer (or undefined)
-Discovers the governor domain of this nomad deployment and returns the -associated Core.
-The identifier of the governing domain
-Check whether the {@link MultiProvider} is aware of a domain.
-A domain name or number.
-true if the {@link Domain} has been registered, else false.
-Get the Connection associated with a doman (or error)
-A domain name or number.
-A Signer
-Get the CoreContracts for a given domain (or throw an error)
-A domain name or number.
-a CoreContracts object
-Get the registered {@link Domain} object (or error)
-A domain name or number.
-A {@link Domain}
-Get the Provider associated with a doman (or error)
-A domain name or number.
-A Provider
-Resolve the replica for the Home domain on the Remote domain (or throws).
-WARNING: do not hold references to this contract, as it will not be -reconnected in the event the chain connection changes.
-the sending domain
-the receiving domain
-An interface for the Replica
-Get the Signer associated with a doman (or error)
-A domain name or number.
-A Signer
-Ensure that the contracts on a given domain are connected to the -currently-registered signer or provider.
-Resgister a domain with the MultiProvider. This allows the multiprovider -to resolves tha domain info, and reference it by name or number.
-The Domain object to register.
-Register an ethers Provider for a specified domain.
-A domain name or number.
-An ethers Provider to be used by requests to that domain.
-Shortcut to register a provider by its HTTP RPC URL.
-A domain name or number.
-The HTTP RPC Url
-Register an ethers Signer for a specified domain.
-A domain name or number.
-An ethers Signer to be used by requests to that domain.
-A shortcut for registering a basic local privkey signer on a domain.
-A domain name or number.
-A private key string passed to ethers.Wallet
Resolve a domain name (or number) to the canonical number.
-This function is used extensively to disambiguate domains.
-A domain name or number.
-The canonical domain number.
-Resolve the name of a registered {@link Domain}, from its name or number.
-Similar to resolveDomain.
A domain name or number.
-The name
-Remove the registered ethers Signer from a domain. This function will -attempt to preserve any Provider that was previously connected to this -domain.
-A domain name or number.
-Generated using TypeDoc
A deserialized Nomad message.
-The message body
-The keccak256 hash of the message body
-The committed root when this message was dispatched.
-The destination domain for this message
-The destination and nonceof this message.
-The domain from which the message was sent
-The messageHash committed to the tree in the Home contract.
-The index of the leaf in the contract.
-The domain nonce for this message
-The domain from which the message was sent. Alias for from
The receipt of the TX that dispatched this message
-The identifer for the recipient for this message
-The identifier for the sender of this message
-The hash of the transaction that dispatched this message
-Returns the timestamp after which it is possible to process this message.
-Note: return the timestamp after which it is possible to process messages -within an Update. The timestamp is most relevant during the time AFTER the -Update has been Relayed to the Replica and BEFORE the message in question -has been Processed.
-Considerations:
-The timestamp at which a message can confirm
-Checks whether the message has been delivered.
-true if processed, else false.
-Get all lifecycle events associated with this message
-An array of AnnotatedLifecycleEvent objects
-Get the Home Update event associated with this message (if any)
An AnnotatedUpdate (if any)
-Get the Replica Process event associated with this message (if any)
An AnnotatedProcess (if any)
-Get the Replica Update event associated with this message (if any)
An AnnotatedUpdate (if any)
-Retrieve the replica status of this message.
-The ReplicaMessageStatus corresponding to the solidity -status of the message.
-Returns a promise that resolves when the message has been delivered.
-WARNING: May never resolve. Oftern takes hours to resolve.
-Polling options.
-Instantiate one or more messages from a receipt.
-the NomadContext object to use
-the domain on which the receipt was logged
-the receipt
-an array of NomadMessage objects
-Instantiate one or more messages from a tx hash.
-the NomadContext object to use
-the domain on which the receipt was logged
-an array of NomadMessage objects
-Instantiate EXACTLY one message from a receipt.
-the NomadContext object to use
-the domain on which the receipt was logged
-the receipt
-an array of NomadMessage objects
-Instantiate EXACTLY one message from a transaction has.
-the NomadContext object to use
-the domain on which the receipt was logged
-an array of NomadMessage objects
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
This package includes the NomadContext, a management system for Nomad core
-contracts, which inherits from the MultiProvider. NomadContext allows
-developers to easily interact with the Nomad system on any number of networks.
yarn build
-
-Generated using TypeDoc
Generated using TypeDoc
Parse a serialized Nomad message from raw bytes.
-Generated using TypeDoc
Thoughtful guides to help you learn more about building cross-chain applications with Nomad.
+ setSearchTerm(event.currentTarget.value)} + placeholder="🔍 Search Nomad's guides..." /> +{props.description}
+{props.description}
+¯\_(ツ)_/¯ There is no guide matching matching your search.
+sudo required.
+ {props.description}
++ {siteConfig.tagline} +
+{props.description}
+{MonorepoReleaseVersion}
+ •
+
+
+ + Read the{' '} + + release notes + {' '} + . +
+{AgentsReleaseVersion}
+ •
+
+
+ + Read the{' '} + + release notes + {' '} + . +
++ Thanks for contributing feedback about our docs! +
+ ) : ( + + ); + }; + return ( + <> +
Abstract class for managing collections of contracts
-