diff --git a/blog/2019-05-28-first-blog-post.md b/blog/2019-05-28-first-blog-post.md
deleted file mode 100644
index 02f3f81bd2..0000000000
--- a/blog/2019-05-28-first-blog-post.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-slug: first-blog-post
-title: First Blog Post
-authors:
- name: Gao Wei
- title: Docusaurus Core Team
- url: https://github.com/wgao19
- image_url: https://github.com/wgao19.png
-tags: [hola, docusaurus]
----
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
diff --git a/blog/2019-05-29-long-blog-post.md b/blog/2019-05-29-long-blog-post.md
deleted file mode 100644
index 26ffb1b1f6..0000000000
--- a/blog/2019-05-29-long-blog-post.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-slug: long-blog-post
-title: Long Blog Post
-authors: endi
-tags: [hello, docusaurus]
----
-
-This is the summary of a very long blog post,
-
-Use a `` comment to limit blog post size in the list view.
-
-
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx
deleted file mode 100644
index c04ebe323e..0000000000
--- a/blog/2021-08-01-mdx-blog-post.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-slug: mdx-blog-post
-title: MDX Blog Post
-authors: [slorber]
-tags: [docusaurus]
----
-
-Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).
-
-:::tip
-
-Use the power of React to create interactive blog posts.
-
-```js
-
-```
-
-
-
-:::
diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg
deleted file mode 100644
index 11bda09284..0000000000
Binary files a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg and /dev/null differ
diff --git a/blog/2021-08-26-welcome/index.md b/blog/2021-08-26-welcome/index.md
deleted file mode 100644
index 9455168f17..0000000000
--- a/blog/2021-08-26-welcome/index.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-slug: welcome
-title: Welcome
-authors: [slorber, yangshun]
-tags: [facebook, hello, docusaurus]
----
-
-[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).
-
-Simply add Markdown files (or folders) to the `blog` directory.
-
-Regular blog authors can be added to `authors.yml`.
-
-The blog post date can be extracted from filenames, such as:
-
-- `2019-05-30-welcome.md`
-- `2019-05-30-welcome/index.md`
-
-A blog post folder can be convenient to co-locate blog post images:
-
-![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)
-
-The blog supports tags as well!
-
-**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
diff --git a/blog/authors.yml b/blog/authors.yml
deleted file mode 100644
index bcb2991563..0000000000
--- a/blog/authors.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-endi:
- name: Endilie Yacop Sucipto
- title: Maintainer of Docusaurus
- url: https://github.com/endiliey
- image_url: https://github.com/endiliey.png
-
-yangshun:
- name: Yangshun Tay
- title: Front End Engineer @ Facebook
- url: https://github.com/yangshun
- image_url: https://github.com/yangshun.png
-
-slorber:
- name: Sébastien Lorber
- title: Docusaurus maintainer
- url: https://sebastienlorber.com
- image_url: https://github.com/slorber.png
diff --git a/docs/clarity/crash-course.md b/docs/clarity/crash-course.md
deleted file mode 100644
index 89a864e9c6..0000000000
--- a/docs/clarity/crash-course.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: Clarity Crash Course
-description: A quick introduction to the Clarity programming language
-sidebar_position: 1
----
-
-You now understand why Clarity exists and what problems it was designed to solve.
-:::note
-If you didn't read the previous section, go ahead and [do that first](./index.md).
-:::
-
-Now let's do a really quick introduction to Clarity so you can familiarize yourself with the language and syntax.
-
-This crash course is designed for people who have some experience with programming but are new to Clarity. You don't need smart contract development experience, but if you do, with something like Solidity, you'll pick this up really quick.
-
-Once you've familiarized yourself with the language, if you'd like to continue your journey and master Clarity to become a smart contract developer, we recommend either the book, [Clarity of Mind](https://book.clarity-lang.org/title-page.html), or the course, [Clarity Universe](https://clarity-lang.org/universe), which has both a self-paced and guided cohort-based version.
-
-## Your First Clarity Smart Contract
-
-We're going to build a basic Clarity smart contract using [Clarity Tools](https://clarity.tools/code/new), so you won't have to install anything for this introduction.
-
-Visit that link, and it will open up a new contract for you.
-
-![Clarity Tools New](tools-new.png)
-
-Already we can take a look at a few basic features of both Clarity and Clarity Tools. First, on the left you'll see that our Clarity code is being evaluated in real-time for us. This is really nice for experimenting and demonstrating basic Clarity code.
-
-Next up we can see our first bit of Clarity code.
-
-Those two semicolons are how we denote comments in Clarity.
-
-Then the next line down we have a public function declaration.
-
-Here is out first glimpse of Clarity's syntax, which may be new to you depending on your development background.
-
-For those new to Clarity, it's a little weird and uncomfortable at first, but one of the core design tenets of Clarity is simplicity and readability, and the more you work with it the more you come to appreciate the succinctness and _clarity_ (sorry) of the code you are writing.
-
-Clarity takes inspiration from LISP, and you can think of everything in Clarity as a list inside of a list, or an expression inside of an expression. Everything in Clarity is wrapped in parentheses, function definitions, variable declarations, function parameters, etc.
-
-So here we are saying that we want to:
-
-1. Call a function called `define-read-only`. This is a built-in function, one of many that you can refer to [in the docs](./language-functions.mdx).
-
-2. Pass it a parameter of hello, which corresponds to the method signature type.
-
-3. Pass it a parameter of "Hello", which corresponds to the function body.
-
-You can refer to the [`define-read-only`](https://docs.stacks.co/docs/write-smart-contracts/clarity-language/language-functions#define-read-only) documentation to see these parameters.
-
-Why am I describing this as if we are calling a function? Because we are, and it's an important concept in Clarity that everything is an expression inside of an expression.
-
-Let's expand on this concept a bit by deleting this and writing a new function.
-
-```clarity
-(define-data-var count int 0)
-(define-public (add-number (number int))
- (let
- (
- (current-count count)
- )
-
- (var-set count (+ 1 number))
- (ok (var-get count))
- )
-)
-
-
-(add-number 5)
-```
-
-If you type that into Clarity Tools, you'll see the result that gets printed is 6.
-
-![Clarity Tools New](tools-new.png)
-
-Okay there are actually a lot of Clarity concepts packed into this simple code.
-
-Let's go over what this code is doing, and you'll pick up some Clarity concepts along the way.
-
-The first thing we are doing here is defining a new variable called `count` and setting its initial value to 0.
-
-This will be a persistent state variable, so this is actually getting written to the blockchain. If you are new to smart contract development, the fact that data is persisted within the file like this might take some getting used to.
-
-So if we were to write and deploy this contract (which you can do in the Stacks Explorer if you like), as soon as it gets deployed, it will run through the contract line by line executing anything at the root level.
-
-Remember that Clarity is interpreted, not compiled, so there's not compile step when developing Clarity contracts.
-
-So this `define-data-var` will be evaluated and the `count` variable will be initialized with a value of 0.
-
-Next we are defining a public function called `add-number`, which will be created (but not called) on deploy as well.
-
-:::note
-In Clarity, we have public, private, and read only functions. Public allow you to modify chain state and can be called from anywhere, private do the same except they can only be called from within the contract, and read only will fail if they attempt to modify state.
-:::
-
-This function is taking a single parameter, called `number` that is a type of `int`.
-
-Now, what is this `let` business all about? Remember that we said that everything in Clarity is an expression and declaring new functions is just a matter of calling the `define-public` function?
-
-Well the second argument to this is the function body, but it can only evaluate a single expression.
-
-So this `let` function is a way of wrapping a multi-step function into a single argument.
-
-But it does one other crucial thing at the beginning. This line:
-
-```clarity
-(current-count count)
-```
-
-Sets a variable that only exists in the context of this particular function. So here we are saying, create a new variable called `current-count` and set it equal to the value of `count`.
-
-Then we use that in our actual function body down below.
-
-In the next step we are setting the value of our `count` variable to 1 plus whatever number we passed in. The `+` is just another call to a function where the parameters are the numbers we want to add.
-
-Then, finally, we are returning the new value of `count` with our `ok` response, indicating that the function completed successfully.
-
-Then in the very last line we are actually calling this function, passing in 5.
-
-This was a very brief overview of Clarity just to get your feet wet and give you a taste of how it works.
-
-If you are interested in diving into the details, we highly recommend going through either the [Clarity Book](https://book.clarity-lang.org/title-page.html) or [Clarity Universe](https://clarity-lang.org/universe), depending on your learning style.
-
-If you prefer to dive directly into the docs, you can continue on ahead and check out the types, keywords, and functions available in Clarity, as well as a few sample contracts.
diff --git a/docs/clarity/index.md b/docs/clarity/index.md
deleted file mode 100644
index a90f91b599..0000000000
--- a/docs/clarity/index.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Clarity Overview
-description: Overview and guides for getting started with Clarity
-sidebar_label: Clarity
-sidebar_position: 5
----
-
-Clarity is a **decidable** smart contract language that optimizes for predictability and security, designed for the Stacks blockchain. Smart contracts allow developers to encode essential business logic on a blockchain.
-
-The design decisions behind Clarity were based heavily on taking lessons learned in common Solidity exploits and creating a language that has been purpose-built for safety and security in mind.
-
-These docs serve primarily as a reference for the functions and keywords that you can use in Clarity.
-
-In order to learn Clarity, we recommend diving into the [Clarity of Mind](https://book.clarity-lang.org/), an online book to teach you everything you need to know to build robust smart contracts, or joining a [Clarity Camp](https://clarity-lang.org/universe#camp), the cohort-based immersive Clarity experience.
-
-## What makes Clarity different
-
-The following section is an excerpt from the excellent book, [Clarity of Mind](https://book.clarity-lang.org/ch00-00-introduction.html):
-
-The number of smart contract languages grows by the year. Choosing a first language can be challenging, especially for a beginner. The choice is largely dictated by the ecosystem you are interested in, although some languages are applicable to more than just one platform. Each language has its own upsides and downsides and it is out of the scope of this book to look at all of them. Instead, we will focus on what sets Clarity apart and why it is a prime choice if you require the utmost security and transparency.
-
-One of the core precepts of Clarity is that it is secure by design. The design process was guided by examining common pitfalls, mistakes, and vulnerabilities in the field of smart contract engineering as a whole. There are countless real world examples of where developer failure led to the loss or theft of vast amounts of tokens. To name two big ones: an issue that has become known as the Parity bug led to the irreparable loss of millions of dollars worth of Ethereum. Second, the hacking of The DAO (a "Decentralized Autonomous Organization") caused financial damage so great that the Ethereum Foundation decided to issue a contentious hard fork that undid the theft. These and many other mistakes could have been prevented in the design of the language itself.
-
-### Clarity is interpreted, not compiled
-
-Clarity code is interpreted and committed to the chain exactly as written. Solidity and other languages are compiled to byte-code before it is submitted to the chain. The danger of compiled smart contract languages is two-fold: first, a compiler adds a layer of complexity. A bug in the compiler may lead to different byte-code than was intended and thus carries the risk of introducing a vulnerability. Second, byte-code is not human-readable, which makes it very hard to verify what the smart contract is actually doing. Ask yourself, would you sign a contract you cannot read? If your answer is no, then why should it be any different for smart contracts? With Clarity, what you see is what you get.
-
-### Clarity is decidable
-
-A decidable language has the property that from the code itself, you can know with certainty what the program will do. This avoids issues like the halting problem. With Clarity you know for sure that given any input, the program will halt in a finite number of steps. In simple terms: it is guaranteed that program execution will end. Decidability also allows for complete static analysis of the call graph so you get an accurate picture of the exact cost before execution. There is no way for a Clarity call to "run out of gas" in the middle of the call. We explore this idea more, along with a discussion on Turing completeness, in the [security deep dive on decidability](./security/decidable.md).
-
-### Clarity does not permit reentrancy
-
-Reentrancy is a situation where one smart contract calls into another, which then calls back into the first contract—the call "re-enters" the same logic. It may allow an attacker to trigger multiple token withdrawals before the contract has had a chance to update its internal balance sheet. Clarity's design considers reentrancy an anti-feature and disallows it on the language level.
-
-### Clarity guards against overflow and underflows
-
-Overflows and underflows happen when a calculation results in a number that is either too large or too small to be stored, respectively. These events throw smart contracts into disarray and may intentionally be triggered in poorly written contracts by attackers. Usually this leads to a situation where the contract is either frozen or drained of tokens. Overflows and underflows of any kind automatically cause a transaction to be aborted in Clarity.
-
-### Support for custom tokens is built-in
-
-Issuance of custom fungible and non-fungible tokens is a popular use-case for smart contracts. Custom token features are built into the Clarity language. Developers do not need to worry about creating an internal balance sheet, managing supply, and emitting token events. Creating custom tokens is covered in depth in later chapters.
-
-### On Stacks, transactions are secured by post conditions
-
-In order to further safeguard user tokens, post conditions can be attached to transactions to assert the chain state has changed in a certain way once the transaction has completed. For example, a user calling into a smart contract may attach a post condition that states that after the call completes, exactly 500 STX should have been transferred from one address to another. If the post condition check fails, then the entire transaction is reverted. Since custom token support is built right into Clarity, post conditions can also be used to guard any other token in the same way.
-
-### Returned responses cannot be left unchecked
-
-Public contract calls must return a so-called response that indicates success or failure. Any contract that calls another contract is required to properly handle the response. Clarity contracts that fail to do so are invalid and cannot be deployed on the network. Other languages like Solidity permit the use of low level calls without requiring the return value to be checked. For example, a token transfer can fail silently if the developer forgets to check the result. In Clarity it is not possible to ignore errors, although that obviously does prevent buggy error handling on behalf of the developer. Responses and error handling are covered extensively in the chapters on functions and control flow.
-
-### Composition over inheritance
-
-Clarity adopts a composition over inheritance. It means that Clarity smart contracts do not inherit from one another like you see in languages like Solidity. Developers instead define traits which are then implemented by different smart contracts. It allows contracts to conform to different interfaces with greater flexibility. There is no need to worry about complex class trees and contracts with implicit inherited behavior.
-
-### Access to the base chain: Bitcoin
-
-Clarity smart contracts can read the state of the Bitcoin base chain. It means you can use Bitcoin transactions as a trigger in your smart contracts! Clarity also features a number of built-in functions to verify secp256k1 signatures and recover keys.
diff --git a/docs/clarity/language-functions.mdx b/docs/clarity/language-functions.mdx
deleted file mode 100644
index a2aef51295..0000000000
--- a/docs/clarity/language-functions.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Functions
-description: See a detailed list of all functions for the Clarity language.
-sidebar_position: 3
-tags:
- - clarity
----
-
-import { FunctionsReferences } from "@site/src/components/ApiReferences/FunctionsReferences.jsx";
-
-## Functions
-
-Detailed list of all functions for the Clarity language.
-
- {currentMessage} {currentMessage}Hello Stacks
- Hello Stacks
- Hello Stacks
- Hello Stacks
- {userData && (
- (get-block-info? prop-name block-height-expr)`
-#### descripción:
-The `get-block-info?` function fetches data for a block of the given block height. The value and type returned are determined by the specified `BlockInfoPropertyName`. If the provided `BlockHeightInt` does not correspond to an existing block prior to the current block, the function returns `none`. The currently available property names are `time`, `header-hash`, `burnchain-header-hash`, `id-header-hash`, `miner-address`, and `vrf-seed`.
-
-This is a Unix epoch timestamp in seconds which roughly corresponds to when the block was mined. The `time` property returns an integer value of the block header time field. **Warning**: this does not increase monotonically with each block and block times are accurate only to within two hours. See [BIP113](https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki) for more information.
-
-The `header-hash`, `burnchain-header-hash`, `id-header-hash`, and `vrf-seed` properties return a 32-byte buffer.
-
-The `miner-address` property returns a `principal` corresponding to the miner of the given block.
-
-The `id-header-hash` is the block identifier value that must be used as input to the `at-block` function.
-
-#### ejemplo:
-```clarity
-(get-block-info? time u0) ;; Returns (some u1557860301)
-(get-block-info? header-hash u0) ;; Returns (some 0x374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb)
-(get-block-info? vrf-seed u0) ;; Returns (some 0xf490de2920c8a35fabeb13208852aa28c76f9be9b03a4dd2b3c075f7a26923b4)
-```
-
-### err
-#### input: `A`
-#### output: `(response A B)`
-#### signature: `(err value)`
-#### descripción:
-The `err` function constructs a response type from the input value. Use `err` for creating return values in public functions. An _err_ value indicates that any database changes during the processing of the function should be rolled back.
-#### ejemplo:
-```clarity
-(err true) ;; Returns (err true)
-```
-
-### ok
-#### entrada: `A`
-#### output: `(response A B)`
-#### signature: `(ok value)`
-#### descripción:
-The `ok` function constructs a response type from the input value. Use `ok` for creating return values in public functions. An _ok_ value indicates that any database changes during the processing of the function should materialize.
-#### ejemplo:
-```clarity
-(ok 1) ;; Returns (ok 1)
-```
-
-### some
-#### input: `A`
-#### output: `(optional A)`
-#### signature: `(some value)`
-#### descripción:
-The `some` function constructs a `optional` type from the input value.
-#### ejemplo:
-```clarity
-(some 1) ;; Returns (some 1)
-(is-none (some 2)) ;; Returns false
-```
-
-### default-to
-#### input: `A, (optional A)`
-#### output: `A`
-#### signature: `(default-to default-value option-value)`
-#### descripción:
-The `default-to` function attempts to 'unpack' the second argument: if the argument is a `(some ...)` option, it returns the inner value of the option. If the second argument is a `(none)` value, `default-to` it returns the value of `default-value`.
-#### ejemplo:
-```clarity
-(define-map names-map { name: (string-ascii 12) } { id: int })
-(map-set names-map { name: \"blockstack\" } { id: 1337 })
-(default-to 0 (get id (map-get? names-map (tuple (name \"blockstack\"))))) ;; Returns 1337
-(default-to 0 (get id (map-get? names-map (tuple (name \"non-existant\"))))) ;; Returns 0
-```
-
-### asserts!
-#### input: `bool, C`
-#### output: `bool`
-#### firma: `(asserts! bool-expr thrown-value)`
-#### descripción:
-The `asserts!` function admits a boolean argument and asserts its evaluation: if bool-expr is `true`, `asserts!` returns `true` and proceeds in the program execution. If the supplied argument is returning a false value, `asserts!` _returns_ `thrown-value` and exits the current control-flow.
-#### ejemplo:
-```clarity
-(asserts! (is-eq 1 1) (err 1)) ;; Devuelve true
-```
-
-### unwrap!
-#### input: `(optional A) | (response A B), C`
-#### output: `A`
-#### firma: `(unwrap! | uint, ...`
-#### descripción:
-The `unwrap!` function attempts to 'unpack' the first argument: if the argument is an option type, and the argument is a `(some ...)` option, `unwrap!` returns the inner value of the option. If the argument is a response type, and the argument is an `(ok ...)` response, `unwrap!` returns the inner value of the `ok`. If the supplied argument is either an `(err ...)` or a `(none)` value, `unwrap!` _returns_ `thrown-value` from the current function and exits the current control-flow.
-#### ejemplo:
-```clarity
-(define-map names-map { name: (string-ascii 12) } { id: int })
-(map-set names-map { name: \"blockstack\" } { id: 1337 })
-(define-private (get-name-or-err (name (string-ascii 12)))
- (let ((raw-name (unwrap! (map-get? names-map { name: name }) (err 1))))
- (ok raw-name)))
-
-(get-name-or-err \"blockstack\") ;; Returns (ok (tuple (id 1337)))
-(get-name-or-err \"non-existant\") ;; Returns (err 1)
-```
-
-### unwrap-err!
-#### input: `(response A B), C`
-#### output: `B`
-#### signature: `(unwrap-err! response-input thrown-value)`
-#### descripción:
-The `unwrap-err!` function attempts to 'unpack' the first argument: if the argument is an `(err ...)` response, `unwrap-err!` returns the inner value of the `err`. If the supplied argument is an `(ok ...)` value, `unwrap-err!` _returns_ `thrown-value` from the current function and exits the current control-flow.
-#### ejemplo:
-```clarity
-(unwrap-err! (err 1) false) ;; Returns 1
-```
-
-### unwrap-panic
-#### input: `(optional A) | (response A B)`
-#### output: `A`
-#### signature: `(unwrap-panic option-input)`
-#### descripción:
-The `unwrap` function attempts to 'unpack' its argument: if the argument is an option type, and the argument is a `(some ...)` option, this function returns the inner value of the option. If the argument is a response type, and the argument is an `(ok ...)` response, it returns the inner value of the `ok`. If the supplied argument is either an `(err ...)` or a `(none)` value, `unwrap` throws a runtime error, aborting any further processing of the current transaction.
-#### ejemplo:
-```clarity
-(define-map names-map { name: (string-ascii 12) } { id: int })
-(map-set names-map { name: \"blockstack\" } { id: 1337 })
-(unwrap-panic (map-get? names-map { name: \"blockstack\" })) ;; Returns (tuple (id 1337))
-(unwrap-panic (map-get? names-map { name: \"non-existant\" })) ;; Throws a runtime exception
-```
-
-### unwrap-err-panic
-#### entrada: `(response A B)`
-#### salida: `B`
-#### firma: `(unwrap-err-panic response-input)`
-#### descripción:
-The `unwrap-err` function attempts to 'unpack' the first argument: if the argument is an `(err ...)` response, `unwrap` returns the inner value of the `err`. If the supplied argument is an `(ok ...)` value, `unwrap-err` throws a runtime error, aborting any further processing of the current transaction.
-#### ejemplo:
-```clarity
-(unwrap-err-panic (err 1)) ;; Returns 1
-(unwrap-err-panic (ok 1)) ;; Throws a runtime exception
-```
-
-### match
-#### input: `(optional A) name expression expression | (response A B) name expression name expression`
-#### output: `C`
-#### signature: `(match opt-input some-binding-name some-branch none-branch) |
-(match-resp input ok-binding-name ok-branch err-binding-name err-branch)`
-#### descripción:
-The `match` function is used to test and destructure optional and response types.
-
-If the `input` is an optional, it tests whether the provided `input` is a `some` or `none` option, and evaluates `some-branch` or `none-branch` in each respective case.
-
-Within the `some-branch`, the _contained value_ of the `input` argument is bound to the provided `some-binding-name` name.
-
-Only _one_ of the branches will be evaluated (similar to `if` statements).
-
-If the `input` is a response, it tests whether the provided `input` is an `ok` or `err` response type, and evaluates `ok-branch` or `err-branch` in each respective case.
-
-Within the `ok-branch`, the _contained ok value_ of the `input` argument is bound to the provided `ok-binding-name` name.
-
-Within the `err-branch`, the _contained err value_ of the `input` argument is bound to the provided `err-binding-name` name.
-
-Only _one_ of the branches will be evaluated (similar to `if` statements).
-
-Note: Type checking requires that the type of both the ok and err parts of the response object be determinable. For situations in which one of the parts of a response is untyped, you should use `unwrap-panic` or `unwrap-err-panic` instead of `match`.
-#### ejemplo:
-```clarity
-
-(define-private (add-10 (x (optional int)))
- (match x
- value (+ 10 value)
- 10))
-(add-10 (some 5)) ;; Returns 15
-(add-10 none) ;; Returns 10
-
-(define-private (add-or-pass-err (x (response int (string-ascii 10))) (to-add int))
- (match x
- value (ok (+ to-add value))
- err-value (err err-value)))
-(add-or-pass-err (ok 5) 20) ;; Returns (ok 25)
-(add-or-pass-err (err \"ERROR\") 20) ;; Returns (err \"ERROR\")
-```
-
-### try!
-#### input: `(optional A) | (response A B)`
-#### output: `A`
-#### firma: `(try! A`
-#### descripción:
-The `try!` function attempts to 'unpack' the first argument: if the argument is an option type, and the argument is a `(some ...)` option, `try!` returns the inner value of the option. If the argument is a response type, and the argument is an `(ok ...)` response, `try!` returns the inner value of the `ok`. If the supplied argument is either an `(err ...)` or a `none` value, `try!` _returns_ either `none` or the `(err ...)` value from the current function and exits the current control-flow.
-#### ejemplo:
-```clarity
-(define-map names-map { name: (string-ascii 12) } { id: int })
-(map-set names-map { name: \"blockstack\" } { id: 1337 })
-(try! (map-get? names-map { name: \"blockstack\" })) ;; Returns (tuple (id 1337))
-(define-private (checked-even (x int))
- (if (is-eq (mod x 2) 0)
- (ok x)
- (err false)))
-(define-private (double-if-even (x int))
- (ok (* 2 (try! (checked-even x)))))
-(double-if-even 10) ;; Returns (ok 20)
-(double-if-even 3) ;; Returns (err false)
-```
-
-### is-ok
-#### entrada: `(response A B)`
-#### output: `bool`
-#### signature: `(is-ok value)`
-#### descripción:
-`is-ok` tests a supplied response value, returning `true` if the response was `ok`, and `false` if it was an `err`.
-#### ejemplo:
-```clarity
-(is-ok (ok 1)) ;; Returns true
-(is-ok (err 1)) ;; Returns false
-```
-
-### is-none
-#### input: `(optional A)`
-#### output: `bool`
-#### signature: `(is-none value)`
-#### descripción:
-`is-none` tests a supplied option value, returning `true` if the option value is `(none)`, and `false` if it is a `(some ...)`.
-#### ejemplo:
-```clarity
-(define-map names-map { name: (string-ascii 12) } { id: int })
-(map-set names-map { name: \"blockstack\" } { id: 1337 })
-(is-none (get id (map-get? names-map { name: \"blockstack\" }))) ;; Returns false
-(is-none (get id (map-get? names-map { name: \"non-existant\" }))) ;; Returns true
-```
-
-### is-err
-#### entrada: `(response A B)`
-#### output: `bool`
-#### signature: `(is-err value)`
-#### descripción:
-`is-err` tests a supplied response value, returning `true` if the response was an `err`, and `false` if it was an `ok`.
-#### ejemplo:
-```clarity
-(is-err (ok 1)) ;; Returns false
-(is-err (err 1)) ;; Returns true
-```
-
-### is-some
-#### input: `(optional A)`
-#### output: `bool`
-#### signature: `(is-some value)`
-#### descripción:
-`is-some` tests a supplied option value, returning `true` if the option value is `(some ...)`, and `false` if it is a `none`.
-#### ejemplo:
-```clarity
-
-(define-map names-map { name: (string-ascii 12) } { id: int })
-(map-set names-map { name: \"blockstack\" } { id: 1337 })
-(is-some (get id (map-get? names-map { name: \"blockstack\" }))) ;; Returns true
-(is-some (get id (map-get? names-map { name: \"non-existant\" }))) ;; Returns false
-```
-
-### filter
-#### input: `Function(A) -> bool, sequence_A`
-#### output: `sequence_A`
-#### signature: `(filter func sequence)`
-#### descripción:
-The `filter` function applies the input function `func` to each element of the input sequence, and returns the same sequence with any elements removed for which `func` returned `false`. Applicable sequence types are `(list A)`, `buff`, `string-ascii` and `string-utf8`, for which the corresponding element types are, respectively, `A`, `(buff 1)`, `(string-ascii 1)` and `(string-utf8 1)`. The `func` argument must be a literal function name. `
-#### ejemplo:
-```clarity
-
-(filter not (list true false true false)) ;; Returns (false false)
-(define-private (is-a (char (string-utf8 1))) (is-eq char u\"a\"))
-(filter is-a u\"acabd\") ;; Returns u\"aa\"
-(define-private (is-zero (char (buff 1))) (is-eq char 0x00))
-(filter is-zero 0x00010002) ;; Returns 0x0000
-```
-
-### ft-get-balance
-#### input: `TokenName, principal`
-#### output: `uint`
-#### signature: `(ft-get-balance token-name principal)`
-#### descripción:
-`ft-get-balance` returns `token-name` balance of the principal `principal`. The token type must have been defined using `define-fungible-token`.
-#### ejemplo:
-```clarity
-(define-fungible-token stackaroo)
-(ft-mint? stackaroo u100 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)
-(ft-get-balance stackaroo 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR) ;; Returns u100
-```
-
-### nft-get-owner?
-#### input: `AssetName, A`
-#### output: `(optional principal)`
-#### signature: `(nft-get-owner? The asset must have been defined using
define-non-fungible-token`, and the supplied `asset-identifier` must be of the same type specified in that definition.
-#### descripción:
-`nft-burn?` is used to burn an asset and remove that asset's owner from the `recipient` principal. The asset must have been defined using `define-non-fungible-token`, and the supplied `asset-identifier` must be of the same type specified in that definition.
-#### ejemplo:
-```clarity
-(define-non-fungible-token stackaroo (string-ascii 40))
-(nft-mint? stackaroo \"Roo\" 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF)
-(nft-get-owner? stackaroo \"Roo\") ;; Returns (some SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF)
-(nft-get-owner? stackaroo \"Too\") ;; Returns none
-```
-
-### ft-transfer?
-#### input: `TokenName, uint, principal, principal`
-#### output: `(response bool uint)`
-#### signature: `(ft-transfer? token-name amount sender recipient)`
-#### descripción:
-`ft-transfer?` is used to increase the token balance for the `recipient` principal for a token type defined using `define-fungible-token` by debiting the `sender` principal. In contrast to `stx-transfer?`, any user can transfer the assets. When used, relevant guards need to be added.
-
-This function returns (ok true) if the transfer is successful. In the event of an unsuccessful transfer it returns one of the following error codes:
-
-`(err u1)` -- `sender` does not have enough balance to transfer `(err u2)` -- `sender` and `recipient` are the same principal `(err u3)` -- amount to send is non-positive `
-#### ejemplo:
-```clarity
-(define-fungible-token stackaroo)
-(ft-mint? stackaroo u100 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)
-(ft-transfer? stackaroo u50 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-(ft-transfer? stackaroo u60 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (err u1)
-```
-
-### nft-transfer?
-#### input: `AssetName, A, principal, principal`
-#### output: `(response bool uint)`
-#### signature: `(nft-transfer? asset-class asset-identifier sender recipient)`
-#### descripción:
-`nft-transfer?` is used to change the owner of an asset identified by `asset-identifier` from `sender` to `recipient`. The `asset-class` must have been defined by `define-non-fungible-token` and `asset-identifier` must be of the type specified in that definition. In contrast to `stx-transfer?`, any user can transfer the asset. When used, relevant guards need to be added.
-
-This function returns (ok true) if the transfer is successful. In the event of an unsuccessful transfer it returns one of the following error codes:
-
-`(err u1)` -- `sender` does not own the asset `(err u2)` -- `sender` and `recipient` are the same principal `(err u3)` -- asset identified by asset-identifier does not exist `
-#### ejemplo:
-```clarity
-(define-non-fungible-token stackaroo (string-ascii 40))
-(nft-mint? stackaroo \"Roo\" 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)
-(nft-transfer? stackaroo \"Roo\" 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-(nft-transfer? stackaroo \"Roo\" 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (err u1)
-(nft-transfer? stackaroo \"Stacka\" 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (err u3)
-```
-
-### nft-mint?
-#### input: `AssetName, A, principal`
-#### output: `(response bool uint)`
-#### signature: `(nft-mint? asset-class asset-identifier recipient)`
-#### descripción:
-`nft-burn?` is used to burn an asset and remove that asset's owner from the `recipient` principal. The asset must have been defined using `define-non-fungible-token`, and the supplied `asset-identifier` must be of the same type specified in that definition.
-
-If an asset identified by `asset-identifier` _already exists_, this function will return an error with the following error code:
-
-`(err u1)`
-
-Otherwise, on successfuly mint, it returns `(ok true)`. `
-#### ejemplo:
-```clarity
-(define-non-fungible-token stackaroo (string-ascii 40))
-(nft-mint? stackaroo \"Roo\" 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-```
-
-### ft-mint?
-#### input: `TokenName, uint, principal`
-#### output: `(response bool uint)`
-#### firma: `(ft-mint? token-name amount recipient)`
-#### descripción:
-`ft-mint?` is used to increase the token balance for the `recipient` principal for a token type defined using `define-fungible-token`. The increased token balance is _not_ transfered from another principal, but rather minted.
-
-If a non-positive amount is provided to mint, this function returns `(err 1)`. Otherwise, on successfuly mint, it returns `(ok true)`. `
-#### ejemplo:
-```clarity
-(define-fungible-token stackaroo)
-(ft-mint? stackaroo u100 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-```
-
-### ft-get-supply
-#### input: `TokenName`
-#### output: `uint`
-#### signature: `(ft-get-supply token-name)`
-#### descripción:
-`ft-get-balance` returns `token-name` circulating supply. The token type must have been defined using `define-fungible-token`.
-#### ejemplo:
-```clarity
-(define-fungible-token stackaroo)
-(ft-mint? stackaroo u100 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)
-(ft-get-supply stackaroo) ;; Returns u100
-```
-
-### ft-burn?
-#### input: `TokenName, uint, principal`
-#### output: `(response bool uint)`
-#### signature: `(ft-burn? token-name amount sender)`
-#### descripción:
-`ft-burn?` is used to decrease the token balance for the `sender` principal for a token type defined using `define-fungible-token`. The decreased token balance is _not_ transfered to another principal, but rather destroyed, reducing the circulating supply.
-
-If a non-positive amount is provided to burn, this function returns `(err 1)`. Otherwise, on successfuly burn, it returns `(ok true)`.
-
-#### ejemplo:
-```clarity
-
-(define-fungible-token stackaroo)
-(ft-mint? stackaroo u100 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-(ft-burn? stackaroo u50 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-```
-
-### nft-burn?
-#### input: `AssetName, A, principal`
-#### output: `(response bool uint)`
-#### signature: `(nft-burn? asset-class asset-identifier recipient)`
-#### descripción:
-`nft-burn?` is used to burn an asset and remove that asset's owner from the `recipient` principal. The asset must have been defined using `define-non-fungible-token`, and the supplied `asset-identifier` must be of the same type specified in that definition.
-
-If an asset identified by `asset-identifier` _doesn't exist_, this function will return an error with the following error code:
-
-`(err u1)`
-
-Otherwise, on successfuly burn, it returns `(ok true)`. `
-#### ejemplo:
-```clarity
-(define-non-fungible-token stackaroo (string-ascii 40))
-(nft-mint? stackaroo \"Roo\" 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-(nft-burn? stackaroo \"Roo\" 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF) ;; Returns (ok true)
-```
-
-### stx-get-balance
-#### input: `principal`
-#### output: `uint`
-#### signature: `(stx-get-balance owner)`
-#### descripción:
-`stx-get-balance` is used to query the STX balance of the `owner` principal.
-
-This function returns the STX balance of the `owner` principal. In the event that the `owner` principal isn't materialized, it returns 0.
-
-#### ejemplo:
-```clarity
-(stx-get-balance 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR) ;; Returns u0
-(stx-get-balance (as-contract tx-sender)) ;; Returns u1000
-```
-
-### stx-transfer?
-#### input: `uint, principal, principal`
-#### output: `(response bool uint)`
-#### signature: `(stx-transfer? amount sender recipient)`
-#### descripción:
-`stx-transfer?` is used to increase the STX balance for the `recipient` principal by debiting the `sender` principal. The `sender` principal _must_ be equal to the current context's `tx-sender`.
-
-This function returns (ok true) if the transfer is successful. In the event of an unsuccessful transfer it returns one of the following error codes:
-
-`(err u1)` -- `sender` does not have enough balance to transfer `(err u2)` -- `sender` and `recipient` are the same principal `(err u3)` -- amount to send is non-positive `(err u4)` -- the `sender` principal is not the current `tx-sender`
-
-#### ejemplo:
-```clarity
-
-(as-contract
- (stx-transfer? u60 tx-sender 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)) ;; Returns (ok true)
-(as-contract
- (stx-transfer? u50 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR tx-sender)) ;; Returns (err u4)
-```
-
-### stx-burn?
-#### input: `uint, principal`
-#### output: `(response bool uint)`
-#### signature: `(stx-burn? amount sender)`
-#### descripción:
-`stx-burn?` debits the `sender` principal's STX holdings by `amount`, destroying the STX. The `sender` principal _must_ be equal to the current context's `tx-sender`.
-
-This function returns (ok true) if the transfer is successful. In the event of an unsuccessful transfer it returns one of the following error codes:
-
-`(err u1)` -- `sender` does not have enough balance to transfer `(err u3)` -- amount to send is non-positive `(err u4)` -- the `sender` principal is not the current `tx-sender`
-
-#### ejemplo:
-```clarity
-(as-contract
- (stx-burn? u60 tx-sender)) ;; Returns (ok true)
-(as-contract
- (stx-burn? u50 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)) ;; Returns (err u4)
-```
-
-### define-constant
-#### input: `MethodSignature, MethodBody`
-#### output: `Not Applicable`
-#### signature: `(define-constant name expression)`
-#### descripción:
-`define-constant` is used to define a private constant value in a smart contract. The expression passed into the definition is evaluated at contract launch, in the order that it is supplied in the contract. This can lead to undefined function or undefined variable errors in the event that a function or variable used in the expression has not been defined before the constant.
-
-Like other kinds of definition statements, `define-constant` may only be used at the top level of a smart contract definition (i.e., you cannot put a define statement in the middle of a function body).
-
-#### ejemplo:
-```clarity
-
-(define-constant four (+ 2 2))
-(+ 4 four) ;; Returns 8
-```
-
-### define-private
-#### input: `MethodSignature, MethodBody`
-#### output: `Not Applicable`
-#### signature: `(define-private (function-name (arg-name-0 arg-type-0) (arg-name-1 arg-type-1) ...) function-body)`
-#### descripción:
-`define-private` is used to define _private_ functions for a smart contract. Private functions may not be called from other smart contracts, nor may they be invoked directly by users. Instead, these functions may only be invoked by other functions defined in the same smart contract.
-
-Like other kinds of definition statements, `define-private` may only be used at the top level of a smart contract definition (i.e., you cannot put a define statement in the middle of a function body).
-
-Private functions may return any type.
-#### ejemplo:
-```clarity
-(define-private (max-of (i1 int) (i2 int))
- (if (> i1 i2)
- i1
- i2))
-(max-of 4 6) ;; Returns 6
-```
-
-### define-public
-#### input: `MethodSignature, MethodBody`
-#### output: `Not Applicable`
-#### signature: `(define-public (function-name (arg-name-0 arg-type-0) (arg-name-1 arg-type-1) ...) function-body)`
-#### descripción:
-`define-public` is used to define a _public_ function and transaction for a smart contract. Public functions are callable from other smart contracts and may be invoked directly by users by submitting a transaction to the Stacks blockchain.
-
-Like other kinds of definition statements, `define-public` may only be used at the top level of a smart contract definition (i.e., you cannot put a define statement in the middle of a function body).
-
-Public functions _must_ return a ResponseType (using either `ok` or `err`). Any datamap modifications performed by a public function is aborted if the function returns an `err` type. Public functions may be invoked by other contracts via `contract-call?`.
-#### ejemplo:
-```clarity
-(define-public (hello-world (input int))
- (begin (print (+ 2 input))
- (ok input)))
-```
-
-### define-read-only
-#### input: `MethodSignature, MethodBody`
-#### output: `Not Applicable`
-#### signature: `(define-read-only (function-name (arg-name-0 arg-type-0) (arg-name-1 arg-type-1) ...) function-body)`
-#### descripción:
-`define-read-only` is used to define a _public read-only_ function for a smart contract. Such functions are callable from other smart contracts.
-
-Like other kinds of definition statements, `define-read-only` may only be used at the top level of a smart contract definition (i.e., you cannot put a define statement in the middle of a function body).
-
-Read-only functions may return any type. However, read-only functions may not perform any datamap modifications, or call any functions which perform such modifications. This is enforced both during type checks and during the execution of the function. Public read-only functions may be invoked by other contracts via `contract-call?`.
-#### ejemplo:
-```clarity
-(define-read-only (just-return-one-hundred)
- (* 10 10))
- ```
-
-### define-map
-#### input: `MapName, TypeDefinition, TypeDefinition`
-#### output: `Not Applicable`
-#### signature: `(define-map map-name key-type value-type)`
-#### descripción:
-`define-map` is used to define a new datamap for use in a smart contract. Such maps are only modifiable by the current smart contract.
-
-Maps are defined with a key type and value type, often these types are tuple types.
-
-Like other kinds of definition statements, `define-map` may only be used at the top level of a smart contract definition (i.e., you cannot put a define statement in the middle of a function body).
-#### ejemplo:
-```clarity
-(define-map squares { x: int } { square: int })
-(define-private (add-entry (x int))
- (map-insert squares { x: 2 } { square: (* x x) }))
-(add-entry 1)
-(add-entry 2)
-(add-entry 3)
-(add-entry 4)
-(add-entry 5)
-```
-
-### define-data-var
-#### input: `VarName, TypeDefinition, Value`
-#### output: `Not Applicable`
-#### signature: `(define-data-var var-name type value)`
-#### descripción:
-`define-data-var` is used to define a new persisted variable for use in a smart contract. Such variable are only modifiable by the current smart contract.
-
-Persisted variable are defined with a type and a value.
-
-Like other kinds of definition statements, `define-data-var` may only be used at the top level of a smart contract definition (i.e., you cannot put a define statement in the middle of a function body).
-#### ejemplo:
-```clarity
-(define-data-var size int 0)
-(define-private (set-size (value int))
- (var-set size value))
-(set-size 1)
-(set-size 2)
-```
-
-### define-fungible-token
-#### input: `TokenName,