From 74eca7bb1b9ab281da0fcc34bcb133fe8ffeb369 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 18:41:59 -0400
Subject: [PATCH 01/37] Initial anchor version

---
 .gitignore                                    |    3 +-
 Anchor.toml                                   |   14 +
 Cargo.lock                                    | 1560 +++++++++++++++++
 Cargo.toml                                    |    4 +
 Makefile                                      |    6 +-
 program/Cargo.toml                            |   18 +-
 program/src/errors.rs                         |   11 +
 program/src/instructions/client.rs            |   25 -
 program/src/instructions/init_mint.rs         |   78 -
 program/src/instructions/init_mint_manager.rs |   85 -
 .../mint_manager/init_mint_manager.rs         |   90 +
 program/src/instructions/mint_manager/mod.rs  |    5 +
 .../mint_manager/update_mint_manager.rs       |   24 +
 program/src/instructions/mod.rs               |   14 +-
 .../instructions/standard/init_standard.rs    |   39 +
 program/src/instructions/standard/mod.rs      |    5 +
 .../instructions/standard/update_standard.rs  |   28 +
 program/src/instructions/token.rs             |  174 --
 program/src/instructions/token/approve.rs     |    1 +
 program/src/instructions/token/burn.rs        |    1 +
 program/src/instructions/token/close.rs       |    1 +
 .../src/instructions/token/init_account.rs    |    1 +
 program/src/instructions/token/init_mint.rs   |    1 +
 .../token/post_transfer.rs}                   |    0
 .../src/instructions/token/pre_transfer.rs    |    0
 program/src/instructions/token/revoke.rs      |    1 +
 program/src/instructions/token/transfer.rs    |    1 +
 program/src/lib.rs                            |   70 +-
 program/src/pda.rs                            |    7 -
 program/src/state.rs                          |   31 +
 program/src/state/mint_manager.rs             |   60 -
 program/src/state/mod.rs                      |    3 -
 sdk/generate-idls.sh                          |   15 +
 sdk/idl/cardinal_creator_standard.json        |    4 +-
 sdk/package.json                              |    2 +
 sdk/src/generated/accounts/MintManager.ts     |   58 +-
 sdk/src/generated/accounts/MintManagerV2.ts   |   58 +-
 sdk/src/generated/index.ts                    |   10 +-
 sdk/src/generated/instructions/InitMint.ts    |   36 +-
 .../generated/instructions/InitMintManager.ts |   38 +-
 40 files changed, 1975 insertions(+), 607 deletions(-)
 create mode 100644 Anchor.toml
 create mode 100644 Cargo.lock
 create mode 100644 Cargo.toml
 create mode 100644 program/src/errors.rs
 delete mode 100644 program/src/instructions/client.rs
 delete mode 100644 program/src/instructions/init_mint.rs
 delete mode 100644 program/src/instructions/init_mint_manager.rs
 create mode 100644 program/src/instructions/mint_manager/init_mint_manager.rs
 create mode 100644 program/src/instructions/mint_manager/mod.rs
 create mode 100644 program/src/instructions/mint_manager/update_mint_manager.rs
 create mode 100644 program/src/instructions/standard/init_standard.rs
 create mode 100644 program/src/instructions/standard/mod.rs
 create mode 100644 program/src/instructions/standard/update_standard.rs
 delete mode 100644 program/src/instructions/token.rs
 create mode 100644 program/src/instructions/token/approve.rs
 create mode 100644 program/src/instructions/token/burn.rs
 create mode 100644 program/src/instructions/token/close.rs
 create mode 100644 program/src/instructions/token/init_account.rs
 create mode 100644 program/src/instructions/token/init_mint.rs
 rename program/src/{state/ruleset.rs => instructions/token/post_transfer.rs} (100%)
 create mode 100644 program/src/instructions/token/pre_transfer.rs
 create mode 100644 program/src/instructions/token/revoke.rs
 create mode 100644 program/src/instructions/token/transfer.rs
 delete mode 100644 program/src/pda.rs
 create mode 100644 program/src/state.rs
 delete mode 100644 program/src/state/mint_manager.rs
 delete mode 100644 program/src/state/mod.rs
 create mode 100755 sdk/generate-idls.sh

diff --git a/.gitignore b/.gitignore
index e9e8ff79..7b5346a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,5 @@ sdk/node_modules
 validator.PID
 test-ledger
 yarn-error.log
-sdk/.env
\ No newline at end of file
+sdk/.env
+target
\ No newline at end of file
diff --git a/Anchor.toml b/Anchor.toml
new file mode 100644
index 00000000..72fa17b5
--- /dev/null
+++ b/Anchor.toml
@@ -0,0 +1,14 @@
+[features]
+seeds = false
+
+[registry]
+url = "https://anchor.projectserum.com"
+
+[provider]
+cluster = "localnet"
+wallet = "./tests/test-key.json"
+
+[workspace]
+members = [
+  "program",
+]
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 00000000..e418a6d8
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,1560 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ahash"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+dependencies = [
+ "getrandom 0.2.8",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.7.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anchor-attribute-access-control"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70f6ee9518f50ff4d434471ccf569186022bdd5ef65a21d14da3ea5231af944f"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-account"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32c92bcf5388b52676d990f85bbfd838a8f5672393135063a50dc79b2b837c79"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "bs58 0.4.0",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-constant"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0844974ac35e8ced62056b0d63777ebcdc5807438b8b189c881e2b647450b70a"
+dependencies = [
+ "anchor-syn",
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-error"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f7467345e67a6f1d4b862b9763a4160ad89d18c247b8c902807768f7b6e23df"
+dependencies = [
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-event"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8774e4c1ac71f71a5aea7e4932fb69c30e3b8155c4fa59fd69401195434528a9"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-interface"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90eeb6e1c80f9f94fcef93a52813f6472186200e275e83cb3fac92b801de92f7"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-program"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac515a7a5a4fea7fc768b1cec40ddb948e148ea657637c75f94f283212326cb9"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "anchor-attribute-state"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43dc667b62ff71450f19dcfcc37b0c408fd4ddd89e8650368c2b0984b110603f"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "anchor-derive-accounts"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7354d583a06701d24800a8ec4c2b0491f62581a331af349205e23421e0b56643"
+dependencies = [
+ "anchor-syn",
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "anchor-lang"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff5f57ec5e12fa6874b27f3d5c1f6f44302d3ad86c1266197ff7611bf6f5d251"
+dependencies = [
+ "anchor-attribute-access-control",
+ "anchor-attribute-account",
+ "anchor-attribute-constant",
+ "anchor-attribute-error",
+ "anchor-attribute-event",
+ "anchor-attribute-interface",
+ "anchor-attribute-program",
+ "anchor-attribute-state",
+ "anchor-derive-accounts",
+ "arrayref",
+ "base64 0.13.0",
+ "bincode",
+ "borsh",
+ "bytemuck",
+ "solana-program",
+ "thiserror",
+]
+
+[[package]]
+name = "anchor-spl"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d65904c3106851f6d1bb87d504044764819d69c51d2b4346d59d399d8afa7d18"
+dependencies = [
+ "anchor-lang",
+ "solana-program",
+ "spl-associated-token-account",
+ "spl-token",
+]
+
+[[package]]
+name = "anchor-syn"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55aa1e680d9471342122ed5b6bc13bf5da473b0f7e4677d41a6954e5cc8ad155"
+dependencies = [
+ "anyhow",
+ "bs58 0.3.1",
+ "heck",
+ "proc-macro2",
+ "proc-macro2-diagnostics",
+ "quote",
+ "serde",
+ "serde_json",
+ "sha2 0.9.9",
+ "syn",
+ "thiserror",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
+
+[[package]]
+name = "arrayref"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "base64"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
+
+[[package]]
+name = "base64"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitmaps"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
+dependencies = [
+ "typenum",
+]
+
+[[package]]
+name = "blake3"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+ "digest 0.10.5",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "borsh"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa"
+dependencies = [
+ "borsh-derive",
+ "hashbrown",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775"
+dependencies = [
+ "borsh-derive-internal",
+ "borsh-schema-derive-internal",
+ "proc-macro-crate 0.1.5",
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "borsh-derive-internal"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "borsh-schema-derive-internal"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "bs58"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb"
+
+[[package]]
+name = "bs58"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
+
+[[package]]
+name = "bumpalo"
+version = "3.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+
+[[package]]
+name = "bv"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340"
+dependencies = [
+ "feature-probe",
+ "serde",
+]
+
+[[package]]
+name = "bytemuck"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9e1f5fa78f69496407a27ae9ed989e3c3b072310286f5ef385525e4cbc24a9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "cardinal-creator-standard"
+version = "0.1.0"
+dependencies = [
+ "anchor-lang",
+ "anchor-spl",
+ "mpl-token-metadata",
+ "solana-program",
+ "spl-associated-token-account",
+ "spl-token",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "console_log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494"
+dependencies = [
+ "log",
+ "web-sys",
+]
+
+[[package]]
+name = "constant_time_eq"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "crypto-mac"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
+dependencies = [
+ "generic-array",
+ "subtle",
+]
+
+[[package]]
+name = "curve25519-dalek"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0"
+dependencies = [
+ "byteorder",
+ "digest 0.9.0",
+ "rand_core 0.5.1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "digest"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
+dependencies = [
+ "block-buffer 0.10.3",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "either"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "feature-probe"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da"
+
+[[package]]
+name = "generic-array"
+version = "0.14.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+dependencies = [
+ "serde",
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+dependencies = [
+ "ahash",
+]
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hmac"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
+dependencies = [
+ "crypto-mac",
+ "digest 0.9.0",
+]
+
+[[package]]
+name = "hmac-drbg"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1"
+dependencies = [
+ "digest 0.9.0",
+ "generic-array",
+ "hmac",
+]
+
+[[package]]
+name = "im"
+version = "15.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9"
+dependencies = [
+ "bitmaps",
+ "rand_core 0.6.4",
+ "rand_xoshiro",
+ "rayon",
+ "serde",
+ "sized-chunks",
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keccak"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838"
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.135"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
+
+[[package]]
+name = "libsecp256k1"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73"
+dependencies = [
+ "arrayref",
+ "base64 0.12.3",
+ "digest 0.9.0",
+ "hmac-drbg",
+ "libsecp256k1-core",
+ "libsecp256k1-gen-ecmult",
+ "libsecp256k1-gen-genmult",
+ "rand",
+ "serde",
+ "sha2 0.9.9",
+ "typenum",
+]
+
+[[package]]
+name = "libsecp256k1-core"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80"
+dependencies = [
+ "crunchy",
+ "digest 0.9.0",
+ "subtle",
+]
+
+[[package]]
+name = "libsecp256k1-gen-ecmult"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "libsecp256k1-gen-genmult"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memmap2"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mpl-token-metadata"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e719d7e0b5a9d97c7fd4d6f52ebfc32f1e3942e068173e47355f8c275656488a"
+dependencies = [
+ "arrayref",
+ "borsh",
+ "mpl-token-vault",
+ "num-derive",
+ "num-traits",
+ "shank",
+ "solana-program",
+ "spl-associated-token-account",
+ "spl-token",
+ "thiserror",
+]
+
+[[package]]
+name = "mpl-token-vault"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ade4ef15bc06a6033076c4ff28cba9b42521df5ec61211d6f419415ace2746a"
+dependencies = [
+ "borsh",
+ "num-derive",
+ "num-traits",
+ "solana-program",
+ "spl-token",
+ "thiserror",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
+dependencies = [
+ "proc-macro-crate 1.2.1",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+
+[[package]]
+name = "opaque-debug"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-sys",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9"
+dependencies = [
+ "once_cell",
+ "thiserror",
+ "toml",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "proc-macro2-diagnostics"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+ "yansi",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_xoshiro"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
+dependencies = [
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8"
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "semver"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
+
+[[package]]
+name = "serde"
+version = "1.0.145"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_bytes"
+version = "0.11.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.145"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.87"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "sha2"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+dependencies = [
+ "block-buffer 0.9.0",
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.9.0",
+ "opaque-debug",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.10.5",
+]
+
+[[package]]
+name = "sha3"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9"
+dependencies = [
+ "digest 0.10.5",
+ "keccak",
+]
+
+[[package]]
+name = "shank"
+version = "0.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90b0d7b8998cc311310854451e7f5903cf3a151ca93ef6aa2b8b6c369a037b21"
+dependencies = [
+ "shank_macro",
+]
+
+[[package]]
+name = "shank_macro"
+version = "0.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3a37d6cf5df84eb622cb6fc74071d5d773c6a23b9ec55691db7b6a8c2286926"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "shank_macro_impl",
+ "syn",
+]
+
+[[package]]
+name = "shank_macro_impl"
+version = "0.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1314ff5d5a3dffd9b93de1463e2b6afc2350f17596d7d9b3fe0924c9edd250df"
+dependencies = [
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn",
+]
+
+[[package]]
+name = "sized-chunks"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
+dependencies = [
+ "bitmaps",
+ "typenum",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[package]]
+name = "solana-frozen-abi"
+version = "1.10.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d343b3838e95561548a2a651787d17aebf0a3f490f193746ee58f174f65bd7c3"
+dependencies = [
+ "bs58 0.4.0",
+ "bv",
+ "generic-array",
+ "im",
+ "lazy_static",
+ "log",
+ "memmap2",
+ "rustc_version",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "sha2 0.10.6",
+ "solana-frozen-abi-macro",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-frozen-abi-macro"
+version = "1.10.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a37211ec8dff16b08fcb422807fa7f046bbc6417bc43e00a2f2effd8fafec6bc"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn",
+]
+
+[[package]]
+name = "solana-program"
+version = "1.10.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9622af117fe254208f1fe99a533ea523624d64745d6cffecd986da6753662ef"
+dependencies = [
+ "base64 0.13.0",
+ "bincode",
+ "bitflags",
+ "blake3",
+ "borsh",
+ "borsh-derive",
+ "bs58 0.4.0",
+ "bv",
+ "bytemuck",
+ "console_error_panic_hook",
+ "console_log",
+ "curve25519-dalek",
+ "getrandom 0.1.16",
+ "itertools",
+ "js-sys",
+ "lazy_static",
+ "libsecp256k1",
+ "log",
+ "num-derive",
+ "num-traits",
+ "parking_lot",
+ "rand",
+ "rustc_version",
+ "rustversion",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "sha2 0.10.6",
+ "sha3",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-sdk-macro",
+ "thiserror",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-sdk-macro"
+version = "1.10.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d036e3a52e5570114ec9ab56a1d0a6659e1ebd1c948605318b4e35eafca4515"
+dependencies = [
+ "bs58 0.4.0",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn",
+]
+
+[[package]]
+name = "spl-associated-token-account"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b013067447a1396303ddfc294f36e3d260a32f8a16c501c295bcdc7de39b490"
+dependencies = [
+ "borsh",
+ "solana-program",
+ "spl-token",
+]
+
+[[package]]
+name = "spl-token"
+version = "3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32d05653bed5932064a287340dbc8a3cb298ee717e5c7ec3353d7cdb9f8fb7e1"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "num_enum",
+ "solana-program",
+ "thiserror",
+]
+
+[[package]]
+name = "subtle"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+
+[[package]]
+name = "syn"
+version = "1.0.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "typenum"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+
+[[package]]
+name = "yansi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+
+[[package]]
+name = "zeroize"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd"
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 00000000..dd57c84e
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,4 @@
+[workspace]
+members = [
+    "program",
+]
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 4f6daa9f..2daca0fc 100644
--- a/Makefile
+++ b/Makefile
@@ -5,14 +5,14 @@ TEST_KEY := $(shell solana-keygen pubkey ./sdk/tests/test-keypairs/test-key.json
 all: build start test stop
 
 build:
-	cd program && cargo build-bpf
-	cd sdk && yarn && yarn solita
+	cd program && anchor build
+	cd sdk && yarn idl:generate
 
 start:
 	pkill solana-test-validator || true
 	solana-test-validator --url https://api.mainnet-beta.solana.com \
 		--clone metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s --clone PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT \
-		--bpf-program mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS ./program/target/deploy/cardinal_creator_standard.so \
+		--bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./program/target/deploy/cardinal_creator_standard.so \
 		--reset --quiet & echo $$! > validator.PID
 	sleep 8
 	solana airdrop 1000 $(TEST_KEY) --url http://localhost:8899
diff --git a/program/Cargo.toml b/program/Cargo.toml
index 2e7d69d5..c7e73077 100644
--- a/program/Cargo.toml
+++ b/program/Cargo.toml
@@ -13,17 +13,9 @@ crate-type = ["cdylib", "lib"]
 name = "cardinal_creator_standard"
 
 [dependencies]
-solana-program = "1.14.4"
-shank = "^0.0.5"
-spl-token = { version = "3.5.0", features = ["no-entrypoint"] }
-spl-associated-token-account = { version = "1.1.1", features = [ "no-entrypoint", ] }
+solana-program = "1.10.41"
+anchor-lang = { version = "0.25.0", features = ["init-if-needed"] }
+anchor-spl = "0.25.0"
+spl-token = { version = "~3.3.1", features = ["no-entrypoint"] }
+spl-associated-token-account = { version = "~1.0.5", features = ["no-entrypoint"] }
 mpl-token-metadata = { version = "1.3.3", features = [ "no-entrypoint", ] }
-thiserror = "^1.0.24"
-borsh = "0.9.3"
-arrayref = "0.3.6"
-
-[dev-dependencies]
-solana-program-test = "1.14.4"
-solana-sdk = "1.14.4"
-tokio = { version = "1.8.4", features = ["full"] }
-anyhow = "1.0.52"
diff --git a/program/src/errors.rs b/program/src/errors.rs
new file mode 100644
index 00000000..6cd80877
--- /dev/null
+++ b/program/src/errors.rs
@@ -0,0 +1,11 @@
+use anchor_lang::prelude::*;
+
+#[error_code]
+pub enum ErrorCode {
+    #[msg("Invalid mint")]
+    InvalidMint,
+    #[msg("Invalid collector address")]
+    InvalidCollector,
+    #[msg("Invalid authority address")]
+    InvalidAuthority,
+}
diff --git a/program/src/instructions/client.rs b/program/src/instructions/client.rs
deleted file mode 100644
index 0bf04376..00000000
--- a/program/src/instructions/client.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-use crate::CreatorStandardInstruction;
-use borsh::BorshSerialize;
-use solana_program::instruction::AccountMeta;
-use solana_program::instruction::Instruction;
-use solana_program::program_error::ProgramError;
-use solana_program::pubkey::Pubkey;
-use solana_program::system_program;
-
-pub fn init_ix(
-    mint: &Pubkey,
-    authority: &Pubkey,
-    standard: &Pubkey,
-) -> Result<Instruction, ProgramError> {
-    Ok(Instruction {
-        program_id: crate::id(),
-        accounts: vec![
-            AccountMeta::new(*mint, false),
-            AccountMeta::new(*authority, true),
-            AccountMeta::new(*standard, true),
-            AccountMeta::new_readonly(spl_token::id(), false),
-            AccountMeta::new_readonly(system_program::id(), false),
-        ],
-        data: CreatorStandardInstruction::InitMintManager.try_to_vec()?,
-    })
-}
diff --git a/program/src/instructions/init_mint.rs b/program/src/instructions/init_mint.rs
deleted file mode 100644
index 8098fce9..00000000
--- a/program/src/instructions/init_mint.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-use crate::state::mint_manager_seeds;
-use crate::utils::assert_with_msg;
-use solana_program::account_info::next_account_info;
-use solana_program::account_info::AccountInfo;
-use solana_program::entrypoint::ProgramResult;
-use solana_program::program::invoke;
-use solana_program::program_error::ProgramError;
-use solana_program::program_pack::Pack;
-use solana_program::rent::Rent;
-use solana_program::system_instruction;
-use solana_program::system_program;
-use solana_program::sysvar::Sysvar;
-
-use super::initialize_mint;
-
-pub struct InitMintCtx<'a, 'info> {
-    pub mint: &'a AccountInfo<'info>,
-    pub mint_manager: &'a AccountInfo<'info>,
-    pub authority: &'a AccountInfo<'info>,
-    pub payer: &'a AccountInfo<'info>,
-    pub token_program: &'a AccountInfo<'info>,
-    pub system_program: &'a AccountInfo<'info>,
-}
-
-impl<'a, 'info> InitMintCtx<'a, 'info> {
-    pub fn load(accounts: &'a [AccountInfo<'info>]) -> Result<Self, ProgramError> {
-        let account_iter = &mut accounts.iter();
-        let ctx = Self {
-            mint: next_account_info(account_iter)?,
-            mint_manager: next_account_info(account_iter)?,
-            authority: next_account_info(account_iter)?,
-            payer: next_account_info(account_iter)?,
-            token_program: next_account_info(account_iter)?,
-            system_program: next_account_info(account_iter)?,
-        };
-        assert_with_msg(
-            ctx.mint.owner == ctx.token_program.key,
-            ProgramError::IllegalOwner,
-            "Invalid token program",
-        )?;
-        assert_with_msg(
-            ctx.authority.is_writable,
-            ProgramError::InvalidInstructionData,
-            "Authority must sign for initialization",
-        )?;
-        assert_with_msg(
-            ctx.token_program.key == &spl_token::id(),
-            ProgramError::InvalidInstructionData,
-            "Invalid key supplied for Token Program",
-        )?;
-        assert_with_msg(
-            ctx.system_program.key == &system_program::id(),
-            ProgramError::InvalidInstructionData,
-            "Invalid key supplied for System Program",
-        )?;
-        Ok(ctx)
-    }
-}
-
-pub fn handler(ctx: InitMintCtx) -> ProgramResult {
-    let space = spl_token::state::Mint::LEN;
-    invoke(
-        &system_instruction::create_account(
-            ctx.payer.key,
-            ctx.mint.key,
-            Rent::get()?.minimum_balance(space),
-            space as u64,
-            ctx.token_program.key,
-        ),
-        &[
-            ctx.payer.clone(),
-            ctx.mint.clone(),
-            ctx.system_program.clone(),
-        ],
-    )?;
-    let (mint_manager, _) = mint_manager_seeds(ctx.mint.key);
-    initialize_mint(&mint_manager, &mint_manager, ctx.mint, ctx.token_program, 0)
-}
diff --git a/program/src/instructions/init_mint_manager.rs b/program/src/instructions/init_mint_manager.rs
deleted file mode 100644
index 52d428b4..00000000
--- a/program/src/instructions/init_mint_manager.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-use crate::state::assert_mint_manager_seeds;
-use crate::state::mint_manager;
-use crate::state::MINT_MANAGER_SIZE;
-use crate::utils::assert_address;
-use crate::utils::assert_empty;
-use crate::utils::assert_mut;
-use crate::utils::assert_owner;
-use crate::utils::assert_signer;
-use borsh::BorshSerialize;
-use mint_manager::MintManager;
-use mpl_token_metadata::utils::create_or_allocate_account_raw;
-use solana_program::account_info::next_account_info;
-use solana_program::account_info::AccountInfo;
-use solana_program::entrypoint::ProgramResult;
-use solana_program::program_error::ProgramError;
-use solana_program::system_program;
-
-pub struct InitMintManagerCtx<'a, 'info> {
-    pub mint: &'a AccountInfo<'info>,
-    pub mint_manager: &'a AccountInfo<'info>,
-    pub authority: &'a AccountInfo<'info>,
-    pub ruleset: &'a AccountInfo<'info>,
-    pub payer: &'a AccountInfo<'info>,
-    pub token_program: &'a AccountInfo<'info>,
-    pub system_program: &'a AccountInfo<'info>,
-}
-
-impl<'a, 'info> InitMintManagerCtx<'a, 'info> {
-    pub fn load(accounts: &'a [AccountInfo<'info>]) -> Result<Self, ProgramError> {
-        let account_iter = &mut accounts.iter();
-        let ctx = Self {
-            mint: next_account_info(account_iter)?,
-            mint_manager: next_account_info(account_iter)?,
-            authority: next_account_info(account_iter)?,
-            ruleset: next_account_info(account_iter)?,
-            payer: next_account_info(account_iter)?,
-            token_program: next_account_info(account_iter)?,
-            system_program: next_account_info(account_iter)?,
-        };
-
-        // mint
-        assert_owner(ctx.mint, ctx.token_program.key, "mint")?;
-        assert_mut(ctx.mint, "mint")?;
-
-        // mint manager
-        assert_mut(ctx.mint_manager, "mint_manager")?;
-        assert_empty(ctx.mint_manager, "mint_manager")?;
-
-        // authority
-        assert_signer(ctx.authority, "authority")?;
-
-        // payer
-        assert_signer(ctx.payer, "payer")?;
-        assert_mut(ctx.payer, "payer")?;
-
-        // token_program
-        assert_address(ctx.token_program, &spl_token::id(), "token_program")?;
-
-        // system_program
-        assert_address(ctx.system_program, &system_program::id(), "system_program")?;
-        Ok(ctx)
-    }
-}
-
-pub fn handler(ctx: InitMintManagerCtx) -> ProgramResult {
-    let seeds = assert_mint_manager_seeds(ctx.mint.key, ctx.mint_manager.key)?;
-    let space = MINT_MANAGER_SIZE;
-    create_or_allocate_account_raw(
-        crate::id(),
-        ctx.mint_manager,
-        ctx.system_program,
-        ctx.payer,
-        space,
-        &seeds.iter().map(|s| s.as_slice()).collect::<Vec<&[u8]>>(),
-    )?;
-    let mint_manager = MintManager {
-        account_type: 1,
-        version: 1,
-        mint: *ctx.mint.key,
-        authority: *ctx.authority.key,
-        ruleset: *ctx.ruleset.key,
-    };
-    BorshSerialize::serialize(&mint_manager, &mut *ctx.mint_manager.data.borrow_mut())?;
-    Ok(())
-}
diff --git a/program/src/instructions/mint_manager/init_mint_manager.rs b/program/src/instructions/mint_manager/init_mint_manager.rs
new file mode 100644
index 00000000..3a866579
--- /dev/null
+++ b/program/src/instructions/mint_manager/init_mint_manager.rs
@@ -0,0 +1,90 @@
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+use anchor_spl::token::Mint;
+use anchor_spl::token::SetAuthority;
+use anchor_spl::token::Token;
+use anchor_spl::token::{self};
+use solana_program::program::invoke;
+use solana_program::system_instruction::transfer;
+use spl_token::instruction::AuthorityType;
+
+#[derive(Accounts)]
+pub struct InitMintManagerCtx<'info> {
+    #[account(mut)]
+    mint: Account<'info, Mint>,
+    #[account(
+        init,
+        payer = payer,
+        space = MINT_MANAGER_SIZE,
+        seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()],
+        bump,
+    )]
+    mint_manager: Account<'info, MintManager>,
+    standard: Account<'info, Standard>,
+
+    /// CHECK: Account is not read from
+    #[account(mut)]
+    collector: UncheckedAccount<'info>,
+    authority: Signer<'info>,
+    #[account(mut)]
+    payer: Signer<'info>,
+    token_program: Program<'info, Token>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<InitMintManagerCtx>) -> Result<()> {
+    let mint_manager = &mut ctx.accounts.mint_manager;
+    mint_manager.bump = *ctx.bumps.get("mint_manager").unwrap();
+    mint_manager.version = 0;
+    mint_manager.authority = ctx.accounts.authority.key();
+    mint_manager.mint = ctx.accounts.mint.key();
+    mint_manager.standard = ctx.accounts.standard.key();
+
+    if ctx.accounts.mint.supply != 1 || ctx.accounts.mint.decimals != 0 {
+        return Err(error!(ErrorCode::InvalidMint));
+    }
+    // set mint authoriy
+    let cpi_accounts = SetAuthority {
+        account_or_mint: ctx.accounts.mint.to_account_info(),
+        current_authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::set_authority(
+        cpi_context,
+        AuthorityType::MintTokens,
+        Some(ctx.accounts.mint_manager.key()),
+    )?;
+
+    // set freeze authoriy
+    let cpi_accounts = SetAuthority {
+        account_or_mint: ctx.accounts.mint.to_account_info(),
+        current_authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::set_authority(
+        cpi_context,
+        AuthorityType::FreezeAccount,
+        Some(ctx.accounts.mint_manager.key()),
+    )?;
+
+    // creation
+    if ctx.accounts.collector.key().to_string() != CREATION_COLLECTOR {
+        return Err(error!(ErrorCode::InvalidCollector));
+    }
+    invoke(
+        &transfer(
+            &ctx.accounts.payer.key(),
+            &ctx.accounts.collector.key(),
+            CREATION_LAMPORTS,
+        ),
+        &[
+            ctx.accounts.payer.to_account_info(),
+            ctx.accounts.collector.to_account_info(),
+            ctx.accounts.system_program.to_account_info(),
+        ],
+    )?;
+    Ok(())
+}
diff --git a/program/src/instructions/mint_manager/mod.rs b/program/src/instructions/mint_manager/mod.rs
new file mode 100644
index 00000000..e2ac98fd
--- /dev/null
+++ b/program/src/instructions/mint_manager/mod.rs
@@ -0,0 +1,5 @@
+pub mod init_mint_manager;
+pub use init_mint_manager::*;
+
+pub mod update_mint_manager;
+pub use update_mint_manager::*;
diff --git a/program/src/instructions/mint_manager/update_mint_manager.rs b/program/src/instructions/mint_manager/update_mint_manager.rs
new file mode 100644
index 00000000..b3f022f2
--- /dev/null
+++ b/program/src/instructions/mint_manager/update_mint_manager.rs
@@ -0,0 +1,24 @@
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+
+#[derive(AnchorSerialize, AnchorDeserialize)]
+pub struct UpdateMintManagerIx {
+    pub authority: Pubkey,
+}
+
+#[derive(Accounts)]
+pub struct UpdateMintManagerCtx<'info> {
+    mint_manager: Account<'info, MintManager>,
+    standard: Account<'info, Standard>,
+    #[account(constraint = authority.key() == mint_manager.authority @ ErrorCode::InvalidAuthority)]
+    authority: Signer<'info>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<UpdateMintManagerCtx>, ix: UpdateMintManagerIx) -> Result<()> {
+    let mint_manager = &mut ctx.accounts.mint_manager;
+    mint_manager.authority = ix.authority;
+    mint_manager.standard = ctx.accounts.standard.key();
+    Ok(())
+}
diff --git a/program/src/instructions/mod.rs b/program/src/instructions/mod.rs
index 2bb74a29..df76ad76 100644
--- a/program/src/instructions/mod.rs
+++ b/program/src/instructions/mod.rs
@@ -1,9 +1,7 @@
-pub mod client;
-pub mod init_mint;
-pub mod init_mint_manager;
-pub mod token;
+pub mod mint_manager;
+pub use mint_manager::init_mint_manager::*;
+pub use mint_manager::update_mint_manager::*;
 
-pub use client::*;
-pub use init_mint::*;
-pub use init_mint_manager::*;
-pub use token::*;
+pub mod standard;
+pub use standard::init_standard::*;
+pub use standard::update_standard::*;
diff --git a/program/src/instructions/standard/init_standard.rs b/program/src/instructions/standard/init_standard.rs
new file mode 100644
index 00000000..b0df14c3
--- /dev/null
+++ b/program/src/instructions/standard/init_standard.rs
@@ -0,0 +1,39 @@
+use crate::state::*;
+use anchor_lang::prelude::*;
+
+#[derive(AnchorSerialize, AnchorDeserialize)]
+pub struct InitStandardIx {
+    pub check_seller_fee_basis_points: bool,
+    pub name: String,
+    pub disallowed_programs: Vec<Pubkey>,
+    pub allowed_programs: Vec<Pubkey>,
+}
+
+#[derive(Accounts)]
+#[instruction(ix: InitStandardIx)]
+pub struct InitStandardCtx<'info> {
+    #[account(
+        init,
+        payer = payer,
+        space = STANDARD_SIZE,
+        seeds = [STANDARD_SEED.as_bytes(), ix.name.as_bytes()],
+        bump,
+    )]
+    standard: Account<'info, Standard>,
+    authority: Signer<'info>,
+    #[account(mut)]
+    payer: Signer<'info>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<InitStandardCtx>, ix: InitStandardIx) -> Result<()> {
+    let standard = &mut ctx.accounts.standard;
+    standard.bump = *ctx.bumps.get("standard").unwrap();
+    standard.version = 0;
+    standard.authority = ctx.accounts.authority.key();
+    standard.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
+    standard.name = ix.name;
+    standard.allowed_programs = ix.allowed_programs;
+    standard.disallowed_programs = ix.disallowed_programs;
+    Ok(())
+}
diff --git a/program/src/instructions/standard/mod.rs b/program/src/instructions/standard/mod.rs
new file mode 100644
index 00000000..f5b159ba
--- /dev/null
+++ b/program/src/instructions/standard/mod.rs
@@ -0,0 +1,5 @@
+pub mod init_standard;
+pub use init_standard::*;
+
+pub mod update_standard;
+pub use update_standard::*;
diff --git a/program/src/instructions/standard/update_standard.rs b/program/src/instructions/standard/update_standard.rs
new file mode 100644
index 00000000..0d4a8de8
--- /dev/null
+++ b/program/src/instructions/standard/update_standard.rs
@@ -0,0 +1,28 @@
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+
+#[derive(AnchorSerialize, AnchorDeserialize)]
+pub struct UpdateStandardIx {
+    pub check_seller_fee_basis_points: bool,
+    pub disallowed_programs: Vec<Pubkey>,
+    pub allowed_programs: Vec<Pubkey>,
+}
+
+#[derive(Accounts)]
+#[instruction(ix: UpdateStandardIx)]
+pub struct UpdateStandardCtx<'info> {
+    #[account(mut)]
+    standard: Account<'info, Standard>,
+    #[account(constraint = authority.key() == standard.authority @ ErrorCode::InvalidAuthority)]
+    authority: Signer<'info>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<UpdateStandardCtx>, ix: UpdateStandardIx) -> Result<()> {
+    let standard = &mut ctx.accounts.standard;
+    standard.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
+    standard.allowed_programs = ix.allowed_programs;
+    standard.disallowed_programs = ix.disallowed_programs;
+    Ok(())
+}
diff --git a/program/src/instructions/token.rs b/program/src/instructions/token.rs
deleted file mode 100644
index b79d4e64..00000000
--- a/program/src/instructions/token.rs
+++ /dev/null
@@ -1,174 +0,0 @@
-use solana_program::account_info::AccountInfo;
-use solana_program::entrypoint::ProgramResult;
-use solana_program::program::invoke;
-use solana_program::program::invoke_signed;
-use solana_program::pubkey::Pubkey;
-
-pub fn initialize_mint<'a, 'b>(
-    freeze_authority: &Pubkey,
-    mint_authority: &Pubkey,
-    mint: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-    decimals: u8,
-) -> ProgramResult {
-    invoke(
-        &spl_token::instruction::initialize_mint2(
-            token_program.key,
-            mint.key,
-            mint_authority,
-            Some(freeze_authority),
-            decimals,
-        )?,
-        &[token_program.clone(), mint.clone()],
-    )
-}
-
-pub fn thaw<'a, 'b>(
-    freeze_authority: &'a AccountInfo<'b>,
-    mint: &'a AccountInfo<'b>,
-    target: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-    seeds: &[Vec<u8>],
-) -> ProgramResult {
-    invoke_signed(
-        &spl_token::instruction::thaw_account(
-            token_program.key,
-            target.key,
-            mint.key,
-            freeze_authority.key,
-            &[],
-        )?,
-        &[
-            token_program.clone(),
-            mint.clone(),
-            freeze_authority.clone(),
-            target.clone(),
-        ],
-        &[&seeds.iter().map(|s| s.as_slice()).collect::<Vec<&[u8]>>()],
-    )
-}
-
-pub fn freeze<'a, 'b>(
-    freeze_authority: &'a AccountInfo<'b>,
-    mint: &'a AccountInfo<'b>,
-    target: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-    seeds: &[Vec<u8>],
-) -> ProgramResult {
-    invoke_signed(
-        &spl_token::instruction::freeze_account(
-            token_program.key,
-            target.key,
-            mint.key,
-            freeze_authority.key,
-            &[],
-        )?,
-        &[
-            token_program.clone(),
-            mint.clone(),
-            freeze_authority.clone(),
-            target.clone(),
-        ],
-        &[&seeds.iter().map(|s| s.as_slice()).collect::<Vec<&[u8]>>()],
-    )
-}
-
-pub fn transfer<'a, 'b>(
-    src: &'a AccountInfo<'b>,
-    dst: &'a AccountInfo<'b>,
-    owner: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-    amount: u64,
-) -> ProgramResult {
-    invoke(
-        &spl_token::instruction::transfer(
-            token_program.key,
-            src.key,
-            dst.key,
-            owner.key,
-            &[],
-            amount,
-        )?,
-        &[
-            token_program.clone(),
-            src.clone(),
-            dst.clone(),
-            owner.clone(),
-        ],
-    )
-}
-
-pub fn mint_to<'a, 'b>(
-    mint: &'a AccountInfo<'b>,
-    account: &'a AccountInfo<'b>,
-    owner: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-    amount: u64,
-    seeds: &[Vec<u8>],
-) -> ProgramResult {
-    invoke_signed(
-        &spl_token::instruction::mint_to(
-            token_program.key,
-            mint.key,
-            account.key,
-            owner.key,
-            &[],
-            amount,
-        )?,
-        &[
-            token_program.clone(),
-            mint.clone(),
-            account.clone(),
-            owner.clone(),
-        ],
-        &[&seeds.iter().map(|s| s.as_slice()).collect::<Vec<&[u8]>>()],
-    )
-}
-
-pub fn burn<'a, 'b>(
-    mint: &'a AccountInfo<'b>,
-    account: &'a AccountInfo<'b>,
-    owner: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-    amount: u64,
-) -> ProgramResult {
-    invoke(
-        &spl_token::instruction::burn(
-            token_program.key,
-            account.key,
-            mint.key,
-            owner.key,
-            &[],
-            amount,
-        )?,
-        &[
-            token_program.clone(),
-            mint.clone(),
-            account.clone(),
-            owner.clone(),
-        ],
-    )
-}
-
-pub fn close<'a, 'b>(
-    account: &'a AccountInfo<'b>,
-    destination: &'a AccountInfo<'b>,
-    owner: &'a AccountInfo<'b>,
-    token_program: &'a AccountInfo<'b>,
-) -> ProgramResult {
-    invoke(
-        &spl_token::instruction::close_account(
-            token_program.key,
-            account.key,
-            destination.key,
-            owner.key,
-            &[],
-        )?,
-        &[
-            token_program.clone(),
-            destination.clone(),
-            account.clone(),
-            owner.clone(),
-        ],
-    )
-}
diff --git a/program/src/instructions/token/approve.rs b/program/src/instructions/token/approve.rs
new file mode 100644
index 00000000..7644c823
--- /dev/null
+++ b/program/src/instructions/token/approve.rs
@@ -0,0 +1 @@
+// avi
diff --git a/program/src/instructions/token/burn.rs b/program/src/instructions/token/burn.rs
new file mode 100644
index 00000000..024d9ffc
--- /dev/null
+++ b/program/src/instructions/token/burn.rs
@@ -0,0 +1 @@
+// giannis
diff --git a/program/src/instructions/token/close.rs b/program/src/instructions/token/close.rs
new file mode 100644
index 00000000..024d9ffc
--- /dev/null
+++ b/program/src/instructions/token/close.rs
@@ -0,0 +1 @@
+// giannis
diff --git a/program/src/instructions/token/init_account.rs b/program/src/instructions/token/init_account.rs
new file mode 100644
index 00000000..083c3f66
--- /dev/null
+++ b/program/src/instructions/token/init_account.rs
@@ -0,0 +1 @@
+// bogle
\ No newline at end of file
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
new file mode 100644
index 00000000..4a780b68
--- /dev/null
+++ b/program/src/instructions/token/init_mint.rs
@@ -0,0 +1 @@
+// giannis
\ No newline at end of file
diff --git a/program/src/state/ruleset.rs b/program/src/instructions/token/post_transfer.rs
similarity index 100%
rename from program/src/state/ruleset.rs
rename to program/src/instructions/token/post_transfer.rs
diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
new file mode 100644
index 00000000..e69de29b
diff --git a/program/src/instructions/token/revoke.rs b/program/src/instructions/token/revoke.rs
new file mode 100644
index 00000000..7644c823
--- /dev/null
+++ b/program/src/instructions/token/revoke.rs
@@ -0,0 +1 @@
+// avi
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
new file mode 100644
index 00000000..083c3f66
--- /dev/null
+++ b/program/src/instructions/token/transfer.rs
@@ -0,0 +1 @@
+// bogle
\ No newline at end of file
diff --git a/program/src/lib.rs b/program/src/lib.rs
index 3c3393a7..4fa0915e 100644
--- a/program/src/lib.rs
+++ b/program/src/lib.rs
@@ -1,61 +1,35 @@
-use borsh::BorshDeserialize;
-use borsh::BorshSerialize;
-use shank::ShankInstruction;
-use solana_program::account_info::AccountInfo;
-use solana_program::entrypoint::ProgramResult;
-use solana_program::msg;
-use solana_program::pubkey::Pubkey;
-
+pub mod errors;
 pub mod instructions;
-pub mod pda;
 pub mod state;
 pub mod utils;
 
+use anchor_lang::prelude::*;
 use instructions::*;
 
-solana_program::declare_id!("mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS");
+solana_program::declare_id!("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez");
 
-#[cfg(not(feature = "no-entrypoint"))]
-solana_program::entrypoint!(process_instruction);
+#[program]
+pub mod cardinal_creator_standard {
+    use super::*;
 
-#[derive(Debug, Clone, ShankInstruction, BorshSerialize, BorshDeserialize)]
-#[rustfmt::skip]
-pub enum CreatorStandardInstruction {
+    // mint_manager
+    pub fn init_mint_manager(ctx: Context<InitMintManagerCtx>) -> Result<()> {
+        mint_manager::init_mint_manager::handler(ctx)
+    }
 
-    #[account(0, writable, name = "mint")]
-    #[account(1, writable, name = "mint_manager")]
-    #[account(2, writable, signer, name = "authority")]
-    #[account(3, writable, signer, name = "payer")]
-    #[account(4, name = "token_program", desc = "Token program")]
-    #[account(5, name = "system_program", desc = "System program")]
-    InitMint,
+    pub fn update_mint_manager(
+        ctx: Context<UpdateMintManagerCtx>,
+        ix: UpdateMintManagerIx,
+    ) -> Result<()> {
+        mint_manager::update_mint_manager::handler(ctx, ix)
+    }
 
-    #[account(0, writable, name = "mint")]
-    #[account(1, writable, name = "mint_manager")]
-    #[account(2, signer, name = "authority")]
-    #[account(3, name = "ruleset")]
-    #[account(4, writable, signer, name = "payer")]
-    #[account(5, name = "token_program", desc = "Token program")]
-    #[account(6, name = "system_program", desc = "System program")]
-    InitMintManager,
-}
+    // standard
+    pub fn init_standard(ctx: Context<InitStandardCtx>, ix: InitStandardIx) -> Result<()> {
+        standard::init_standard::handler(ctx, ix)
+    }
 
-pub fn process_instruction(
-    _program_id: &Pubkey,
-    accounts: &[AccountInfo],
-    instruction_data: &[u8],
-) -> ProgramResult {
-    let instruction = CreatorStandardInstruction::try_from_slice(instruction_data)?;
-    match instruction {
-        CreatorStandardInstruction::InitMint => {
-            msg!("CreatorStandardInstruction::InitMint");
-            let init_mint_ctx = InitMintCtx::load(accounts)?;
-            init_mint::handler(init_mint_ctx)
-        }
-        CreatorStandardInstruction::InitMintManager => {
-            msg!("CreatorStandardInstruction::InitMintManager");
-            let ctx = InitMintManagerCtx::load(accounts)?;
-            init_mint_manager::handler(ctx)
-        }
+    pub fn update_standard(ctx: Context<UpdateStandardCtx>, ix: UpdateStandardIx) -> Result<()> {
+        standard::update_standard::handler(ctx, ix)
     }
 }
diff --git a/program/src/pda.rs b/program/src/pda.rs
deleted file mode 100644
index df9a1fb2..00000000
--- a/program/src/pda.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-use solana_program::pubkey::Pubkey;
-
-use crate::state::MINT_MANAGER_SEED;
-
-pub fn find_mint_manager_address(mint: &Pubkey) -> (Pubkey, u8) {
-    Pubkey::find_program_address(&[MINT_MANAGER_SEED.as_bytes(), mint.as_ref()], &crate::id())
-}
diff --git a/program/src/state.rs b/program/src/state.rs
new file mode 100644
index 00000000..13d21694
--- /dev/null
+++ b/program/src/state.rs
@@ -0,0 +1,31 @@
+use anchor_lang::prelude::*;
+use solana_program::pubkey::Pubkey;
+
+pub const CREATION_LAMPORTS: u64 = 5_000_000;
+pub const CREATION_COLLECTOR: &str = "crkdpVWjHWdggGgBuSyAqSmZUmAjYLzD435tcLDRLXr";
+
+pub const MINT_MANAGER_SEED: &str = "mint-manager";
+pub const MINT_MANAGER_SIZE: usize = 8 + std::mem::size_of::<MintManager>() + 8;
+
+#[account]
+pub struct MintManager {
+    pub bump: u8,
+    pub version: u8,
+    pub mint: Pubkey,
+    pub authority: Pubkey,
+    pub standard: Pubkey,
+}
+
+pub const STANDARD_SEED: &str = "standard";
+pub const STANDARD_SIZE: usize = 8 + 1 + 1 + 1 + 24 + (32 * 10) + (32 * 10);
+
+#[account]
+pub struct Standard {
+    pub bump: u8,
+    pub version: u8,
+    pub authority: Pubkey,
+    pub check_seller_fee_basis_points: bool,
+    pub name: String,
+    pub disallowed_programs: Vec<Pubkey>,
+    pub allowed_programs: Vec<Pubkey>,
+}
diff --git a/program/src/state/mint_manager.rs b/program/src/state/mint_manager.rs
deleted file mode 100644
index 0ce2658c..00000000
--- a/program/src/state/mint_manager.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-use borsh::BorshDeserialize;
-use borsh::BorshSerialize;
-use shank::ShankAccount;
-use solana_program::program_error::ProgramError;
-use solana_program::pubkey::Pubkey;
-
-use crate::utils::assert_with_msg;
-
-pub const MINT_MANAGER_SEED: &str = "mint-manager";
-pub const MINT_MANAGER_SIZE: usize = std::mem::size_of::<MintManager>() + 8;
-
-#[inline]
-pub fn mint_manager_seeds(mint_id: &Pubkey) -> (Pubkey, Vec<Vec<u8>>) {
-    let mut seeds = vec![
-        MINT_MANAGER_SEED.as_bytes().to_vec(),
-        mint_id.as_ref().to_vec(),
-    ];
-    let (key, bump) = Pubkey::find_program_address(
-        &seeds.iter().map(|s| s.as_slice()).collect::<Vec<&[u8]>>(),
-        &crate::id(),
-    );
-    seeds.push(vec![bump]);
-    (key, seeds)
-}
-
-#[inline]
-pub fn assert_mint_manager_seeds(
-    mint_id: &Pubkey,
-    expected_key: &Pubkey,
-) -> Result<Vec<Vec<u8>>, ProgramError> {
-    let (key, seeds) = mint_manager_seeds(mint_id);
-    assert_with_msg(
-        expected_key == &key,
-        ProgramError::InvalidInstructionData,
-        "Invalid mint manager seeds",
-    )?;
-    Ok(seeds)
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "serde-feature", derive(Serialize, Deserialize))]
-#[derive(BorshSerialize, BorshDeserialize, PartialEq, Debug, Clone, ShankAccount)]
-pub struct MintManager {
-    pub account_type: u8,
-    pub version: u8,
-    pub mint: Pubkey,
-    pub authority: Pubkey,
-    pub ruleset: Pubkey,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "serde-feature", derive(Serialize, Deserialize))]
-#[derive(BorshSerialize, BorshDeserialize, PartialEq, Debug, Clone, ShankAccount)]
-pub struct MintManagerV2 {
-    pub account_type: u8,
-    pub version: u8,
-    pub mint: Pubkey,
-    pub authority: Pubkey,
-    pub ruleset: Pubkey,
-}
diff --git a/program/src/state/mod.rs b/program/src/state/mod.rs
deleted file mode 100644
index 8edcd8aa..00000000
--- a/program/src/state/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-pub mod mint_manager;
-
-pub use mint_manager::*;
diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
new file mode 100755
index 00000000..0fa720af
--- /dev/null
+++ b/sdk/generate-idls.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+# This script generates the IDL JSONs without buildling the full packages.
+
+rm -rf src/idl/
+mkdir -p src/idl/
+
+for PROGRAM in $(find programs/ -maxdepth 3 -name lib.rs); do
+    PROGRAM_NAME=$(dirname $PROGRAM | xargs dirname | xargs basename | tr '-' '_')
+    echo "Parsing IDL for $PROGRAM_NAME"
+    anchor idl parse --file $PROGRAM --out-ts src/idl/$PROGRAM_NAME.ts || {
+        echo "Could not parse IDL"
+        exit 1
+    }
+done
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index c1677738..17af65de 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -152,8 +152,8 @@
   ],
   "metadata": {
     "origin": "shank",
-    "address": "mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS",
+    "address": "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez",
     "binaryVersion": "0.0.5",
     "libVersion": "^0.0.5"
   }
-}
\ No newline at end of file
+}
diff --git a/sdk/package.json b/sdk/package.json
index e8d74ce6..a3c2aad1 100644
--- a/sdk/package.json
+++ b/sdk/package.json
@@ -6,6 +6,8 @@
   "license": "MIT",
   "scripts": {
     "test": "jest --setupFiles dotenv/config",
+    "idl:generate": "./generate-idls.sh",
+    "docs:generate": "typedoc --excludePrivate --includeVersion --out site/ src/index.ts",
     "lint": "eslint . --ext .ts"
   },
   "dependencies": {
diff --git a/sdk/src/generated/accounts/MintManager.ts b/sdk/src/generated/accounts/MintManager.ts
index 19cc78d5..a39f4ca0 100644
--- a/sdk/src/generated/accounts/MintManager.ts
+++ b/sdk/src/generated/accounts/MintManager.ts
@@ -5,9 +5,9 @@
  * See: https://github.com/metaplex-foundation/solita
  */
 
-import * as web3 from '@solana/web3.js'
-import * as beet from '@metaplex-foundation/beet'
-import * as beetSolana from '@metaplex-foundation/beet-solana'
+import * as web3 from "@solana/web3.js";
+import * as beet from "@metaplex-foundation/beet";
+import * as beetSolana from "@metaplex-foundation/beet-solana";
 
 /**
  * Arguments used to create {@link MintManager}
@@ -15,12 +15,12 @@ import * as beetSolana from '@metaplex-foundation/beet-solana'
  * @category generated
  */
 export type MintManagerArgs = {
-  accountType: number
-  version: number
-  mint: web3.PublicKey
-  authority: web3.PublicKey
-  ruleset: web3.PublicKey
-}
+  accountType: number;
+  version: number;
+  mint: web3.PublicKey;
+  authority: web3.PublicKey;
+  ruleset: web3.PublicKey;
+};
 /**
  * Holds the data for the {@link MintManager} Account and provides de/serialization
  * functionality for that data
@@ -47,7 +47,7 @@ export class MintManager implements MintManagerArgs {
       args.mint,
       args.authority,
       args.ruleset
-    )
+    );
   }
 
   /**
@@ -58,7 +58,7 @@ export class MintManager implements MintManagerArgs {
     accountInfo: web3.AccountInfo<Buffer>,
     offset = 0
   ): [MintManager, number] {
-    return MintManager.deserialize(accountInfo.data, offset)
+    return MintManager.deserialize(accountInfo.data, offset);
   }
 
   /**
@@ -71,11 +71,11 @@ export class MintManager implements MintManagerArgs {
     connection: web3.Connection,
     address: web3.PublicKey
   ): Promise<MintManager> {
-    const accountInfo = await connection.getAccountInfo(address)
+    const accountInfo = await connection.getAccountInfo(address);
     if (accountInfo == null) {
-      throw new Error(`Unable to find MintManager account at ${address}`)
+      throw new Error(`Unable to find MintManager account at ${address}`);
     }
-    return MintManager.fromAccountInfo(accountInfo, 0)[0]
+    return MintManager.fromAccountInfo(accountInfo, 0)[0];
   }
 
   /**
@@ -86,10 +86,10 @@ export class MintManager implements MintManagerArgs {
    */
   static gpaBuilder(
     programId: web3.PublicKey = new web3.PublicKey(
-      'mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS'
+      "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez"
     )
   ) {
-    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerBeet)
+    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerBeet);
   }
 
   /**
@@ -97,7 +97,7 @@ export class MintManager implements MintManagerArgs {
    * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
    */
   static deserialize(buf: Buffer, offset = 0): [MintManager, number] {
-    return mintManagerBeet.deserialize(buf, offset)
+    return mintManagerBeet.deserialize(buf, offset);
   }
 
   /**
@@ -105,7 +105,7 @@ export class MintManager implements MintManagerArgs {
    * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
    */
   serialize(): [Buffer, number] {
-    return mintManagerBeet.serialize(this)
+    return mintManagerBeet.serialize(this);
   }
 
   /**
@@ -113,7 +113,7 @@ export class MintManager implements MintManagerArgs {
    * {@link MintManager}
    */
   static get byteSize() {
-    return mintManagerBeet.byteSize
+    return mintManagerBeet.byteSize;
   }
 
   /**
@@ -129,7 +129,7 @@ export class MintManager implements MintManagerArgs {
     return connection.getMinimumBalanceForRentExemption(
       MintManager.byteSize,
       commitment
-    )
+    );
   }
 
   /**
@@ -137,7 +137,7 @@ export class MintManager implements MintManagerArgs {
    * hold {@link MintManager} data.
    */
   static hasCorrectByteSize(buf: Buffer, offset = 0) {
-    return buf.byteLength - offset === MintManager.byteSize
+    return buf.byteLength - offset === MintManager.byteSize;
   }
 
   /**
@@ -151,7 +151,7 @@ export class MintManager implements MintManagerArgs {
       mint: this.mint.toBase58(),
       authority: this.authority.toBase58(),
       ruleset: this.ruleset.toBase58(),
-    }
+    };
   }
 }
 
@@ -164,12 +164,12 @@ export const mintManagerBeet = new beet.BeetStruct<
   MintManagerArgs
 >(
   [
-    ['accountType', beet.u8],
-    ['version', beet.u8],
-    ['mint', beetSolana.publicKey],
-    ['authority', beetSolana.publicKey],
-    ['ruleset', beetSolana.publicKey],
+    ["accountType", beet.u8],
+    ["version", beet.u8],
+    ["mint", beetSolana.publicKey],
+    ["authority", beetSolana.publicKey],
+    ["ruleset", beetSolana.publicKey],
   ],
   MintManager.fromArgs,
-  'MintManager'
-)
+  "MintManager"
+);
diff --git a/sdk/src/generated/accounts/MintManagerV2.ts b/sdk/src/generated/accounts/MintManagerV2.ts
index 97ef4a0e..823ac38d 100644
--- a/sdk/src/generated/accounts/MintManagerV2.ts
+++ b/sdk/src/generated/accounts/MintManagerV2.ts
@@ -5,9 +5,9 @@
  * See: https://github.com/metaplex-foundation/solita
  */
 
-import * as web3 from '@solana/web3.js'
-import * as beet from '@metaplex-foundation/beet'
-import * as beetSolana from '@metaplex-foundation/beet-solana'
+import * as web3 from "@solana/web3.js";
+import * as beet from "@metaplex-foundation/beet";
+import * as beetSolana from "@metaplex-foundation/beet-solana";
 
 /**
  * Arguments used to create {@link MintManagerV2}
@@ -15,12 +15,12 @@ import * as beetSolana from '@metaplex-foundation/beet-solana'
  * @category generated
  */
 export type MintManagerV2Args = {
-  accountType: number
-  version: number
-  mint: web3.PublicKey
-  authority: web3.PublicKey
-  ruleset: web3.PublicKey
-}
+  accountType: number;
+  version: number;
+  mint: web3.PublicKey;
+  authority: web3.PublicKey;
+  ruleset: web3.PublicKey;
+};
 /**
  * Holds the data for the {@link MintManagerV2} Account and provides de/serialization
  * functionality for that data
@@ -47,7 +47,7 @@ export class MintManagerV2 implements MintManagerV2Args {
       args.mint,
       args.authority,
       args.ruleset
-    )
+    );
   }
 
   /**
@@ -58,7 +58,7 @@ export class MintManagerV2 implements MintManagerV2Args {
     accountInfo: web3.AccountInfo<Buffer>,
     offset = 0
   ): [MintManagerV2, number] {
-    return MintManagerV2.deserialize(accountInfo.data, offset)
+    return MintManagerV2.deserialize(accountInfo.data, offset);
   }
 
   /**
@@ -71,11 +71,11 @@ export class MintManagerV2 implements MintManagerV2Args {
     connection: web3.Connection,
     address: web3.PublicKey
   ): Promise<MintManagerV2> {
-    const accountInfo = await connection.getAccountInfo(address)
+    const accountInfo = await connection.getAccountInfo(address);
     if (accountInfo == null) {
-      throw new Error(`Unable to find MintManagerV2 account at ${address}`)
+      throw new Error(`Unable to find MintManagerV2 account at ${address}`);
     }
-    return MintManagerV2.fromAccountInfo(accountInfo, 0)[0]
+    return MintManagerV2.fromAccountInfo(accountInfo, 0)[0];
   }
 
   /**
@@ -86,10 +86,10 @@ export class MintManagerV2 implements MintManagerV2Args {
    */
   static gpaBuilder(
     programId: web3.PublicKey = new web3.PublicKey(
-      'mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS'
+      "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez"
     )
   ) {
-    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerV2Beet)
+    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerV2Beet);
   }
 
   /**
@@ -97,7 +97,7 @@ export class MintManagerV2 implements MintManagerV2Args {
    * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
    */
   static deserialize(buf: Buffer, offset = 0): [MintManagerV2, number] {
-    return mintManagerV2Beet.deserialize(buf, offset)
+    return mintManagerV2Beet.deserialize(buf, offset);
   }
 
   /**
@@ -105,7 +105,7 @@ export class MintManagerV2 implements MintManagerV2Args {
    * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
    */
   serialize(): [Buffer, number] {
-    return mintManagerV2Beet.serialize(this)
+    return mintManagerV2Beet.serialize(this);
   }
 
   /**
@@ -113,7 +113,7 @@ export class MintManagerV2 implements MintManagerV2Args {
    * {@link MintManagerV2}
    */
   static get byteSize() {
-    return mintManagerV2Beet.byteSize
+    return mintManagerV2Beet.byteSize;
   }
 
   /**
@@ -129,7 +129,7 @@ export class MintManagerV2 implements MintManagerV2Args {
     return connection.getMinimumBalanceForRentExemption(
       MintManagerV2.byteSize,
       commitment
-    )
+    );
   }
 
   /**
@@ -137,7 +137,7 @@ export class MintManagerV2 implements MintManagerV2Args {
    * hold {@link MintManagerV2} data.
    */
   static hasCorrectByteSize(buf: Buffer, offset = 0) {
-    return buf.byteLength - offset === MintManagerV2.byteSize
+    return buf.byteLength - offset === MintManagerV2.byteSize;
   }
 
   /**
@@ -151,7 +151,7 @@ export class MintManagerV2 implements MintManagerV2Args {
       mint: this.mint.toBase58(),
       authority: this.authority.toBase58(),
       ruleset: this.ruleset.toBase58(),
-    }
+    };
   }
 }
 
@@ -164,12 +164,12 @@ export const mintManagerV2Beet = new beet.BeetStruct<
   MintManagerV2Args
 >(
   [
-    ['accountType', beet.u8],
-    ['version', beet.u8],
-    ['mint', beetSolana.publicKey],
-    ['authority', beetSolana.publicKey],
-    ['ruleset', beetSolana.publicKey],
+    ["accountType", beet.u8],
+    ["version", beet.u8],
+    ["mint", beetSolana.publicKey],
+    ["authority", beetSolana.publicKey],
+    ["ruleset", beetSolana.publicKey],
   ],
   MintManagerV2.fromArgs,
-  'MintManagerV2'
-)
+  "MintManagerV2"
+);
diff --git a/sdk/src/generated/index.ts b/sdk/src/generated/index.ts
index 083bf7c9..8ad81bc0 100644
--- a/sdk/src/generated/index.ts
+++ b/sdk/src/generated/index.ts
@@ -1,6 +1,6 @@
-import { PublicKey } from '@solana/web3.js'
-export * from './accounts'
-export * from './instructions'
+import { PublicKey } from "@solana/web3.js";
+export * from "./accounts";
+export * from "./instructions";
 
 /**
  * Program address
@@ -8,7 +8,7 @@ export * from './instructions'
  * @category constants
  * @category generated
  */
-export const PROGRAM_ADDRESS = 'mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS'
+export const PROGRAM_ADDRESS = "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez";
 
 /**
  * Program public key
@@ -16,4 +16,4 @@ export const PROGRAM_ADDRESS = 'mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS'
  * @category constants
  * @category generated
  */
-export const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS)
+export const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS);
diff --git a/sdk/src/generated/instructions/InitMint.ts b/sdk/src/generated/instructions/InitMint.ts
index 302bee8a..ec75d1ad 100644
--- a/sdk/src/generated/instructions/InitMint.ts
+++ b/sdk/src/generated/instructions/InitMint.ts
@@ -5,9 +5,9 @@
  * See: https://github.com/metaplex-foundation/solita
  */
 
-import * as splToken from '@solana/spl-token'
-import * as beet from '@metaplex-foundation/beet'
-import * as web3 from '@solana/web3.js'
+import * as splToken from "@solana/spl-token";
+import * as beet from "@metaplex-foundation/beet";
+import * as web3 from "@solana/web3.js";
 
 /**
  * @category Instructions
@@ -15,8 +15,8 @@ import * as web3 from '@solana/web3.js'
  * @category generated
  */
 export const InitMintStruct = new beet.BeetArgsStruct<{
-  instructionDiscriminator: number
-}>([['instructionDiscriminator', beet.u8]], 'InitMintInstructionArgs')
+  instructionDiscriminator: number;
+}>([["instructionDiscriminator", beet.u8]], "InitMintInstructionArgs");
 /**
  * Accounts required by the _InitMint_ instruction
  *
@@ -29,15 +29,15 @@ export const InitMintStruct = new beet.BeetArgsStruct<{
  * @category generated
  */
 export type InitMintInstructionAccounts = {
-  mint: web3.PublicKey
-  mintManager: web3.PublicKey
-  authority: web3.PublicKey
-  payer: web3.PublicKey
-  tokenProgram?: web3.PublicKey
-  systemProgram?: web3.PublicKey
-}
+  mint: web3.PublicKey;
+  mintManager: web3.PublicKey;
+  authority: web3.PublicKey;
+  payer: web3.PublicKey;
+  tokenProgram?: web3.PublicKey;
+  systemProgram?: web3.PublicKey;
+};
 
-export const initMintInstructionDiscriminator = 0
+export const initMintInstructionDiscriminator = 0;
 
 /**
  * Creates a _InitMint_ instruction.
@@ -49,11 +49,11 @@ export const initMintInstructionDiscriminator = 0
  */
 export function createInitMintInstruction(
   accounts: InitMintInstructionAccounts,
-  programId = new web3.PublicKey('mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS')
+  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
 ) {
   const [data] = InitMintStruct.serialize({
     instructionDiscriminator: initMintInstructionDiscriminator,
-  })
+  });
   const keys: web3.AccountMeta[] = [
     {
       pubkey: accounts.mint,
@@ -85,12 +85,12 @@ export function createInitMintInstruction(
       isWritable: false,
       isSigner: false,
     },
-  ]
+  ];
 
   const ix = new web3.TransactionInstruction({
     programId,
     keys,
     data,
-  })
-  return ix
+  });
+  return ix;
 }
diff --git a/sdk/src/generated/instructions/InitMintManager.ts b/sdk/src/generated/instructions/InitMintManager.ts
index 9a2fad81..556a416e 100644
--- a/sdk/src/generated/instructions/InitMintManager.ts
+++ b/sdk/src/generated/instructions/InitMintManager.ts
@@ -5,9 +5,9 @@
  * See: https://github.com/metaplex-foundation/solita
  */
 
-import * as splToken from '@solana/spl-token'
-import * as beet from '@metaplex-foundation/beet'
-import * as web3 from '@solana/web3.js'
+import * as splToken from "@solana/spl-token";
+import * as beet from "@metaplex-foundation/beet";
+import * as web3 from "@solana/web3.js";
 
 /**
  * @category Instructions
@@ -15,8 +15,8 @@ import * as web3 from '@solana/web3.js'
  * @category generated
  */
 export const InitMintManagerStruct = new beet.BeetArgsStruct<{
-  instructionDiscriminator: number
-}>([['instructionDiscriminator', beet.u8]], 'InitMintManagerInstructionArgs')
+  instructionDiscriminator: number;
+}>([["instructionDiscriminator", beet.u8]], "InitMintManagerInstructionArgs");
 /**
  * Accounts required by the _InitMintManager_ instruction
  *
@@ -30,16 +30,16 @@ export const InitMintManagerStruct = new beet.BeetArgsStruct<{
  * @category generated
  */
 export type InitMintManagerInstructionAccounts = {
-  mint: web3.PublicKey
-  mintManager: web3.PublicKey
-  authority: web3.PublicKey
-  ruleset: web3.PublicKey
-  payer: web3.PublicKey
-  tokenProgram?: web3.PublicKey
-  systemProgram?: web3.PublicKey
-}
+  mint: web3.PublicKey;
+  mintManager: web3.PublicKey;
+  authority: web3.PublicKey;
+  ruleset: web3.PublicKey;
+  payer: web3.PublicKey;
+  tokenProgram?: web3.PublicKey;
+  systemProgram?: web3.PublicKey;
+};
 
-export const initMintManagerInstructionDiscriminator = 1
+export const initMintManagerInstructionDiscriminator = 1;
 
 /**
  * Creates a _InitMintManager_ instruction.
@@ -51,11 +51,11 @@ export const initMintManagerInstructionDiscriminator = 1
  */
 export function createInitMintManagerInstruction(
   accounts: InitMintManagerInstructionAccounts,
-  programId = new web3.PublicKey('mTok58Lg4YfcmwqyrDHpf7ogp599WRhzb6PxjaBqAxS')
+  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
 ) {
   const [data] = InitMintManagerStruct.serialize({
     instructionDiscriminator: initMintManagerInstructionDiscriminator,
-  })
+  });
   const keys: web3.AccountMeta[] = [
     {
       pubkey: accounts.mint,
@@ -92,12 +92,12 @@ export function createInitMintManagerInstruction(
       isWritable: false,
       isSigner: false,
     },
-  ]
+  ];
 
   const ix = new web3.TransactionInstruction({
     programId,
     keys,
     data,
-  })
-  return ix
+  });
+  return ix;
 }

From 6887c66d16a871144e2704a8d6cdb4ac13efcbe5 Mon Sep 17 00:00:00 2001
From: Giannis Chatziveroglou <gchatz@mit.edu>
Date: Thu, 20 Oct 2022 15:48:18 -0700
Subject: [PATCH 02/37] add mod.rs

---
 program/src/instructions/mint_manager/mod.rs |  4 ++--
 program/src/instructions/mod.rs              | 11 +++++++++++
 program/src/instructions/token/init_mint.rs  |  2 +-
 program/src/instructions/token/mod.rs        | 19 +++++++++++++++++++
 4 files changed, 33 insertions(+), 3 deletions(-)
 create mode 100644 program/src/instructions/token/mod.rs

diff --git a/program/src/instructions/mint_manager/mod.rs b/program/src/instructions/mint_manager/mod.rs
index e2ac98fd..0a931f48 100644
--- a/program/src/instructions/mint_manager/mod.rs
+++ b/program/src/instructions/mint_manager/mod.rs
@@ -1,5 +1,5 @@
 pub mod init_mint_manager;
-pub use init_mint_manager::*;
-
 pub mod update_mint_manager;
+
+pub use init_mint_manager::*;
 pub use update_mint_manager::*;
diff --git a/program/src/instructions/mod.rs b/program/src/instructions/mod.rs
index df76ad76..786f3d6e 100644
--- a/program/src/instructions/mod.rs
+++ b/program/src/instructions/mod.rs
@@ -5,3 +5,14 @@ pub use mint_manager::update_mint_manager::*;
 pub mod standard;
 pub use standard::init_standard::*;
 pub use standard::update_standard::*;
+
+pub mod token;
+pub use token::approve;
+pub use token::burn;
+pub use token::close;
+pub use token::init_account;
+pub use token::init_mint;
+pub use token::post_transfer;
+pub use token::pre_transfer;
+pub use token::revoke;
+pub use token::transfer;
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index 4a780b68..024d9ffc 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -1 +1 @@
-// giannis
\ No newline at end of file
+// giannis
diff --git a/program/src/instructions/token/mod.rs b/program/src/instructions/token/mod.rs
new file mode 100644
index 00000000..18ccb741
--- /dev/null
+++ b/program/src/instructions/token/mod.rs
@@ -0,0 +1,19 @@
+pub mod approve;
+pub mod burn;
+pub mod close;
+pub mod init_account;
+pub mod init_mint;
+pub mod post_transfer;
+pub mod pre_transfer;
+pub mod revoke;
+pub mod transfer;
+
+pub use approve::*;
+pub use burn::*;
+pub use close::*;
+pub use init_account::*;
+pub use init_mint::*;
+pub use post_transfer::*;
+pub use pre_transfer::*;
+pub use revoke::*;
+pub use transfer::*;

From 330caf3080eb730b8312b24aae165516185cd372 Mon Sep 17 00:00:00 2001
From: Giannis Chatziveroglou <gchatz@mit.edu>
Date: Thu, 20 Oct 2022 19:08:00 -0700
Subject: [PATCH 03/37] instructions

---
 program/src/errors.rs                         |  10 ++
 .../mint_manager/init_mint_manager.rs         |   4 +-
 program/src/instructions/token/approve.rs     |  73 +++++++++-
 program/src/instructions/token/burn.rs        |  68 ++++++++-
 program/src/instructions/token/close.rs       |  32 +++++
 program/src/instructions/token/init_mint.rs   | 135 +++++++++++++++++-
 program/src/instructions/token/revoke.rs      |  69 ++++++++-
 rustfmt.toml                                  |   1 +
 8 files changed, 386 insertions(+), 6 deletions(-)
 create mode 100644 rustfmt.toml

diff --git a/program/src/errors.rs b/program/src/errors.rs
index 6cd80877..ff1ba82c 100644
--- a/program/src/errors.rs
+++ b/program/src/errors.rs
@@ -8,4 +8,14 @@ pub enum ErrorCode {
     InvalidCollector,
     #[msg("Invalid authority address")]
     InvalidAuthority,
+    #[msg("Invalid mint")]
+    InvaldiMint,
+    #[msg("Invalid holder token account")]
+    InvlaidHolderTokenAccount,
+    #[msg("Invalid target token account")]
+    InvalidTargetTokenAccount,
+    #[msg("Invalid token account to close")]
+    InvalidCloseTokenAccount,
+    #[msg("Invalid holder token account")]
+    InvalidHolderTokenAccount,
 }
diff --git a/program/src/instructions/mint_manager/init_mint_manager.rs b/program/src/instructions/mint_manager/init_mint_manager.rs
index 3a866579..80cadac3 100644
--- a/program/src/instructions/mint_manager/init_mint_manager.rs
+++ b/program/src/instructions/mint_manager/init_mint_manager.rs
@@ -11,8 +11,6 @@ use spl_token::instruction::AuthorityType;
 
 #[derive(Accounts)]
 pub struct InitMintManagerCtx<'info> {
-    #[account(mut)]
-    mint: Account<'info, Mint>,
     #[account(
         init,
         payer = payer,
@@ -21,6 +19,8 @@ pub struct InitMintManagerCtx<'info> {
         bump,
     )]
     mint_manager: Account<'info, MintManager>,
+    #[account(mut)]
+    mint: Account<'info, Mint>,
     standard: Account<'info, Standard>,
 
     /// CHECK: Account is not read from
diff --git a/program/src/instructions/token/approve.rs b/program/src/instructions/token/approve.rs
index 7644c823..bda26089 100644
--- a/program/src/instructions/token/approve.rs
+++ b/program/src/instructions/token/approve.rs
@@ -1 +1,72 @@
-// avi
+use anchor_spl::token::{self, Approve, FreezeAccount, Mint, ThawAccount, Token, TokenAccount};
+use mpl_token_metadata::utils::assert_derivation;
+
+use {
+    crate::{errors::ErrorCode, state::*},
+    anchor_lang::prelude::*,
+};
+
+#[derive(Accounts)]
+pub struct ApproveCtx<'info> {
+    #[account(mut, seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()], bump)]
+    mint_manager: Box<Account<'info, MintManager>>,
+    #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMint)]
+    mint: Box<Account<'info, Mint>>,
+
+    #[account(mut, constraint =
+        holder_token_account.owner == holder.key()
+        && holder_token_account.mint == mint_manager.mint
+        && holder_token_account.amount > 1
+        && holder_token_account.delegate.is_none()
+        @ ErrorCode::InvalidHolderTokenAccount
+    )]
+    holder_token_account: Box<Account<'info, TokenAccount>>,
+    #[account(mut)]
+    holder: Signer<'info>,
+    /// CHECK: Account is not read from
+    #[account(mut)]
+    delegate: UncheckedAccount<'info>,
+
+    token_program: Program<'info, Token>,
+}
+
+pub fn handler(ctx: Context<ApproveCtx>) -> Result<()> {
+    let mint = ctx.accounts.mint.key();
+    let path = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref()];
+    let bump_seed = assert_derivation(
+        ctx.program_id,
+        &ctx.accounts.mint_manager.to_account_info(),
+        path,
+    )?;
+    let mint_manager_seeds = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref(), &[bump_seed]];
+    let mint_manager_signer = &[&mint_manager_seeds[..]];
+
+    let cpi_accounts = ThawAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::thaw_account(cpi_context)?;
+
+    let cpi_accounts = Approve {
+        to: ctx.accounts.holder_token_account.to_account_info(),
+        delegate: ctx.accounts.delegate.to_account_info(),
+        authority: ctx.accounts.holder.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::approve(cpi_context, 1)?;
+
+    let cpi_accounts = FreezeAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::freeze_account(cpi_context)?;
+
+    Ok(())
+}
diff --git a/program/src/instructions/token/burn.rs b/program/src/instructions/token/burn.rs
index 024d9ffc..a3935872 100644
--- a/program/src/instructions/token/burn.rs
+++ b/program/src/instructions/token/burn.rs
@@ -1 +1,67 @@
-// giannis
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+use anchor_spl::token::{self, Burn, CloseAccount, Mint, ThawAccount, Token, TokenAccount};
+
+#[derive(Accounts)]
+pub struct BurnCtx<'info> {
+    #[account(mut, close = holder, constraint = mint_manager.mint == mint.key() @ ErrorCode::InvalidMint)]
+    mint_manager: Account<'info, MintManager>,
+    #[account(mut)]
+    mint: Account<'info, Mint>,
+
+    #[account(mut, constraint =
+        holder_token_account.owner == holder.key()
+        && holder_token_account.mint == mint.key()
+        && holder_token_account.amount == 1 @ ErrorCode::InvlaidHolderTokenAccount)]
+    holder_token_account: Account<'info, TokenAccount>,
+    holder: Signer<'info>,
+
+    token_program: Program<'info, Token>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<BurnCtx>) -> Result<()> {
+    let mint_manager_key = ctx.accounts.mint.key();
+    let mint_manager_seeds = &[
+        MINT_MANAGER_SEED.as_bytes(),
+        mint_manager_key.as_ref(),
+        &[ctx.accounts.mint_manager.bump],
+    ];
+    let mint_manager_signer = &[&mint_manager_seeds[..]];
+
+    if ctx.accounts.mint.supply > 1
+        || ctx.accounts.mint.supply != ctx.accounts.holder_token_account.amount
+    {
+        return Err(error!(ErrorCode::InvalidMint));
+    }
+
+    let cpi_accounts = ThawAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::thaw_account(cpi_context)?;
+
+    let cpi_accounts = Burn {
+        mint: ctx.accounts.mint.to_account_info(),
+        from: ctx.accounts.holder_token_account.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::burn(cpi_context, 1)?;
+
+    let cpi_accounts = CloseAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        destination: ctx.accounts.holder.to_account_info(),
+        authority: ctx.accounts.holder.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::close_account(cpi_context)?;
+
+    Ok(())
+}
diff --git a/program/src/instructions/token/close.rs b/program/src/instructions/token/close.rs
index 024d9ffc..c7730495 100644
--- a/program/src/instructions/token/close.rs
+++ b/program/src/instructions/token/close.rs
@@ -1 +1,33 @@
 // giannis
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+use anchor_spl::token::{self, CloseAccount, Token, TokenAccount};
+
+#[derive(Accounts)]
+pub struct CloseCtx<'info> {
+    mint_manager: Account<'info, MintManager>,
+    /// CHECK: Account is not read from
+    #[account(mut)]
+    mint: UncheckedAccount<'info>,
+
+    #[account(mut, constraint = token_account.owner == owner.key() @ ErrorCode::InvalidCloseTokenAccount)]
+    token_account: Account<'info, TokenAccount>,
+    owner: Signer<'info>,
+
+    token_program: Program<'info, Token>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<CloseCtx>) -> Result<()> {
+    let cpi_accounts = CloseAccount {
+        account: ctx.accounts.token_account.to_account_info(),
+        destination: ctx.accounts.owner.to_account_info(),
+        authority: ctx.accounts.owner.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::close_account(cpi_context)?;
+
+    Ok(())
+}
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index 024d9ffc..1aa4d448 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -1 +1,134 @@
-// giannis
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+use anchor_lang::solana_program::program::invoke;
+use anchor_spl::associated_token::{self, AssociatedToken};
+use anchor_spl::token::TokenAccount;
+use anchor_spl::token::{self};
+use anchor_spl::token::{MintTo, Token};
+use solana_program::program_pack::Pack;
+use solana_program::system_instruction::create_account;
+use spl_associated_token_account::get_associated_token_address;
+
+#[derive(Accounts)]
+pub struct InitMintCtx<'info> {
+    #[account(
+        init,
+        payer = payer,
+        space = MINT_MANAGER_SIZE,
+        seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()],
+        bump,
+    )]
+    mint_manager: Account<'info, MintManager>,
+    /// CHECK: Account is not read from
+    #[account(mut)]
+    mint: UncheckedAccount<'info>,
+    standard: Account<'info, Standard>,
+
+    /// CHECK: Account created or checked in handler
+    #[account(mut)]
+    target_token_account: Account<'info, TokenAccount>,
+    target: Signer<'info>,
+
+    /// CHECK: Account is not read from
+    #[account(mut)]
+    collector: UncheckedAccount<'info>,
+    authority: Signer<'info>,
+    #[account(mut)]
+    payer: Signer<'info>,
+
+    rent: Sysvar<'info, Rent>,
+    token_program: Program<'info, Token>,
+    associated_token_program: Program<'info, AssociatedToken>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
+    let mint_manager = &mut ctx.accounts.mint_manager;
+    mint_manager.bump = *ctx.bumps.get("mint_manager").unwrap();
+    mint_manager.version = 0;
+    mint_manager.authority = ctx.accounts.authority.key();
+    mint_manager.mint = ctx.accounts.mint.key();
+    mint_manager.standard = ctx.accounts.standard.key();
+
+    // Create Mint
+    invoke(
+        &create_account(
+            ctx.accounts.payer.key,
+            ctx.accounts.mint.key,
+            ctx.accounts
+                .rent
+                .minimum_balance(spl_token::state::Mint::LEN),
+            spl_token::state::Mint::LEN as u64,
+            &spl_token::id(),
+        ),
+        &[
+            ctx.accounts.payer.to_account_info(),
+            ctx.accounts.mint.to_account_info(),
+        ],
+    )?;
+
+    // Initialize mint
+    let cpi_accounts = token::InitializeMint {
+        mint: ctx.accounts.mint.to_account_info(),
+        rent: ctx.accounts.rent.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::initialize_mint(
+        cpi_context,
+        0,
+        &ctx.accounts.mint_manager.key(),
+        Some(&ctx.accounts.mint_manager.key()),
+    )?;
+
+    // Check/Create ATA
+    let associated_token_account =
+        get_associated_token_address(&ctx.accounts.target.key(), &ctx.accounts.mint.key());
+    if associated_token_account != ctx.accounts.target_token_account.key() {
+        return Err(error!(ErrorCode::InvalidTargetTokenAccount));
+    }
+    if ctx
+        .accounts
+        .target_token_account
+        .to_account_info()
+        .data_is_empty()
+    {
+        let cpi_accounts = associated_token::Create {
+            payer: ctx.accounts.payer.to_account_info(),
+            associated_token: ctx.accounts.target_token_account.to_account_info(),
+            authority: ctx.accounts.target.to_account_info(),
+            mint: ctx.accounts.mint.to_account_info(),
+            system_program: ctx.accounts.system_program.to_account_info(),
+            token_program: ctx.accounts.token_program.to_account_info(),
+            rent: ctx.accounts.rent.to_account_info(),
+        };
+        let cpi_program = ctx.accounts.token_program.to_account_info();
+        let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+        associated_token::create(cpi_context)?;
+    } else if ctx.accounts.target_token_account.mint != ctx.accounts.mint_manager.mint
+        || ctx.accounts.target_token_account.owner != ctx.accounts.target.key()
+        || ctx.accounts.target_token_account.amount != 0
+    {
+        return Err(error!(ErrorCode::InvalidTargetTokenAccount));
+    }
+
+    // mint to
+    let mint_manager_key = ctx.accounts.mint.key();
+    let mint_manager_seeds = &[
+        MINT_MANAGER_SEED.as_bytes(),
+        mint_manager_key.as_ref(),
+        &[ctx.accounts.mint_manager.bump],
+    ];
+    let mint_manager_signer = &[&mint_manager_seeds[..]];
+    let cpi_accounts = MintTo {
+        mint: ctx.accounts.mint.to_account_info(),
+        to: ctx.accounts.target_token_account.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::mint_to(cpi_context, 1)?;
+
+    Ok(())
+}
diff --git a/program/src/instructions/token/revoke.rs b/program/src/instructions/token/revoke.rs
index 7644c823..802e7f45 100644
--- a/program/src/instructions/token/revoke.rs
+++ b/program/src/instructions/token/revoke.rs
@@ -1 +1,68 @@
-// avi
+use anchor_spl::token::{self, FreezeAccount, Mint, Revoke, ThawAccount, Token, TokenAccount};
+use mpl_token_metadata::utils::assert_derivation;
+
+use {
+    crate::{errors::ErrorCode, state::*},
+    anchor_lang::prelude::*,
+};
+
+#[derive(Accounts)]
+pub struct RevokeCtx<'info> {
+    #[account(mut, seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()], bump)]
+    mint_manager: Account<'info, MintManager>,
+    #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMint)]
+    mint: Box<Account<'info, Mint>>,
+
+    #[account(mut, constraint =
+        holder_token_account.owner == holder.key()
+        && holder_token_account.mint == mint_manager.mint
+        && holder_token_account.amount > 1
+        && holder_token_account.delegate.is_some()
+        @ ErrorCode::InvalidHolderTokenAccount
+    )]
+    holder_token_account: Box<Account<'info, TokenAccount>>,
+    #[account(mut)]
+    holder: Signer<'info>,
+
+    token_program: Program<'info, Token>,
+}
+
+pub fn handler(ctx: Context<RevokeCtx>) -> Result<()> {
+    let mint = ctx.accounts.mint.key();
+    let path = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref()];
+    let bump_seed = assert_derivation(
+        ctx.program_id,
+        &ctx.accounts.mint_manager.to_account_info(),
+        path,
+    )?;
+    let mint_manager_seeds = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref(), &[bump_seed]];
+    let mint_manager_signer = &[&mint_manager_seeds[..]];
+
+    let cpi_accounts = ThawAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::thaw_account(cpi_context)?;
+
+    let cpi_accounts = Revoke {
+        source: ctx.accounts.holder_token_account.to_account_info(),
+        authority: ctx.accounts.holder.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::revoke(cpi_context)?;
+
+    let cpi_accounts = FreezeAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::freeze_account(cpi_context)?;
+
+    Ok(())
+}
diff --git a/rustfmt.toml b/rustfmt.toml
new file mode 100644
index 00000000..ffc467de
--- /dev/null
+++ b/rustfmt.toml
@@ -0,0 +1 @@
+max_width = 200

From b7bbe32715904c15ac4e407f3ab00fda4649cefb Mon Sep 17 00:00:00 2001
From: Giannis Chatziveroglou <gchatz@mit.edu>
Date: Thu, 20 Oct 2022 19:11:23 -0700
Subject: [PATCH 04/37] create idl

---
 sdk/generate-idls.sh                   |   6 +-
 sdk/idl/cardinal_creator_standard.json | 159 ------
 sdk/idl/cardinal_creator_standard.ts   | 649 +++++++++++++++++++++++++
 3 files changed, 652 insertions(+), 162 deletions(-)
 delete mode 100644 sdk/idl/cardinal_creator_standard.json
 create mode 100644 sdk/idl/cardinal_creator_standard.ts

diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
index 0fa720af..ade33c8a 100755
--- a/sdk/generate-idls.sh
+++ b/sdk/generate-idls.sh
@@ -5,10 +5,10 @@
 rm -rf src/idl/
 mkdir -p src/idl/
 
-for PROGRAM in $(find programs/ -maxdepth 3 -name lib.rs); do
-    PROGRAM_NAME=$(dirname $PROGRAM | xargs dirname | xargs basename | tr '-' '_')
+for PROGRAM in $(find ../program/ -maxdepth 3 -name lib.rs); do
+    PROGRAM_NAME="cardinal_creator_standard"
     echo "Parsing IDL for $PROGRAM_NAME"
-    anchor idl parse --file $PROGRAM --out-ts src/idl/$PROGRAM_NAME.ts || {
+    anchor idl parse --file $PROGRAM --out-ts idl/$PROGRAM_NAME.ts || {
         echo "Could not parse IDL"
         exit 1
     }
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
deleted file mode 100644
index 17af65de..00000000
--- a/sdk/idl/cardinal_creator_standard.json
+++ /dev/null
@@ -1,159 +0,0 @@
-{
-  "version": "0.1.0",
-  "name": "cardinal_creator_standard",
-  "instructions": [
-    {
-      "name": "InitMint",
-      "accounts": [
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false,
-          "desc": "Token program"
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false,
-          "desc": "System program"
-        }
-      ],
-      "args": [],
-      "discriminant": {
-        "type": "u8",
-        "value": 0
-      }
-    },
-    {
-      "name": "InitMintManager",
-      "accounts": [
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false,
-          "desc": "Token program"
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false,
-          "desc": "System program"
-        }
-      ],
-      "args": [],
-      "discriminant": {
-        "type": "u8",
-        "value": 1
-      }
-    }
-  ],
-  "accounts": [
-    {
-      "name": "MintManager",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "accountType",
-            "type": "u8"
-          },
-          {
-            "name": "version",
-            "type": "u8"
-          },
-          {
-            "name": "mint",
-            "type": "publicKey"
-          },
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "ruleset",
-            "type": "publicKey"
-          }
-        ]
-      }
-    },
-    {
-      "name": "MintManagerV2",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "accountType",
-            "type": "u8"
-          },
-          {
-            "name": "version",
-            "type": "u8"
-          },
-          {
-            "name": "mint",
-            "type": "publicKey"
-          },
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "ruleset",
-            "type": "publicKey"
-          }
-        ]
-      }
-    }
-  ],
-  "metadata": {
-    "origin": "shank",
-    "address": "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez",
-    "binaryVersion": "0.0.5",
-    "libVersion": "^0.0.5"
-  }
-}
diff --git a/sdk/idl/cardinal_creator_standard.ts b/sdk/idl/cardinal_creator_standard.ts
new file mode 100644
index 00000000..c16ebfab
--- /dev/null
+++ b/sdk/idl/cardinal_creator_standard.ts
@@ -0,0 +1,649 @@
+export type CardinalCreatorStandard = {
+  version: "0.1.0";
+  name: "cardinal_creator_standard";
+  instructions: [
+    {
+      name: "initMintManager";
+      accounts: [
+        {
+          name: "mintManager";
+          isMut: true;
+          isSigner: false;
+        },
+        {
+          name: "mint";
+          isMut: true;
+          isSigner: false;
+        },
+        {
+          name: "standard";
+          isMut: false;
+          isSigner: false;
+        },
+        {
+          name: "collector";
+          isMut: true;
+          isSigner: false;
+        },
+        {
+          name: "authority";
+          isMut: false;
+          isSigner: true;
+        },
+        {
+          name: "payer";
+          isMut: true;
+          isSigner: true;
+        },
+        {
+          name: "tokenProgram";
+          isMut: false;
+          isSigner: false;
+        },
+        {
+          name: "systemProgram";
+          isMut: false;
+          isSigner: false;
+        }
+      ];
+      args: [];
+    },
+    {
+      name: "updateMintManager";
+      accounts: [
+        {
+          name: "mintManager";
+          isMut: false;
+          isSigner: false;
+        },
+        {
+          name: "standard";
+          isMut: false;
+          isSigner: false;
+        },
+        {
+          name: "authority";
+          isMut: false;
+          isSigner: true;
+        },
+        {
+          name: "systemProgram";
+          isMut: false;
+          isSigner: false;
+        }
+      ];
+      args: [
+        {
+          name: "ix";
+          type: {
+            defined: "UpdateMintManagerIx";
+          };
+        }
+      ];
+    },
+    {
+      name: "initStandard";
+      accounts: [
+        {
+          name: "standard";
+          isMut: true;
+          isSigner: false;
+        },
+        {
+          name: "authority";
+          isMut: false;
+          isSigner: true;
+        },
+        {
+          name: "payer";
+          isMut: true;
+          isSigner: true;
+        },
+        {
+          name: "systemProgram";
+          isMut: false;
+          isSigner: false;
+        }
+      ];
+      args: [
+        {
+          name: "ix";
+          type: {
+            defined: "InitStandardIx";
+          };
+        }
+      ];
+    },
+    {
+      name: "updateStandard";
+      accounts: [
+        {
+          name: "standard";
+          isMut: true;
+          isSigner: false;
+        },
+        {
+          name: "authority";
+          isMut: false;
+          isSigner: true;
+        },
+        {
+          name: "systemProgram";
+          isMut: false;
+          isSigner: false;
+        }
+      ];
+      args: [
+        {
+          name: "ix";
+          type: {
+            defined: "UpdateStandardIx";
+          };
+        }
+      ];
+    }
+  ];
+  accounts: [
+    {
+      name: "mintManager";
+      type: {
+        kind: "struct";
+        fields: [
+          {
+            name: "bump";
+            type: "u8";
+          },
+          {
+            name: "version";
+            type: "u8";
+          },
+          {
+            name: "mint";
+            type: "publicKey";
+          },
+          {
+            name: "authority";
+            type: "publicKey";
+          },
+          {
+            name: "standard";
+            type: "publicKey";
+          }
+        ];
+      };
+    },
+    {
+      name: "standard";
+      type: {
+        kind: "struct";
+        fields: [
+          {
+            name: "bump";
+            type: "u8";
+          },
+          {
+            name: "version";
+            type: "u8";
+          },
+          {
+            name: "authority";
+            type: "publicKey";
+          },
+          {
+            name: "checkSellerFeeBasisPoints";
+            type: "bool";
+          },
+          {
+            name: "name";
+            type: "string";
+          },
+          {
+            name: "disallowedPrograms";
+            type: {
+              vec: "publicKey";
+            };
+          },
+          {
+            name: "allowedPrograms";
+            type: {
+              vec: "publicKey";
+            };
+          }
+        ];
+      };
+    }
+  ];
+  types: [
+    {
+      name: "UpdateMintManagerIx";
+      type: {
+        kind: "struct";
+        fields: [
+          {
+            name: "authority";
+            type: "publicKey";
+          }
+        ];
+      };
+    },
+    {
+      name: "InitStandardIx";
+      type: {
+        kind: "struct";
+        fields: [
+          {
+            name: "checkSellerFeeBasisPoints";
+            type: "bool";
+          },
+          {
+            name: "name";
+            type: "string";
+          },
+          {
+            name: "disallowedPrograms";
+            type: {
+              vec: "publicKey";
+            };
+          },
+          {
+            name: "allowedPrograms";
+            type: {
+              vec: "publicKey";
+            };
+          }
+        ];
+      };
+    },
+    {
+      name: "UpdateStandardIx";
+      type: {
+        kind: "struct";
+        fields: [
+          {
+            name: "checkSellerFeeBasisPoints";
+            type: "bool";
+          },
+          {
+            name: "disallowedPrograms";
+            type: {
+              vec: "publicKey";
+            };
+          },
+          {
+            name: "allowedPrograms";
+            type: {
+              vec: "publicKey";
+            };
+          }
+        ];
+      };
+    }
+  ];
+  errors: [
+    {
+      code: 6000;
+      name: "InvalidMint";
+      msg: "Invalid mint";
+    },
+    {
+      code: 6001;
+      name: "InvalidCollector";
+      msg: "Invalid collector address";
+    },
+    {
+      code: 6002;
+      name: "InvalidAuthority";
+      msg: "Invalid authority address";
+    },
+    {
+      code: 6003;
+      name: "InvaldiMint";
+      msg: "Invalid mint";
+    },
+    {
+      code: 6004;
+      name: "InvlaidHolderTokenAccount";
+      msg: "Invalid holder token account";
+    },
+    {
+      code: 6005;
+      name: "InvalidTargetTokenAccount";
+      msg: "Invalid target token account";
+    },
+    {
+      code: 6006;
+      name: "InvalidCloseTokenAccount";
+      msg: "Invalid token account to close";
+    },
+    {
+      code: 6007;
+      name: "InvalidHolderTokenAccount";
+      msg: "Invalid holder token account";
+    }
+  ];
+};
+
+export const IDL: CardinalCreatorStandard = {
+  version: "0.1.0",
+  name: "cardinal_creator_standard",
+  instructions: [
+    {
+      name: "initMintManager",
+      accounts: [
+        {
+          name: "mintManager",
+          isMut: true,
+          isSigner: false,
+        },
+        {
+          name: "mint",
+          isMut: true,
+          isSigner: false,
+        },
+        {
+          name: "standard",
+          isMut: false,
+          isSigner: false,
+        },
+        {
+          name: "collector",
+          isMut: true,
+          isSigner: false,
+        },
+        {
+          name: "authority",
+          isMut: false,
+          isSigner: true,
+        },
+        {
+          name: "payer",
+          isMut: true,
+          isSigner: true,
+        },
+        {
+          name: "tokenProgram",
+          isMut: false,
+          isSigner: false,
+        },
+        {
+          name: "systemProgram",
+          isMut: false,
+          isSigner: false,
+        },
+      ],
+      args: [],
+    },
+    {
+      name: "updateMintManager",
+      accounts: [
+        {
+          name: "mintManager",
+          isMut: false,
+          isSigner: false,
+        },
+        {
+          name: "standard",
+          isMut: false,
+          isSigner: false,
+        },
+        {
+          name: "authority",
+          isMut: false,
+          isSigner: true,
+        },
+        {
+          name: "systemProgram",
+          isMut: false,
+          isSigner: false,
+        },
+      ],
+      args: [
+        {
+          name: "ix",
+          type: {
+            defined: "UpdateMintManagerIx",
+          },
+        },
+      ],
+    },
+    {
+      name: "initStandard",
+      accounts: [
+        {
+          name: "standard",
+          isMut: true,
+          isSigner: false,
+        },
+        {
+          name: "authority",
+          isMut: false,
+          isSigner: true,
+        },
+        {
+          name: "payer",
+          isMut: true,
+          isSigner: true,
+        },
+        {
+          name: "systemProgram",
+          isMut: false,
+          isSigner: false,
+        },
+      ],
+      args: [
+        {
+          name: "ix",
+          type: {
+            defined: "InitStandardIx",
+          },
+        },
+      ],
+    },
+    {
+      name: "updateStandard",
+      accounts: [
+        {
+          name: "standard",
+          isMut: true,
+          isSigner: false,
+        },
+        {
+          name: "authority",
+          isMut: false,
+          isSigner: true,
+        },
+        {
+          name: "systemProgram",
+          isMut: false,
+          isSigner: false,
+        },
+      ],
+      args: [
+        {
+          name: "ix",
+          type: {
+            defined: "UpdateStandardIx",
+          },
+        },
+      ],
+    },
+  ],
+  accounts: [
+    {
+      name: "mintManager",
+      type: {
+        kind: "struct",
+        fields: [
+          {
+            name: "bump",
+            type: "u8",
+          },
+          {
+            name: "version",
+            type: "u8",
+          },
+          {
+            name: "mint",
+            type: "publicKey",
+          },
+          {
+            name: "authority",
+            type: "publicKey",
+          },
+          {
+            name: "standard",
+            type: "publicKey",
+          },
+        ],
+      },
+    },
+    {
+      name: "standard",
+      type: {
+        kind: "struct",
+        fields: [
+          {
+            name: "bump",
+            type: "u8",
+          },
+          {
+            name: "version",
+            type: "u8",
+          },
+          {
+            name: "authority",
+            type: "publicKey",
+          },
+          {
+            name: "checkSellerFeeBasisPoints",
+            type: "bool",
+          },
+          {
+            name: "name",
+            type: "string",
+          },
+          {
+            name: "disallowedPrograms",
+            type: {
+              vec: "publicKey",
+            },
+          },
+          {
+            name: "allowedPrograms",
+            type: {
+              vec: "publicKey",
+            },
+          },
+        ],
+      },
+    },
+  ],
+  types: [
+    {
+      name: "UpdateMintManagerIx",
+      type: {
+        kind: "struct",
+        fields: [
+          {
+            name: "authority",
+            type: "publicKey",
+          },
+        ],
+      },
+    },
+    {
+      name: "InitStandardIx",
+      type: {
+        kind: "struct",
+        fields: [
+          {
+            name: "checkSellerFeeBasisPoints",
+            type: "bool",
+          },
+          {
+            name: "name",
+            type: "string",
+          },
+          {
+            name: "disallowedPrograms",
+            type: {
+              vec: "publicKey",
+            },
+          },
+          {
+            name: "allowedPrograms",
+            type: {
+              vec: "publicKey",
+            },
+          },
+        ],
+      },
+    },
+    {
+      name: "UpdateStandardIx",
+      type: {
+        kind: "struct",
+        fields: [
+          {
+            name: "checkSellerFeeBasisPoints",
+            type: "bool",
+          },
+          {
+            name: "disallowedPrograms",
+            type: {
+              vec: "publicKey",
+            },
+          },
+          {
+            name: "allowedPrograms",
+            type: {
+              vec: "publicKey",
+            },
+          },
+        ],
+      },
+    },
+  ],
+  errors: [
+    {
+      code: 6000,
+      name: "InvalidMint",
+      msg: "Invalid mint",
+    },
+    {
+      code: 6001,
+      name: "InvalidCollector",
+      msg: "Invalid collector address",
+    },
+    {
+      code: 6002,
+      name: "InvalidAuthority",
+      msg: "Invalid authority address",
+    },
+    {
+      code: 6003,
+      name: "InvaldiMint",
+      msg: "Invalid mint",
+    },
+    {
+      code: 6004,
+      name: "InvlaidHolderTokenAccount",
+      msg: "Invalid holder token account",
+    },
+    {
+      code: 6005,
+      name: "InvalidTargetTokenAccount",
+      msg: "Invalid target token account",
+    },
+    {
+      code: 6006,
+      name: "InvalidCloseTokenAccount",
+      msg: "Invalid token account to close",
+    },
+    {
+      code: 6007,
+      name: "InvalidHolderTokenAccount",
+      msg: "Invalid holder token account",
+    },
+  ],
+};

From e1bff07897c911dac22d164e40b9e0c473b2af26 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 22:21:21 -0400
Subject: [PATCH 05/37] Simply seed checks

---
 program/src/instructions/token/approve.rs | 15 ++++++---------
 program/src/instructions/token/revoke.rs  | 14 ++++++--------
 2 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/program/src/instructions/token/approve.rs b/program/src/instructions/token/approve.rs
index bda26089..759516c6 100644
--- a/program/src/instructions/token/approve.rs
+++ b/program/src/instructions/token/approve.rs
@@ -1,5 +1,4 @@
 use anchor_spl::token::{self, Approve, FreezeAccount, Mint, ThawAccount, Token, TokenAccount};
-use mpl_token_metadata::utils::assert_derivation;
 
 use {
     crate::{errors::ErrorCode, state::*},
@@ -8,7 +7,7 @@ use {
 
 #[derive(Accounts)]
 pub struct ApproveCtx<'info> {
-    #[account(mut, seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()], bump)]
+    #[account(mut)]
     mint_manager: Box<Account<'info, MintManager>>,
     #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMint)]
     mint: Box<Account<'info, Mint>>,
@@ -32,13 +31,11 @@ pub struct ApproveCtx<'info> {
 
 pub fn handler(ctx: Context<ApproveCtx>) -> Result<()> {
     let mint = ctx.accounts.mint.key();
-    let path = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref()];
-    let bump_seed = assert_derivation(
-        ctx.program_id,
-        &ctx.accounts.mint_manager.to_account_info(),
-        path,
-    )?;
-    let mint_manager_seeds = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref(), &[bump_seed]];
+    let mint_manager_seeds = &[
+        MINT_MANAGER_SEED.as_bytes(),
+        mint.as_ref(),
+        &[ctx.accounts.mint_manager.bump],
+    ];
     let mint_manager_signer = &[&mint_manager_seeds[..]];
 
     let cpi_accounts = ThawAccount {
diff --git a/program/src/instructions/token/revoke.rs b/program/src/instructions/token/revoke.rs
index 802e7f45..8ca72ae8 100644
--- a/program/src/instructions/token/revoke.rs
+++ b/program/src/instructions/token/revoke.rs
@@ -8,7 +8,7 @@ use {
 
 #[derive(Accounts)]
 pub struct RevokeCtx<'info> {
-    #[account(mut, seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()], bump)]
+    #[account(mut)]
     mint_manager: Account<'info, MintManager>,
     #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMint)]
     mint: Box<Account<'info, Mint>>,
@@ -29,13 +29,11 @@ pub struct RevokeCtx<'info> {
 
 pub fn handler(ctx: Context<RevokeCtx>) -> Result<()> {
     let mint = ctx.accounts.mint.key();
-    let path = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref()];
-    let bump_seed = assert_derivation(
-        ctx.program_id,
-        &ctx.accounts.mint_manager.to_account_info(),
-        path,
-    )?;
-    let mint_manager_seeds = &[MINT_MANAGER_SEED.as_bytes(), mint.as_ref(), &[bump_seed]];
+    let mint_manager_seeds = &[
+        MINT_MANAGER_SEED.as_bytes(),
+        mint.as_ref(),
+        &[ctx.accounts.mint_manager.bump],
+    ];
     let mint_manager_signer = &[&mint_manager_seeds[..]];
 
     let cpi_accounts = ThawAccount {

From d021a3f1a455c07c49692e2ea37fb75688f30d93 Mon Sep 17 00:00:00 2001
From: Giannis Chatziveroglou <gchatz@mit.edu>
Date: Thu, 20 Oct 2022 19:34:34 -0700
Subject: [PATCH 06/37] update close ix + some client

---
 program/src/instructions/token/close.rs       |  22 ++-
 sdk/creator_standard/accounts.ts              |   0
 sdk/creator_standard/constants.ts             |   0
 sdk/creator_standard/index.ts                 |   0
 sdk/creator_standard/instruction.ts           |   0
 sdk/creator_standard/pda.ts                   |   0
 sdk/creator_standard/transaction.ts           |   0
 sdk/src/generated/accounts/MintManager.ts     | 175 ------------------
 sdk/src/generated/accounts/MintManagerV2.ts   | 175 ------------------
 sdk/src/generated/accounts/index.ts           |   7 -
 sdk/src/generated/index.ts                    |  19 --
 sdk/src/generated/instructions/InitMint.ts    |  96 ----------
 .../generated/instructions/InitMintManager.ts | 103 -----------
 sdk/src/generated/instructions/index.ts       |   2 -
 sdk/src/generated/types/MintManager.ts        |  32 ----
 sdk/src/generated/types/MintManagerV2.ts      |  32 ----
 sdk/src/generated/types/index.ts              |   2 -
 sdk/src/pda.ts                                |  14 --
 18 files changed, 21 insertions(+), 658 deletions(-)
 create mode 100644 sdk/creator_standard/accounts.ts
 create mode 100644 sdk/creator_standard/constants.ts
 create mode 100644 sdk/creator_standard/index.ts
 create mode 100644 sdk/creator_standard/instruction.ts
 create mode 100644 sdk/creator_standard/pda.ts
 create mode 100644 sdk/creator_standard/transaction.ts
 delete mode 100644 sdk/src/generated/accounts/MintManager.ts
 delete mode 100644 sdk/src/generated/accounts/MintManagerV2.ts
 delete mode 100644 sdk/src/generated/accounts/index.ts
 delete mode 100644 sdk/src/generated/index.ts
 delete mode 100644 sdk/src/generated/instructions/InitMint.ts
 delete mode 100644 sdk/src/generated/instructions/InitMintManager.ts
 delete mode 100644 sdk/src/generated/instructions/index.ts
 delete mode 100644 sdk/src/generated/types/MintManager.ts
 delete mode 100644 sdk/src/generated/types/MintManagerV2.ts
 delete mode 100644 sdk/src/generated/types/index.ts
 delete mode 100644 sdk/src/pda.ts

diff --git a/program/src/instructions/token/close.rs b/program/src/instructions/token/close.rs
index c7730495..ed334828 100644
--- a/program/src/instructions/token/close.rs
+++ b/program/src/instructions/token/close.rs
@@ -2,7 +2,7 @@
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
-use anchor_spl::token::{self, CloseAccount, Token, TokenAccount};
+use anchor_spl::token::{self, CloseAccount, ThawAccount, Token, TokenAccount};
 
 #[derive(Accounts)]
 pub struct CloseCtx<'info> {
@@ -20,6 +20,26 @@ pub struct CloseCtx<'info> {
 }
 
 pub fn handler(ctx: Context<CloseCtx>) -> Result<()> {
+    if ctx.accounts.token_account.is_frozen() {
+        let mint_manager_key = ctx.accounts.mint.key();
+        let mint_manager_seeds = &[
+            MINT_MANAGER_SEED.as_bytes(),
+            mint_manager_key.as_ref(),
+            &[ctx.accounts.mint_manager.bump],
+        ];
+        let mint_manager_signer = &[&mint_manager_seeds[..]];
+
+        let cpi_accounts = ThawAccount {
+            account: ctx.accounts.token_account.to_account_info(),
+            mint: ctx.accounts.mint.to_account_info(),
+            authority: ctx.accounts.mint_manager.to_account_info(),
+        };
+        let cpi_program = ctx.accounts.token_program.to_account_info();
+        let cpi_context =
+            CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+        token::thaw_account(cpi_context)?;
+    }
+
     let cpi_accounts = CloseAccount {
         account: ctx.accounts.token_account.to_account_info(),
         destination: ctx.accounts.owner.to_account_info(),
diff --git a/sdk/creator_standard/accounts.ts b/sdk/creator_standard/accounts.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/sdk/creator_standard/constants.ts b/sdk/creator_standard/constants.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/sdk/creator_standard/index.ts b/sdk/creator_standard/index.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/sdk/creator_standard/instruction.ts b/sdk/creator_standard/instruction.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/sdk/creator_standard/pda.ts b/sdk/creator_standard/pda.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/sdk/creator_standard/transaction.ts b/sdk/creator_standard/transaction.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/sdk/src/generated/accounts/MintManager.ts b/sdk/src/generated/accounts/MintManager.ts
deleted file mode 100644
index a39f4ca0..00000000
--- a/sdk/src/generated/accounts/MintManager.ts
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
-
-import * as web3 from "@solana/web3.js";
-import * as beet from "@metaplex-foundation/beet";
-import * as beetSolana from "@metaplex-foundation/beet-solana";
-
-/**
- * Arguments used to create {@link MintManager}
- * @category Accounts
- * @category generated
- */
-export type MintManagerArgs = {
-  accountType: number;
-  version: number;
-  mint: web3.PublicKey;
-  authority: web3.PublicKey;
-  ruleset: web3.PublicKey;
-};
-/**
- * Holds the data for the {@link MintManager} Account and provides de/serialization
- * functionality for that data
- *
- * @category Accounts
- * @category generated
- */
-export class MintManager implements MintManagerArgs {
-  private constructor(
-    readonly accountType: number,
-    readonly version: number,
-    readonly mint: web3.PublicKey,
-    readonly authority: web3.PublicKey,
-    readonly ruleset: web3.PublicKey
-  ) {}
-
-  /**
-   * Creates a {@link MintManager} instance from the provided args.
-   */
-  static fromArgs(args: MintManagerArgs) {
-    return new MintManager(
-      args.accountType,
-      args.version,
-      args.mint,
-      args.authority,
-      args.ruleset
-    );
-  }
-
-  /**
-   * Deserializes the {@link MintManager} from the data of the provided {@link web3.AccountInfo}.
-   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
-   */
-  static fromAccountInfo(
-    accountInfo: web3.AccountInfo<Buffer>,
-    offset = 0
-  ): [MintManager, number] {
-    return MintManager.deserialize(accountInfo.data, offset);
-  }
-
-  /**
-   * Retrieves the account info from the provided address and deserializes
-   * the {@link MintManager} from its data.
-   *
-   * @throws Error if no account info is found at the address or if deserialization fails
-   */
-  static async fromAccountAddress(
-    connection: web3.Connection,
-    address: web3.PublicKey
-  ): Promise<MintManager> {
-    const accountInfo = await connection.getAccountInfo(address);
-    if (accountInfo == null) {
-      throw new Error(`Unable to find MintManager account at ${address}`);
-    }
-    return MintManager.fromAccountInfo(accountInfo, 0)[0];
-  }
-
-  /**
-   * Provides a {@link web3.Connection.getProgramAccounts} config builder,
-   * to fetch accounts matching filters that can be specified via that builder.
-   *
-   * @param programId - the program that owns the accounts we are filtering
-   */
-  static gpaBuilder(
-    programId: web3.PublicKey = new web3.PublicKey(
-      "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez"
-    )
-  ) {
-    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerBeet);
-  }
-
-  /**
-   * Deserializes the {@link MintManager} from the provided data Buffer.
-   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
-   */
-  static deserialize(buf: Buffer, offset = 0): [MintManager, number] {
-    return mintManagerBeet.deserialize(buf, offset);
-  }
-
-  /**
-   * Serializes the {@link MintManager} into a Buffer.
-   * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
-   */
-  serialize(): [Buffer, number] {
-    return mintManagerBeet.serialize(this);
-  }
-
-  /**
-   * Returns the byteSize of a {@link Buffer} holding the serialized data of
-   * {@link MintManager}
-   */
-  static get byteSize() {
-    return mintManagerBeet.byteSize;
-  }
-
-  /**
-   * Fetches the minimum balance needed to exempt an account holding
-   * {@link MintManager} data from rent
-   *
-   * @param connection used to retrieve the rent exemption information
-   */
-  static async getMinimumBalanceForRentExemption(
-    connection: web3.Connection,
-    commitment?: web3.Commitment
-  ): Promise<number> {
-    return connection.getMinimumBalanceForRentExemption(
-      MintManager.byteSize,
-      commitment
-    );
-  }
-
-  /**
-   * Determines if the provided {@link Buffer} has the correct byte size to
-   * hold {@link MintManager} data.
-   */
-  static hasCorrectByteSize(buf: Buffer, offset = 0) {
-    return buf.byteLength - offset === MintManager.byteSize;
-  }
-
-  /**
-   * Returns a readable version of {@link MintManager} properties
-   * and can be used to convert to JSON and/or logging
-   */
-  pretty() {
-    return {
-      accountType: this.accountType,
-      version: this.version,
-      mint: this.mint.toBase58(),
-      authority: this.authority.toBase58(),
-      ruleset: this.ruleset.toBase58(),
-    };
-  }
-}
-
-/**
- * @category Accounts
- * @category generated
- */
-export const mintManagerBeet = new beet.BeetStruct<
-  MintManager,
-  MintManagerArgs
->(
-  [
-    ["accountType", beet.u8],
-    ["version", beet.u8],
-    ["mint", beetSolana.publicKey],
-    ["authority", beetSolana.publicKey],
-    ["ruleset", beetSolana.publicKey],
-  ],
-  MintManager.fromArgs,
-  "MintManager"
-);
diff --git a/sdk/src/generated/accounts/MintManagerV2.ts b/sdk/src/generated/accounts/MintManagerV2.ts
deleted file mode 100644
index 823ac38d..00000000
--- a/sdk/src/generated/accounts/MintManagerV2.ts
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
-
-import * as web3 from "@solana/web3.js";
-import * as beet from "@metaplex-foundation/beet";
-import * as beetSolana from "@metaplex-foundation/beet-solana";
-
-/**
- * Arguments used to create {@link MintManagerV2}
- * @category Accounts
- * @category generated
- */
-export type MintManagerV2Args = {
-  accountType: number;
-  version: number;
-  mint: web3.PublicKey;
-  authority: web3.PublicKey;
-  ruleset: web3.PublicKey;
-};
-/**
- * Holds the data for the {@link MintManagerV2} Account and provides de/serialization
- * functionality for that data
- *
- * @category Accounts
- * @category generated
- */
-export class MintManagerV2 implements MintManagerV2Args {
-  private constructor(
-    readonly accountType: number,
-    readonly version: number,
-    readonly mint: web3.PublicKey,
-    readonly authority: web3.PublicKey,
-    readonly ruleset: web3.PublicKey
-  ) {}
-
-  /**
-   * Creates a {@link MintManagerV2} instance from the provided args.
-   */
-  static fromArgs(args: MintManagerV2Args) {
-    return new MintManagerV2(
-      args.accountType,
-      args.version,
-      args.mint,
-      args.authority,
-      args.ruleset
-    );
-  }
-
-  /**
-   * Deserializes the {@link MintManagerV2} from the data of the provided {@link web3.AccountInfo}.
-   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
-   */
-  static fromAccountInfo(
-    accountInfo: web3.AccountInfo<Buffer>,
-    offset = 0
-  ): [MintManagerV2, number] {
-    return MintManagerV2.deserialize(accountInfo.data, offset);
-  }
-
-  /**
-   * Retrieves the account info from the provided address and deserializes
-   * the {@link MintManagerV2} from its data.
-   *
-   * @throws Error if no account info is found at the address or if deserialization fails
-   */
-  static async fromAccountAddress(
-    connection: web3.Connection,
-    address: web3.PublicKey
-  ): Promise<MintManagerV2> {
-    const accountInfo = await connection.getAccountInfo(address);
-    if (accountInfo == null) {
-      throw new Error(`Unable to find MintManagerV2 account at ${address}`);
-    }
-    return MintManagerV2.fromAccountInfo(accountInfo, 0)[0];
-  }
-
-  /**
-   * Provides a {@link web3.Connection.getProgramAccounts} config builder,
-   * to fetch accounts matching filters that can be specified via that builder.
-   *
-   * @param programId - the program that owns the accounts we are filtering
-   */
-  static gpaBuilder(
-    programId: web3.PublicKey = new web3.PublicKey(
-      "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez"
-    )
-  ) {
-    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerV2Beet);
-  }
-
-  /**
-   * Deserializes the {@link MintManagerV2} from the provided data Buffer.
-   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
-   */
-  static deserialize(buf: Buffer, offset = 0): [MintManagerV2, number] {
-    return mintManagerV2Beet.deserialize(buf, offset);
-  }
-
-  /**
-   * Serializes the {@link MintManagerV2} into a Buffer.
-   * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
-   */
-  serialize(): [Buffer, number] {
-    return mintManagerV2Beet.serialize(this);
-  }
-
-  /**
-   * Returns the byteSize of a {@link Buffer} holding the serialized data of
-   * {@link MintManagerV2}
-   */
-  static get byteSize() {
-    return mintManagerV2Beet.byteSize;
-  }
-
-  /**
-   * Fetches the minimum balance needed to exempt an account holding
-   * {@link MintManagerV2} data from rent
-   *
-   * @param connection used to retrieve the rent exemption information
-   */
-  static async getMinimumBalanceForRentExemption(
-    connection: web3.Connection,
-    commitment?: web3.Commitment
-  ): Promise<number> {
-    return connection.getMinimumBalanceForRentExemption(
-      MintManagerV2.byteSize,
-      commitment
-    );
-  }
-
-  /**
-   * Determines if the provided {@link Buffer} has the correct byte size to
-   * hold {@link MintManagerV2} data.
-   */
-  static hasCorrectByteSize(buf: Buffer, offset = 0) {
-    return buf.byteLength - offset === MintManagerV2.byteSize;
-  }
-
-  /**
-   * Returns a readable version of {@link MintManagerV2} properties
-   * and can be used to convert to JSON and/or logging
-   */
-  pretty() {
-    return {
-      accountType: this.accountType,
-      version: this.version,
-      mint: this.mint.toBase58(),
-      authority: this.authority.toBase58(),
-      ruleset: this.ruleset.toBase58(),
-    };
-  }
-}
-
-/**
- * @category Accounts
- * @category generated
- */
-export const mintManagerV2Beet = new beet.BeetStruct<
-  MintManagerV2,
-  MintManagerV2Args
->(
-  [
-    ["accountType", beet.u8],
-    ["version", beet.u8],
-    ["mint", beetSolana.publicKey],
-    ["authority", beetSolana.publicKey],
-    ["ruleset", beetSolana.publicKey],
-  ],
-  MintManagerV2.fromArgs,
-  "MintManagerV2"
-);
diff --git a/sdk/src/generated/accounts/index.ts b/sdk/src/generated/accounts/index.ts
deleted file mode 100644
index ff51763d..00000000
--- a/sdk/src/generated/accounts/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export * from './MintManager'
-export * from './MintManagerV2'
-
-import { MintManager } from './MintManager'
-import { MintManagerV2 } from './MintManagerV2'
-
-export const accountProviders = { MintManager, MintManagerV2 }
diff --git a/sdk/src/generated/index.ts b/sdk/src/generated/index.ts
deleted file mode 100644
index 8ad81bc0..00000000
--- a/sdk/src/generated/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { PublicKey } from "@solana/web3.js";
-export * from "./accounts";
-export * from "./instructions";
-
-/**
- * Program address
- *
- * @category constants
- * @category generated
- */
-export const PROGRAM_ADDRESS = "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez";
-
-/**
- * Program public key
- *
- * @category constants
- * @category generated
- */
-export const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS);
diff --git a/sdk/src/generated/instructions/InitMint.ts b/sdk/src/generated/instructions/InitMint.ts
deleted file mode 100644
index ec75d1ad..00000000
--- a/sdk/src/generated/instructions/InitMint.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
-
-import * as splToken from "@solana/spl-token";
-import * as beet from "@metaplex-foundation/beet";
-import * as web3 from "@solana/web3.js";
-
-/**
- * @category Instructions
- * @category InitMint
- * @category generated
- */
-export const InitMintStruct = new beet.BeetArgsStruct<{
-  instructionDiscriminator: number;
-}>([["instructionDiscriminator", beet.u8]], "InitMintInstructionArgs");
-/**
- * Accounts required by the _InitMint_ instruction
- *
- * @property [_writable_] mint
- * @property [_writable_] mintManager
- * @property [_writable_, **signer**] authority
- * @property [_writable_, **signer**] payer
- * @category Instructions
- * @category InitMint
- * @category generated
- */
-export type InitMintInstructionAccounts = {
-  mint: web3.PublicKey;
-  mintManager: web3.PublicKey;
-  authority: web3.PublicKey;
-  payer: web3.PublicKey;
-  tokenProgram?: web3.PublicKey;
-  systemProgram?: web3.PublicKey;
-};
-
-export const initMintInstructionDiscriminator = 0;
-
-/**
- * Creates a _InitMint_ instruction.
- *
- * @param accounts that will be accessed while the instruction is processed
- * @category Instructions
- * @category InitMint
- * @category generated
- */
-export function createInitMintInstruction(
-  accounts: InitMintInstructionAccounts,
-  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
-) {
-  const [data] = InitMintStruct.serialize({
-    instructionDiscriminator: initMintInstructionDiscriminator,
-  });
-  const keys: web3.AccountMeta[] = [
-    {
-      pubkey: accounts.mint,
-      isWritable: true,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.mintManager,
-      isWritable: true,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.authority,
-      isWritable: true,
-      isSigner: true,
-    },
-    {
-      pubkey: accounts.payer,
-      isWritable: true,
-      isSigner: true,
-    },
-    {
-      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
-      isWritable: false,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
-      isWritable: false,
-      isSigner: false,
-    },
-  ];
-
-  const ix = new web3.TransactionInstruction({
-    programId,
-    keys,
-    data,
-  });
-  return ix;
-}
diff --git a/sdk/src/generated/instructions/InitMintManager.ts b/sdk/src/generated/instructions/InitMintManager.ts
deleted file mode 100644
index 556a416e..00000000
--- a/sdk/src/generated/instructions/InitMintManager.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
-
-import * as splToken from "@solana/spl-token";
-import * as beet from "@metaplex-foundation/beet";
-import * as web3 from "@solana/web3.js";
-
-/**
- * @category Instructions
- * @category InitMintManager
- * @category generated
- */
-export const InitMintManagerStruct = new beet.BeetArgsStruct<{
-  instructionDiscriminator: number;
-}>([["instructionDiscriminator", beet.u8]], "InitMintManagerInstructionArgs");
-/**
- * Accounts required by the _InitMintManager_ instruction
- *
- * @property [_writable_] mint
- * @property [_writable_] mintManager
- * @property [**signer**] authority
- * @property [] ruleset
- * @property [_writable_, **signer**] payer
- * @category Instructions
- * @category InitMintManager
- * @category generated
- */
-export type InitMintManagerInstructionAccounts = {
-  mint: web3.PublicKey;
-  mintManager: web3.PublicKey;
-  authority: web3.PublicKey;
-  ruleset: web3.PublicKey;
-  payer: web3.PublicKey;
-  tokenProgram?: web3.PublicKey;
-  systemProgram?: web3.PublicKey;
-};
-
-export const initMintManagerInstructionDiscriminator = 1;
-
-/**
- * Creates a _InitMintManager_ instruction.
- *
- * @param accounts that will be accessed while the instruction is processed
- * @category Instructions
- * @category InitMintManager
- * @category generated
- */
-export function createInitMintManagerInstruction(
-  accounts: InitMintManagerInstructionAccounts,
-  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
-) {
-  const [data] = InitMintManagerStruct.serialize({
-    instructionDiscriminator: initMintManagerInstructionDiscriminator,
-  });
-  const keys: web3.AccountMeta[] = [
-    {
-      pubkey: accounts.mint,
-      isWritable: true,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.mintManager,
-      isWritable: true,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.authority,
-      isWritable: false,
-      isSigner: true,
-    },
-    {
-      pubkey: accounts.ruleset,
-      isWritable: false,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.payer,
-      isWritable: true,
-      isSigner: true,
-    },
-    {
-      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
-      isWritable: false,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
-      isWritable: false,
-      isSigner: false,
-    },
-  ];
-
-  const ix = new web3.TransactionInstruction({
-    programId,
-    keys,
-    data,
-  });
-  return ix;
-}
diff --git a/sdk/src/generated/instructions/index.ts b/sdk/src/generated/instructions/index.ts
deleted file mode 100644
index 311d729d..00000000
--- a/sdk/src/generated/instructions/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './InitMint'
-export * from './InitMintManager'
diff --git a/sdk/src/generated/types/MintManager.ts b/sdk/src/generated/types/MintManager.ts
deleted file mode 100644
index ca74ab6b..00000000
--- a/sdk/src/generated/types/MintManager.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
-
-import * as web3 from "@solana/web3.js";
-import * as beet from "@metaplex-foundation/beet";
-import * as beetSolana from "@metaplex-foundation/beet-solana";
-export type MintManager = {
-  accountType: number;
-  version: number;
-  mint: web3.PublicKey;
-  authority: web3.PublicKey;
-  ruleset: web3.PublicKey;
-};
-
-/**
- * @category userTypes
- * @category generated
- */
-export const mintManagerBeet = new beet.BeetArgsStruct<MintManager>(
-  [
-    ["accountType", beet.u8],
-    ["version", beet.u8],
-    ["mint", beetSolana.publicKey],
-    ["authority", beetSolana.publicKey],
-    ["ruleset", beetSolana.publicKey],
-  ],
-  "MintManager"
-);
diff --git a/sdk/src/generated/types/MintManagerV2.ts b/sdk/src/generated/types/MintManagerV2.ts
deleted file mode 100644
index 708926d1..00000000
--- a/sdk/src/generated/types/MintManagerV2.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
-
-import * as web3 from '@solana/web3.js'
-import * as beet from '@metaplex-foundation/beet'
-import * as beetSolana from '@metaplex-foundation/beet-solana'
-export type MintManagerV2 = {
-  accountType: number
-  version: number
-  mint: web3.PublicKey
-  authority: web3.PublicKey
-  ruleset: web3.PublicKey
-}
-
-/**
- * @category userTypes
- * @category generated
- */
-export const mintManagerV2Beet = new beet.BeetArgsStruct<MintManagerV2>(
-  [
-    ['accountType', beet.u8],
-    ['version', beet.u8],
-    ['mint', beetSolana.publicKey],
-    ['authority', beetSolana.publicKey],
-    ['ruleset', beetSolana.publicKey],
-  ],
-  'MintManagerV2'
-)
diff --git a/sdk/src/generated/types/index.ts b/sdk/src/generated/types/index.ts
deleted file mode 100644
index 4110c16a..00000000
--- a/sdk/src/generated/types/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './MintManager'
-export * from './MintManagerV2'
diff --git a/sdk/src/pda.ts b/sdk/src/pda.ts
deleted file mode 100644
index 8f4bfb61..00000000
--- a/sdk/src/pda.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { utils } from "@project-serum/anchor";
-import { PublicKey } from "@solana/web3.js";
-import { PROGRAM_ID } from "./generated";
-
-/**
- * Finds the mint manager id.
- * @returns
- */
-export const findMintManagerId = (mintId: PublicKey): PublicKey => {
-  return PublicKey.findProgramAddressSync(
-    [utils.bytes.utf8.encode("mint-manager"), mintId.toBuffer()],
-    PROGRAM_ID
-  )[0];
-};

From e83f49c37d6804070b7ddee03f6ec3af59c49fba Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 22:47:17 -0400
Subject: [PATCH 07/37] Cleanup

---
 program/src/instructions/token/revoke.rs      |  1 -
 sdk/generate-idls.sh                          |  2 +-
 sdk/src/constants.ts                          | 12 +++++
 .../idl/cardinal_creator_standard.ts          |  0
 sdk/src/index.ts                              |  1 +
 sdk/tests/init.test.ts                        | 40 +++-------------
 sdk/tests/init2.test.ts                       | 46 -------------------
 7 files changed, 20 insertions(+), 82 deletions(-)
 create mode 100644 sdk/src/constants.ts
 rename sdk/{ => src}/idl/cardinal_creator_standard.ts (100%)
 create mode 100644 sdk/src/index.ts
 delete mode 100644 sdk/tests/init2.test.ts

diff --git a/program/src/instructions/token/revoke.rs b/program/src/instructions/token/revoke.rs
index 8ca72ae8..786de840 100644
--- a/program/src/instructions/token/revoke.rs
+++ b/program/src/instructions/token/revoke.rs
@@ -1,5 +1,4 @@
 use anchor_spl::token::{self, FreezeAccount, Mint, Revoke, ThawAccount, Token, TokenAccount};
-use mpl_token_metadata::utils::assert_derivation;
 
 use {
     crate::{errors::ErrorCode, state::*},
diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
index ade33c8a..3ba86735 100755
--- a/sdk/generate-idls.sh
+++ b/sdk/generate-idls.sh
@@ -8,7 +8,7 @@ mkdir -p src/idl/
 for PROGRAM in $(find ../program/ -maxdepth 3 -name lib.rs); do
     PROGRAM_NAME="cardinal_creator_standard"
     echo "Parsing IDL for $PROGRAM_NAME"
-    anchor idl parse --file $PROGRAM --out-ts idl/$PROGRAM_NAME.ts || {
+    anchor idl parse --file $PROGRAM --out-ts src/idl/$PROGRAM_NAME.ts || {
         echo "Could not parse IDL"
         exit 1
     }
diff --git a/sdk/src/constants.ts b/sdk/src/constants.ts
new file mode 100644
index 00000000..446eb6a6
--- /dev/null
+++ b/sdk/src/constants.ts
@@ -0,0 +1,12 @@
+import { Program } from "@project-serum/anchor";
+import { PublicKey } from "@solana/web3.js";
+import { CardinalCreatorStandard, IDL } from "./idl/cardinal_creator_standard";
+
+export const CREATOR_STANDARD_ID = new PublicKey(
+  "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez"
+);
+
+export const CreatorStandard = new Program<CardinalCreatorStandard>(
+  IDL,
+  CREATOR_STANDARD_ID
+);
diff --git a/sdk/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
similarity index 100%
rename from sdk/idl/cardinal_creator_standard.ts
rename to sdk/src/idl/cardinal_creator_standard.ts
diff --git a/sdk/src/index.ts b/sdk/src/index.ts
new file mode 100644
index 00000000..b04bfcf7
--- /dev/null
+++ b/sdk/src/index.ts
@@ -0,0 +1 @@
+export * from "./constants";
diff --git a/sdk/tests/init.test.ts b/sdk/tests/init.test.ts
index ecb74714..8c4d8547 100644
--- a/sdk/tests/init.test.ts
+++ b/sdk/tests/init.test.ts
@@ -1,18 +1,9 @@
 import { test, beforeAll, expect } from "@jest/globals";
 import { getProvider } from "../utils";
 import type { PublicKey } from "@solana/web3.js";
-import {
-  Keypair,
-  Transaction,
-  sendAndConfirmTransaction,
-} from "@solana/web3.js";
-import {
-  createInitMintManagerInstruction,
-  MintManager,
-  MintManagerV2,
-} from "../src/generated";
+import { Keypair } from "@solana/web3.js";
 import { createMint } from "@solana/spl-token";
-import { findMintManagerId } from "../src/pda";
+import { CreatorStandard } from "../src";
 
 let mint: PublicKey;
 
@@ -30,29 +21,10 @@ beforeAll(async () => {
 });
 
 test("Init", async () => {
-  const provider = await getProvider();
-  const tx = new Transaction();
-  tx.add(
-    createInitMintManagerInstruction({
+  await CreatorStandard.methods
+    .initMintManager()
+    .accounts({
       mint: mint,
-      mintManager: findMintManagerId(mint),
-      authority: provider.wallet.publicKey,
-      payer: provider.wallet.publicKey,
-      ruleset: Keypair.generate().publicKey,
     })
-  );
-  await sendAndConfirmTransaction(provider.connection, tx, [provider.keypair]);
-
-  const mintManager = await MintManager.fromAccountAddress(
-    provider.connection,
-    findMintManagerId(mint)
-  );
-  expect(mintManager.mint.toString()).toBe(mint.toString());
-
-  const mintManager2 = await MintManagerV2.fromAccountAddress(
-    provider.connection,
-    findMintManagerId(mint)
-  );
-  console.log("-----", mintManager2);
-  expect(mintManager2.mint.toString()).toBe(mint.toString());
+    .rpc();
 });
diff --git a/sdk/tests/init2.test.ts b/sdk/tests/init2.test.ts
deleted file mode 100644
index 08a27ae8..00000000
--- a/sdk/tests/init2.test.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { test, beforeAll, expect } from "@jest/globals";
-import { executeTransaction, getProvider } from "../utils";
-import type { PublicKey } from "@solana/web3.js";
-import { Keypair, Transaction } from "@solana/web3.js";
-import {
-  createInitMintManagerInstruction,
-  MintManager,
-} from "../src/generated";
-import { createMint } from "@solana/spl-token";
-import { findMintManagerId } from "../src/pda";
-
-let mint: PublicKey;
-
-beforeAll(async () => {
-  const provider = await getProvider();
-  const mintKeypair = Keypair.generate();
-  mint = await createMint(
-    provider.connection,
-    provider.keypair,
-    provider.wallet.publicKey,
-    provider.wallet.publicKey,
-    0,
-    mintKeypair
-  );
-});
-
-test("Init", async () => {
-  const provider = await getProvider();
-  const tx = new Transaction();
-  tx.add(
-    createInitMintManagerInstruction({
-      mint: mint,
-      mintManager: findMintManagerId(mint),
-      authority: provider.wallet.publicKey,
-      payer: provider.wallet.payer.publicKey,
-      ruleset: Keypair.generate().publicKey,
-    })
-  );
-  await executeTransaction(provider.connection, tx, provider.wallet);
-
-  const mintManager = await MintManager.fromAccountAddress(
-    provider.connection,
-    findMintManagerId(mint)
-  );
-  expect(mintManager.mint.toString()).toBe(mint.toString());
-});

From e365c2d61dcadc0cd57927718574aca96e2d9993 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 22:47:29 -0400
Subject: [PATCH 08/37] Cargo fmt

---
 program/src/instructions/token/approve.rs       | 15 ++++++++++-----
 program/src/instructions/token/burn.rs          |  8 +++++++-
 program/src/instructions/token/close.rs         |  6 +++++-
 program/src/instructions/token/init_account.rs  |  2 +-
 program/src/instructions/token/init_mint.rs     |  6 ++++--
 program/src/instructions/token/post_transfer.rs |  1 +
 program/src/instructions/token/pre_transfer.rs  |  1 +
 program/src/instructions/token/revoke.rs        | 15 ++++++++++-----
 program/src/instructions/token/transfer.rs      |  2 +-
 9 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/program/src/instructions/token/approve.rs b/program/src/instructions/token/approve.rs
index 759516c6..c223808e 100644
--- a/program/src/instructions/token/approve.rs
+++ b/program/src/instructions/token/approve.rs
@@ -1,9 +1,14 @@
-use anchor_spl::token::{self, Approve, FreezeAccount, Mint, ThawAccount, Token, TokenAccount};
+use anchor_spl::token::Approve;
+use anchor_spl::token::FreezeAccount;
+use anchor_spl::token::Mint;
+use anchor_spl::token::ThawAccount;
+use anchor_spl::token::Token;
+use anchor_spl::token::TokenAccount;
+use anchor_spl::token::{self};
 
-use {
-    crate::{errors::ErrorCode, state::*},
-    anchor_lang::prelude::*,
-};
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
 
 #[derive(Accounts)]
 pub struct ApproveCtx<'info> {
diff --git a/program/src/instructions/token/burn.rs b/program/src/instructions/token/burn.rs
index a3935872..f546bf84 100644
--- a/program/src/instructions/token/burn.rs
+++ b/program/src/instructions/token/burn.rs
@@ -1,7 +1,13 @@
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
-use anchor_spl::token::{self, Burn, CloseAccount, Mint, ThawAccount, Token, TokenAccount};
+use anchor_spl::token::Burn;
+use anchor_spl::token::CloseAccount;
+use anchor_spl::token::Mint;
+use anchor_spl::token::ThawAccount;
+use anchor_spl::token::Token;
+use anchor_spl::token::TokenAccount;
+use anchor_spl::token::{self};
 
 #[derive(Accounts)]
 pub struct BurnCtx<'info> {
diff --git a/program/src/instructions/token/close.rs b/program/src/instructions/token/close.rs
index ed334828..1bf8d5c1 100644
--- a/program/src/instructions/token/close.rs
+++ b/program/src/instructions/token/close.rs
@@ -2,7 +2,11 @@
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
-use anchor_spl::token::{self, CloseAccount, ThawAccount, Token, TokenAccount};
+use anchor_spl::token::CloseAccount;
+use anchor_spl::token::ThawAccount;
+use anchor_spl::token::Token;
+use anchor_spl::token::TokenAccount;
+use anchor_spl::token::{self};
 
 #[derive(Accounts)]
 pub struct CloseCtx<'info> {
diff --git a/program/src/instructions/token/init_account.rs b/program/src/instructions/token/init_account.rs
index 083c3f66..2b90ae41 100644
--- a/program/src/instructions/token/init_account.rs
+++ b/program/src/instructions/token/init_account.rs
@@ -1 +1 @@
-// bogle
\ No newline at end of file
+// bogle
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index 1aa4d448..ef63506e 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -2,10 +2,12 @@ use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
 use anchor_lang::solana_program::program::invoke;
-use anchor_spl::associated_token::{self, AssociatedToken};
+use anchor_spl::associated_token::AssociatedToken;
+use anchor_spl::associated_token::{self};
+use anchor_spl::token::MintTo;
+use anchor_spl::token::Token;
 use anchor_spl::token::TokenAccount;
 use anchor_spl::token::{self};
-use anchor_spl::token::{MintTo, Token};
 use solana_program::program_pack::Pack;
 use solana_program::system_instruction::create_account;
 use spl_associated_token_account::get_associated_token_address;
diff --git a/program/src/instructions/token/post_transfer.rs b/program/src/instructions/token/post_transfer.rs
index e69de29b..8b137891 100644
--- a/program/src/instructions/token/post_transfer.rs
+++ b/program/src/instructions/token/post_transfer.rs
@@ -0,0 +1 @@
+
diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
index e69de29b..8b137891 100644
--- a/program/src/instructions/token/pre_transfer.rs
+++ b/program/src/instructions/token/pre_transfer.rs
@@ -0,0 +1 @@
+
diff --git a/program/src/instructions/token/revoke.rs b/program/src/instructions/token/revoke.rs
index 786de840..83dba0c9 100644
--- a/program/src/instructions/token/revoke.rs
+++ b/program/src/instructions/token/revoke.rs
@@ -1,9 +1,14 @@
-use anchor_spl::token::{self, FreezeAccount, Mint, Revoke, ThawAccount, Token, TokenAccount};
+use anchor_spl::token::FreezeAccount;
+use anchor_spl::token::Mint;
+use anchor_spl::token::Revoke;
+use anchor_spl::token::ThawAccount;
+use anchor_spl::token::Token;
+use anchor_spl::token::TokenAccount;
+use anchor_spl::token::{self};
 
-use {
-    crate::{errors::ErrorCode, state::*},
-    anchor_lang::prelude::*,
-};
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
 
 #[derive(Accounts)]
 pub struct RevokeCtx<'info> {
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
index 083c3f66..2b90ae41 100644
--- a/program/src/instructions/token/transfer.rs
+++ b/program/src/instructions/token/transfer.rs
@@ -1 +1 @@
-// bogle
\ No newline at end of file
+// bogle

From b594f7b76a62393e8f6d18b0020c961ce1dc4e08 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 23:06:24 -0400
Subject: [PATCH 09/37] Add init account

---
 .../src/instructions/token/init_account.rs    | 39 ++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/program/src/instructions/token/init_account.rs b/program/src/instructions/token/init_account.rs
index 2b90ae41..c801577b 100644
--- a/program/src/instructions/token/init_account.rs
+++ b/program/src/instructions/token/init_account.rs
@@ -1 +1,38 @@
-// bogle
+use anchor_lang::prelude::*;
+use anchor_spl::associated_token::AssociatedToken;
+use anchor_spl::associated_token::{self};
+use anchor_spl::token::Token;
+
+#[derive(Accounts)]
+pub struct InitAccount<'info> {
+    /// CHECK: Account created or checked in handler
+    mint: UncheckedAccount<'info>,
+    /// CHECK: Account created or checked in handler
+    #[account(mut)]
+    token_account: UncheckedAccount<'info>,
+    /// CHECK: Account created or checked in handler
+    token_account_owner: UncheckedAccount<'info>,
+
+    #[account(mut)]
+    payer: Signer<'info>,
+    rent: Sysvar<'info, Rent>,
+    token_program: Program<'info, Token>,
+    associated_token_program: Program<'info, AssociatedToken>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<InitAccount>) -> Result<()> {
+    let cpi_accounts = associated_token::Create {
+        payer: ctx.accounts.payer.to_account_info(),
+        associated_token: ctx.accounts.token_account.to_account_info(),
+        authority: ctx.accounts.token_account_owner.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        system_program: ctx.accounts.system_program.to_account_info(),
+        token_program: ctx.accounts.token_program.to_account_info(),
+        rent: ctx.accounts.rent.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    associated_token::create(cpi_context)?;
+    Ok(())
+}

From 4e0511410ef28e9f248020b2d3c81e3f1dcd1b1b Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 23:08:40 -0400
Subject: [PATCH 10/37] Cleanup

---
 program/src/lib.rs   |  1 -
 program/src/utils.rs | 61 --------------------------------------------
 2 files changed, 62 deletions(-)
 delete mode 100644 program/src/utils.rs

diff --git a/program/src/lib.rs b/program/src/lib.rs
index 4fa0915e..58e97de8 100644
--- a/program/src/lib.rs
+++ b/program/src/lib.rs
@@ -1,7 +1,6 @@
 pub mod errors;
 pub mod instructions;
 pub mod state;
-pub mod utils;
 
 use anchor_lang::prelude::*;
 use instructions::*;
diff --git a/program/src/utils.rs b/program/src/utils.rs
deleted file mode 100644
index 035a379c..00000000
--- a/program/src/utils.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-use solana_program::account_info::AccountInfo;
-use solana_program::entrypoint::ProgramResult;
-use solana_program::msg;
-use solana_program::program_error::ProgramError;
-use solana_program::pubkey::Pubkey;
-
-#[inline(always)]
-pub fn assert_with_msg(v: bool, err: impl Into<ProgramError>, msg: &str) -> ProgramResult {
-    if v {
-        Ok(())
-    } else {
-        let caller = std::panic::Location::caller();
-        msg!("{}. \n{}", msg, caller);
-        Err(err.into())
-    }
-}
-
-#[inline(always)]
-pub fn assert_mut(account: &AccountInfo, name: &str) -> ProgramResult {
-    assert_with_msg(
-        account.is_writable,
-        ProgramError::InvalidInstructionData,
-        format!("{} must be mutable", name).as_str(),
-    )
-}
-
-#[inline(always)]
-pub fn assert_signer(account: &AccountInfo, name: &str) -> ProgramResult {
-    assert_with_msg(
-        account.is_signer,
-        ProgramError::InvalidInstructionData,
-        format!("{} must be signer", name).as_str(),
-    )
-}
-
-#[inline(always)]
-pub fn assert_owner(account: &AccountInfo, owner: &Pubkey, name: &str) -> ProgramResult {
-    assert_with_msg(
-        account.owner == owner,
-        ProgramError::IllegalOwner,
-        format!("{} must be owned by {}", name, owner).as_str(),
-    )
-}
-
-#[inline(always)]
-pub fn assert_empty(account: &AccountInfo, name: &str) -> ProgramResult {
-    assert_with_msg(
-        account.data_is_empty(),
-        ProgramError::InvalidInstructionData,
-        format!("{} must be empty", name).as_str(),
-    )
-}
-
-#[inline(always)]
-pub fn assert_address(account: &AccountInfo, address: &Pubkey, name: &str) -> ProgramResult {
-    assert_with_msg(
-        account.key == address,
-        ProgramError::InvalidInstructionData,
-        format!("{} must equal {}", name, address).as_str(),
-    )
-}

From e08a07012f4c6e2d0a7d70c120b12cf4afc88f64 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 20 Oct 2022 23:39:18 -0400
Subject: [PATCH 11/37] Client generation and tests

---
 .../mint_manager/init_mint_manager.rs         |   5 +-
 program/src/state.rs                          |   1 -
 sdk/.eslintrc.json                            |   6 +-
 sdk/.solitarc.js                              |   3 +-
 sdk/creator_standard/accounts.ts              |   0
 sdk/creator_standard/constants.ts             |   0
 sdk/creator_standard/index.ts                 |   0
 sdk/creator_standard/instruction.ts           |   0
 sdk/creator_standard/pda.ts                   |   0
 sdk/creator_standard/transaction.ts           |   0
 sdk/idl/cardinal_creator_standard.json        | 330 +++++++
 sdk/package.json                              |   2 +
 sdk/src/constants.ts                          |  12 -
 sdk/src/generated/accounts/MintManager.ts     | 183 ++++
 sdk/src/generated/accounts/Standard.ts        | 195 ++++
 sdk/src/generated/accounts/index.ts           |   7 +
 sdk/src/generated/errors/index.ts             | 219 +++++
 sdk/src/generated/index.ts                    |  21 +
 sdk/src/generated/instructions/index.ts       |   4 +
 .../generated/instructions/initMintManager.ts | 115 +++
 .../generated/instructions/initStandard.ts    | 105 +++
 .../instructions/updateMintManager.ts         | 108 +++
 .../generated/instructions/updateStandard.ts  | 101 +++
 sdk/src/generated/types/InitStandardIx.ts     |  31 +
 .../generated/types/UpdateMintManagerIx.ts    |  23 +
 sdk/src/generated/types/UpdateStandardIx.ts   |  29 +
 sdk/src/generated/types/index.ts              |   3 +
 sdk/src/idl/cardinal_creator_standard.ts      | 834 +++++++++---------
 sdk/src/index.ts                              |   3 +-
 sdk/src/pda.ts                                |  18 +
 sdk/tests/init.test.ts                        |  78 +-
 sdk/tsconfig.json                             |   3 +-
 sdk/yarn.lock                                 | 341 ++++++-
 33 files changed, 2325 insertions(+), 455 deletions(-)
 delete mode 100644 sdk/creator_standard/accounts.ts
 delete mode 100644 sdk/creator_standard/constants.ts
 delete mode 100644 sdk/creator_standard/index.ts
 delete mode 100644 sdk/creator_standard/instruction.ts
 delete mode 100644 sdk/creator_standard/pda.ts
 delete mode 100644 sdk/creator_standard/transaction.ts
 create mode 100644 sdk/idl/cardinal_creator_standard.json
 delete mode 100644 sdk/src/constants.ts
 create mode 100644 sdk/src/generated/accounts/MintManager.ts
 create mode 100644 sdk/src/generated/accounts/Standard.ts
 create mode 100644 sdk/src/generated/accounts/index.ts
 create mode 100644 sdk/src/generated/errors/index.ts
 create mode 100644 sdk/src/generated/index.ts
 create mode 100644 sdk/src/generated/instructions/index.ts
 create mode 100644 sdk/src/generated/instructions/initMintManager.ts
 create mode 100644 sdk/src/generated/instructions/initStandard.ts
 create mode 100644 sdk/src/generated/instructions/updateMintManager.ts
 create mode 100644 sdk/src/generated/instructions/updateStandard.ts
 create mode 100644 sdk/src/generated/types/InitStandardIx.ts
 create mode 100644 sdk/src/generated/types/UpdateMintManagerIx.ts
 create mode 100644 sdk/src/generated/types/UpdateStandardIx.ts
 create mode 100644 sdk/src/generated/types/index.ts
 create mode 100644 sdk/src/pda.ts

diff --git a/program/src/instructions/mint_manager/init_mint_manager.rs b/program/src/instructions/mint_manager/init_mint_manager.rs
index 80cadac3..1359dcf9 100644
--- a/program/src/instructions/mint_manager/init_mint_manager.rs
+++ b/program/src/instructions/mint_manager/init_mint_manager.rs
@@ -24,7 +24,7 @@ pub struct InitMintManagerCtx<'info> {
     standard: Account<'info, Standard>,
 
     /// CHECK: Account is not read from
-    #[account(mut)]
+    #[account(mut, constraint = collector.key() == standard.authority @ ErrorCode::InvalidCollector)]
     collector: UncheckedAccount<'info>,
     authority: Signer<'info>,
     #[account(mut)]
@@ -71,9 +71,6 @@ pub fn handler(ctx: Context<InitMintManagerCtx>) -> Result<()> {
     )?;
 
     // creation
-    if ctx.accounts.collector.key().to_string() != CREATION_COLLECTOR {
-        return Err(error!(ErrorCode::InvalidCollector));
-    }
     invoke(
         &transfer(
             &ctx.accounts.payer.key(),
diff --git a/program/src/state.rs b/program/src/state.rs
index 13d21694..9dbc19df 100644
--- a/program/src/state.rs
+++ b/program/src/state.rs
@@ -2,7 +2,6 @@ use anchor_lang::prelude::*;
 use solana_program::pubkey::Pubkey;
 
 pub const CREATION_LAMPORTS: u64 = 5_000_000;
-pub const CREATION_COLLECTOR: &str = "crkdpVWjHWdggGgBuSyAqSmZUmAjYLzD435tcLDRLXr";
 
 pub const MINT_MANAGER_SEED: &str = "mint-manager";
 pub const MINT_MANAGER_SIZE: usize = 8 + std::mem::size_of::<MintManager>() + 8;
diff --git a/sdk/.eslintrc.json b/sdk/.eslintrc.json
index 039035d9..a868a0d3 100644
--- a/sdk/.eslintrc.json
+++ b/sdk/.eslintrc.json
@@ -1,9 +1,11 @@
 {
   "plugins": ["jest", "@typescript-eslint"],
-  "extends": ["plugin:github/recommended"],
   "parser": "@typescript-eslint/parser",
   "parserOptions": {
-    "ecmaVersion": 9,
+    "ecmaFeatures": {
+      "ecmaVersion": 2020,
+      "sourceType": "module"
+    },
     "sourceType": "module",
     "project": "./tsconfig.json"
   },
diff --git a/sdk/.solitarc.js b/sdk/.solitarc.js
index a61fdcba..2962eb0b 100644
--- a/sdk/.solitarc.js
+++ b/sdk/.solitarc.js
@@ -5,8 +5,9 @@ const sdkDir = path.join(__dirname, "src", "generated");
 const binaryInstallDir = path.join(__dirname, "..", "..", "target", "solita");
 
 module.exports = {
-  idlGenerator: "shank",
+  idlGenerator: "anchor",
   programName: "cardinal_creator_standard",
+  programId: "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez",
   idlDir,
   sdkDir,
   binaryInstallDir,
diff --git a/sdk/creator_standard/accounts.ts b/sdk/creator_standard/accounts.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sdk/creator_standard/constants.ts b/sdk/creator_standard/constants.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sdk/creator_standard/index.ts b/sdk/creator_standard/index.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sdk/creator_standard/instruction.ts b/sdk/creator_standard/instruction.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sdk/creator_standard/pda.ts b/sdk/creator_standard/pda.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sdk/creator_standard/transaction.ts b/sdk/creator_standard/transaction.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
new file mode 100644
index 00000000..868645c2
--- /dev/null
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -0,0 +1,330 @@
+{
+  "version": "0.1.0",
+  "name": "cardinal_creator_standard",
+  "instructions": [
+    {
+      "name": "initMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "updateMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateMintManagerIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initStandard",
+      "accounts": [
+        {
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "InitStandardIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "updateStandard",
+      "accounts": [
+        {
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateStandardIx"
+          }
+        }
+      ]
+    }
+  ],
+  "accounts": [
+    {
+      "name": "MintManager",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "bump",
+            "type": "u8"
+          },
+          {
+            "name": "version",
+            "type": "u8"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "standard",
+            "type": "publicKey"
+          }
+        ]
+      }
+    },
+    {
+      "name": "Standard",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "bump",
+            "type": "u8"
+          },
+          {
+            "name": "version",
+            "type": "u8"
+          },
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "standardName",
+            "type": "string"
+          },
+          {
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    }
+  ],
+  "types": [
+    {
+      "name": "UpdateMintManagerIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          }
+        ]
+      }
+    },
+    {
+      "name": "InitStandardIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "standardName",
+            "type": "string"
+          },
+          {
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "UpdateStandardIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    }
+  ],
+  "errors": [
+    {
+      "code": 6000,
+      "name": "InvalidMint",
+      "msg": "Invalid mint"
+    },
+    {
+      "code": 6001,
+      "name": "InvalidCollector",
+      "msg": "Invalid collector address"
+    },
+    {
+      "code": 6002,
+      "name": "InvalidAuthority",
+      "msg": "Invalid authority address"
+    },
+    {
+      "code": 6003,
+      "name": "InvaldiMint",
+      "msg": "Invalid mint"
+    },
+    {
+      "code": 6004,
+      "name": "InvlaidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6005,
+      "name": "InvalidTargetTokenAccount",
+      "msg": "Invalid target token account"
+    },
+    {
+      "code": 6006,
+      "name": "InvalidCloseTokenAccount",
+      "msg": "Invalid token account to close"
+    },
+    {
+      "code": 6007,
+      "name": "InvalidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    }
+  ],
+  "metadata": {
+    "address": "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez",
+    "origin": "anchor",
+    "binaryVersion": "0.25.0",
+    "libVersion": "0.25.0"
+  }
+}
\ No newline at end of file
diff --git a/sdk/package.json b/sdk/package.json
index a3c2aad1..173c55fe 100644
--- a/sdk/package.json
+++ b/sdk/package.json
@@ -23,6 +23,8 @@
     "eslint": "^8.25.0",
     "eslint-import-resolver-node": "^0.3.6",
     "eslint-plugin-import": "^2.26.0",
+    "eslint-plugin-github": "^4.3.2",
+    "eslint-plugin-jest": "^25.3.2",
     "jest": "^29.2.1",
     "lint-staged": "^13.0.3",
     "ts-jest": "^29.0.3",
diff --git a/sdk/src/constants.ts b/sdk/src/constants.ts
deleted file mode 100644
index 446eb6a6..00000000
--- a/sdk/src/constants.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Program } from "@project-serum/anchor";
-import { PublicKey } from "@solana/web3.js";
-import { CardinalCreatorStandard, IDL } from "./idl/cardinal_creator_standard";
-
-export const CREATOR_STANDARD_ID = new PublicKey(
-  "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez"
-);
-
-export const CreatorStandard = new Program<CardinalCreatorStandard>(
-  IDL,
-  CREATOR_STANDARD_ID
-);
diff --git a/sdk/src/generated/accounts/MintManager.ts b/sdk/src/generated/accounts/MintManager.ts
new file mode 100644
index 00000000..813df15d
--- /dev/null
+++ b/sdk/src/generated/accounts/MintManager.ts
@@ -0,0 +1,183 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as web3 from '@solana/web3.js'
+import * as beet from '@metaplex-foundation/beet'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+
+/**
+ * Arguments used to create {@link MintManager}
+ * @category Accounts
+ * @category generated
+ */
+export type MintManagerArgs = {
+  bump: number
+  version: number
+  mint: web3.PublicKey
+  authority: web3.PublicKey
+  standard: web3.PublicKey
+}
+
+export const mintManagerDiscriminator = [202, 47, 44, 178, 55, 215, 117, 40]
+/**
+ * Holds the data for the {@link MintManager} Account and provides de/serialization
+ * functionality for that data
+ *
+ * @category Accounts
+ * @category generated
+ */
+export class MintManager implements MintManagerArgs {
+  private constructor(
+    readonly bump: number,
+    readonly version: number,
+    readonly mint: web3.PublicKey,
+    readonly authority: web3.PublicKey,
+    readonly standard: web3.PublicKey
+  ) {}
+
+  /**
+   * Creates a {@link MintManager} instance from the provided args.
+   */
+  static fromArgs(args: MintManagerArgs) {
+    return new MintManager(
+      args.bump,
+      args.version,
+      args.mint,
+      args.authority,
+      args.standard
+    )
+  }
+
+  /**
+   * Deserializes the {@link MintManager} from the data of the provided {@link web3.AccountInfo}.
+   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
+   */
+  static fromAccountInfo(
+    accountInfo: web3.AccountInfo<Buffer>,
+    offset = 0
+  ): [MintManager, number] {
+    return MintManager.deserialize(accountInfo.data, offset)
+  }
+
+  /**
+   * Retrieves the account info from the provided address and deserializes
+   * the {@link MintManager} from its data.
+   *
+   * @throws Error if no account info is found at the address or if deserialization fails
+   */
+  static async fromAccountAddress(
+    connection: web3.Connection,
+    address: web3.PublicKey
+  ): Promise<MintManager> {
+    const accountInfo = await connection.getAccountInfo(address)
+    if (accountInfo == null) {
+      throw new Error(`Unable to find MintManager account at ${address}`)
+    }
+    return MintManager.fromAccountInfo(accountInfo, 0)[0]
+  }
+
+  /**
+   * Provides a {@link web3.Connection.getProgramAccounts} config builder,
+   * to fetch accounts matching filters that can be specified via that builder.
+   *
+   * @param programId - the program that owns the accounts we are filtering
+   */
+  static gpaBuilder(
+    programId: web3.PublicKey = new web3.PublicKey(
+      'creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez'
+    )
+  ) {
+    return beetSolana.GpaBuilder.fromStruct(programId, mintManagerBeet)
+  }
+
+  /**
+   * Deserializes the {@link MintManager} from the provided data Buffer.
+   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
+   */
+  static deserialize(buf: Buffer, offset = 0): [MintManager, number] {
+    return mintManagerBeet.deserialize(buf, offset)
+  }
+
+  /**
+   * Serializes the {@link MintManager} into a Buffer.
+   * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
+   */
+  serialize(): [Buffer, number] {
+    return mintManagerBeet.serialize({
+      accountDiscriminator: mintManagerDiscriminator,
+      ...this,
+    })
+  }
+
+  /**
+   * Returns the byteSize of a {@link Buffer} holding the serialized data of
+   * {@link MintManager}
+   */
+  static get byteSize() {
+    return mintManagerBeet.byteSize
+  }
+
+  /**
+   * Fetches the minimum balance needed to exempt an account holding
+   * {@link MintManager} data from rent
+   *
+   * @param connection used to retrieve the rent exemption information
+   */
+  static async getMinimumBalanceForRentExemption(
+    connection: web3.Connection,
+    commitment?: web3.Commitment
+  ): Promise<number> {
+    return connection.getMinimumBalanceForRentExemption(
+      MintManager.byteSize,
+      commitment
+    )
+  }
+
+  /**
+   * Determines if the provided {@link Buffer} has the correct byte size to
+   * hold {@link MintManager} data.
+   */
+  static hasCorrectByteSize(buf: Buffer, offset = 0) {
+    return buf.byteLength - offset === MintManager.byteSize
+  }
+
+  /**
+   * Returns a readable version of {@link MintManager} properties
+   * and can be used to convert to JSON and/or logging
+   */
+  pretty() {
+    return {
+      bump: this.bump,
+      version: this.version,
+      mint: this.mint.toBase58(),
+      authority: this.authority.toBase58(),
+      standard: this.standard.toBase58(),
+    }
+  }
+}
+
+/**
+ * @category Accounts
+ * @category generated
+ */
+export const mintManagerBeet = new beet.BeetStruct<
+  MintManager,
+  MintManagerArgs & {
+    accountDiscriminator: number[] /* size: 8 */
+  }
+>(
+  [
+    ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
+    ['bump', beet.u8],
+    ['version', beet.u8],
+    ['mint', beetSolana.publicKey],
+    ['authority', beetSolana.publicKey],
+    ['standard', beetSolana.publicKey],
+  ],
+  MintManager.fromArgs,
+  'MintManager'
+)
diff --git a/sdk/src/generated/accounts/Standard.ts b/sdk/src/generated/accounts/Standard.ts
new file mode 100644
index 00000000..1c31688b
--- /dev/null
+++ b/sdk/src/generated/accounts/Standard.ts
@@ -0,0 +1,195 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as web3 from '@solana/web3.js'
+import * as beet from '@metaplex-foundation/beet'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+
+/**
+ * Arguments used to create {@link Standard}
+ * @category Accounts
+ * @category generated
+ */
+export type StandardArgs = {
+  bump: number
+  version: number
+  authority: web3.PublicKey
+  checkSellerFeeBasisPoints: boolean
+  standardName: string
+  disallowedPrograms: web3.PublicKey[]
+  allowedPrograms: web3.PublicKey[]
+}
+
+export const standardDiscriminator = [183, 73, 235, 183, 240, 4, 194, 116]
+/**
+ * Holds the data for the {@link Standard} Account and provides de/serialization
+ * functionality for that data
+ *
+ * @category Accounts
+ * @category generated
+ */
+export class Standard implements StandardArgs {
+  private constructor(
+    readonly bump: number,
+    readonly version: number,
+    readonly authority: web3.PublicKey,
+    readonly checkSellerFeeBasisPoints: boolean,
+    readonly standardName: string,
+    readonly disallowedPrograms: web3.PublicKey[],
+    readonly allowedPrograms: web3.PublicKey[]
+  ) {}
+
+  /**
+   * Creates a {@link Standard} instance from the provided args.
+   */
+  static fromArgs(args: StandardArgs) {
+    return new Standard(
+      args.bump,
+      args.version,
+      args.authority,
+      args.checkSellerFeeBasisPoints,
+      args.standardName,
+      args.disallowedPrograms,
+      args.allowedPrograms
+    )
+  }
+
+  /**
+   * Deserializes the {@link Standard} from the data of the provided {@link web3.AccountInfo}.
+   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
+   */
+  static fromAccountInfo(
+    accountInfo: web3.AccountInfo<Buffer>,
+    offset = 0
+  ): [Standard, number] {
+    return Standard.deserialize(accountInfo.data, offset)
+  }
+
+  /**
+   * Retrieves the account info from the provided address and deserializes
+   * the {@link Standard} from its data.
+   *
+   * @throws Error if no account info is found at the address or if deserialization fails
+   */
+  static async fromAccountAddress(
+    connection: web3.Connection,
+    address: web3.PublicKey
+  ): Promise<Standard> {
+    const accountInfo = await connection.getAccountInfo(address)
+    if (accountInfo == null) {
+      throw new Error(`Unable to find Standard account at ${address}`)
+    }
+    return Standard.fromAccountInfo(accountInfo, 0)[0]
+  }
+
+  /**
+   * Provides a {@link web3.Connection.getProgramAccounts} config builder,
+   * to fetch accounts matching filters that can be specified via that builder.
+   *
+   * @param programId - the program that owns the accounts we are filtering
+   */
+  static gpaBuilder(
+    programId: web3.PublicKey = new web3.PublicKey(
+      'creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez'
+    )
+  ) {
+    return beetSolana.GpaBuilder.fromStruct(programId, standardBeet)
+  }
+
+  /**
+   * Deserializes the {@link Standard} from the provided data Buffer.
+   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
+   */
+  static deserialize(buf: Buffer, offset = 0): [Standard, number] {
+    return standardBeet.deserialize(buf, offset)
+  }
+
+  /**
+   * Serializes the {@link Standard} into a Buffer.
+   * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
+   */
+  serialize(): [Buffer, number] {
+    return standardBeet.serialize({
+      accountDiscriminator: standardDiscriminator,
+      ...this,
+    })
+  }
+
+  /**
+   * Returns the byteSize of a {@link Buffer} holding the serialized data of
+   * {@link Standard} for the provided args.
+   *
+   * @param args need to be provided since the byte size for this account
+   * depends on them
+   */
+  static byteSize(args: StandardArgs) {
+    const instance = Standard.fromArgs(args)
+    return standardBeet.toFixedFromValue({
+      accountDiscriminator: standardDiscriminator,
+      ...instance,
+    }).byteSize
+  }
+
+  /**
+   * Fetches the minimum balance needed to exempt an account holding
+   * {@link Standard} data from rent
+   *
+   * @param args need to be provided since the byte size for this account
+   * depends on them
+   * @param connection used to retrieve the rent exemption information
+   */
+  static async getMinimumBalanceForRentExemption(
+    args: StandardArgs,
+    connection: web3.Connection,
+    commitment?: web3.Commitment
+  ): Promise<number> {
+    return connection.getMinimumBalanceForRentExemption(
+      Standard.byteSize(args),
+      commitment
+    )
+  }
+
+  /**
+   * Returns a readable version of {@link Standard} properties
+   * and can be used to convert to JSON and/or logging
+   */
+  pretty() {
+    return {
+      bump: this.bump,
+      version: this.version,
+      authority: this.authority.toBase58(),
+      checkSellerFeeBasisPoints: this.checkSellerFeeBasisPoints,
+      standardName: this.standardName,
+      disallowedPrograms: this.disallowedPrograms,
+      allowedPrograms: this.allowedPrograms,
+    }
+  }
+}
+
+/**
+ * @category Accounts
+ * @category generated
+ */
+export const standardBeet = new beet.FixableBeetStruct<
+  Standard,
+  StandardArgs & {
+    accountDiscriminator: number[] /* size: 8 */
+  }
+>(
+  [
+    ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
+    ['bump', beet.u8],
+    ['version', beet.u8],
+    ['authority', beetSolana.publicKey],
+    ['checkSellerFeeBasisPoints', beet.bool],
+    ['standardName', beet.utf8String],
+    ['disallowedPrograms', beet.array(beetSolana.publicKey)],
+    ['allowedPrograms', beet.array(beetSolana.publicKey)],
+  ],
+  Standard.fromArgs,
+  'Standard'
+)
diff --git a/sdk/src/generated/accounts/index.ts b/sdk/src/generated/accounts/index.ts
new file mode 100644
index 00000000..3ce7bbed
--- /dev/null
+++ b/sdk/src/generated/accounts/index.ts
@@ -0,0 +1,7 @@
+export * from './MintManager'
+export * from './Standard'
+
+import { MintManager } from './MintManager'
+import { Standard } from './Standard'
+
+export const accountProviders = { MintManager, Standard }
diff --git a/sdk/src/generated/errors/index.ts b/sdk/src/generated/errors/index.ts
new file mode 100644
index 00000000..42287747
--- /dev/null
+++ b/sdk/src/generated/errors/index.ts
@@ -0,0 +1,219 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+type ErrorWithCode = Error & { code: number }
+type MaybeErrorWithCode = ErrorWithCode | null | undefined
+
+const createErrorFromCodeLookup: Map<number, () => ErrorWithCode> = new Map()
+const createErrorFromNameLookup: Map<string, () => ErrorWithCode> = new Map()
+
+/**
+ * InvalidMint: 'Invalid mint'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidMintError extends Error {
+  readonly code: number = 0x1770
+  readonly name: string = 'InvalidMint'
+  constructor() {
+    super('Invalid mint')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidMintError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x1770, () => new InvalidMintError())
+createErrorFromNameLookup.set('InvalidMint', () => new InvalidMintError())
+
+/**
+ * InvalidCollector: 'Invalid collector address'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidCollectorError extends Error {
+  readonly code: number = 0x1771
+  readonly name: string = 'InvalidCollector'
+  constructor() {
+    super('Invalid collector address')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidCollectorError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x1771, () => new InvalidCollectorError())
+createErrorFromNameLookup.set(
+  'InvalidCollector',
+  () => new InvalidCollectorError()
+)
+
+/**
+ * InvalidAuthority: 'Invalid authority address'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidAuthorityError extends Error {
+  readonly code: number = 0x1772
+  readonly name: string = 'InvalidAuthority'
+  constructor() {
+    super('Invalid authority address')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidAuthorityError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x1772, () => new InvalidAuthorityError())
+createErrorFromNameLookup.set(
+  'InvalidAuthority',
+  () => new InvalidAuthorityError()
+)
+
+/**
+ * InvaldiMint: 'Invalid mint'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvaldiMintError extends Error {
+  readonly code: number = 0x1773
+  readonly name: string = 'InvaldiMint'
+  constructor() {
+    super('Invalid mint')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvaldiMintError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x1773, () => new InvaldiMintError())
+createErrorFromNameLookup.set('InvaldiMint', () => new InvaldiMintError())
+
+/**
+ * InvlaidHolderTokenAccount: 'Invalid holder token account'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvlaidHolderTokenAccountError extends Error {
+  readonly code: number = 0x1774
+  readonly name: string = 'InvlaidHolderTokenAccount'
+  constructor() {
+    super('Invalid holder token account')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvlaidHolderTokenAccountError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(
+  0x1774,
+  () => new InvlaidHolderTokenAccountError()
+)
+createErrorFromNameLookup.set(
+  'InvlaidHolderTokenAccount',
+  () => new InvlaidHolderTokenAccountError()
+)
+
+/**
+ * InvalidTargetTokenAccount: 'Invalid target token account'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidTargetTokenAccountError extends Error {
+  readonly code: number = 0x1775
+  readonly name: string = 'InvalidTargetTokenAccount'
+  constructor() {
+    super('Invalid target token account')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidTargetTokenAccountError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(
+  0x1775,
+  () => new InvalidTargetTokenAccountError()
+)
+createErrorFromNameLookup.set(
+  'InvalidTargetTokenAccount',
+  () => new InvalidTargetTokenAccountError()
+)
+
+/**
+ * InvalidCloseTokenAccount: 'Invalid token account to close'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidCloseTokenAccountError extends Error {
+  readonly code: number = 0x1776
+  readonly name: string = 'InvalidCloseTokenAccount'
+  constructor() {
+    super('Invalid token account to close')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidCloseTokenAccountError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x1776, () => new InvalidCloseTokenAccountError())
+createErrorFromNameLookup.set(
+  'InvalidCloseTokenAccount',
+  () => new InvalidCloseTokenAccountError()
+)
+
+/**
+ * InvalidHolderTokenAccount: 'Invalid holder token account'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidHolderTokenAccountError extends Error {
+  readonly code: number = 0x1777
+  readonly name: string = 'InvalidHolderTokenAccount'
+  constructor() {
+    super('Invalid holder token account')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidHolderTokenAccountError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(
+  0x1777,
+  () => new InvalidHolderTokenAccountError()
+)
+createErrorFromNameLookup.set(
+  'InvalidHolderTokenAccount',
+  () => new InvalidHolderTokenAccountError()
+)
+
+/**
+ * Attempts to resolve a custom program error from the provided error code.
+ * @category Errors
+ * @category generated
+ */
+export function errorFromCode(code: number): MaybeErrorWithCode {
+  const createError = createErrorFromCodeLookup.get(code)
+  return createError != null ? createError() : null
+}
+
+/**
+ * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.
+ * @category Errors
+ * @category generated
+ */
+export function errorFromName(name: string): MaybeErrorWithCode {
+  const createError = createErrorFromNameLookup.get(name)
+  return createError != null ? createError() : null
+}
diff --git a/sdk/src/generated/index.ts b/sdk/src/generated/index.ts
new file mode 100644
index 00000000..7f0c724c
--- /dev/null
+++ b/sdk/src/generated/index.ts
@@ -0,0 +1,21 @@
+import { PublicKey } from '@solana/web3.js'
+export * from './accounts'
+export * from './errors'
+export * from './instructions'
+export * from './types'
+
+/**
+ * Program address
+ *
+ * @category constants
+ * @category generated
+ */
+export const PROGRAM_ADDRESS = 'creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez'
+
+/**
+ * Program public key
+ *
+ * @category constants
+ * @category generated
+ */
+export const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS)
diff --git a/sdk/src/generated/instructions/index.ts b/sdk/src/generated/instructions/index.ts
new file mode 100644
index 00000000..66c2d098
--- /dev/null
+++ b/sdk/src/generated/instructions/index.ts
@@ -0,0 +1,4 @@
+export * from './initMintManager'
+export * from './initStandard'
+export * from './updateMintManager'
+export * from './updateStandard'
diff --git a/sdk/src/generated/instructions/initMintManager.ts b/sdk/src/generated/instructions/initMintManager.ts
new file mode 100644
index 00000000..25e82642
--- /dev/null
+++ b/sdk/src/generated/instructions/initMintManager.ts
@@ -0,0 +1,115 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category InitMintManager
+ * @category generated
+ */
+export const initMintManagerStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'InitMintManagerInstructionArgs'
+)
+/**
+ * Accounts required by the _initMintManager_ instruction
+ *
+ * @property [_writable_] mintManager
+ * @property [_writable_] mint
+ * @property [] standard
+ * @property [_writable_] collector
+ * @property [**signer**] authority
+ * @property [_writable_, **signer**] payer
+ * @category Instructions
+ * @category InitMintManager
+ * @category generated
+ */
+export type InitMintManagerInstructionAccounts = {
+  mintManager: web3.PublicKey
+  mint: web3.PublicKey
+  standard: web3.PublicKey
+  collector: web3.PublicKey
+  authority: web3.PublicKey
+  payer: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
+
+export const initMintManagerInstructionDiscriminator = [
+  120, 150, 192, 192, 140, 39, 211, 191,
+]
+
+/**
+ * Creates a _InitMintManager_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category InitMintManager
+ * @category generated
+ */
+export function createInitMintManagerInstruction(
+  accounts: InitMintManagerInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = initMintManagerStruct.serialize({
+    instructionDiscriminator: initMintManagerInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.standard,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.collector,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.authority,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.payer,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/initStandard.ts b/sdk/src/generated/instructions/initStandard.ts
new file mode 100644
index 00000000..5e420770
--- /dev/null
+++ b/sdk/src/generated/instructions/initStandard.ts
@@ -0,0 +1,105 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as beet from "@metaplex-foundation/beet";
+import * as web3 from "@solana/web3.js";
+import { InitStandardIx, initStandardIxBeet } from "../types/InitStandardIx";
+
+/**
+ * @category Instructions
+ * @category InitStandard
+ * @category generated
+ */
+export type InitStandardInstructionArgs = {
+  ix: InitStandardIx;
+};
+/**
+ * @category Instructions
+ * @category InitStandard
+ * @category generated
+ */
+export const initStandardStruct = new beet.FixableBeetArgsStruct<
+  InitStandardInstructionArgs & {
+    instructionDiscriminator: number[] /* size: 8 */;
+  }
+>(
+  [
+    ["instructionDiscriminator", beet.uniformFixedSizeArray(beet.u8, 8)],
+    ["ix", initStandardIxBeet],
+  ],
+  "InitStandardInstructionArgs"
+);
+/**
+ * Accounts required by the _initStandard_ instruction
+ *
+ * @property [_writable_] standard
+ * @property [**signer**] authority
+ * @property [_writable_, **signer**] payer
+ * @category Instructions
+ * @category InitStandard
+ * @category generated
+ */
+export type InitStandardInstructionAccounts = {
+  standard: web3.PublicKey;
+  authority: web3.PublicKey;
+  payer: web3.PublicKey;
+  systemProgram?: web3.PublicKey;
+};
+
+export const initStandardInstructionDiscriminator = [
+  85, 84, 110, 234, 166, 27, 75, 173,
+];
+
+/**
+ * Creates a _InitStandard_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @param args to provide as instruction data to the program
+ *
+ * @category Instructions
+ * @category InitStandard
+ * @category generated
+ */
+export function createInitStandardInstruction(
+  accounts: InitStandardInstructionAccounts,
+  args: InitStandardInstructionArgs,
+  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
+) {
+  const [data] = initStandardStruct.serialize({
+    instructionDiscriminator: initStandardInstructionDiscriminator,
+    ...args,
+  });
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.standard,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.authority,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.payer,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ];
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  });
+  return ix;
+}
diff --git a/sdk/src/generated/instructions/updateMintManager.ts b/sdk/src/generated/instructions/updateMintManager.ts
new file mode 100644
index 00000000..b3deb7ee
--- /dev/null
+++ b/sdk/src/generated/instructions/updateMintManager.ts
@@ -0,0 +1,108 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as beet from "@metaplex-foundation/beet";
+import * as web3 from "@solana/web3.js";
+import {
+  UpdateMintManagerIx,
+  updateMintManagerIxBeet,
+} from "../types/UpdateMintManagerIx";
+
+/**
+ * @category Instructions
+ * @category UpdateMintManager
+ * @category generated
+ */
+export type UpdateMintManagerInstructionArgs = {
+  ix: UpdateMintManagerIx;
+};
+/**
+ * @category Instructions
+ * @category UpdateMintManager
+ * @category generated
+ */
+export const updateMintManagerStruct = new beet.BeetArgsStruct<
+  UpdateMintManagerInstructionArgs & {
+    instructionDiscriminator: number[] /* size: 8 */;
+  }
+>(
+  [
+    ["instructionDiscriminator", beet.uniformFixedSizeArray(beet.u8, 8)],
+    ["ix", updateMintManagerIxBeet],
+  ],
+  "UpdateMintManagerInstructionArgs"
+);
+/**
+ * Accounts required by the _updateMintManager_ instruction
+ *
+ * @property [] mintManager
+ * @property [] standard
+ * @property [**signer**] authority
+ * @category Instructions
+ * @category UpdateMintManager
+ * @category generated
+ */
+export type UpdateMintManagerInstructionAccounts = {
+  mintManager: web3.PublicKey;
+  standard: web3.PublicKey;
+  authority: web3.PublicKey;
+  systemProgram?: web3.PublicKey;
+};
+
+export const updateMintManagerInstructionDiscriminator = [
+  70, 171, 8, 198, 47, 206, 211, 164,
+];
+
+/**
+ * Creates a _UpdateMintManager_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @param args to provide as instruction data to the program
+ *
+ * @category Instructions
+ * @category UpdateMintManager
+ * @category generated
+ */
+export function createUpdateMintManagerInstruction(
+  accounts: UpdateMintManagerInstructionAccounts,
+  args: UpdateMintManagerInstructionArgs,
+  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
+) {
+  const [data] = updateMintManagerStruct.serialize({
+    instructionDiscriminator: updateMintManagerInstructionDiscriminator,
+    ...args,
+  });
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.standard,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.authority,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ];
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  });
+  return ix;
+}
diff --git a/sdk/src/generated/instructions/updateStandard.ts b/sdk/src/generated/instructions/updateStandard.ts
new file mode 100644
index 00000000..adf29345
--- /dev/null
+++ b/sdk/src/generated/instructions/updateStandard.ts
@@ -0,0 +1,101 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+import {
+  UpdateStandardIx,
+  updateStandardIxBeet,
+} from '../types/UpdateStandardIx'
+
+/**
+ * @category Instructions
+ * @category UpdateStandard
+ * @category generated
+ */
+export type UpdateStandardInstructionArgs = {
+  ix: UpdateStandardIx
+}
+/**
+ * @category Instructions
+ * @category UpdateStandard
+ * @category generated
+ */
+export const updateStandardStruct = new beet.FixableBeetArgsStruct<
+  UpdateStandardInstructionArgs & {
+    instructionDiscriminator: number[] /* size: 8 */
+  }
+>(
+  [
+    ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
+    ['ix', updateStandardIxBeet],
+  ],
+  'UpdateStandardInstructionArgs'
+)
+/**
+ * Accounts required by the _updateStandard_ instruction
+ *
+ * @property [_writable_] standard
+ * @property [**signer**] authority
+ * @category Instructions
+ * @category UpdateStandard
+ * @category generated
+ */
+export type UpdateStandardInstructionAccounts = {
+  standard: web3.PublicKey
+  authority: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
+
+export const updateStandardInstructionDiscriminator = [
+  235, 132, 19, 152, 47, 247, 75, 20,
+]
+
+/**
+ * Creates a _UpdateStandard_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @param args to provide as instruction data to the program
+ *
+ * @category Instructions
+ * @category UpdateStandard
+ * @category generated
+ */
+export function createUpdateStandardInstruction(
+  accounts: UpdateStandardInstructionAccounts,
+  args: UpdateStandardInstructionArgs,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = updateStandardStruct.serialize({
+    instructionDiscriminator: updateStandardInstructionDiscriminator,
+    ...args,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.standard,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.authority,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/types/InitStandardIx.ts b/sdk/src/generated/types/InitStandardIx.ts
new file mode 100644
index 00000000..0e9e0690
--- /dev/null
+++ b/sdk/src/generated/types/InitStandardIx.ts
@@ -0,0 +1,31 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as web3 from '@solana/web3.js'
+import * as beet from '@metaplex-foundation/beet'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+export type InitStandardIx = {
+  checkSellerFeeBasisPoints: boolean
+  standardName: string
+  disallowedPrograms: web3.PublicKey[]
+  allowedPrograms: web3.PublicKey[]
+}
+
+/**
+ * @category userTypes
+ * @category generated
+ */
+export const initStandardIxBeet =
+  new beet.FixableBeetArgsStruct<InitStandardIx>(
+    [
+      ['checkSellerFeeBasisPoints', beet.bool],
+      ['standardName', beet.utf8String],
+      ['disallowedPrograms', beet.array(beetSolana.publicKey)],
+      ['allowedPrograms', beet.array(beetSolana.publicKey)],
+    ],
+    'InitStandardIx'
+  )
diff --git a/sdk/src/generated/types/UpdateMintManagerIx.ts b/sdk/src/generated/types/UpdateMintManagerIx.ts
new file mode 100644
index 00000000..4f36aca7
--- /dev/null
+++ b/sdk/src/generated/types/UpdateMintManagerIx.ts
@@ -0,0 +1,23 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as web3 from '@solana/web3.js'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+import * as beet from '@metaplex-foundation/beet'
+export type UpdateMintManagerIx = {
+  authority: web3.PublicKey
+}
+
+/**
+ * @category userTypes
+ * @category generated
+ */
+export const updateMintManagerIxBeet =
+  new beet.BeetArgsStruct<UpdateMintManagerIx>(
+    [['authority', beetSolana.publicKey]],
+    'UpdateMintManagerIx'
+  )
diff --git a/sdk/src/generated/types/UpdateStandardIx.ts b/sdk/src/generated/types/UpdateStandardIx.ts
new file mode 100644
index 00000000..66c48596
--- /dev/null
+++ b/sdk/src/generated/types/UpdateStandardIx.ts
@@ -0,0 +1,29 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as web3 from '@solana/web3.js'
+import * as beet from '@metaplex-foundation/beet'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+export type UpdateStandardIx = {
+  checkSellerFeeBasisPoints: boolean
+  disallowedPrograms: web3.PublicKey[]
+  allowedPrograms: web3.PublicKey[]
+}
+
+/**
+ * @category userTypes
+ * @category generated
+ */
+export const updateStandardIxBeet =
+  new beet.FixableBeetArgsStruct<UpdateStandardIx>(
+    [
+      ['checkSellerFeeBasisPoints', beet.bool],
+      ['disallowedPrograms', beet.array(beetSolana.publicKey)],
+      ['allowedPrograms', beet.array(beetSolana.publicKey)],
+    ],
+    'UpdateStandardIx'
+  )
diff --git a/sdk/src/generated/types/index.ts b/sdk/src/generated/types/index.ts
new file mode 100644
index 00000000..f9395103
--- /dev/null
+++ b/sdk/src/generated/types/index.ts
@@ -0,0 +1,3 @@
+export * from './InitStandardIx'
+export * from './UpdateMintManagerIx'
+export * from './UpdateStandardIx'
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
index c16ebfab..ea74e713 100644
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ b/sdk/src/idl/cardinal_creator_standard.ts
@@ -1,649 +1,649 @@
 export type CardinalCreatorStandard = {
-  version: "0.1.0";
-  name: "cardinal_creator_standard";
-  instructions: [
+  "version": "0.1.0",
+  "name": "cardinal_creator_standard",
+  "instructions": [
     {
-      name: "initMintManager";
-      accounts: [
+      "name": "initMintManager",
+      "accounts": [
         {
-          name: "mintManager";
-          isMut: true;
-          isSigner: false;
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "mint";
-          isMut: true;
-          isSigner: false;
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "standard";
-          isMut: false;
-          isSigner: false;
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "collector";
-          isMut: true;
-          isSigner: false;
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "authority";
-          isMut: false;
-          isSigner: true;
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "payer";
-          isMut: true;
-          isSigner: true;
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
         },
         {
-          name: "tokenProgram";
-          isMut: false;
-          isSigner: false;
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "systemProgram";
-          isMut: false;
-          isSigner: false;
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
         }
-      ];
-      args: [];
+      ],
+      "args": []
     },
     {
-      name: "updateMintManager";
-      accounts: [
+      "name": "updateMintManager",
+      "accounts": [
         {
-          name: "mintManager";
-          isMut: false;
-          isSigner: false;
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "standard";
-          isMut: false;
-          isSigner: false;
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "authority";
-          isMut: false;
-          isSigner: true;
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "systemProgram";
-          isMut: false;
-          isSigner: false;
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
         }
-      ];
-      args: [
+      ],
+      "args": [
         {
-          name: "ix";
-          type: {
-            defined: "UpdateMintManagerIx";
-          };
+          "name": "ix",
+          "type": {
+            "defined": "UpdateMintManagerIx"
+          }
         }
-      ];
+      ]
     },
     {
-      name: "initStandard";
-      accounts: [
+      "name": "initStandard",
+      "accounts": [
         {
-          name: "standard";
-          isMut: true;
-          isSigner: false;
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "authority";
-          isMut: false;
-          isSigner: true;
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "payer";
-          isMut: true;
-          isSigner: true;
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
         },
         {
-          name: "systemProgram";
-          isMut: false;
-          isSigner: false;
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
         }
-      ];
-      args: [
+      ],
+      "args": [
         {
-          name: "ix";
-          type: {
-            defined: "InitStandardIx";
-          };
+          "name": "ix",
+          "type": {
+            "defined": "InitStandardIx"
+          }
         }
-      ];
+      ]
     },
     {
-      name: "updateStandard";
-      accounts: [
+      "name": "updateStandard",
+      "accounts": [
         {
-          name: "standard";
-          isMut: true;
-          isSigner: false;
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "authority";
-          isMut: false;
-          isSigner: true;
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "systemProgram";
-          isMut: false;
-          isSigner: false;
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
         }
-      ];
-      args: [
+      ],
+      "args": [
         {
-          name: "ix";
-          type: {
-            defined: "UpdateStandardIx";
-          };
+          "name": "ix",
+          "type": {
+            "defined": "UpdateStandardIx"
+          }
         }
-      ];
+      ]
     }
-  ];
-  accounts: [
+  ],
+  "accounts": [
     {
-      name: "mintManager";
-      type: {
-        kind: "struct";
-        fields: [
+      "name": "mintManager",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "bump";
-            type: "u8";
+            "name": "bump",
+            "type": "u8"
           },
           {
-            name: "version";
-            type: "u8";
+            "name": "version",
+            "type": "u8"
           },
           {
-            name: "mint";
-            type: "publicKey";
+            "name": "mint",
+            "type": "publicKey"
           },
           {
-            name: "authority";
-            type: "publicKey";
+            "name": "authority",
+            "type": "publicKey"
           },
           {
-            name: "standard";
-            type: "publicKey";
+            "name": "standard",
+            "type": "publicKey"
           }
-        ];
-      };
+        ]
+      }
     },
     {
-      name: "standard";
-      type: {
-        kind: "struct";
-        fields: [
+      "name": "standard",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "bump";
-            type: "u8";
+            "name": "bump",
+            "type": "u8"
           },
           {
-            name: "version";
-            type: "u8";
+            "name": "version",
+            "type": "u8"
           },
           {
-            name: "authority";
-            type: "publicKey";
+            "name": "authority",
+            "type": "publicKey"
           },
           {
-            name: "checkSellerFeeBasisPoints";
-            type: "bool";
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           },
           {
-            name: "name";
-            type: "string";
+            "name": "name",
+            "type": "string"
           },
           {
-            name: "disallowedPrograms";
-            type: {
-              vec: "publicKey";
-            };
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           },
           {
-            name: "allowedPrograms";
-            type: {
-              vec: "publicKey";
-            };
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           }
-        ];
-      };
+        ]
+      }
     }
-  ];
-  types: [
+  ],
+  "types": [
     {
-      name: "UpdateMintManagerIx";
-      type: {
-        kind: "struct";
-        fields: [
+      "name": "UpdateMintManagerIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "authority";
-            type: "publicKey";
+            "name": "authority",
+            "type": "publicKey"
           }
-        ];
-      };
+        ]
+      }
     },
     {
-      name: "InitStandardIx";
-      type: {
-        kind: "struct";
-        fields: [
+      "name": "InitStandardIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "checkSellerFeeBasisPoints";
-            type: "bool";
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           },
           {
-            name: "name";
-            type: "string";
+            "name": "name",
+            "type": "string"
           },
           {
-            name: "disallowedPrograms";
-            type: {
-              vec: "publicKey";
-            };
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           },
           {
-            name: "allowedPrograms";
-            type: {
-              vec: "publicKey";
-            };
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           }
-        ];
-      };
+        ]
+      }
     },
     {
-      name: "UpdateStandardIx";
-      type: {
-        kind: "struct";
-        fields: [
+      "name": "UpdateStandardIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "checkSellerFeeBasisPoints";
-            type: "bool";
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           },
           {
-            name: "disallowedPrograms";
-            type: {
-              vec: "publicKey";
-            };
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           },
           {
-            name: "allowedPrograms";
-            type: {
-              vec: "publicKey";
-            };
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           }
-        ];
-      };
+        ]
+      }
     }
-  ];
-  errors: [
+  ],
+  "errors": [
     {
-      code: 6000;
-      name: "InvalidMint";
-      msg: "Invalid mint";
+      "code": 6000,
+      "name": "InvalidMint",
+      "msg": "Invalid mint"
     },
     {
-      code: 6001;
-      name: "InvalidCollector";
-      msg: "Invalid collector address";
+      "code": 6001,
+      "name": "InvalidCollector",
+      "msg": "Invalid collector address"
     },
     {
-      code: 6002;
-      name: "InvalidAuthority";
-      msg: "Invalid authority address";
+      "code": 6002,
+      "name": "InvalidAuthority",
+      "msg": "Invalid authority address"
     },
     {
-      code: 6003;
-      name: "InvaldiMint";
-      msg: "Invalid mint";
+      "code": 6003,
+      "name": "InvaldiMint",
+      "msg": "Invalid mint"
     },
     {
-      code: 6004;
-      name: "InvlaidHolderTokenAccount";
-      msg: "Invalid holder token account";
+      "code": 6004,
+      "name": "InvlaidHolderTokenAccount",
+      "msg": "Invalid holder token account"
     },
     {
-      code: 6005;
-      name: "InvalidTargetTokenAccount";
-      msg: "Invalid target token account";
+      "code": 6005,
+      "name": "InvalidTargetTokenAccount",
+      "msg": "Invalid target token account"
     },
     {
-      code: 6006;
-      name: "InvalidCloseTokenAccount";
-      msg: "Invalid token account to close";
+      "code": 6006,
+      "name": "InvalidCloseTokenAccount",
+      "msg": "Invalid token account to close"
     },
     {
-      code: 6007;
-      name: "InvalidHolderTokenAccount";
-      msg: "Invalid holder token account";
+      "code": 6007,
+      "name": "InvalidHolderTokenAccount",
+      "msg": "Invalid holder token account"
     }
-  ];
+  ]
 };
 
 export const IDL: CardinalCreatorStandard = {
-  version: "0.1.0",
-  name: "cardinal_creator_standard",
-  instructions: [
+  "version": "0.1.0",
+  "name": "cardinal_creator_standard",
+  "instructions": [
     {
-      name: "initMintManager",
-      accounts: [
+      "name": "initMintManager",
+      "accounts": [
         {
-          name: "mintManager",
-          isMut: true,
-          isSigner: false,
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "mint",
-          isMut: true,
-          isSigner: false,
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "standard",
-          isMut: false,
-          isSigner: false,
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "collector",
-          isMut: true,
-          isSigner: false,
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "authority",
-          isMut: false,
-          isSigner: true,
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "payer",
-          isMut: true,
-          isSigner: true,
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
         },
         {
-          name: "tokenProgram",
-          isMut: false,
-          isSigner: false,
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "systemProgram",
-          isMut: false,
-          isSigner: false,
-        },
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
       ],
-      args: [],
+      "args": []
     },
     {
-      name: "updateMintManager",
-      accounts: [
+      "name": "updateMintManager",
+      "accounts": [
         {
-          name: "mintManager",
-          isMut: false,
-          isSigner: false,
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "standard",
-          isMut: false,
-          isSigner: false,
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
         },
         {
-          name: "authority",
-          isMut: false,
-          isSigner: true,
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "systemProgram",
-          isMut: false,
-          isSigner: false,
-        },
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
       ],
-      args: [
+      "args": [
         {
-          name: "ix",
-          type: {
-            defined: "UpdateMintManagerIx",
-          },
-        },
-      ],
+          "name": "ix",
+          "type": {
+            "defined": "UpdateMintManagerIx"
+          }
+        }
+      ]
     },
     {
-      name: "initStandard",
-      accounts: [
+      "name": "initStandard",
+      "accounts": [
         {
-          name: "standard",
-          isMut: true,
-          isSigner: false,
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "authority",
-          isMut: false,
-          isSigner: true,
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "payer",
-          isMut: true,
-          isSigner: true,
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
         },
         {
-          name: "systemProgram",
-          isMut: false,
-          isSigner: false,
-        },
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
       ],
-      args: [
+      "args": [
         {
-          name: "ix",
-          type: {
-            defined: "InitStandardIx",
-          },
-        },
-      ],
+          "name": "ix",
+          "type": {
+            "defined": "InitStandardIx"
+          }
+        }
+      ]
     },
     {
-      name: "updateStandard",
-      accounts: [
+      "name": "updateStandard",
+      "accounts": [
         {
-          name: "standard",
-          isMut: true,
-          isSigner: false,
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
         },
         {
-          name: "authority",
-          isMut: false,
-          isSigner: true,
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
         },
         {
-          name: "systemProgram",
-          isMut: false,
-          isSigner: false,
-        },
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
       ],
-      args: [
+      "args": [
         {
-          name: "ix",
-          type: {
-            defined: "UpdateStandardIx",
-          },
-        },
-      ],
-    },
+          "name": "ix",
+          "type": {
+            "defined": "UpdateStandardIx"
+          }
+        }
+      ]
+    }
   ],
-  accounts: [
+  "accounts": [
     {
-      name: "mintManager",
-      type: {
-        kind: "struct",
-        fields: [
+      "name": "mintManager",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "bump",
-            type: "u8",
+            "name": "bump",
+            "type": "u8"
           },
           {
-            name: "version",
-            type: "u8",
+            "name": "version",
+            "type": "u8"
           },
           {
-            name: "mint",
-            type: "publicKey",
+            "name": "mint",
+            "type": "publicKey"
           },
           {
-            name: "authority",
-            type: "publicKey",
+            "name": "authority",
+            "type": "publicKey"
           },
           {
-            name: "standard",
-            type: "publicKey",
-          },
-        ],
-      },
+            "name": "standard",
+            "type": "publicKey"
+          }
+        ]
+      }
     },
     {
-      name: "standard",
-      type: {
-        kind: "struct",
-        fields: [
+      "name": "standard",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "bump",
-            type: "u8",
+            "name": "bump",
+            "type": "u8"
           },
           {
-            name: "version",
-            type: "u8",
+            "name": "version",
+            "type": "u8"
           },
           {
-            name: "authority",
-            type: "publicKey",
+            "name": "authority",
+            "type": "publicKey"
           },
           {
-            name: "checkSellerFeeBasisPoints",
-            type: "bool",
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           },
           {
-            name: "name",
-            type: "string",
+            "name": "name",
+            "type": "string"
           },
           {
-            name: "disallowedPrograms",
-            type: {
-              vec: "publicKey",
-            },
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           },
           {
-            name: "allowedPrograms",
-            type: {
-              vec: "publicKey",
-            },
-          },
-        ],
-      },
-    },
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    }
   ],
-  types: [
+  "types": [
     {
-      name: "UpdateMintManagerIx",
-      type: {
-        kind: "struct",
-        fields: [
+      "name": "UpdateMintManagerIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "authority",
-            type: "publicKey",
-          },
-        ],
-      },
+            "name": "authority",
+            "type": "publicKey"
+          }
+        ]
+      }
     },
     {
-      name: "InitStandardIx",
-      type: {
-        kind: "struct",
-        fields: [
+      "name": "InitStandardIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "checkSellerFeeBasisPoints",
-            type: "bool",
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           },
           {
-            name: "name",
-            type: "string",
+            "name": "name",
+            "type": "string"
           },
           {
-            name: "disallowedPrograms",
-            type: {
-              vec: "publicKey",
-            },
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           },
           {
-            name: "allowedPrograms",
-            type: {
-              vec: "publicKey",
-            },
-          },
-        ],
-      },
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
     },
     {
-      name: "UpdateStandardIx",
-      type: {
-        kind: "struct",
-        fields: [
+      "name": "UpdateStandardIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
           {
-            name: "checkSellerFeeBasisPoints",
-            type: "bool",
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           },
           {
-            name: "disallowedPrograms",
-            type: {
-              vec: "publicKey",
-            },
+            "name": "disallowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
           },
           {
-            name: "allowedPrograms",
-            type: {
-              vec: "publicKey",
-            },
-          },
-        ],
-      },
-    },
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    }
   ],
-  errors: [
+  "errors": [
     {
-      code: 6000,
-      name: "InvalidMint",
-      msg: "Invalid mint",
+      "code": 6000,
+      "name": "InvalidMint",
+      "msg": "Invalid mint"
     },
     {
-      code: 6001,
-      name: "InvalidCollector",
-      msg: "Invalid collector address",
+      "code": 6001,
+      "name": "InvalidCollector",
+      "msg": "Invalid collector address"
     },
     {
-      code: 6002,
-      name: "InvalidAuthority",
-      msg: "Invalid authority address",
+      "code": 6002,
+      "name": "InvalidAuthority",
+      "msg": "Invalid authority address"
     },
     {
-      code: 6003,
-      name: "InvaldiMint",
-      msg: "Invalid mint",
+      "code": 6003,
+      "name": "InvaldiMint",
+      "msg": "Invalid mint"
     },
     {
-      code: 6004,
-      name: "InvlaidHolderTokenAccount",
-      msg: "Invalid holder token account",
+      "code": 6004,
+      "name": "InvlaidHolderTokenAccount",
+      "msg": "Invalid holder token account"
     },
     {
-      code: 6005,
-      name: "InvalidTargetTokenAccount",
-      msg: "Invalid target token account",
+      "code": 6005,
+      "name": "InvalidTargetTokenAccount",
+      "msg": "Invalid target token account"
     },
     {
-      code: 6006,
-      name: "InvalidCloseTokenAccount",
-      msg: "Invalid token account to close",
+      "code": 6006,
+      "name": "InvalidCloseTokenAccount",
+      "msg": "Invalid token account to close"
     },
     {
-      code: 6007,
-      name: "InvalidHolderTokenAccount",
-      msg: "Invalid holder token account",
-    },
-  ],
+      "code": 6007,
+      "name": "InvalidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    }
+  ]
 };
diff --git a/sdk/src/index.ts b/sdk/src/index.ts
index b04bfcf7..a1478ae9 100644
--- a/sdk/src/index.ts
+++ b/sdk/src/index.ts
@@ -1 +1,2 @@
-export * from "./constants";
+export * from "./pda";
+export * from "./generated";
diff --git a/sdk/src/pda.ts b/sdk/src/pda.ts
new file mode 100644
index 00000000..24eb2751
--- /dev/null
+++ b/sdk/src/pda.ts
@@ -0,0 +1,18 @@
+import { utils } from "@project-serum/anchor";
+import { PublicKey } from "@solana/web3.js";
+import { findProgramAddressSync } from "@project-serum/anchor/dist/cjs/utils/pubkey";
+import { PROGRAM_ID } from "./generated";
+
+export const findMintManagerId = (mintId: PublicKey) => {
+  return findProgramAddressSync(
+    [utils.bytes.utf8.encode("mint-manager"), mintId.toBuffer()],
+    PROGRAM_ID
+  )[0];
+};
+
+export const findStandardId = (name: string) => {
+  return findProgramAddressSync(
+    [utils.bytes.utf8.encode("standard"), utils.bytes.utf8.encode(name)],
+    PROGRAM_ID
+  )[0];
+};
diff --git a/sdk/tests/init.test.ts b/sdk/tests/init.test.ts
index 8c4d8547..93ded365 100644
--- a/sdk/tests/init.test.ts
+++ b/sdk/tests/init.test.ts
@@ -1,12 +1,20 @@
 import { test, beforeAll, expect } from "@jest/globals";
-import { getProvider } from "../utils";
+import { executeTransaction, getProvider } from "../utils";
 import type { PublicKey } from "@solana/web3.js";
-import { Keypair } from "@solana/web3.js";
+import { Keypair, Transaction } from "@solana/web3.js";
 import { createMint } from "@solana/spl-token";
-import { CreatorStandard } from "../src";
-
+import {
+  findMintManagerId,
+  createInitMintManagerInstruction,
+  MintManager,
+  createInitStandardInstruction,
+  findStandardId,
+  Standard,
+} from "../src";
 let mint: PublicKey;
 
+const STANDARD_NAME = "global";
+
 beforeAll(async () => {
   const provider = await getProvider();
   const mintKeypair = Keypair.generate();
@@ -20,11 +28,65 @@ beforeAll(async () => {
   );
 });
 
+test("Create standard", async () => {
+  const provider = await getProvider();
+  const standardId = findStandardId(STANDARD_NAME);
+  const tx = new Transaction();
+  tx.add(
+    createInitStandardInstruction(
+      {
+        standard: standardId,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          standardName: STANDARD_NAME,
+          checkSellerFeeBasisPoints: true,
+          disallowedPrograms: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const standard = await Standard.fromAccountAddress(
+    provider.connection,
+    standardId
+  );
+  expect(standard.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(standard.checkSellerFeeBasisPoints).toBe(true);
+  expect(standard.disallowedPrograms).toBe([]);
+  expect(standard.allowedPrograms).toBe([]);
+});
+
 test("Init", async () => {
-  await CreatorStandard.methods
-    .initMintManager()
-    .accounts({
+  const provider = await getProvider();
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  tx.add(
+    createInitMintManagerInstruction({
       mint: mint,
+      mintManager: mintManagerId,
+      authority: provider.wallet.publicKey,
+      payer: provider.wallet.publicKey,
+      collector: provider.wallet.publicKey,
+      standard: Keypair.generate().publicKey,
     })
-    .rpc();
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(mintManager.standard.toString()).toBe(
+    findStandardId(STANDARD_NAME).toString()
+  );
 });
diff --git a/sdk/tsconfig.json b/sdk/tsconfig.json
index 53402aac..0b3672af 100644
--- a/sdk/tsconfig.json
+++ b/sdk/tsconfig.json
@@ -24,7 +24,6 @@
     "strict": true,
     "noUnusedLocals": true,
     "noUnusedParameters": true,
-    "noImplicitOverride": true,
     "noUncheckedIndexedAccess": true,
     "noFallthroughCasesInSwitch": true,
     "forceConsistentCasingInFileNames": true,
@@ -37,5 +36,5 @@
     "declarationMap": true,
     "inlineSources": true
   },
-  "include": ["src/"]
+  "include": ["src/", "tests/"]
 }
diff --git a/sdk/yarn.lock b/sdk/yarn.lock
index 948c5a61..252264f8 100644
--- a/sdk/yarn.lock
+++ b/sdk/yarn.lock
@@ -258,7 +258,15 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.18.6"
 
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2":
+"@babel/runtime-corejs3@^7.10.2":
+  version "7.19.6"
+  resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.6.tgz#778471a71d915cf3b955a9201bebabfe924f872a"
+  integrity sha512-oWNn1ZlGde7b4i/3tnixpH9qI0bOAACiUs+KEES4UUCnsPjVWFlWdLV/iwJuPC2qp3EowbAqsm+0XqNwnwYhxA==
+  dependencies:
+    core-js-pure "^3.25.1"
+    regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.9":
   version "7.19.4"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78"
   integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==
@@ -319,6 +327,11 @@
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
+"@github/browserslist-config@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@github/browserslist-config/-/browserslist-config-1.0.0.tgz#952fe6da3e6b8ed6a368f3a1a08a9d2ef84e8d04"
+  integrity sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==
+
 "@humanwhocodes/config-array@^0.10.5":
   version "0.10.7"
   resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
@@ -850,6 +863,11 @@
     expect "^29.0.0"
     pretty-format "^29.0.0"
 
+"@types/json-schema@^7.0.9":
+  version "7.0.11"
+  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
+  integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
+
 "@types/json5@^0.0.29":
   version "0.0.29"
   resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@@ -870,6 +888,11 @@
   resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e"
   integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==
 
+"@types/semver@^7.3.12":
+  version "7.3.12"
+  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c"
+  integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==
+
 "@types/stack-utils@^2.0.0":
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
@@ -894,6 +917,95 @@
   dependencies:
     "@types/yargs-parser" "*"
 
+"@typescript-eslint/eslint-plugin@^5.1.0":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz#3203a6ff396b1194083faaa6e5110c401201d7d5"
+  integrity sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==
+  dependencies:
+    "@typescript-eslint/scope-manager" "5.40.1"
+    "@typescript-eslint/type-utils" "5.40.1"
+    "@typescript-eslint/utils" "5.40.1"
+    debug "^4.3.4"
+    ignore "^5.2.0"
+    regexpp "^3.2.0"
+    semver "^7.3.7"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/experimental-utils@^5.0.0":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.40.1.tgz#2fa6b4f768d42fe7174c34cd02fa79717e4e2bfe"
+  integrity sha512-lynjgnQuoCgxtYgYWjoQqijk0kYQNiztnVhoqha3N0kMYFVPURidzCq2vn9XvUUu2XxP130ZRKVDKyeGa2bhbw==
+  dependencies:
+    "@typescript-eslint/utils" "5.40.1"
+
+"@typescript-eslint/parser@^5.1.0":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.40.1.tgz#e7f8295dd8154d0d37d661ddd8e2f0ecfdee28dd"
+  integrity sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==
+  dependencies:
+    "@typescript-eslint/scope-manager" "5.40.1"
+    "@typescript-eslint/types" "5.40.1"
+    "@typescript-eslint/typescript-estree" "5.40.1"
+    debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@5.40.1":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz#a7a5197dfd234622a2421ea590ee0ccc02e18dfe"
+  integrity sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==
+  dependencies:
+    "@typescript-eslint/types" "5.40.1"
+    "@typescript-eslint/visitor-keys" "5.40.1"
+
+"@typescript-eslint/type-utils@5.40.1":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz#091e4ce3bebbdb68f4980bae9dee2e4e1725f601"
+  integrity sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==
+  dependencies:
+    "@typescript-eslint/typescript-estree" "5.40.1"
+    "@typescript-eslint/utils" "5.40.1"
+    debug "^4.3.4"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/types@5.40.1":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.40.1.tgz#de37f4f64de731ee454bb2085d71030aa832f749"
+  integrity sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==
+
+"@typescript-eslint/typescript-estree@5.40.1":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz#9a7d25492f02c69882ce5e0cd1857b0c55645d72"
+  integrity sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==
+  dependencies:
+    "@typescript-eslint/types" "5.40.1"
+    "@typescript-eslint/visitor-keys" "5.40.1"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    semver "^7.3.7"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/utils@5.40.1":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.40.1.tgz#3204fb73a559d3b7bab7dc9d3c44487c2734a9ca"
+  integrity sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==
+  dependencies:
+    "@types/json-schema" "^7.0.9"
+    "@types/semver" "^7.3.12"
+    "@typescript-eslint/scope-manager" "5.40.1"
+    "@typescript-eslint/types" "5.40.1"
+    "@typescript-eslint/typescript-estree" "5.40.1"
+    eslint-scope "^5.1.1"
+    eslint-utils "^3.0.0"
+    semver "^7.3.7"
+
+"@typescript-eslint/visitor-keys@5.40.1":
+  version "5.40.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz#f3d2bf5af192f4432b84cec6fdcb387193518754"
+  integrity sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==
+  dependencies:
+    "@typescript-eslint/types" "5.40.1"
+    eslint-visitor-keys "^3.3.0"
+
 JSONStream@^1.3.5:
   version "1.3.5"
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -996,7 +1108,15 @@ argparse@^2.0.1:
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
   integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 
-array-includes@^3.1.4:
+aria-query@^4.2.2:
+  version "4.2.2"
+  resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+  integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+  dependencies:
+    "@babel/runtime" "^7.10.2"
+    "@babel/runtime-corejs3" "^7.10.2"
+
+array-includes@^3.1.4, array-includes@^3.1.5:
   version "3.1.5"
   resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb"
   integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==
@@ -1022,11 +1142,26 @@ array.prototype.flat@^1.2.5:
     es-abstract "^1.19.2"
     es-shim-unscopables "^1.0.0"
 
+ast-types-flow@^0.0.7:
+  version "0.0.7"
+  resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+  integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==
+
 astral-regex@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
   integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
 
+axe-core@^4.4.3:
+  version "4.4.3"
+  resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f"
+  integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==
+
+axobject-query@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
+  integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
+
 babel-jest@^29.2.1:
   version "29.2.1"
   resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1"
@@ -1157,7 +1292,7 @@ braces@^3.0.2:
   dependencies:
     fill-range "^7.0.1"
 
-browserslist@^4.21.3:
+browserslist@^4.21.0, browserslist@^4.21.3:
   version "4.21.4"
   resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
   integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
@@ -1384,6 +1519,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
   integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
 
+core-js-pure@^3.25.1:
+  version "3.25.5"
+  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.5.tgz#79716ba54240c6aa9ceba6eee08cf79471ba184d"
+  integrity sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==
+
 cross-fetch@^3.1.5:
   version "3.1.5"
   resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
@@ -1405,6 +1545,11 @@ crypto-hash@^1.3.0:
   resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247"
   integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==
 
+damerau-levenshtein@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
+  integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
+
 debug@^2.6.9:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -1608,6 +1753,11 @@ escape-string-regexp@^4.0.0:
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
   integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
+eslint-config-prettier@>=8.0.0:
+  version "8.5.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
+  integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
+
 eslint-import-resolver-node@^0.3.6:
   version "0.3.6"
   resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
@@ -1623,7 +1773,59 @@ eslint-module-utils@^2.7.3:
   dependencies:
     debug "^3.2.7"
 
-eslint-plugin-import@^2.26.0:
+eslint-plugin-escompat@^3.3.3:
+  version "3.3.4"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-escompat/-/eslint-plugin-escompat-3.3.4.tgz#86d99b1f681b760fbee0a775de318b854d230110"
+  integrity sha512-d/k6JwRzGRY6uZ426l6Ut6Eb2S/pi/079Ykj2GdWSzwm6WJHkdm28tECUWfLtpFA5ObApjPw6wR9bgY+uWAhag==
+  dependencies:
+    browserslist "^4.21.0"
+
+eslint-plugin-eslint-comments@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa"
+  integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==
+  dependencies:
+    escape-string-regexp "^1.0.5"
+    ignore "^5.0.5"
+
+eslint-plugin-filenames@^1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz#7094f00d7aefdd6999e3ac19f72cea058e590cf7"
+  integrity sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==
+  dependencies:
+    lodash.camelcase "4.3.0"
+    lodash.kebabcase "4.1.1"
+    lodash.snakecase "4.1.1"
+    lodash.upperfirst "4.3.1"
+
+eslint-plugin-github@^4.3.2:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-github/-/eslint-plugin-github-4.4.0.tgz#3d1bf4bce00bbda81b6e98e49102da4b146dce15"
+  integrity sha512-jmVjy86WqVblKuvWnAQAEUMPZnAWbOUuV2hmAjQ54BvmukUW5PBml84NnyKe1QMt6k5a6JoIrbkLkyISTUDSxA==
+  dependencies:
+    "@github/browserslist-config" "^1.0.0"
+    "@typescript-eslint/eslint-plugin" "^5.1.0"
+    "@typescript-eslint/parser" "^5.1.0"
+    eslint-config-prettier ">=8.0.0"
+    eslint-plugin-escompat "^3.3.3"
+    eslint-plugin-eslint-comments "^3.2.0"
+    eslint-plugin-filenames "^1.3.2"
+    eslint-plugin-i18n-text "^1.0.1"
+    eslint-plugin-import "^2.25.2"
+    eslint-plugin-jsx-a11y "^6.6.0"
+    eslint-plugin-no-only-tests "^3.0.0"
+    eslint-plugin-prettier "^4.0.0"
+    eslint-rule-documentation ">=1.0.0"
+    jsx-ast-utils "^3.3.2"
+    prettier "^2.2.1"
+    svg-element-attributes "^1.3.1"
+
+eslint-plugin-i18n-text@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz#69ce14f9af7d135cbe8114b1b144a57bb83291dc"
+  integrity sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==
+
+eslint-plugin-import@^2.25.2, eslint-plugin-import@^2.26.0:
   version "2.26.0"
   resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b"
   integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==
@@ -1642,6 +1844,57 @@ eslint-plugin-import@^2.26.0:
     resolve "^1.22.0"
     tsconfig-paths "^3.14.1"
 
+eslint-plugin-jest@^25.3.2:
+  version "25.7.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a"
+  integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==
+  dependencies:
+    "@typescript-eslint/experimental-utils" "^5.0.0"
+
+eslint-plugin-jsx-a11y@^6.6.0:
+  version "6.6.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff"
+  integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==
+  dependencies:
+    "@babel/runtime" "^7.18.9"
+    aria-query "^4.2.2"
+    array-includes "^3.1.5"
+    ast-types-flow "^0.0.7"
+    axe-core "^4.4.3"
+    axobject-query "^2.2.0"
+    damerau-levenshtein "^1.0.8"
+    emoji-regex "^9.2.2"
+    has "^1.0.3"
+    jsx-ast-utils "^3.3.2"
+    language-tags "^1.0.5"
+    minimatch "^3.1.2"
+    semver "^6.3.0"
+
+eslint-plugin-no-only-tests@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.0.0.tgz#026cbc8cb069c8da6b7e19d03654be7ad49893f6"
+  integrity sha512-I0PeXMs1vu21ap45hey4HQCJRqpcoIvGcNTPJe+UhUm8TwjQ6//mCrDqF8q0WS6LgmRDwQ4ovQej0AQsAHb5yg==
+
+eslint-plugin-prettier@^4.0.0:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
+  integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
+  dependencies:
+    prettier-linter-helpers "^1.0.0"
+
+eslint-rule-documentation@>=1.0.0:
+  version "1.0.23"
+  resolved "https://registry.yarnpkg.com/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz#4e0886145597a78d24524ec7e0cf18c6fedc23a8"
+  integrity sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==
+
+eslint-scope@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+  dependencies:
+    esrecurse "^4.3.0"
+    estraverse "^4.1.1"
+
 eslint-scope@^7.1.1:
   version "7.1.1"
   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
@@ -1739,6 +1992,11 @@ esrecurse@^4.3.0:
   dependencies:
     estraverse "^5.2.0"
 
+estraverse@^4.1.1:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
 estraverse@^5.1.0, estraverse@^5.2.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
@@ -1810,6 +2068,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
   integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
 
+fast-diff@^1.1.2:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+  integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
 fast-glob@^3.2.9:
   version "3.2.12"
   resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
@@ -2086,7 +2349,7 @@ ieee754@^1.2.1:
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
 
-ignore@^5.2.0:
+ignore@^5.0.5, ignore@^5.2.0:
   version "5.2.0"
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
   integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
@@ -2772,11 +3035,31 @@ jsonparse@^1.2.0:
   resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
   integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
 
+jsx-ast-utils@^3.3.2:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea"
+  integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==
+  dependencies:
+    array-includes "^3.1.5"
+    object.assign "^4.1.3"
+
 kleur@^3.0.3:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
   integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
 
+language-subtag-registry@~0.3.2:
+  version "0.3.22"
+  resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d"
+  integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==
+
+language-tags@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
+  integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==
+  dependencies:
+    language-subtag-registry "~0.3.2"
+
 leven@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
@@ -2847,6 +3130,16 @@ locate-path@^6.0.0:
   dependencies:
     p-locate "^5.0.0"
 
+lodash.camelcase@4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+  integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
+lodash.kebabcase@4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
+  integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==
+
 lodash.memoize@4.x:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -2857,6 +3150,16 @@ lodash.merge@^4.6.2:
   resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
   integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
 
+lodash.snakecase@4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
+  integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==
+
+lodash.upperfirst@4.3.1:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce"
+  integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==
+
 lodash@^4.17.20:
   version "4.17.21"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@@ -3024,7 +3327,7 @@ object-keys@^1.1.1:
   resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
   integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
 
-object.assign@^4.1.4:
+object.assign@^4.1.3, object.assign@^4.1.4:
   version "4.1.4"
   resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
   integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
@@ -3200,7 +3503,14 @@ prelude-ls@^1.2.1:
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
   integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
 
-prettier@^2.5.1:
+prettier-linter-helpers@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+  integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+  dependencies:
+    fast-diff "^1.1.2"
+
+prettier@^2.2.1, prettier@^2.5.1:
   version "2.7.1"
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
   integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
@@ -3596,6 +3906,11 @@ supports-preserve-symlinks-flag@^1.0.0:
   resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
   integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 
+svg-element-attributes@^1.3.1:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz#0c55afac6284291ab563d0913c062cf78a8c0ddb"
+  integrity sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==
+
 test-exclude@^6.0.0:
   version "6.0.0"
   resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
@@ -3671,11 +3986,23 @@ tsconfig-paths@^3.14.1:
     minimist "^1.2.6"
     strip-bom "^3.0.0"
 
+tslib@^1.8.1:
+  version "1.14.1"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
 tslib@^2.0.3, tslib@^2.1.0:
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
   integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
 
+tsutils@^3.21.0:
+  version "3.21.0"
+  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+  integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+  dependencies:
+    tslib "^1.8.1"
+
 type-check@^0.4.0, type-check@~0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"

From cbcba4e8ba6fcef91ab1e0828f316c39e6b50cbd Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 01:02:36 -0400
Subject: [PATCH 12/37] Add transfer and regen client

---
 Cargo.lock                                    |   1 +
 Makefile                                      |   2 +-
 program/Cargo.toml                            |   1 +
 program/src/errors.rs                         |  14 +-
 program/src/instructions/mod.rs               |  18 +-
 program/src/instructions/token/approve.rs     |   3 +-
 .../src/instructions/token/init_account.rs    |   4 +-
 .../src/instructions/token/post_transfer.rs   |  17 +
 .../src/instructions/token/pre_transfer.rs    |  17 +
 program/src/instructions/token/transfer.rs    | 130 ++-
 program/src/lib.rs                            |  37 +
 sdk/idl/cardinal_creator_standard.json        | 382 +++++++-
 sdk/src/generated/accounts/Standard.ts        |  10 +-
 sdk/src/generated/errors/index.ts             | 138 ++-
 sdk/src/generated/instructions/approve.ts     | 102 +++
 sdk/src/generated/instructions/burn.ts        |  99 +++
 sdk/src/generated/instructions/close.ts       | 101 +++
 sdk/src/generated/instructions/index.ts       |   9 +
 sdk/src/generated/instructions/initAccount.ts | 114 +++
 sdk/src/generated/instructions/initMint.ts    | 142 +++
 .../generated/instructions/initStandard.ts    |  42 +-
 .../generated/instructions/postTransfer.ts    |  81 ++
 sdk/src/generated/instructions/preTransfer.ts |  81 ++
 sdk/src/generated/instructions/revoke.ts      |  95 ++
 sdk/src/generated/instructions/transfer.ts    | 128 +++
 .../instructions/updateMintManager.ts         |  42 +-
 sdk/src/generated/types/InitStandardIx.ts     |   4 +-
 sdk/src/idl/cardinal_creator_standard.ts      | 814 +++++++++++++++++-
 sdk/tests/init.test.ts                        |   6 +-
 29 files changed, 2521 insertions(+), 113 deletions(-)
 create mode 100644 sdk/src/generated/instructions/approve.ts
 create mode 100644 sdk/src/generated/instructions/burn.ts
 create mode 100644 sdk/src/generated/instructions/close.ts
 create mode 100644 sdk/src/generated/instructions/initAccount.ts
 create mode 100644 sdk/src/generated/instructions/initMint.ts
 create mode 100644 sdk/src/generated/instructions/postTransfer.ts
 create mode 100644 sdk/src/generated/instructions/preTransfer.ts
 create mode 100644 sdk/src/generated/instructions/revoke.ts
 create mode 100644 sdk/src/generated/instructions/transfer.ts

diff --git a/Cargo.lock b/Cargo.lock
index e418a6d8..cbf79d9f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -392,6 +392,7 @@ version = "0.1.0"
 dependencies = [
  "anchor-lang",
  "anchor-spl",
+ "arrayref",
  "mpl-token-metadata",
  "solana-program",
  "spl-associated-token-account",
diff --git a/Makefile b/Makefile
index 2daca0fc..5e9ba9e7 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@ all: build start test stop
 
 build:
 	cd program && anchor build
-	cd sdk && yarn idl:generate
+	cd sdk && yarn idl:generate && yarn solita
 
 start:
 	pkill solana-test-validator || true
diff --git a/program/Cargo.toml b/program/Cargo.toml
index c7e73077..a06ae25d 100644
--- a/program/Cargo.toml
+++ b/program/Cargo.toml
@@ -19,3 +19,4 @@ anchor-spl = "0.25.0"
 spl-token = { version = "~3.3.1", features = ["no-entrypoint"] }
 spl-associated-token-account = { version = "~1.0.5", features = ["no-entrypoint"] }
 mpl-token-metadata = { version = "1.3.3", features = [ "no-entrypoint", ] }
+arrayref = "0.3.6"
\ No newline at end of file
diff --git a/program/src/errors.rs b/program/src/errors.rs
index ff1ba82c..3cfe6b80 100644
--- a/program/src/errors.rs
+++ b/program/src/errors.rs
@@ -8,8 +8,8 @@ pub enum ErrorCode {
     InvalidCollector,
     #[msg("Invalid authority address")]
     InvalidAuthority,
-    #[msg("Invalid mint")]
-    InvaldiMint,
+    #[msg("Invalid mint manager")]
+    InvalidMintManager,
     #[msg("Invalid holder token account")]
     InvlaidHolderTokenAccount,
     #[msg("Invalid target token account")]
@@ -18,4 +18,14 @@ pub enum ErrorCode {
     InvalidCloseTokenAccount,
     #[msg("Invalid holder token account")]
     InvalidHolderTokenAccount,
+    #[msg("Invalid standard")]
+    InvalidStandard,
+    #[msg("Invalid pre transfer instruction")]
+    InvalidPreTransferInstruction,
+    #[msg("Invalid post transfer instruction")]
+    InvalidPostTransferInstruction,
+    #[msg("Disallowed program included in transfer")]
+    ProgramDisallowed,
+    #[msg("Program not allowed in allowed programs to transfer")]
+    ProgramNotAllowed,
 }
diff --git a/program/src/instructions/mod.rs b/program/src/instructions/mod.rs
index 786f3d6e..555c113e 100644
--- a/program/src/instructions/mod.rs
+++ b/program/src/instructions/mod.rs
@@ -7,12 +7,12 @@ pub use standard::init_standard::*;
 pub use standard::update_standard::*;
 
 pub mod token;
-pub use token::approve;
-pub use token::burn;
-pub use token::close;
-pub use token::init_account;
-pub use token::init_mint;
-pub use token::post_transfer;
-pub use token::pre_transfer;
-pub use token::revoke;
-pub use token::transfer;
+pub use token::approve::*;
+pub use token::burn::*;
+pub use token::close::*;
+pub use token::init_account::*;
+pub use token::init_mint::*;
+pub use token::post_transfer::*;
+pub use token::pre_transfer::*;
+pub use token::revoke::*;
+pub use token::transfer::*;
diff --git a/program/src/instructions/token/approve.rs b/program/src/instructions/token/approve.rs
index c223808e..8eb50008 100644
--- a/program/src/instructions/token/approve.rs
+++ b/program/src/instructions/token/approve.rs
@@ -12,9 +12,8 @@ use anchor_lang::prelude::*;
 
 #[derive(Accounts)]
 pub struct ApproveCtx<'info> {
-    #[account(mut)]
+    #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMintManager)]
     mint_manager: Box<Account<'info, MintManager>>,
-    #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMint)]
     mint: Box<Account<'info, Mint>>,
 
     #[account(mut, constraint =
diff --git a/program/src/instructions/token/init_account.rs b/program/src/instructions/token/init_account.rs
index c801577b..d9c2863d 100644
--- a/program/src/instructions/token/init_account.rs
+++ b/program/src/instructions/token/init_account.rs
@@ -4,7 +4,7 @@ use anchor_spl::associated_token::{self};
 use anchor_spl::token::Token;
 
 #[derive(Accounts)]
-pub struct InitAccount<'info> {
+pub struct InitAccountCtx<'info> {
     /// CHECK: Account created or checked in handler
     mint: UncheckedAccount<'info>,
     /// CHECK: Account created or checked in handler
@@ -21,7 +21,7 @@ pub struct InitAccount<'info> {
     system_program: Program<'info, System>,
 }
 
-pub fn handler(ctx: Context<InitAccount>) -> Result<()> {
+pub fn handler(ctx: Context<InitAccountCtx>) -> Result<()> {
     let cpi_accounts = associated_token::Create {
         payer: ctx.accounts.payer.to_account_info(),
         associated_token: ctx.accounts.token_account.to_account_info(),
diff --git a/program/src/instructions/token/post_transfer.rs b/program/src/instructions/token/post_transfer.rs
index 8b137891..aff66faa 100644
--- a/program/src/instructions/token/post_transfer.rs
+++ b/program/src/instructions/token/post_transfer.rs
@@ -1 +1,18 @@
+use crate::state::*;
+use anchor_lang::prelude::*;
+use solana_program::sysvar::{self};
 
+pub const POST_TRANSFER_DISCRIMINATOR: [u8; 8] = [195, 252, 43, 202, 149, 119, 175, 84];
+
+#[derive(Accounts)]
+pub struct PostTransferCtx<'info> {
+    mint_manager: Account<'info, MintManager>,
+    standard: Account<'info, Standard>,
+    /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
+    #[account(address = sysvar::instructions::id())]
+    instructions: UncheckedAccount<'info>,
+}
+
+pub fn handler(_ctx: Context<PostTransferCtx>) -> Result<()> {
+    Ok(())
+}
diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
index 8b137891..e61134b3 100644
--- a/program/src/instructions/token/pre_transfer.rs
+++ b/program/src/instructions/token/pre_transfer.rs
@@ -1 +1,18 @@
+use crate::state::*;
+use anchor_lang::prelude::*;
+use solana_program::sysvar::{self};
 
+pub const PRE_TRANSFER_DISCRIMINATOR: [u8; 8] = [158, 85, 53, 202, 155, 118, 19, 228];
+
+#[derive(Accounts)]
+pub struct PreTransferCtx<'info> {
+    mint_manager: Account<'info, MintManager>,
+    standard: Account<'info, Standard>,
+    /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
+    #[account(address = sysvar::instructions::id())]
+    instructions: UncheckedAccount<'info>,
+}
+
+pub fn handler(_ctx: Context<PreTransferCtx>) -> Result<()> {
+    Ok(())
+}
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
index 2b90ae41..626511d8 100644
--- a/program/src/instructions/token/transfer.rs
+++ b/program/src/instructions/token/transfer.rs
@@ -1 +1,129 @@
-// bogle
+use std::collections::HashSet;
+
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+use anchor_spl::token::FreezeAccount;
+use anchor_spl::token::Mint;
+use anchor_spl::token::ThawAccount;
+use anchor_spl::token::Token;
+use anchor_spl::token::TokenAccount;
+use anchor_spl::token::Transfer;
+use anchor_spl::token::{self};
+use arrayref::array_ref;
+use solana_program::serialize_utils::read_u16;
+use solana_program::sysvar::instructions::load_instruction_at_checked;
+use solana_program::sysvar::{self};
+
+use super::POST_TRANSFER_DISCRIMINATOR;
+use super::PRE_TRANSFER_DISCRIMINATOR;
+
+#[derive(Accounts)]
+pub struct TransferCtx<'info> {
+    #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMintManager)]
+    mint_manager: Box<Account<'info, MintManager>>,
+    #[account(constraint = standard.key() == mint_manager.standard @ ErrorCode::InvalidStandard)]
+    standard: Account<'info, Standard>,
+    mint: Box<Account<'info, Mint>>,
+
+    #[account(mut)]
+    from: Account<'info, TokenAccount>,
+    #[account(mut)]
+    to: Account<'info, TokenAccount>,
+
+    authority: Signer<'info>,
+    rent: Sysvar<'info, Rent>,
+    token_program: Program<'info, Token>,
+    system_program: Program<'info, System>,
+    /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
+    #[account(address = sysvar::instructions::id())]
+    instructions: UncheckedAccount<'info>,
+}
+
+pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
+    let instructions_account_info = ctx.accounts.instructions.to_account_info();
+    let instruction_sysvar = instructions_account_info.try_borrow_data()?;
+    let mut current: usize = 0;
+    let num_instructions =
+        read_u16(&mut current, &instruction_sysvar).expect("Invalid instruction");
+
+    // check pre/post
+    if ctx.accounts.standard.check_seller_fee_basis_points {
+        // check pre_transfer
+        let first_ix = load_instruction_at_checked(0, &instructions_account_info)
+            .expect("Failed to get first instruction");
+        let data: &[u8] = &first_ix.data;
+        let disc_bytes = array_ref![data, 0, 8];
+        if first_ix.program_id != *ctx.program_id || disc_bytes != &PRE_TRANSFER_DISCRIMINATOR {
+            return Err(error!(ErrorCode::InvalidPreTransferInstruction));
+        }
+
+        // check post_transfer
+        let last_ix =
+            load_instruction_at_checked(num_instructions.into(), &instructions_account_info)
+                .expect("Failed to get last instruction");
+        let data: &[u8] = &last_ix.data;
+        let disc_bytes = array_ref![data, 0, 8];
+        if last_ix.program_id != *ctx.program_id || disc_bytes != &POST_TRANSFER_DISCRIMINATOR {
+            return Err(error!(ErrorCode::InvalidPostTransferInstruction));
+        }
+    }
+
+    // check allowed / disallowed
+    let mut allowed_programs = HashSet::new();
+    for program_id in &ctx.accounts.standard.allowed_programs {
+        allowed_programs.insert(program_id);
+    }
+
+    let mut disallowed_programs = HashSet::new();
+    for program_id in &ctx.accounts.standard.disallowed_programs {
+        disallowed_programs.insert(program_id);
+    }
+
+    for i in 0..num_instructions {
+        let ix = load_instruction_at_checked(i.into(), &instructions_account_info)
+            .expect("Failed to get instruction");
+        if allowed_programs.len() > 0 && !allowed_programs.contains(&ix.program_id) {
+            return Err(error!(ErrorCode::ProgramNotAllowed));
+        }
+        if disallowed_programs.len() > 0 && disallowed_programs.contains(&ix.program_id) {
+            return Err(error!(ErrorCode::ProgramDisallowed));
+        }
+    }
+
+    let mint = ctx.accounts.mint.key();
+    let mint_manager_seeds = &[
+        MINT_MANAGER_SEED.as_bytes(),
+        mint.as_ref(),
+        &[ctx.accounts.mint_manager.bump],
+    ];
+    let mint_manager_signer = &[&mint_manager_seeds[..]];
+
+    let cpi_accounts = ThawAccount {
+        account: ctx.accounts.from.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::thaw_account(cpi_context)?;
+
+    let cpi_accounts = Transfer {
+        from: ctx.accounts.from.to_account_info(),
+        to: ctx.accounts.to.to_account_info(),
+        authority: ctx.accounts.authority.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+    token::transfer(cpi_context, 1)?;
+
+    let cpi_accounts = FreezeAccount {
+        account: ctx.accounts.to.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::freeze_account(cpi_context)?;
+    Ok(())
+}
diff --git a/program/src/lib.rs b/program/src/lib.rs
index 58e97de8..fdf6f11f 100644
--- a/program/src/lib.rs
+++ b/program/src/lib.rs
@@ -31,4 +31,41 @@ pub mod cardinal_creator_standard {
     pub fn update_standard(ctx: Context<UpdateStandardCtx>, ix: UpdateStandardIx) -> Result<()> {
         standard::update_standard::handler(ctx, ix)
     }
+
+    // token
+    pub fn init_mint(ctx: Context<InitMintCtx>) -> Result<()> {
+        token::init_mint::handler(ctx)
+    }
+
+    pub fn init_account(ctx: Context<InitAccountCtx>) -> Result<()> {
+        token::init_account::handler(ctx)
+    }
+
+    pub fn approve(ctx: Context<ApproveCtx>) -> Result<()> {
+        token::approve::handler(ctx)
+    }
+
+    pub fn revoke(ctx: Context<RevokeCtx>) -> Result<()> {
+        token::revoke::handler(ctx)
+    }
+
+    pub fn burn(ctx: Context<BurnCtx>) -> Result<()> {
+        token::burn::handler(ctx)
+    }
+
+    pub fn close(ctx: Context<CloseCtx>) -> Result<()> {
+        token::close::handler(ctx)
+    }
+
+    pub fn transfer(ctx: Context<TransferCtx>) -> Result<()> {
+        token::transfer::handler(ctx)
+    }
+
+    pub fn pre_transfer(ctx: Context<PreTransferCtx>) -> Result<()> {
+        token::pre_transfer::handler(ctx)
+    }
+
+    pub fn post_transfer(ctx: Context<PostTransferCtx>) -> Result<()> {
+        token::post_transfer::handler(ctx)
+    }
 }
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index 868645c2..1553449d 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -141,6 +141,355 @@
           }
         }
       ]
+    },
+    {
+      "name": "initMint",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "targetTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "target",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "initAccount",
+      "accounts": [
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccountOwner",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "approve",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "delegate",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "revoke",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "burn",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "close",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "owner",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "transfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "from",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "to",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "preTransfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "postTransfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
     }
   ],
   "accounts": [
@@ -194,7 +543,7 @@
             "type": "bool"
           },
           {
-            "name": "standardName",
+            "name": "name",
             "type": "string"
           },
           {
@@ -236,7 +585,7 @@
             "type": "bool"
           },
           {
-            "name": "standardName",
+            "name": "name",
             "type": "string"
           },
           {
@@ -297,8 +646,8 @@
     },
     {
       "code": 6003,
-      "name": "InvaldiMint",
-      "msg": "Invalid mint"
+      "name": "InvalidMintManager",
+      "msg": "Invalid mint manager"
     },
     {
       "code": 6004,
@@ -319,6 +668,31 @@
       "code": 6007,
       "name": "InvalidHolderTokenAccount",
       "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6008,
+      "name": "InvalidStandard",
+      "msg": "Invalid standard"
+    },
+    {
+      "code": 6009,
+      "name": "InvalidPreTransferInstruction",
+      "msg": "Invalid pre transfer instruction"
+    },
+    {
+      "code": 6010,
+      "name": "InvalidPostTransferInstruction",
+      "msg": "Invalid post transfer instruction"
+    },
+    {
+      "code": 6011,
+      "name": "ProgramDisallowed",
+      "msg": "Disallowed program included in transfer"
+    },
+    {
+      "code": 6012,
+      "name": "ProgramNotAllowed",
+      "msg": "Program not allowed in allowed programs to transfer"
     }
   ],
   "metadata": {
diff --git a/sdk/src/generated/accounts/Standard.ts b/sdk/src/generated/accounts/Standard.ts
index 1c31688b..90f8ba53 100644
--- a/sdk/src/generated/accounts/Standard.ts
+++ b/sdk/src/generated/accounts/Standard.ts
@@ -19,7 +19,7 @@ export type StandardArgs = {
   version: number
   authority: web3.PublicKey
   checkSellerFeeBasisPoints: boolean
-  standardName: string
+  name: string
   disallowedPrograms: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
 }
@@ -38,7 +38,7 @@ export class Standard implements StandardArgs {
     readonly version: number,
     readonly authority: web3.PublicKey,
     readonly checkSellerFeeBasisPoints: boolean,
-    readonly standardName: string,
+    readonly name: string,
     readonly disallowedPrograms: web3.PublicKey[],
     readonly allowedPrograms: web3.PublicKey[]
   ) {}
@@ -52,7 +52,7 @@ export class Standard implements StandardArgs {
       args.version,
       args.authority,
       args.checkSellerFeeBasisPoints,
-      args.standardName,
+      args.name,
       args.disallowedPrograms,
       args.allowedPrograms
     )
@@ -163,7 +163,7 @@ export class Standard implements StandardArgs {
       version: this.version,
       authority: this.authority.toBase58(),
       checkSellerFeeBasisPoints: this.checkSellerFeeBasisPoints,
-      standardName: this.standardName,
+      name: this.name,
       disallowedPrograms: this.disallowedPrograms,
       allowedPrograms: this.allowedPrograms,
     }
@@ -186,7 +186,7 @@ export const standardBeet = new beet.FixableBeetStruct<
     ['version', beet.u8],
     ['authority', beetSolana.publicKey],
     ['checkSellerFeeBasisPoints', beet.bool],
-    ['standardName', beet.utf8String],
+    ['name', beet.utf8String],
     ['disallowedPrograms', beet.array(beetSolana.publicKey)],
     ['allowedPrograms', beet.array(beetSolana.publicKey)],
   ],
diff --git a/sdk/src/generated/errors/index.ts b/sdk/src/generated/errors/index.ts
index 42287747..4614bc23 100644
--- a/sdk/src/generated/errors/index.ts
+++ b/sdk/src/generated/errors/index.ts
@@ -78,24 +78,27 @@ createErrorFromNameLookup.set(
 )
 
 /**
- * InvaldiMint: 'Invalid mint'
+ * InvalidMintManager: 'Invalid mint manager'
  *
  * @category Errors
  * @category generated
  */
-export class InvaldiMintError extends Error {
+export class InvalidMintManagerError extends Error {
   readonly code: number = 0x1773
-  readonly name: string = 'InvaldiMint'
+  readonly name: string = 'InvalidMintManager'
   constructor() {
-    super('Invalid mint')
+    super('Invalid mint manager')
     if (typeof Error.captureStackTrace === 'function') {
-      Error.captureStackTrace(this, InvaldiMintError)
+      Error.captureStackTrace(this, InvalidMintManagerError)
     }
   }
 }
 
-createErrorFromCodeLookup.set(0x1773, () => new InvaldiMintError())
-createErrorFromNameLookup.set('InvaldiMint', () => new InvaldiMintError())
+createErrorFromCodeLookup.set(0x1773, () => new InvalidMintManagerError())
+createErrorFromNameLookup.set(
+  'InvalidMintManager',
+  () => new InvalidMintManagerError()
+)
 
 /**
  * InvlaidHolderTokenAccount: 'Invalid holder token account'
@@ -198,6 +201,127 @@ createErrorFromNameLookup.set(
   () => new InvalidHolderTokenAccountError()
 )
 
+/**
+ * InvalidStandard: 'Invalid standard'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidStandardError extends Error {
+  readonly code: number = 0x1778
+  readonly name: string = 'InvalidStandard'
+  constructor() {
+    super('Invalid standard')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidStandardError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x1778, () => new InvalidStandardError())
+createErrorFromNameLookup.set(
+  'InvalidStandard',
+  () => new InvalidStandardError()
+)
+
+/**
+ * InvalidPreTransferInstruction: 'Invalid pre transfer instruction'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidPreTransferInstructionError extends Error {
+  readonly code: number = 0x1779
+  readonly name: string = 'InvalidPreTransferInstruction'
+  constructor() {
+    super('Invalid pre transfer instruction')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidPreTransferInstructionError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(
+  0x1779,
+  () => new InvalidPreTransferInstructionError()
+)
+createErrorFromNameLookup.set(
+  'InvalidPreTransferInstruction',
+  () => new InvalidPreTransferInstructionError()
+)
+
+/**
+ * InvalidPostTransferInstruction: 'Invalid post transfer instruction'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class InvalidPostTransferInstructionError extends Error {
+  readonly code: number = 0x177a
+  readonly name: string = 'InvalidPostTransferInstruction'
+  constructor() {
+    super('Invalid post transfer instruction')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, InvalidPostTransferInstructionError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(
+  0x177a,
+  () => new InvalidPostTransferInstructionError()
+)
+createErrorFromNameLookup.set(
+  'InvalidPostTransferInstruction',
+  () => new InvalidPostTransferInstructionError()
+)
+
+/**
+ * ProgramDisallowed: 'Disallowed program included in transfer'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class ProgramDisallowedError extends Error {
+  readonly code: number = 0x177b
+  readonly name: string = 'ProgramDisallowed'
+  constructor() {
+    super('Disallowed program included in transfer')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, ProgramDisallowedError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x177b, () => new ProgramDisallowedError())
+createErrorFromNameLookup.set(
+  'ProgramDisallowed',
+  () => new ProgramDisallowedError()
+)
+
+/**
+ * ProgramNotAllowed: 'Program not allowed in allowed programs to transfer'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class ProgramNotAllowedError extends Error {
+  readonly code: number = 0x177c
+  readonly name: string = 'ProgramNotAllowed'
+  constructor() {
+    super('Program not allowed in allowed programs to transfer')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, ProgramNotAllowedError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x177c, () => new ProgramNotAllowedError())
+createErrorFromNameLookup.set(
+  'ProgramNotAllowed',
+  () => new ProgramNotAllowedError()
+)
+
 /**
  * Attempts to resolve a custom program error from the provided error code.
  * @category Errors
diff --git a/sdk/src/generated/instructions/approve.ts b/sdk/src/generated/instructions/approve.ts
new file mode 100644
index 00000000..b5a7e189
--- /dev/null
+++ b/sdk/src/generated/instructions/approve.ts
@@ -0,0 +1,102 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category Approve
+ * @category generated
+ */
+export const approveStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'ApproveInstructionArgs'
+)
+/**
+ * Accounts required by the _approve_ instruction
+ *
+ * @property [] mintManager
+ * @property [] mint
+ * @property [_writable_] holderTokenAccount
+ * @property [_writable_, **signer**] holder
+ * @property [_writable_] delegate
+ * @category Instructions
+ * @category Approve
+ * @category generated
+ */
+export type ApproveInstructionAccounts = {
+  mintManager: web3.PublicKey
+  mint: web3.PublicKey
+  holderTokenAccount: web3.PublicKey
+  holder: web3.PublicKey
+  delegate: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+}
+
+export const approveInstructionDiscriminator = [
+  69, 74, 217, 36, 115, 117, 97, 76,
+]
+
+/**
+ * Creates a _Approve_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category Approve
+ * @category generated
+ */
+export function createApproveInstruction(
+  accounts: ApproveInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = approveStruct.serialize({
+    instructionDiscriminator: approveInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.holderTokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.holder,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.delegate,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/burn.ts b/sdk/src/generated/instructions/burn.ts
new file mode 100644
index 00000000..13dab4d3
--- /dev/null
+++ b/sdk/src/generated/instructions/burn.ts
@@ -0,0 +1,99 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category Burn
+ * @category generated
+ */
+export const burnStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'BurnInstructionArgs'
+)
+/**
+ * Accounts required by the _burn_ instruction
+ *
+ * @property [_writable_] mintManager
+ * @property [_writable_] mint
+ * @property [_writable_] holderTokenAccount
+ * @property [**signer**] holder
+ * @category Instructions
+ * @category Burn
+ * @category generated
+ */
+export type BurnInstructionAccounts = {
+  mintManager: web3.PublicKey
+  mint: web3.PublicKey
+  holderTokenAccount: web3.PublicKey
+  holder: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
+
+export const burnInstructionDiscriminator = [116, 110, 29, 56, 107, 219, 42, 93]
+
+/**
+ * Creates a _Burn_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category Burn
+ * @category generated
+ */
+export function createBurnInstruction(
+  accounts: BurnInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = burnStruct.serialize({
+    instructionDiscriminator: burnInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.holderTokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.holder,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/close.ts b/sdk/src/generated/instructions/close.ts
new file mode 100644
index 00000000..be38910a
--- /dev/null
+++ b/sdk/src/generated/instructions/close.ts
@@ -0,0 +1,101 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category Close
+ * @category generated
+ */
+export const closeStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'CloseInstructionArgs'
+)
+/**
+ * Accounts required by the _close_ instruction
+ *
+ * @property [] mintManager
+ * @property [_writable_] mint
+ * @property [_writable_] tokenAccount
+ * @property [**signer**] owner
+ * @category Instructions
+ * @category Close
+ * @category generated
+ */
+export type CloseInstructionAccounts = {
+  mintManager: web3.PublicKey
+  mint: web3.PublicKey
+  tokenAccount: web3.PublicKey
+  owner: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
+
+export const closeInstructionDiscriminator = [
+  98, 165, 201, 177, 108, 65, 206, 96,
+]
+
+/**
+ * Creates a _Close_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category Close
+ * @category generated
+ */
+export function createCloseInstruction(
+  accounts: CloseInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = closeStruct.serialize({
+    instructionDiscriminator: closeInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.owner,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/index.ts b/sdk/src/generated/instructions/index.ts
index 66c2d098..942cbeba 100644
--- a/sdk/src/generated/instructions/index.ts
+++ b/sdk/src/generated/instructions/index.ts
@@ -1,4 +1,13 @@
+export * from './approve'
+export * from './burn'
+export * from './close'
+export * from './initAccount'
+export * from './initMint'
 export * from './initMintManager'
 export * from './initStandard'
+export * from './postTransfer'
+export * from './preTransfer'
+export * from './revoke'
+export * from './transfer'
 export * from './updateMintManager'
 export * from './updateStandard'
diff --git a/sdk/src/generated/instructions/initAccount.ts b/sdk/src/generated/instructions/initAccount.ts
new file mode 100644
index 00000000..6f85cf0a
--- /dev/null
+++ b/sdk/src/generated/instructions/initAccount.ts
@@ -0,0 +1,114 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category InitAccount
+ * @category generated
+ */
+export const initAccountStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'InitAccountInstructionArgs'
+)
+/**
+ * Accounts required by the _initAccount_ instruction
+ *
+ * @property [] mint
+ * @property [_writable_] tokenAccount
+ * @property [] tokenAccountOwner
+ * @property [_writable_, **signer**] payer
+ * @property [] associatedTokenProgram
+ * @category Instructions
+ * @category InitAccount
+ * @category generated
+ */
+export type InitAccountInstructionAccounts = {
+  mint: web3.PublicKey
+  tokenAccount: web3.PublicKey
+  tokenAccountOwner: web3.PublicKey
+  payer: web3.PublicKey
+  rent?: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+  associatedTokenProgram: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
+
+export const initAccountInstructionDiscriminator = [
+  169, 188, 158, 199, 9, 151, 101, 125,
+]
+
+/**
+ * Creates a _InitAccount_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category InitAccount
+ * @category generated
+ */
+export function createInitAccountInstruction(
+  accounts: InitAccountInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = initAccountStruct.serialize({
+    instructionDiscriminator: initAccountInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mint,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenAccountOwner,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.payer,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.rent ?? web3.SYSVAR_RENT_PUBKEY,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.associatedTokenProgram,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/initMint.ts b/sdk/src/generated/instructions/initMint.ts
new file mode 100644
index 00000000..bdc120a9
--- /dev/null
+++ b/sdk/src/generated/instructions/initMint.ts
@@ -0,0 +1,142 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category InitMint
+ * @category generated
+ */
+export const initMintStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'InitMintInstructionArgs'
+)
+/**
+ * Accounts required by the _initMint_ instruction
+ *
+ * @property [_writable_] mintManager
+ * @property [_writable_] mint
+ * @property [] standard
+ * @property [_writable_] targetTokenAccount
+ * @property [**signer**] target
+ * @property [_writable_] collector
+ * @property [**signer**] authority
+ * @property [_writable_, **signer**] payer
+ * @property [] associatedTokenProgram
+ * @category Instructions
+ * @category InitMint
+ * @category generated
+ */
+export type InitMintInstructionAccounts = {
+  mintManager: web3.PublicKey
+  mint: web3.PublicKey
+  standard: web3.PublicKey
+  targetTokenAccount: web3.PublicKey
+  target: web3.PublicKey
+  collector: web3.PublicKey
+  authority: web3.PublicKey
+  payer: web3.PublicKey
+  rent?: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+  associatedTokenProgram: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
+
+export const initMintInstructionDiscriminator = [
+  126, 176, 233, 16, 66, 117, 209, 125,
+]
+
+/**
+ * Creates a _InitMint_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category InitMint
+ * @category generated
+ */
+export function createInitMintInstruction(
+  accounts: InitMintInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = initMintStruct.serialize({
+    instructionDiscriminator: initMintInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.standard,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.targetTokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.target,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.collector,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.authority,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.payer,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.rent ?? web3.SYSVAR_RENT_PUBKEY,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.associatedTokenProgram,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/initStandard.ts b/sdk/src/generated/instructions/initStandard.ts
index 5e420770..76ed5007 100644
--- a/sdk/src/generated/instructions/initStandard.ts
+++ b/sdk/src/generated/instructions/initStandard.ts
@@ -5,9 +5,9 @@
  * See: https://github.com/metaplex-foundation/solita
  */
 
-import * as beet from "@metaplex-foundation/beet";
-import * as web3 from "@solana/web3.js";
-import { InitStandardIx, initStandardIxBeet } from "../types/InitStandardIx";
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+import { InitStandardIx, initStandardIxBeet } from '../types/InitStandardIx'
 
 /**
  * @category Instructions
@@ -15,8 +15,8 @@ import { InitStandardIx, initStandardIxBeet } from "../types/InitStandardIx";
  * @category generated
  */
 export type InitStandardInstructionArgs = {
-  ix: InitStandardIx;
-};
+  ix: InitStandardIx
+}
 /**
  * @category Instructions
  * @category InitStandard
@@ -24,15 +24,15 @@ export type InitStandardInstructionArgs = {
  */
 export const initStandardStruct = new beet.FixableBeetArgsStruct<
   InitStandardInstructionArgs & {
-    instructionDiscriminator: number[] /* size: 8 */;
+    instructionDiscriminator: number[] /* size: 8 */
   }
 >(
   [
-    ["instructionDiscriminator", beet.uniformFixedSizeArray(beet.u8, 8)],
-    ["ix", initStandardIxBeet],
+    ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
+    ['ix', initStandardIxBeet],
   ],
-  "InitStandardInstructionArgs"
-);
+  'InitStandardInstructionArgs'
+)
 /**
  * Accounts required by the _initStandard_ instruction
  *
@@ -44,15 +44,15 @@ export const initStandardStruct = new beet.FixableBeetArgsStruct<
  * @category generated
  */
 export type InitStandardInstructionAccounts = {
-  standard: web3.PublicKey;
-  authority: web3.PublicKey;
-  payer: web3.PublicKey;
-  systemProgram?: web3.PublicKey;
-};
+  standard: web3.PublicKey
+  authority: web3.PublicKey
+  payer: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
 
 export const initStandardInstructionDiscriminator = [
   85, 84, 110, 234, 166, 27, 75, 173,
-];
+]
 
 /**
  * Creates a _InitStandard_ instruction.
@@ -67,12 +67,12 @@ export const initStandardInstructionDiscriminator = [
 export function createInitStandardInstruction(
   accounts: InitStandardInstructionAccounts,
   args: InitStandardInstructionArgs,
-  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
 ) {
   const [data] = initStandardStruct.serialize({
     instructionDiscriminator: initStandardInstructionDiscriminator,
     ...args,
-  });
+  })
   const keys: web3.AccountMeta[] = [
     {
       pubkey: accounts.standard,
@@ -94,12 +94,12 @@ export function createInitStandardInstruction(
       isWritable: false,
       isSigner: false,
     },
-  ];
+  ]
 
   const ix = new web3.TransactionInstruction({
     programId,
     keys,
     data,
-  });
-  return ix;
+  })
+  return ix
 }
diff --git a/sdk/src/generated/instructions/postTransfer.ts b/sdk/src/generated/instructions/postTransfer.ts
new file mode 100644
index 00000000..0fe692da
--- /dev/null
+++ b/sdk/src/generated/instructions/postTransfer.ts
@@ -0,0 +1,81 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category PostTransfer
+ * @category generated
+ */
+export const postTransferStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'PostTransferInstructionArgs'
+)
+/**
+ * Accounts required by the _postTransfer_ instruction
+ *
+ * @property [] mintManager
+ * @property [] standard
+ * @property [] instructions
+ * @category Instructions
+ * @category PostTransfer
+ * @category generated
+ */
+export type PostTransferInstructionAccounts = {
+  mintManager: web3.PublicKey
+  standard: web3.PublicKey
+  instructions: web3.PublicKey
+}
+
+export const postTransferInstructionDiscriminator = [
+  195, 252, 43, 202, 149, 119, 175, 84,
+]
+
+/**
+ * Creates a _PostTransfer_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category PostTransfer
+ * @category generated
+ */
+export function createPostTransferInstruction(
+  accounts: PostTransferInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = postTransferStruct.serialize({
+    instructionDiscriminator: postTransferInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.standard,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.instructions,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/preTransfer.ts b/sdk/src/generated/instructions/preTransfer.ts
new file mode 100644
index 00000000..932f87a3
--- /dev/null
+++ b/sdk/src/generated/instructions/preTransfer.ts
@@ -0,0 +1,81 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category PreTransfer
+ * @category generated
+ */
+export const preTransferStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'PreTransferInstructionArgs'
+)
+/**
+ * Accounts required by the _preTransfer_ instruction
+ *
+ * @property [] mintManager
+ * @property [] standard
+ * @property [] instructions
+ * @category Instructions
+ * @category PreTransfer
+ * @category generated
+ */
+export type PreTransferInstructionAccounts = {
+  mintManager: web3.PublicKey
+  standard: web3.PublicKey
+  instructions: web3.PublicKey
+}
+
+export const preTransferInstructionDiscriminator = [
+  158, 85, 53, 202, 155, 118, 19, 228,
+]
+
+/**
+ * Creates a _PreTransfer_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category PreTransfer
+ * @category generated
+ */
+export function createPreTransferInstruction(
+  accounts: PreTransferInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = preTransferStruct.serialize({
+    instructionDiscriminator: preTransferInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.standard,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.instructions,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/revoke.ts b/sdk/src/generated/instructions/revoke.ts
new file mode 100644
index 00000000..9a98cae1
--- /dev/null
+++ b/sdk/src/generated/instructions/revoke.ts
@@ -0,0 +1,95 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category Revoke
+ * @category generated
+ */
+export const revokeStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'RevokeInstructionArgs'
+)
+/**
+ * Accounts required by the _revoke_ instruction
+ *
+ * @property [_writable_] mintManager
+ * @property [] mint
+ * @property [_writable_] holderTokenAccount
+ * @property [_writable_, **signer**] holder
+ * @category Instructions
+ * @category Revoke
+ * @category generated
+ */
+export type RevokeInstructionAccounts = {
+  mintManager: web3.PublicKey
+  mint: web3.PublicKey
+  holderTokenAccount: web3.PublicKey
+  holder: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+}
+
+export const revokeInstructionDiscriminator = [
+  170, 23, 31, 34, 133, 173, 93, 242,
+]
+
+/**
+ * Creates a _Revoke_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category Revoke
+ * @category generated
+ */
+export function createRevokeInstruction(
+  accounts: RevokeInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = revokeStruct.serialize({
+    instructionDiscriminator: revokeInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.holderTokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.holder,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/transfer.ts b/sdk/src/generated/instructions/transfer.ts
new file mode 100644
index 00000000..14c0c3b9
--- /dev/null
+++ b/sdk/src/generated/instructions/transfer.ts
@@ -0,0 +1,128 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as splToken from '@solana/spl-token'
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+
+/**
+ * @category Instructions
+ * @category Transfer
+ * @category generated
+ */
+export const transferStruct = new beet.BeetArgsStruct<{
+  instructionDiscriminator: number[] /* size: 8 */
+}>(
+  [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],
+  'TransferInstructionArgs'
+)
+/**
+ * Accounts required by the _transfer_ instruction
+ *
+ * @property [] mintManager
+ * @property [] standard
+ * @property [] mint
+ * @property [_writable_] from
+ * @property [_writable_] to
+ * @property [**signer**] authority
+ * @property [] instructions
+ * @category Instructions
+ * @category Transfer
+ * @category generated
+ */
+export type TransferInstructionAccounts = {
+  mintManager: web3.PublicKey
+  standard: web3.PublicKey
+  mint: web3.PublicKey
+  from: web3.PublicKey
+  to: web3.PublicKey
+  authority: web3.PublicKey
+  rent?: web3.PublicKey
+  tokenProgram?: web3.PublicKey
+  systemProgram?: web3.PublicKey
+  instructions: web3.PublicKey
+}
+
+export const transferInstructionDiscriminator = [
+  163, 52, 200, 231, 140, 3, 69, 186,
+]
+
+/**
+ * Creates a _Transfer_ instruction.
+ *
+ * @param accounts that will be accessed while the instruction is processed
+ * @category Instructions
+ * @category Transfer
+ * @category generated
+ */
+export function createTransferInstruction(
+  accounts: TransferInstructionAccounts,
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
+) {
+  const [data] = transferStruct.serialize({
+    instructionDiscriminator: transferInstructionDiscriminator,
+  })
+  const keys: web3.AccountMeta[] = [
+    {
+      pubkey: accounts.mintManager,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.standard,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.mint,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.from,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.to,
+      isWritable: true,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.authority,
+      isWritable: false,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.rent ?? web3.SYSVAR_RENT_PUBKEY,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
+      isWritable: false,
+      isSigner: false,
+    },
+    {
+      pubkey: accounts.instructions,
+      isWritable: false,
+      isSigner: false,
+    },
+  ]
+
+  const ix = new web3.TransactionInstruction({
+    programId,
+    keys,
+    data,
+  })
+  return ix
+}
diff --git a/sdk/src/generated/instructions/updateMintManager.ts b/sdk/src/generated/instructions/updateMintManager.ts
index b3deb7ee..b8e3f31d 100644
--- a/sdk/src/generated/instructions/updateMintManager.ts
+++ b/sdk/src/generated/instructions/updateMintManager.ts
@@ -5,12 +5,12 @@
  * See: https://github.com/metaplex-foundation/solita
  */
 
-import * as beet from "@metaplex-foundation/beet";
-import * as web3 from "@solana/web3.js";
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
 import {
   UpdateMintManagerIx,
   updateMintManagerIxBeet,
-} from "../types/UpdateMintManagerIx";
+} from '../types/UpdateMintManagerIx'
 
 /**
  * @category Instructions
@@ -18,8 +18,8 @@ import {
  * @category generated
  */
 export type UpdateMintManagerInstructionArgs = {
-  ix: UpdateMintManagerIx;
-};
+  ix: UpdateMintManagerIx
+}
 /**
  * @category Instructions
  * @category UpdateMintManager
@@ -27,15 +27,15 @@ export type UpdateMintManagerInstructionArgs = {
  */
 export const updateMintManagerStruct = new beet.BeetArgsStruct<
   UpdateMintManagerInstructionArgs & {
-    instructionDiscriminator: number[] /* size: 8 */;
+    instructionDiscriminator: number[] /* size: 8 */
   }
 >(
   [
-    ["instructionDiscriminator", beet.uniformFixedSizeArray(beet.u8, 8)],
-    ["ix", updateMintManagerIxBeet],
+    ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
+    ['ix', updateMintManagerIxBeet],
   ],
-  "UpdateMintManagerInstructionArgs"
-);
+  'UpdateMintManagerInstructionArgs'
+)
 /**
  * Accounts required by the _updateMintManager_ instruction
  *
@@ -47,15 +47,15 @@ export const updateMintManagerStruct = new beet.BeetArgsStruct<
  * @category generated
  */
 export type UpdateMintManagerInstructionAccounts = {
-  mintManager: web3.PublicKey;
-  standard: web3.PublicKey;
-  authority: web3.PublicKey;
-  systemProgram?: web3.PublicKey;
-};
+  mintManager: web3.PublicKey
+  standard: web3.PublicKey
+  authority: web3.PublicKey
+  systemProgram?: web3.PublicKey
+}
 
 export const updateMintManagerInstructionDiscriminator = [
   70, 171, 8, 198, 47, 206, 211, 164,
-];
+]
 
 /**
  * Creates a _UpdateMintManager_ instruction.
@@ -70,12 +70,12 @@ export const updateMintManagerInstructionDiscriminator = [
 export function createUpdateMintManagerInstruction(
   accounts: UpdateMintManagerInstructionAccounts,
   args: UpdateMintManagerInstructionArgs,
-  programId = new web3.PublicKey("creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez")
+  programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
 ) {
   const [data] = updateMintManagerStruct.serialize({
     instructionDiscriminator: updateMintManagerInstructionDiscriminator,
     ...args,
-  });
+  })
   const keys: web3.AccountMeta[] = [
     {
       pubkey: accounts.mintManager,
@@ -97,12 +97,12 @@ export function createUpdateMintManagerInstruction(
       isWritable: false,
       isSigner: false,
     },
-  ];
+  ]
 
   const ix = new web3.TransactionInstruction({
     programId,
     keys,
     data,
-  });
-  return ix;
+  })
+  return ix
 }
diff --git a/sdk/src/generated/types/InitStandardIx.ts b/sdk/src/generated/types/InitStandardIx.ts
index 0e9e0690..9c12a2ff 100644
--- a/sdk/src/generated/types/InitStandardIx.ts
+++ b/sdk/src/generated/types/InitStandardIx.ts
@@ -10,7 +10,7 @@ import * as beet from '@metaplex-foundation/beet'
 import * as beetSolana from '@metaplex-foundation/beet-solana'
 export type InitStandardIx = {
   checkSellerFeeBasisPoints: boolean
-  standardName: string
+  name: string
   disallowedPrograms: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
 }
@@ -23,7 +23,7 @@ export const initStandardIxBeet =
   new beet.FixableBeetArgsStruct<InitStandardIx>(
     [
       ['checkSellerFeeBasisPoints', beet.bool],
-      ['standardName', beet.utf8String],
+      ['name', beet.utf8String],
       ['disallowedPrograms', beet.array(beetSolana.publicKey)],
       ['allowedPrograms', beet.array(beetSolana.publicKey)],
     ],
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
index ea74e713..a1e35e39 100644
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ b/sdk/src/idl/cardinal_creator_standard.ts
@@ -141,6 +141,355 @@ export type CardinalCreatorStandard = {
           }
         }
       ]
+    },
+    {
+      "name": "initMint",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "targetTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "target",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "initAccount",
+      "accounts": [
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccountOwner",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "approve",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "delegate",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "revoke",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "burn",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "close",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "owner",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "transfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "from",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "to",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "preTransfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "postTransfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
     }
   ],
   "accounts": [
@@ -297,8 +646,8 @@ export type CardinalCreatorStandard = {
     },
     {
       "code": 6003,
-      "name": "InvaldiMint",
-      "msg": "Invalid mint"
+      "name": "InvalidMintManager",
+      "msg": "Invalid mint manager"
     },
     {
       "code": 6004,
@@ -319,6 +668,31 @@ export type CardinalCreatorStandard = {
       "code": 6007,
       "name": "InvalidHolderTokenAccount",
       "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6008,
+      "name": "InvalidStandard",
+      "msg": "Invalid standard"
+    },
+    {
+      "code": 6009,
+      "name": "InvalidPreTransferInstruction",
+      "msg": "Invalid pre transfer instruction"
+    },
+    {
+      "code": 6010,
+      "name": "InvalidPostTransferInstruction",
+      "msg": "Invalid post transfer instruction"
+    },
+    {
+      "code": 6011,
+      "name": "ProgramDisallowed",
+      "msg": "Disallowed program included in transfer"
+    },
+    {
+      "code": 6012,
+      "name": "ProgramNotAllowed",
+      "msg": "Program not allowed in allowed programs to transfer"
     }
   ]
 };
@@ -328,7 +702,147 @@ export const IDL: CardinalCreatorStandard = {
   "name": "cardinal_creator_standard",
   "instructions": [
     {
-      "name": "initMintManager",
+      "name": "initMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "updateMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateMintManagerIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initStandard",
+      "accounts": [
+        {
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "InitStandardIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "updateStandard",
+      "accounts": [
+        {
+          "name": "standard",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateStandardIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initMint",
       "accounts": [
         {
           "name": "mintManager",
@@ -345,6 +859,16 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "targetTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "target",
+          "isMut": false,
+          "isSigner": true
+        },
         {
           "name": "collector",
           "isMut": true,
@@ -360,11 +884,21 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": true,
           "isSigner": true
         },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
         {
           "name": "tokenProgram",
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
         {
           "name": "systemProgram",
           "isMut": false,
@@ -374,76 +908,215 @@ export const IDL: CardinalCreatorStandard = {
       "args": []
     },
     {
-      "name": "updateMintManager",
+      "name": "initAccount",
       "accounts": [
         {
-          "name": "mintManager",
+          "name": "mint",
           "isMut": false,
           "isSigner": false
         },
         {
-          "name": "standard",
-          "isMut": false,
+          "name": "tokenAccount",
+          "isMut": true,
           "isSigner": false
         },
         {
-          "name": "authority",
+          "name": "tokenAccountOwner",
           "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
           "isSigner": true
         },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
         {
           "name": "systemProgram",
           "isMut": false,
           "isSigner": false
         }
       ],
-      "args": [
+      "args": []
+    },
+    {
+      "name": "approve",
+      "accounts": [
         {
-          "name": "ix",
-          "type": {
-            "defined": "UpdateMintManagerIx"
-          }
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "delegate",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
         }
-      ]
+      ],
+      "args": []
     },
     {
-      "name": "initStandard",
+      "name": "revoke",
       "accounts": [
         {
-          "name": "standard",
+          "name": "mintManager",
           "isMut": true,
           "isSigner": false
         },
         {
-          "name": "authority",
+          "name": "mint",
           "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
           "isSigner": true
         },
         {
-          "name": "payer",
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "burn",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
           "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": false,
           "isSigner": true
         },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
         {
           "name": "systemProgram",
           "isMut": false,
           "isSigner": false
         }
       ],
-      "args": [
+      "args": []
+    },
+    {
+      "name": "close",
+      "accounts": [
         {
-          "name": "ix",
-          "type": {
-            "defined": "InitStandardIx"
-          }
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "owner",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
         }
-      ]
+      ],
+      "args": []
     },
     {
-      "name": "updateStandard",
+      "name": "transfer",
       "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
         {
           "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "from",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "to",
           "isMut": true,
           "isSigner": false
         },
@@ -452,20 +1125,70 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": true
         },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
         {
           "name": "systemProgram",
           "isMut": false,
           "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
         }
       ],
-      "args": [
+      "args": []
+    },
+    {
+      "name": "preTransfer",
+      "accounts": [
         {
-          "name": "ix",
-          "type": {
-            "defined": "UpdateStandardIx"
-          }
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
         }
-      ]
+      ],
+      "args": []
+    },
+    {
+      "name": "postTransfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "standard",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
     }
   ],
   "accounts": [
@@ -622,8 +1345,8 @@ export const IDL: CardinalCreatorStandard = {
     },
     {
       "code": 6003,
-      "name": "InvaldiMint",
-      "msg": "Invalid mint"
+      "name": "InvalidMintManager",
+      "msg": "Invalid mint manager"
     },
     {
       "code": 6004,
@@ -644,6 +1367,31 @@ export const IDL: CardinalCreatorStandard = {
       "code": 6007,
       "name": "InvalidHolderTokenAccount",
       "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6008,
+      "name": "InvalidStandard",
+      "msg": "Invalid standard"
+    },
+    {
+      "code": 6009,
+      "name": "InvalidPreTransferInstruction",
+      "msg": "Invalid pre transfer instruction"
+    },
+    {
+      "code": 6010,
+      "name": "InvalidPostTransferInstruction",
+      "msg": "Invalid post transfer instruction"
+    },
+    {
+      "code": 6011,
+      "name": "ProgramDisallowed",
+      "msg": "Disallowed program included in transfer"
+    },
+    {
+      "code": 6012,
+      "name": "ProgramNotAllowed",
+      "msg": "Program not allowed in allowed programs to transfer"
     }
   ]
 };
diff --git a/sdk/tests/init.test.ts b/sdk/tests/init.test.ts
index 93ded365..29daaea3 100644
--- a/sdk/tests/init.test.ts
+++ b/sdk/tests/init.test.ts
@@ -14,6 +14,7 @@ import {
 let mint: PublicKey;
 
 const STANDARD_NAME = "global";
+const STANDARD_ID = findStandardId(STANDARD_NAME);
 
 beforeAll(async () => {
   const provider = await getProvider();
@@ -30,12 +31,11 @@ beforeAll(async () => {
 
 test("Create standard", async () => {
   const provider = await getProvider();
-  const standardId = findStandardId(STANDARD_NAME);
   const tx = new Transaction();
   tx.add(
     createInitStandardInstruction(
       {
-        standard: standardId,
+        standard: STANDARD_ID,
         authority: provider.wallet.publicKey,
         payer: provider.wallet.publicKey,
       },
@@ -52,7 +52,7 @@ test("Create standard", async () => {
   await executeTransaction(provider.connection, tx, provider.wallet);
   const standard = await Standard.fromAccountAddress(
     provider.connection,
-    standardId
+    STANDARD_ID
   );
   expect(standard.authority.toString()).toBe(
     provider.wallet.publicKey.toString()

From 63723bdc8755bf003a7575fdb62d47225f86780d Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 02:45:11 -0400
Subject: [PATCH 13/37] Rename disallowed addresses

---
 program/src/instructions/standard/init_standard.rs |  4 ++--
 .../src/instructions/standard/update_standard.rs   |  4 ++--
 program/src/instructions/token/transfer.rs         | 14 +++++++++-----
 program/src/state.rs                               |  2 +-
 4 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/program/src/instructions/standard/init_standard.rs b/program/src/instructions/standard/init_standard.rs
index b0df14c3..c54f596b 100644
--- a/program/src/instructions/standard/init_standard.rs
+++ b/program/src/instructions/standard/init_standard.rs
@@ -5,7 +5,7 @@ use anchor_lang::prelude::*;
 pub struct InitStandardIx {
     pub check_seller_fee_basis_points: bool,
     pub name: String,
-    pub disallowed_programs: Vec<Pubkey>,
+    pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
 }
 
@@ -34,6 +34,6 @@ pub fn handler(ctx: Context<InitStandardCtx>, ix: InitStandardIx) -> Result<()>
     standard.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
     standard.name = ix.name;
     standard.allowed_programs = ix.allowed_programs;
-    standard.disallowed_programs = ix.disallowed_programs;
+    standard.disallowed_addresses = ix.disallowed_addresses;
     Ok(())
 }
diff --git a/program/src/instructions/standard/update_standard.rs b/program/src/instructions/standard/update_standard.rs
index 0d4a8de8..71046aec 100644
--- a/program/src/instructions/standard/update_standard.rs
+++ b/program/src/instructions/standard/update_standard.rs
@@ -5,7 +5,7 @@ use anchor_lang::prelude::*;
 #[derive(AnchorSerialize, AnchorDeserialize)]
 pub struct UpdateStandardIx {
     pub check_seller_fee_basis_points: bool,
-    pub disallowed_programs: Vec<Pubkey>,
+    pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
 }
 
@@ -23,6 +23,6 @@ pub fn handler(ctx: Context<UpdateStandardCtx>, ix: UpdateStandardIx) -> Result<
     let standard = &mut ctx.accounts.standard;
     standard.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
     standard.allowed_programs = ix.allowed_programs;
-    standard.disallowed_programs = ix.disallowed_programs;
+    standard.disallowed_addresses = ix.disallowed_addresses;
     Ok(())
 }
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
index 626511d8..2cb9e313 100644
--- a/program/src/instructions/token/transfer.rs
+++ b/program/src/instructions/token/transfer.rs
@@ -75,19 +75,23 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
         allowed_programs.insert(program_id);
     }
 
-    let mut disallowed_programs = HashSet::new();
-    for program_id in &ctx.accounts.standard.disallowed_programs {
-        disallowed_programs.insert(program_id);
+    let mut disallowed_addresses = HashSet::new();
+    for program_id in &ctx.accounts.standard.disallowed_addresses {
+        disallowed_addresses.insert(program_id);
     }
 
     for i in 0..num_instructions {
         let ix = load_instruction_at_checked(i.into(), &instructions_account_info)
             .expect("Failed to get instruction");
+
         if allowed_programs.len() > 0 && !allowed_programs.contains(&ix.program_id) {
             return Err(error!(ErrorCode::ProgramNotAllowed));
         }
-        if disallowed_programs.len() > 0 && disallowed_programs.contains(&ix.program_id) {
-            return Err(error!(ErrorCode::ProgramDisallowed));
+
+        for account in ix.accounts {
+            if disallowed_addresses.len() > 0 && disallowed_addresses.contains(&account.pubkey) {
+                return Err(error!(ErrorCode::ProgramDisallowed));
+            }
         }
     }
 
diff --git a/program/src/state.rs b/program/src/state.rs
index 9dbc19df..c92936e3 100644
--- a/program/src/state.rs
+++ b/program/src/state.rs
@@ -25,6 +25,6 @@ pub struct Standard {
     pub authority: Pubkey,
     pub check_seller_fee_basis_points: bool,
     pub name: String,
-    pub disallowed_programs: Vec<Pubkey>,
+    pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
 }

From 0a4a860d2ef83126acb3d8639b1919f94367bc03 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 02:51:42 -0400
Subject: [PATCH 14/37] Rename standard -> ruleset

---
 program/src/errors.rs                         |  4 +-
 .../mint_manager/init_mint_manager.rs         |  6 +-
 .../mint_manager/update_mint_manager.rs       |  4 +-
 program/src/instructions/mod.rs               |  6 +-
 .../src/instructions/ruleset/init_ruleset.rs  | 39 ++++++++
 program/src/instructions/ruleset/mod.rs       |  5 +
 .../instructions/ruleset/update_ruleset.rs    | 28 ++++++
 .../instructions/standard/init_standard.rs    | 39 --------
 program/src/instructions/standard/mod.rs      |  5 -
 .../instructions/standard/update_standard.rs  | 28 ------
 program/src/instructions/token/init_mint.rs   |  4 +-
 .../src/instructions/token/post_transfer.rs   |  2 +-
 .../src/instructions/token/pre_transfer.rs    |  2 +-
 program/src/instructions/token/transfer.rs    | 10 +-
 program/src/lib.rs                            | 10 +-
 program/src/state.rs                          |  9 +-
 sdk/idl/cardinal_creator_standard.json        | 46 +++++-----
 sdk/src/generated/accounts/MintManager.ts     | 10 +-
 .../accounts/{Standard.ts => Ruleset.ts}      | 87 +++++++++---------
 sdk/src/generated/accounts/index.ts           |  6 +-
 sdk/src/generated/errors/index.ts             | 17 ++--
 sdk/src/generated/instructions/index.ts       |  4 +-
 sdk/src/generated/instructions/initMint.ts    |  6 +-
 .../generated/instructions/initMintManager.ts |  6 +-
 .../{initStandard.ts => initRuleset.ts}       | 48 +++++-----
 .../generated/instructions/postTransfer.ts    |  6 +-
 sdk/src/generated/instructions/preTransfer.ts |  6 +-
 sdk/src/generated/instructions/transfer.ts    |  6 +-
 .../instructions/updateMintManager.ts         |  6 +-
 .../{updateStandard.ts => updateRuleset.ts}   | 51 +++++-----
 .../{InitStandardIx.ts => InitRulesetIx.ts}   | 23 +++--
 ...UpdateStandardIx.ts => UpdateRulesetIx.ts} | 12 +--
 sdk/src/generated/types/index.ts              |  4 +-
 sdk/src/idl/cardinal_creator_standard.ts      | 92 ++++++++++---------
 34 files changed, 324 insertions(+), 313 deletions(-)
 create mode 100644 program/src/instructions/ruleset/init_ruleset.rs
 create mode 100644 program/src/instructions/ruleset/mod.rs
 create mode 100644 program/src/instructions/ruleset/update_ruleset.rs
 delete mode 100644 program/src/instructions/standard/init_standard.rs
 delete mode 100644 program/src/instructions/standard/mod.rs
 delete mode 100644 program/src/instructions/standard/update_standard.rs
 rename sdk/src/generated/accounts/{Standard.ts => Ruleset.ts} (65%)
 rename sdk/src/generated/instructions/{initStandard.ts => initRuleset.ts} (62%)
 rename sdk/src/generated/instructions/{updateStandard.ts => updateRuleset.ts} (58%)
 rename sdk/src/generated/types/{InitStandardIx.ts => InitRulesetIx.ts} (56%)
 rename sdk/src/generated/types/{UpdateStandardIx.ts => UpdateRulesetIx.ts} (72%)

diff --git a/program/src/errors.rs b/program/src/errors.rs
index 3cfe6b80..188bf7ab 100644
--- a/program/src/errors.rs
+++ b/program/src/errors.rs
@@ -18,8 +18,8 @@ pub enum ErrorCode {
     InvalidCloseTokenAccount,
     #[msg("Invalid holder token account")]
     InvalidHolderTokenAccount,
-    #[msg("Invalid standard")]
-    InvalidStandard,
+    #[msg("Invalid ruleset")]
+    InvalidRuleset,
     #[msg("Invalid pre transfer instruction")]
     InvalidPreTransferInstruction,
     #[msg("Invalid post transfer instruction")]
diff --git a/program/src/instructions/mint_manager/init_mint_manager.rs b/program/src/instructions/mint_manager/init_mint_manager.rs
index 1359dcf9..511a2766 100644
--- a/program/src/instructions/mint_manager/init_mint_manager.rs
+++ b/program/src/instructions/mint_manager/init_mint_manager.rs
@@ -21,10 +21,10 @@ pub struct InitMintManagerCtx<'info> {
     mint_manager: Account<'info, MintManager>,
     #[account(mut)]
     mint: Account<'info, Mint>,
-    standard: Account<'info, Standard>,
+    ruleset: Account<'info, Ruleset>,
 
     /// CHECK: Account is not read from
-    #[account(mut, constraint = collector.key() == standard.authority @ ErrorCode::InvalidCollector)]
+    #[account(mut, constraint = collector.key() == ruleset.collector @ ErrorCode::InvalidCollector)]
     collector: UncheckedAccount<'info>,
     authority: Signer<'info>,
     #[account(mut)]
@@ -39,7 +39,7 @@ pub fn handler(ctx: Context<InitMintManagerCtx>) -> Result<()> {
     mint_manager.version = 0;
     mint_manager.authority = ctx.accounts.authority.key();
     mint_manager.mint = ctx.accounts.mint.key();
-    mint_manager.standard = ctx.accounts.standard.key();
+    mint_manager.ruleset = ctx.accounts.ruleset.key();
 
     if ctx.accounts.mint.supply != 1 || ctx.accounts.mint.decimals != 0 {
         return Err(error!(ErrorCode::InvalidMint));
diff --git a/program/src/instructions/mint_manager/update_mint_manager.rs b/program/src/instructions/mint_manager/update_mint_manager.rs
index b3f022f2..07e219c0 100644
--- a/program/src/instructions/mint_manager/update_mint_manager.rs
+++ b/program/src/instructions/mint_manager/update_mint_manager.rs
@@ -10,7 +10,7 @@ pub struct UpdateMintManagerIx {
 #[derive(Accounts)]
 pub struct UpdateMintManagerCtx<'info> {
     mint_manager: Account<'info, MintManager>,
-    standard: Account<'info, Standard>,
+    ruleset: Account<'info, Ruleset>,
     #[account(constraint = authority.key() == mint_manager.authority @ ErrorCode::InvalidAuthority)]
     authority: Signer<'info>,
     system_program: Program<'info, System>,
@@ -19,6 +19,6 @@ pub struct UpdateMintManagerCtx<'info> {
 pub fn handler(ctx: Context<UpdateMintManagerCtx>, ix: UpdateMintManagerIx) -> Result<()> {
     let mint_manager = &mut ctx.accounts.mint_manager;
     mint_manager.authority = ix.authority;
-    mint_manager.standard = ctx.accounts.standard.key();
+    mint_manager.ruleset = ctx.accounts.ruleset.key();
     Ok(())
 }
diff --git a/program/src/instructions/mod.rs b/program/src/instructions/mod.rs
index 555c113e..1e52c64d 100644
--- a/program/src/instructions/mod.rs
+++ b/program/src/instructions/mod.rs
@@ -2,9 +2,9 @@ pub mod mint_manager;
 pub use mint_manager::init_mint_manager::*;
 pub use mint_manager::update_mint_manager::*;
 
-pub mod standard;
-pub use standard::init_standard::*;
-pub use standard::update_standard::*;
+pub mod ruleset;
+pub use ruleset::init_ruleset::*;
+pub use ruleset::update_ruleset::*;
 
 pub mod token;
 pub use token::approve::*;
diff --git a/program/src/instructions/ruleset/init_ruleset.rs b/program/src/instructions/ruleset/init_ruleset.rs
new file mode 100644
index 00000000..bc00a9a2
--- /dev/null
+++ b/program/src/instructions/ruleset/init_ruleset.rs
@@ -0,0 +1,39 @@
+use crate::state::*;
+use anchor_lang::prelude::*;
+
+#[derive(AnchorSerialize, AnchorDeserialize)]
+pub struct InitRulesetIx {
+    pub check_seller_fee_basis_points: bool,
+    pub name: String,
+    pub disallowed_addresses: Vec<Pubkey>,
+    pub allowed_programs: Vec<Pubkey>,
+}
+
+#[derive(Accounts)]
+#[instruction(ix: InitRulesetIx)]
+pub struct InitRulesetCtx<'info> {
+    #[account(
+        init,
+        payer = payer,
+        space = RULESET_SIZE,
+        seeds = [RULESET_SEED.as_bytes(), ix.name.as_bytes()],
+        bump,
+    )]
+    ruleset: Account<'info, Ruleset>,
+    authority: Signer<'info>,
+    #[account(mut)]
+    payer: Signer<'info>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<InitRulesetCtx>, ix: InitRulesetIx) -> Result<()> {
+    let ruleset = &mut ctx.accounts.ruleset;
+    ruleset.bump = *ctx.bumps.get("ruleset").unwrap();
+    ruleset.version = 0;
+    ruleset.authority = ctx.accounts.authority.key();
+    ruleset.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
+    ruleset.name = ix.name;
+    ruleset.allowed_programs = ix.allowed_programs;
+    ruleset.disallowed_addresses = ix.disallowed_addresses;
+    Ok(())
+}
diff --git a/program/src/instructions/ruleset/mod.rs b/program/src/instructions/ruleset/mod.rs
new file mode 100644
index 00000000..8bc8518a
--- /dev/null
+++ b/program/src/instructions/ruleset/mod.rs
@@ -0,0 +1,5 @@
+pub mod init_ruleset;
+pub use init_ruleset::*;
+
+pub mod update_ruleset;
+pub use update_ruleset::*;
diff --git a/program/src/instructions/ruleset/update_ruleset.rs b/program/src/instructions/ruleset/update_ruleset.rs
new file mode 100644
index 00000000..b4949ab9
--- /dev/null
+++ b/program/src/instructions/ruleset/update_ruleset.rs
@@ -0,0 +1,28 @@
+use crate::errors::ErrorCode;
+use crate::state::*;
+use anchor_lang::prelude::*;
+
+#[derive(AnchorSerialize, AnchorDeserialize)]
+pub struct UpdateRulesetIx {
+    pub check_seller_fee_basis_points: bool,
+    pub disallowed_addresses: Vec<Pubkey>,
+    pub allowed_programs: Vec<Pubkey>,
+}
+
+#[derive(Accounts)]
+#[instruction(ix: UpdateRulesetIx)]
+pub struct UpdateRulesetCtx<'info> {
+    #[account(mut)]
+    ruleset: Account<'info, Ruleset>,
+    #[account(constraint = authority.key() == ruleset.authority @ ErrorCode::InvalidAuthority)]
+    authority: Signer<'info>,
+    system_program: Program<'info, System>,
+}
+
+pub fn handler(ctx: Context<UpdateRulesetCtx>, ix: UpdateRulesetIx) -> Result<()> {
+    let ruleset = &mut ctx.accounts.ruleset;
+    ruleset.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
+    ruleset.allowed_programs = ix.allowed_programs;
+    ruleset.disallowed_addresses = ix.disallowed_addresses;
+    Ok(())
+}
diff --git a/program/src/instructions/standard/init_standard.rs b/program/src/instructions/standard/init_standard.rs
deleted file mode 100644
index c54f596b..00000000
--- a/program/src/instructions/standard/init_standard.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use crate::state::*;
-use anchor_lang::prelude::*;
-
-#[derive(AnchorSerialize, AnchorDeserialize)]
-pub struct InitStandardIx {
-    pub check_seller_fee_basis_points: bool,
-    pub name: String,
-    pub disallowed_addresses: Vec<Pubkey>,
-    pub allowed_programs: Vec<Pubkey>,
-}
-
-#[derive(Accounts)]
-#[instruction(ix: InitStandardIx)]
-pub struct InitStandardCtx<'info> {
-    #[account(
-        init,
-        payer = payer,
-        space = STANDARD_SIZE,
-        seeds = [STANDARD_SEED.as_bytes(), ix.name.as_bytes()],
-        bump,
-    )]
-    standard: Account<'info, Standard>,
-    authority: Signer<'info>,
-    #[account(mut)]
-    payer: Signer<'info>,
-    system_program: Program<'info, System>,
-}
-
-pub fn handler(ctx: Context<InitStandardCtx>, ix: InitStandardIx) -> Result<()> {
-    let standard = &mut ctx.accounts.standard;
-    standard.bump = *ctx.bumps.get("standard").unwrap();
-    standard.version = 0;
-    standard.authority = ctx.accounts.authority.key();
-    standard.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
-    standard.name = ix.name;
-    standard.allowed_programs = ix.allowed_programs;
-    standard.disallowed_addresses = ix.disallowed_addresses;
-    Ok(())
-}
diff --git a/program/src/instructions/standard/mod.rs b/program/src/instructions/standard/mod.rs
deleted file mode 100644
index f5b159ba..00000000
--- a/program/src/instructions/standard/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub mod init_standard;
-pub use init_standard::*;
-
-pub mod update_standard;
-pub use update_standard::*;
diff --git a/program/src/instructions/standard/update_standard.rs b/program/src/instructions/standard/update_standard.rs
deleted file mode 100644
index 71046aec..00000000
--- a/program/src/instructions/standard/update_standard.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-use crate::errors::ErrorCode;
-use crate::state::*;
-use anchor_lang::prelude::*;
-
-#[derive(AnchorSerialize, AnchorDeserialize)]
-pub struct UpdateStandardIx {
-    pub check_seller_fee_basis_points: bool,
-    pub disallowed_addresses: Vec<Pubkey>,
-    pub allowed_programs: Vec<Pubkey>,
-}
-
-#[derive(Accounts)]
-#[instruction(ix: UpdateStandardIx)]
-pub struct UpdateStandardCtx<'info> {
-    #[account(mut)]
-    standard: Account<'info, Standard>,
-    #[account(constraint = authority.key() == standard.authority @ ErrorCode::InvalidAuthority)]
-    authority: Signer<'info>,
-    system_program: Program<'info, System>,
-}
-
-pub fn handler(ctx: Context<UpdateStandardCtx>, ix: UpdateStandardIx) -> Result<()> {
-    let standard = &mut ctx.accounts.standard;
-    standard.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
-    standard.allowed_programs = ix.allowed_programs;
-    standard.disallowed_addresses = ix.disallowed_addresses;
-    Ok(())
-}
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index ef63506e..0c69d4e0 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -25,7 +25,7 @@ pub struct InitMintCtx<'info> {
     /// CHECK: Account is not read from
     #[account(mut)]
     mint: UncheckedAccount<'info>,
-    standard: Account<'info, Standard>,
+    ruleset: Account<'info, Ruleset>,
 
     /// CHECK: Account created or checked in handler
     #[account(mut)]
@@ -51,7 +51,7 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
     mint_manager.version = 0;
     mint_manager.authority = ctx.accounts.authority.key();
     mint_manager.mint = ctx.accounts.mint.key();
-    mint_manager.standard = ctx.accounts.standard.key();
+    mint_manager.ruleset = ctx.accounts.ruleset.key();
 
     // Create Mint
     invoke(
diff --git a/program/src/instructions/token/post_transfer.rs b/program/src/instructions/token/post_transfer.rs
index aff66faa..67937255 100644
--- a/program/src/instructions/token/post_transfer.rs
+++ b/program/src/instructions/token/post_transfer.rs
@@ -7,7 +7,7 @@ pub const POST_TRANSFER_DISCRIMINATOR: [u8; 8] = [195, 252, 43, 202, 149, 119, 1
 #[derive(Accounts)]
 pub struct PostTransferCtx<'info> {
     mint_manager: Account<'info, MintManager>,
-    standard: Account<'info, Standard>,
+    ruleset: Account<'info, Ruleset>,
     /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
     #[account(address = sysvar::instructions::id())]
     instructions: UncheckedAccount<'info>,
diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
index e61134b3..1a0c2318 100644
--- a/program/src/instructions/token/pre_transfer.rs
+++ b/program/src/instructions/token/pre_transfer.rs
@@ -7,7 +7,7 @@ pub const PRE_TRANSFER_DISCRIMINATOR: [u8; 8] = [158, 85, 53, 202, 155, 118, 19,
 #[derive(Accounts)]
 pub struct PreTransferCtx<'info> {
     mint_manager: Account<'info, MintManager>,
-    standard: Account<'info, Standard>,
+    ruleset: Account<'info, Ruleset>,
     /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
     #[account(address = sysvar::instructions::id())]
     instructions: UncheckedAccount<'info>,
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
index 2cb9e313..496ac519 100644
--- a/program/src/instructions/token/transfer.rs
+++ b/program/src/instructions/token/transfer.rs
@@ -22,8 +22,8 @@ use super::PRE_TRANSFER_DISCRIMINATOR;
 pub struct TransferCtx<'info> {
     #[account(constraint = mint.key() == mint_manager.mint @ ErrorCode::InvalidMintManager)]
     mint_manager: Box<Account<'info, MintManager>>,
-    #[account(constraint = standard.key() == mint_manager.standard @ ErrorCode::InvalidStandard)]
-    standard: Account<'info, Standard>,
+    #[account(constraint = ruleset.key() == mint_manager.ruleset @ ErrorCode::InvalidRuleset)]
+    ruleset: Account<'info, Ruleset>,
     mint: Box<Account<'info, Mint>>,
 
     #[account(mut)]
@@ -48,7 +48,7 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
         read_u16(&mut current, &instruction_sysvar).expect("Invalid instruction");
 
     // check pre/post
-    if ctx.accounts.standard.check_seller_fee_basis_points {
+    if ctx.accounts.ruleset.check_seller_fee_basis_points {
         // check pre_transfer
         let first_ix = load_instruction_at_checked(0, &instructions_account_info)
             .expect("Failed to get first instruction");
@@ -71,12 +71,12 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
 
     // check allowed / disallowed
     let mut allowed_programs = HashSet::new();
-    for program_id in &ctx.accounts.standard.allowed_programs {
+    for program_id in &ctx.accounts.ruleset.allowed_programs {
         allowed_programs.insert(program_id);
     }
 
     let mut disallowed_addresses = HashSet::new();
-    for program_id in &ctx.accounts.standard.disallowed_addresses {
+    for program_id in &ctx.accounts.ruleset.disallowed_addresses {
         disallowed_addresses.insert(program_id);
     }
 
diff --git a/program/src/lib.rs b/program/src/lib.rs
index fdf6f11f..f14eefb9 100644
--- a/program/src/lib.rs
+++ b/program/src/lib.rs
@@ -23,13 +23,13 @@ pub mod cardinal_creator_standard {
         mint_manager::update_mint_manager::handler(ctx, ix)
     }
 
-    // standard
-    pub fn init_standard(ctx: Context<InitStandardCtx>, ix: InitStandardIx) -> Result<()> {
-        standard::init_standard::handler(ctx, ix)
+    // ruleset
+    pub fn init_ruleset(ctx: Context<InitRulesetCtx>, ix: InitRulesetIx) -> Result<()> {
+        ruleset::init_ruleset::handler(ctx, ix)
     }
 
-    pub fn update_standard(ctx: Context<UpdateStandardCtx>, ix: UpdateStandardIx) -> Result<()> {
-        standard::update_standard::handler(ctx, ix)
+    pub fn update_ruleset(ctx: Context<UpdateRulesetCtx>, ix: UpdateRulesetIx) -> Result<()> {
+        ruleset::update_ruleset::handler(ctx, ix)
     }
 
     // token
diff --git a/program/src/state.rs b/program/src/state.rs
index c92936e3..b127d8d3 100644
--- a/program/src/state.rs
+++ b/program/src/state.rs
@@ -12,17 +12,18 @@ pub struct MintManager {
     pub version: u8,
     pub mint: Pubkey,
     pub authority: Pubkey,
-    pub standard: Pubkey,
+    pub ruleset: Pubkey,
 }
 
-pub const STANDARD_SEED: &str = "standard";
-pub const STANDARD_SIZE: usize = 8 + 1 + 1 + 1 + 24 + (32 * 10) + (32 * 10);
+pub const RULESET_SEED: &str = "ruleset";
+pub const RULESET_SIZE: usize = 8 + 1 + 1 + 1 + 24 + (32 * 10) + (32 * 10);
 
 #[account]
-pub struct Standard {
+pub struct Ruleset {
     pub bump: u8,
     pub version: u8,
     pub authority: Pubkey,
+    pub collector: Pubkey,
     pub check_seller_fee_basis_points: bool,
     pub name: String,
     pub disallowed_addresses: Vec<Pubkey>,
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index 1553449d..4d5c43fb 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -16,7 +16,7 @@
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -57,7 +57,7 @@
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -82,10 +82,10 @@
       ]
     },
     {
-      "name": "initStandard",
+      "name": "initRuleset",
       "accounts": [
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": true,
           "isSigner": false
         },
@@ -109,16 +109,16 @@
         {
           "name": "ix",
           "type": {
-            "defined": "InitStandardIx"
+            "defined": "InitRulesetIx"
           }
         }
       ]
     },
     {
-      "name": "updateStandard",
+      "name": "updateRuleset",
       "accounts": [
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": true,
           "isSigner": false
         },
@@ -137,7 +137,7 @@
         {
           "name": "ix",
           "type": {
-            "defined": "UpdateStandardIx"
+            "defined": "UpdateRulesetIx"
           }
         }
       ]
@@ -156,7 +156,7 @@
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -402,7 +402,7 @@
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -458,7 +458,7 @@
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -479,7 +479,7 @@
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -515,14 +515,14 @@
             "type": "publicKey"
           },
           {
-            "name": "standard",
+            "name": "ruleset",
             "type": "publicKey"
           }
         ]
       }
     },
     {
-      "name": "Standard",
+      "name": "Ruleset",
       "type": {
         "kind": "struct",
         "fields": [
@@ -538,6 +538,10 @@
             "name": "authority",
             "type": "publicKey"
           },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "checkSellerFeeBasisPoints",
             "type": "bool"
@@ -547,7 +551,7 @@
             "type": "string"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -576,7 +580,7 @@
       }
     },
     {
-      "name": "InitStandardIx",
+      "name": "InitRulesetIx",
       "type": {
         "kind": "struct",
         "fields": [
@@ -589,7 +593,7 @@
             "type": "string"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -604,7 +608,7 @@
       }
     },
     {
-      "name": "UpdateStandardIx",
+      "name": "UpdateRulesetIx",
       "type": {
         "kind": "struct",
         "fields": [
@@ -613,7 +617,7 @@
             "type": "bool"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -671,8 +675,8 @@
     },
     {
       "code": 6008,
-      "name": "InvalidStandard",
-      "msg": "Invalid standard"
+      "name": "InvalidRuleset",
+      "msg": "Invalid ruleset"
     },
     {
       "code": 6009,
diff --git a/sdk/src/generated/accounts/MintManager.ts b/sdk/src/generated/accounts/MintManager.ts
index 813df15d..3b133317 100644
--- a/sdk/src/generated/accounts/MintManager.ts
+++ b/sdk/src/generated/accounts/MintManager.ts
@@ -19,7 +19,7 @@ export type MintManagerArgs = {
   version: number
   mint: web3.PublicKey
   authority: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
 }
 
 export const mintManagerDiscriminator = [202, 47, 44, 178, 55, 215, 117, 40]
@@ -36,7 +36,7 @@ export class MintManager implements MintManagerArgs {
     readonly version: number,
     readonly mint: web3.PublicKey,
     readonly authority: web3.PublicKey,
-    readonly standard: web3.PublicKey
+    readonly ruleset: web3.PublicKey
   ) {}
 
   /**
@@ -48,7 +48,7 @@ export class MintManager implements MintManagerArgs {
       args.version,
       args.mint,
       args.authority,
-      args.standard
+      args.ruleset
     )
   }
 
@@ -155,7 +155,7 @@ export class MintManager implements MintManagerArgs {
       version: this.version,
       mint: this.mint.toBase58(),
       authority: this.authority.toBase58(),
-      standard: this.standard.toBase58(),
+      ruleset: this.ruleset.toBase58(),
     }
   }
 }
@@ -176,7 +176,7 @@ export const mintManagerBeet = new beet.BeetStruct<
     ['version', beet.u8],
     ['mint', beetSolana.publicKey],
     ['authority', beetSolana.publicKey],
-    ['standard', beetSolana.publicKey],
+    ['ruleset', beetSolana.publicKey],
   ],
   MintManager.fromArgs,
   'MintManager'
diff --git a/sdk/src/generated/accounts/Standard.ts b/sdk/src/generated/accounts/Ruleset.ts
similarity index 65%
rename from sdk/src/generated/accounts/Standard.ts
rename to sdk/src/generated/accounts/Ruleset.ts
index 90f8ba53..bb1f2246 100644
--- a/sdk/src/generated/accounts/Standard.ts
+++ b/sdk/src/generated/accounts/Ruleset.ts
@@ -10,80 +10,83 @@ import * as beet from '@metaplex-foundation/beet'
 import * as beetSolana from '@metaplex-foundation/beet-solana'
 
 /**
- * Arguments used to create {@link Standard}
+ * Arguments used to create {@link Ruleset}
  * @category Accounts
  * @category generated
  */
-export type StandardArgs = {
+export type RulesetArgs = {
   bump: number
   version: number
   authority: web3.PublicKey
+  collector: web3.PublicKey
   checkSellerFeeBasisPoints: boolean
   name: string
-  disallowedPrograms: web3.PublicKey[]
+  disallowedAddresses: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
 }
 
-export const standardDiscriminator = [183, 73, 235, 183, 240, 4, 194, 116]
+export const rulesetDiscriminator = [123, 92, 136, 166, 160, 236, 248, 180]
 /**
- * Holds the data for the {@link Standard} Account and provides de/serialization
+ * Holds the data for the {@link Ruleset} Account and provides de/serialization
  * functionality for that data
  *
  * @category Accounts
  * @category generated
  */
-export class Standard implements StandardArgs {
+export class Ruleset implements RulesetArgs {
   private constructor(
     readonly bump: number,
     readonly version: number,
     readonly authority: web3.PublicKey,
+    readonly collector: web3.PublicKey,
     readonly checkSellerFeeBasisPoints: boolean,
     readonly name: string,
-    readonly disallowedPrograms: web3.PublicKey[],
+    readonly disallowedAddresses: web3.PublicKey[],
     readonly allowedPrograms: web3.PublicKey[]
   ) {}
 
   /**
-   * Creates a {@link Standard} instance from the provided args.
+   * Creates a {@link Ruleset} instance from the provided args.
    */
-  static fromArgs(args: StandardArgs) {
-    return new Standard(
+  static fromArgs(args: RulesetArgs) {
+    return new Ruleset(
       args.bump,
       args.version,
       args.authority,
+      args.collector,
       args.checkSellerFeeBasisPoints,
       args.name,
-      args.disallowedPrograms,
+      args.disallowedAddresses,
       args.allowedPrograms
     )
   }
 
   /**
-   * Deserializes the {@link Standard} from the data of the provided {@link web3.AccountInfo}.
+   * Deserializes the {@link Ruleset} from the data of the provided {@link web3.AccountInfo}.
    * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
    */
   static fromAccountInfo(
     accountInfo: web3.AccountInfo<Buffer>,
     offset = 0
-  ): [Standard, number] {
-    return Standard.deserialize(accountInfo.data, offset)
+  ): [Ruleset, number] {
+    return Ruleset.deserialize(accountInfo.data, offset)
   }
 
   /**
    * Retrieves the account info from the provided address and deserializes
-   * the {@link Standard} from its data.
+   * the {@link Ruleset} from its data.
    *
    * @throws Error if no account info is found at the address or if deserialization fails
    */
   static async fromAccountAddress(
     connection: web3.Connection,
     address: web3.PublicKey
-  ): Promise<Standard> {
+  ): Promise<Ruleset> {
     const accountInfo = await connection.getAccountInfo(address)
     if (accountInfo == null) {
-      throw new Error(`Unable to find Standard account at ${address}`)
+      throw new Error(`Unable to find Ruleset account at ${address}`)
     }
-    return Standard.fromAccountInfo(accountInfo, 0)[0]
+    return Ruleset.fromAccountInfo(accountInfo, 0)[0]
   }
 
   /**
@@ -97,64 +100,64 @@ export class Standard implements StandardArgs {
       'creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez'
     )
   ) {
-    return beetSolana.GpaBuilder.fromStruct(programId, standardBeet)
+    return beetSolana.GpaBuilder.fromStruct(programId, rulesetBeet)
   }
 
   /**
-   * Deserializes the {@link Standard} from the provided data Buffer.
+   * Deserializes the {@link Ruleset} from the provided data Buffer.
    * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
    */
-  static deserialize(buf: Buffer, offset = 0): [Standard, number] {
-    return standardBeet.deserialize(buf, offset)
+  static deserialize(buf: Buffer, offset = 0): [Ruleset, number] {
+    return rulesetBeet.deserialize(buf, offset)
   }
 
   /**
-   * Serializes the {@link Standard} into a Buffer.
+   * Serializes the {@link Ruleset} into a Buffer.
    * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
    */
   serialize(): [Buffer, number] {
-    return standardBeet.serialize({
-      accountDiscriminator: standardDiscriminator,
+    return rulesetBeet.serialize({
+      accountDiscriminator: rulesetDiscriminator,
       ...this,
     })
   }
 
   /**
    * Returns the byteSize of a {@link Buffer} holding the serialized data of
-   * {@link Standard} for the provided args.
+   * {@link Ruleset} for the provided args.
    *
    * @param args need to be provided since the byte size for this account
    * depends on them
    */
-  static byteSize(args: StandardArgs) {
-    const instance = Standard.fromArgs(args)
-    return standardBeet.toFixedFromValue({
-      accountDiscriminator: standardDiscriminator,
+  static byteSize(args: RulesetArgs) {
+    const instance = Ruleset.fromArgs(args)
+    return rulesetBeet.toFixedFromValue({
+      accountDiscriminator: rulesetDiscriminator,
       ...instance,
     }).byteSize
   }
 
   /**
    * Fetches the minimum balance needed to exempt an account holding
-   * {@link Standard} data from rent
+   * {@link Ruleset} data from rent
    *
    * @param args need to be provided since the byte size for this account
    * depends on them
    * @param connection used to retrieve the rent exemption information
    */
   static async getMinimumBalanceForRentExemption(
-    args: StandardArgs,
+    args: RulesetArgs,
     connection: web3.Connection,
     commitment?: web3.Commitment
   ): Promise<number> {
     return connection.getMinimumBalanceForRentExemption(
-      Standard.byteSize(args),
+      Ruleset.byteSize(args),
       commitment
     )
   }
 
   /**
-   * Returns a readable version of {@link Standard} properties
+   * Returns a readable version of {@link Ruleset} properties
    * and can be used to convert to JSON and/or logging
    */
   pretty() {
@@ -162,9 +165,10 @@ export class Standard implements StandardArgs {
       bump: this.bump,
       version: this.version,
       authority: this.authority.toBase58(),
+      collector: this.collector.toBase58(),
       checkSellerFeeBasisPoints: this.checkSellerFeeBasisPoints,
       name: this.name,
-      disallowedPrograms: this.disallowedPrograms,
+      disallowedAddresses: this.disallowedAddresses,
       allowedPrograms: this.allowedPrograms,
     }
   }
@@ -174,9 +178,9 @@ export class Standard implements StandardArgs {
  * @category Accounts
  * @category generated
  */
-export const standardBeet = new beet.FixableBeetStruct<
-  Standard,
-  StandardArgs & {
+export const rulesetBeet = new beet.FixableBeetStruct<
+  Ruleset,
+  RulesetArgs & {
     accountDiscriminator: number[] /* size: 8 */
   }
 >(
@@ -185,11 +189,12 @@ export const standardBeet = new beet.FixableBeetStruct<
     ['bump', beet.u8],
     ['version', beet.u8],
     ['authority', beetSolana.publicKey],
+    ['collector', beetSolana.publicKey],
     ['checkSellerFeeBasisPoints', beet.bool],
     ['name', beet.utf8String],
-    ['disallowedPrograms', beet.array(beetSolana.publicKey)],
+    ['disallowedAddresses', beet.array(beetSolana.publicKey)],
     ['allowedPrograms', beet.array(beetSolana.publicKey)],
   ],
-  Standard.fromArgs,
-  'Standard'
+  Ruleset.fromArgs,
+  'Ruleset'
 )
diff --git a/sdk/src/generated/accounts/index.ts b/sdk/src/generated/accounts/index.ts
index 3ce7bbed..8fe79dfa 100644
--- a/sdk/src/generated/accounts/index.ts
+++ b/sdk/src/generated/accounts/index.ts
@@ -1,7 +1,7 @@
 export * from './MintManager'
-export * from './Standard'
+export * from './Ruleset'
 
 import { MintManager } from './MintManager'
-import { Standard } from './Standard'
+import { Ruleset } from './Ruleset'
 
-export const accountProviders = { MintManager, Standard }
+export const accountProviders = { MintManager, Ruleset }
diff --git a/sdk/src/generated/errors/index.ts b/sdk/src/generated/errors/index.ts
index 4614bc23..a979a768 100644
--- a/sdk/src/generated/errors/index.ts
+++ b/sdk/src/generated/errors/index.ts
@@ -202,27 +202,24 @@ createErrorFromNameLookup.set(
 )
 
 /**
- * InvalidStandard: 'Invalid standard'
+ * InvalidRuleset: 'Invalid ruleset'
  *
  * @category Errors
  * @category generated
  */
-export class InvalidStandardError extends Error {
+export class InvalidRulesetError extends Error {
   readonly code: number = 0x1778
-  readonly name: string = 'InvalidStandard'
+  readonly name: string = 'InvalidRuleset'
   constructor() {
-    super('Invalid standard')
+    super('Invalid ruleset')
     if (typeof Error.captureStackTrace === 'function') {
-      Error.captureStackTrace(this, InvalidStandardError)
+      Error.captureStackTrace(this, InvalidRulesetError)
     }
   }
 }
 
-createErrorFromCodeLookup.set(0x1778, () => new InvalidStandardError())
-createErrorFromNameLookup.set(
-  'InvalidStandard',
-  () => new InvalidStandardError()
-)
+createErrorFromCodeLookup.set(0x1778, () => new InvalidRulesetError())
+createErrorFromNameLookup.set('InvalidRuleset', () => new InvalidRulesetError())
 
 /**
  * InvalidPreTransferInstruction: 'Invalid pre transfer instruction'
diff --git a/sdk/src/generated/instructions/index.ts b/sdk/src/generated/instructions/index.ts
index 942cbeba..f7c4fd3e 100644
--- a/sdk/src/generated/instructions/index.ts
+++ b/sdk/src/generated/instructions/index.ts
@@ -4,10 +4,10 @@ export * from './close'
 export * from './initAccount'
 export * from './initMint'
 export * from './initMintManager'
-export * from './initStandard'
+export * from './initRuleset'
 export * from './postTransfer'
 export * from './preTransfer'
 export * from './revoke'
 export * from './transfer'
 export * from './updateMintManager'
-export * from './updateStandard'
+export * from './updateRuleset'
diff --git a/sdk/src/generated/instructions/initMint.ts b/sdk/src/generated/instructions/initMint.ts
index bdc120a9..88e3bab4 100644
--- a/sdk/src/generated/instructions/initMint.ts
+++ b/sdk/src/generated/instructions/initMint.ts
@@ -25,7 +25,7 @@ export const initMintStruct = new beet.BeetArgsStruct<{
  *
  * @property [_writable_] mintManager
  * @property [_writable_] mint
- * @property [] standard
+ * @property [] ruleset
  * @property [_writable_] targetTokenAccount
  * @property [**signer**] target
  * @property [_writable_] collector
@@ -39,7 +39,7 @@ export const initMintStruct = new beet.BeetArgsStruct<{
 export type InitMintInstructionAccounts = {
   mintManager: web3.PublicKey
   mint: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
   targetTokenAccount: web3.PublicKey
   target: web3.PublicKey
   collector: web3.PublicKey
@@ -82,7 +82,7 @@ export function createInitMintInstruction(
       isSigner: false,
     },
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: false,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/initMintManager.ts b/sdk/src/generated/instructions/initMintManager.ts
index 25e82642..c634c693 100644
--- a/sdk/src/generated/instructions/initMintManager.ts
+++ b/sdk/src/generated/instructions/initMintManager.ts
@@ -25,7 +25,7 @@ export const initMintManagerStruct = new beet.BeetArgsStruct<{
  *
  * @property [_writable_] mintManager
  * @property [_writable_] mint
- * @property [] standard
+ * @property [] ruleset
  * @property [_writable_] collector
  * @property [**signer**] authority
  * @property [_writable_, **signer**] payer
@@ -36,7 +36,7 @@ export const initMintManagerStruct = new beet.BeetArgsStruct<{
 export type InitMintManagerInstructionAccounts = {
   mintManager: web3.PublicKey
   mint: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
   collector: web3.PublicKey
   authority: web3.PublicKey
   payer: web3.PublicKey
@@ -75,7 +75,7 @@ export function createInitMintManagerInstruction(
       isSigner: false,
     },
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: false,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/initStandard.ts b/sdk/src/generated/instructions/initRuleset.ts
similarity index 62%
rename from sdk/src/generated/instructions/initStandard.ts
rename to sdk/src/generated/instructions/initRuleset.ts
index 76ed5007..48ae9517 100644
--- a/sdk/src/generated/instructions/initStandard.ts
+++ b/sdk/src/generated/instructions/initRuleset.ts
@@ -7,75 +7,75 @@
 
 import * as beet from '@metaplex-foundation/beet'
 import * as web3 from '@solana/web3.js'
-import { InitStandardIx, initStandardIxBeet } from '../types/InitStandardIx'
+import { InitRulesetIx, initRulesetIxBeet } from '../types/InitRulesetIx'
 
 /**
  * @category Instructions
- * @category InitStandard
+ * @category InitRuleset
  * @category generated
  */
-export type InitStandardInstructionArgs = {
-  ix: InitStandardIx
+export type InitRulesetInstructionArgs = {
+  ix: InitRulesetIx
 }
 /**
  * @category Instructions
- * @category InitStandard
+ * @category InitRuleset
  * @category generated
  */
-export const initStandardStruct = new beet.FixableBeetArgsStruct<
-  InitStandardInstructionArgs & {
+export const initRulesetStruct = new beet.FixableBeetArgsStruct<
+  InitRulesetInstructionArgs & {
     instructionDiscriminator: number[] /* size: 8 */
   }
 >(
   [
     ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
-    ['ix', initStandardIxBeet],
+    ['ix', initRulesetIxBeet],
   ],
-  'InitStandardInstructionArgs'
+  'InitRulesetInstructionArgs'
 )
 /**
- * Accounts required by the _initStandard_ instruction
+ * Accounts required by the _initRuleset_ instruction
  *
- * @property [_writable_] standard
+ * @property [_writable_] ruleset
  * @property [**signer**] authority
  * @property [_writable_, **signer**] payer
  * @category Instructions
- * @category InitStandard
+ * @category InitRuleset
  * @category generated
  */
-export type InitStandardInstructionAccounts = {
-  standard: web3.PublicKey
+export type InitRulesetInstructionAccounts = {
+  ruleset: web3.PublicKey
   authority: web3.PublicKey
   payer: web3.PublicKey
   systemProgram?: web3.PublicKey
 }
 
-export const initStandardInstructionDiscriminator = [
-  85, 84, 110, 234, 166, 27, 75, 173,
+export const initRulesetInstructionDiscriminator = [
+  172, 10, 116, 39, 103, 94, 225, 194,
 ]
 
 /**
- * Creates a _InitStandard_ instruction.
+ * Creates a _InitRuleset_ instruction.
  *
  * @param accounts that will be accessed while the instruction is processed
  * @param args to provide as instruction data to the program
  *
  * @category Instructions
- * @category InitStandard
+ * @category InitRuleset
  * @category generated
  */
-export function createInitStandardInstruction(
-  accounts: InitStandardInstructionAccounts,
-  args: InitStandardInstructionArgs,
+export function createInitRulesetInstruction(
+  accounts: InitRulesetInstructionAccounts,
+  args: InitRulesetInstructionArgs,
   programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
 ) {
-  const [data] = initStandardStruct.serialize({
-    instructionDiscriminator: initStandardInstructionDiscriminator,
+  const [data] = initRulesetStruct.serialize({
+    instructionDiscriminator: initRulesetInstructionDiscriminator,
     ...args,
   })
   const keys: web3.AccountMeta[] = [
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: true,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/postTransfer.ts b/sdk/src/generated/instructions/postTransfer.ts
index 0fe692da..100cec45 100644
--- a/sdk/src/generated/instructions/postTransfer.ts
+++ b/sdk/src/generated/instructions/postTransfer.ts
@@ -23,7 +23,7 @@ export const postTransferStruct = new beet.BeetArgsStruct<{
  * Accounts required by the _postTransfer_ instruction
  *
  * @property [] mintManager
- * @property [] standard
+ * @property [] ruleset
  * @property [] instructions
  * @category Instructions
  * @category PostTransfer
@@ -31,7 +31,7 @@ export const postTransferStruct = new beet.BeetArgsStruct<{
  */
 export type PostTransferInstructionAccounts = {
   mintManager: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
   instructions: web3.PublicKey
 }
 
@@ -61,7 +61,7 @@ export function createPostTransferInstruction(
       isSigner: false,
     },
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: false,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/preTransfer.ts b/sdk/src/generated/instructions/preTransfer.ts
index 932f87a3..cf34f75d 100644
--- a/sdk/src/generated/instructions/preTransfer.ts
+++ b/sdk/src/generated/instructions/preTransfer.ts
@@ -23,7 +23,7 @@ export const preTransferStruct = new beet.BeetArgsStruct<{
  * Accounts required by the _preTransfer_ instruction
  *
  * @property [] mintManager
- * @property [] standard
+ * @property [] ruleset
  * @property [] instructions
  * @category Instructions
  * @category PreTransfer
@@ -31,7 +31,7 @@ export const preTransferStruct = new beet.BeetArgsStruct<{
  */
 export type PreTransferInstructionAccounts = {
   mintManager: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
   instructions: web3.PublicKey
 }
 
@@ -61,7 +61,7 @@ export function createPreTransferInstruction(
       isSigner: false,
     },
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: false,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/transfer.ts b/sdk/src/generated/instructions/transfer.ts
index 14c0c3b9..d44c8981 100644
--- a/sdk/src/generated/instructions/transfer.ts
+++ b/sdk/src/generated/instructions/transfer.ts
@@ -24,7 +24,7 @@ export const transferStruct = new beet.BeetArgsStruct<{
  * Accounts required by the _transfer_ instruction
  *
  * @property [] mintManager
- * @property [] standard
+ * @property [] ruleset
  * @property [] mint
  * @property [_writable_] from
  * @property [_writable_] to
@@ -36,7 +36,7 @@ export const transferStruct = new beet.BeetArgsStruct<{
  */
 export type TransferInstructionAccounts = {
   mintManager: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
   mint: web3.PublicKey
   from: web3.PublicKey
   to: web3.PublicKey
@@ -73,7 +73,7 @@ export function createTransferInstruction(
       isSigner: false,
     },
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: false,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/updateMintManager.ts b/sdk/src/generated/instructions/updateMintManager.ts
index b8e3f31d..37a13043 100644
--- a/sdk/src/generated/instructions/updateMintManager.ts
+++ b/sdk/src/generated/instructions/updateMintManager.ts
@@ -40,7 +40,7 @@ export const updateMintManagerStruct = new beet.BeetArgsStruct<
  * Accounts required by the _updateMintManager_ instruction
  *
  * @property [] mintManager
- * @property [] standard
+ * @property [] ruleset
  * @property [**signer**] authority
  * @category Instructions
  * @category UpdateMintManager
@@ -48,7 +48,7 @@ export const updateMintManagerStruct = new beet.BeetArgsStruct<
  */
 export type UpdateMintManagerInstructionAccounts = {
   mintManager: web3.PublicKey
-  standard: web3.PublicKey
+  ruleset: web3.PublicKey
   authority: web3.PublicKey
   systemProgram?: web3.PublicKey
 }
@@ -83,7 +83,7 @@ export function createUpdateMintManagerInstruction(
       isSigner: false,
     },
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: false,
       isSigner: false,
     },
diff --git a/sdk/src/generated/instructions/updateStandard.ts b/sdk/src/generated/instructions/updateRuleset.ts
similarity index 58%
rename from sdk/src/generated/instructions/updateStandard.ts
rename to sdk/src/generated/instructions/updateRuleset.ts
index adf29345..77382e6c 100644
--- a/sdk/src/generated/instructions/updateStandard.ts
+++ b/sdk/src/generated/instructions/updateRuleset.ts
@@ -7,76 +7,73 @@
 
 import * as beet from '@metaplex-foundation/beet'
 import * as web3 from '@solana/web3.js'
-import {
-  UpdateStandardIx,
-  updateStandardIxBeet,
-} from '../types/UpdateStandardIx'
+import { UpdateRulesetIx, updateRulesetIxBeet } from '../types/UpdateRulesetIx'
 
 /**
  * @category Instructions
- * @category UpdateStandard
+ * @category UpdateRuleset
  * @category generated
  */
-export type UpdateStandardInstructionArgs = {
-  ix: UpdateStandardIx
+export type UpdateRulesetInstructionArgs = {
+  ix: UpdateRulesetIx
 }
 /**
  * @category Instructions
- * @category UpdateStandard
+ * @category UpdateRuleset
  * @category generated
  */
-export const updateStandardStruct = new beet.FixableBeetArgsStruct<
-  UpdateStandardInstructionArgs & {
+export const updateRulesetStruct = new beet.FixableBeetArgsStruct<
+  UpdateRulesetInstructionArgs & {
     instructionDiscriminator: number[] /* size: 8 */
   }
 >(
   [
     ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
-    ['ix', updateStandardIxBeet],
+    ['ix', updateRulesetIxBeet],
   ],
-  'UpdateStandardInstructionArgs'
+  'UpdateRulesetInstructionArgs'
 )
 /**
- * Accounts required by the _updateStandard_ instruction
+ * Accounts required by the _updateRuleset_ instruction
  *
- * @property [_writable_] standard
+ * @property [_writable_] ruleset
  * @property [**signer**] authority
  * @category Instructions
- * @category UpdateStandard
+ * @category UpdateRuleset
  * @category generated
  */
-export type UpdateStandardInstructionAccounts = {
-  standard: web3.PublicKey
+export type UpdateRulesetInstructionAccounts = {
+  ruleset: web3.PublicKey
   authority: web3.PublicKey
   systemProgram?: web3.PublicKey
 }
 
-export const updateStandardInstructionDiscriminator = [
-  235, 132, 19, 152, 47, 247, 75, 20,
+export const updateRulesetInstructionDiscriminator = [
+  163, 247, 48, 173, 18, 174, 20, 154,
 ]
 
 /**
- * Creates a _UpdateStandard_ instruction.
+ * Creates a _UpdateRuleset_ instruction.
  *
  * @param accounts that will be accessed while the instruction is processed
  * @param args to provide as instruction data to the program
  *
  * @category Instructions
- * @category UpdateStandard
+ * @category UpdateRuleset
  * @category generated
  */
-export function createUpdateStandardInstruction(
-  accounts: UpdateStandardInstructionAccounts,
-  args: UpdateStandardInstructionArgs,
+export function createUpdateRulesetInstruction(
+  accounts: UpdateRulesetInstructionAccounts,
+  args: UpdateRulesetInstructionArgs,
   programId = new web3.PublicKey('creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez')
 ) {
-  const [data] = updateStandardStruct.serialize({
-    instructionDiscriminator: updateStandardInstructionDiscriminator,
+  const [data] = updateRulesetStruct.serialize({
+    instructionDiscriminator: updateRulesetInstructionDiscriminator,
     ...args,
   })
   const keys: web3.AccountMeta[] = [
     {
-      pubkey: accounts.standard,
+      pubkey: accounts.ruleset,
       isWritable: true,
       isSigner: false,
     },
diff --git a/sdk/src/generated/types/InitStandardIx.ts b/sdk/src/generated/types/InitRulesetIx.ts
similarity index 56%
rename from sdk/src/generated/types/InitStandardIx.ts
rename to sdk/src/generated/types/InitRulesetIx.ts
index 9c12a2ff..64d9ef11 100644
--- a/sdk/src/generated/types/InitStandardIx.ts
+++ b/sdk/src/generated/types/InitRulesetIx.ts
@@ -8,10 +8,10 @@
 import * as web3 from '@solana/web3.js'
 import * as beet from '@metaplex-foundation/beet'
 import * as beetSolana from '@metaplex-foundation/beet-solana'
-export type InitStandardIx = {
+export type InitRulesetIx = {
   checkSellerFeeBasisPoints: boolean
   name: string
-  disallowedPrograms: web3.PublicKey[]
+  disallowedAddresses: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
 }
 
@@ -19,13 +19,12 @@ export type InitStandardIx = {
  * @category userTypes
  * @category generated
  */
-export const initStandardIxBeet =
-  new beet.FixableBeetArgsStruct<InitStandardIx>(
-    [
-      ['checkSellerFeeBasisPoints', beet.bool],
-      ['name', beet.utf8String],
-      ['disallowedPrograms', beet.array(beetSolana.publicKey)],
-      ['allowedPrograms', beet.array(beetSolana.publicKey)],
-    ],
-    'InitStandardIx'
-  )
+export const initRulesetIxBeet = new beet.FixableBeetArgsStruct<InitRulesetIx>(
+  [
+    ['checkSellerFeeBasisPoints', beet.bool],
+    ['name', beet.utf8String],
+    ['disallowedAddresses', beet.array(beetSolana.publicKey)],
+    ['allowedPrograms', beet.array(beetSolana.publicKey)],
+  ],
+  'InitRulesetIx'
+)
diff --git a/sdk/src/generated/types/UpdateStandardIx.ts b/sdk/src/generated/types/UpdateRulesetIx.ts
similarity index 72%
rename from sdk/src/generated/types/UpdateStandardIx.ts
rename to sdk/src/generated/types/UpdateRulesetIx.ts
index 66c48596..3f430e58 100644
--- a/sdk/src/generated/types/UpdateStandardIx.ts
+++ b/sdk/src/generated/types/UpdateRulesetIx.ts
@@ -8,9 +8,9 @@
 import * as web3 from '@solana/web3.js'
 import * as beet from '@metaplex-foundation/beet'
 import * as beetSolana from '@metaplex-foundation/beet-solana'
-export type UpdateStandardIx = {
+export type UpdateRulesetIx = {
   checkSellerFeeBasisPoints: boolean
-  disallowedPrograms: web3.PublicKey[]
+  disallowedAddresses: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
 }
 
@@ -18,12 +18,12 @@ export type UpdateStandardIx = {
  * @category userTypes
  * @category generated
  */
-export const updateStandardIxBeet =
-  new beet.FixableBeetArgsStruct<UpdateStandardIx>(
+export const updateRulesetIxBeet =
+  new beet.FixableBeetArgsStruct<UpdateRulesetIx>(
     [
       ['checkSellerFeeBasisPoints', beet.bool],
-      ['disallowedPrograms', beet.array(beetSolana.publicKey)],
+      ['disallowedAddresses', beet.array(beetSolana.publicKey)],
       ['allowedPrograms', beet.array(beetSolana.publicKey)],
     ],
-    'UpdateStandardIx'
+    'UpdateRulesetIx'
   )
diff --git a/sdk/src/generated/types/index.ts b/sdk/src/generated/types/index.ts
index f9395103..be1fcf1d 100644
--- a/sdk/src/generated/types/index.ts
+++ b/sdk/src/generated/types/index.ts
@@ -1,3 +1,3 @@
-export * from './InitStandardIx'
+export * from './InitRulesetIx'
 export * from './UpdateMintManagerIx'
-export * from './UpdateStandardIx'
+export * from './UpdateRulesetIx'
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
index a1e35e39..77b50f4a 100644
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ b/sdk/src/idl/cardinal_creator_standard.ts
@@ -16,7 +16,7 @@ export type CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -57,7 +57,7 @@ export type CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -82,10 +82,10 @@ export type CardinalCreatorStandard = {
       ]
     },
     {
-      "name": "initStandard",
+      "name": "initRuleset",
       "accounts": [
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": true,
           "isSigner": false
         },
@@ -109,16 +109,16 @@ export type CardinalCreatorStandard = {
         {
           "name": "ix",
           "type": {
-            "defined": "InitStandardIx"
+            "defined": "InitRulesetIx"
           }
         }
       ]
     },
     {
-      "name": "updateStandard",
+      "name": "updateRuleset",
       "accounts": [
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": true,
           "isSigner": false
         },
@@ -137,7 +137,7 @@ export type CardinalCreatorStandard = {
         {
           "name": "ix",
           "type": {
-            "defined": "UpdateStandardIx"
+            "defined": "UpdateRulesetIx"
           }
         }
       ]
@@ -156,7 +156,7 @@ export type CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -402,7 +402,7 @@ export type CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -458,7 +458,7 @@ export type CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -479,7 +479,7 @@ export type CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -515,14 +515,14 @@ export type CardinalCreatorStandard = {
             "type": "publicKey"
           },
           {
-            "name": "standard",
+            "name": "ruleset",
             "type": "publicKey"
           }
         ]
       }
     },
     {
-      "name": "standard",
+      "name": "ruleset",
       "type": {
         "kind": "struct",
         "fields": [
@@ -538,6 +538,10 @@ export type CardinalCreatorStandard = {
             "name": "authority",
             "type": "publicKey"
           },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "checkSellerFeeBasisPoints",
             "type": "bool"
@@ -547,7 +551,7 @@ export type CardinalCreatorStandard = {
             "type": "string"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -576,7 +580,7 @@ export type CardinalCreatorStandard = {
       }
     },
     {
-      "name": "InitStandardIx",
+      "name": "InitRulesetIx",
       "type": {
         "kind": "struct",
         "fields": [
@@ -589,7 +593,7 @@ export type CardinalCreatorStandard = {
             "type": "string"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -604,7 +608,7 @@ export type CardinalCreatorStandard = {
       }
     },
     {
-      "name": "UpdateStandardIx",
+      "name": "UpdateRulesetIx",
       "type": {
         "kind": "struct",
         "fields": [
@@ -613,7 +617,7 @@ export type CardinalCreatorStandard = {
             "type": "bool"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -671,8 +675,8 @@ export type CardinalCreatorStandard = {
     },
     {
       "code": 6008,
-      "name": "InvalidStandard",
-      "msg": "Invalid standard"
+      "name": "InvalidRuleset",
+      "msg": "Invalid ruleset"
     },
     {
       "code": 6009,
@@ -715,7 +719,7 @@ export const IDL: CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -756,7 +760,7 @@ export const IDL: CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -781,10 +785,10 @@ export const IDL: CardinalCreatorStandard = {
       ]
     },
     {
-      "name": "initStandard",
+      "name": "initRuleset",
       "accounts": [
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": true,
           "isSigner": false
         },
@@ -808,16 +812,16 @@ export const IDL: CardinalCreatorStandard = {
         {
           "name": "ix",
           "type": {
-            "defined": "InitStandardIx"
+            "defined": "InitRulesetIx"
           }
         }
       ]
     },
     {
-      "name": "updateStandard",
+      "name": "updateRuleset",
       "accounts": [
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": true,
           "isSigner": false
         },
@@ -836,7 +840,7 @@ export const IDL: CardinalCreatorStandard = {
         {
           "name": "ix",
           "type": {
-            "defined": "UpdateStandardIx"
+            "defined": "UpdateRulesetIx"
           }
         }
       ]
@@ -855,7 +859,7 @@ export const IDL: CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -1101,7 +1105,7 @@ export const IDL: CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -1157,7 +1161,7 @@ export const IDL: CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -1178,7 +1182,7 @@ export const IDL: CardinalCreatorStandard = {
           "isSigner": false
         },
         {
-          "name": "standard",
+          "name": "ruleset",
           "isMut": false,
           "isSigner": false
         },
@@ -1214,14 +1218,14 @@ export const IDL: CardinalCreatorStandard = {
             "type": "publicKey"
           },
           {
-            "name": "standard",
+            "name": "ruleset",
             "type": "publicKey"
           }
         ]
       }
     },
     {
-      "name": "standard",
+      "name": "ruleset",
       "type": {
         "kind": "struct",
         "fields": [
@@ -1237,6 +1241,10 @@ export const IDL: CardinalCreatorStandard = {
             "name": "authority",
             "type": "publicKey"
           },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "checkSellerFeeBasisPoints",
             "type": "bool"
@@ -1246,7 +1254,7 @@ export const IDL: CardinalCreatorStandard = {
             "type": "string"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -1275,7 +1283,7 @@ export const IDL: CardinalCreatorStandard = {
       }
     },
     {
-      "name": "InitStandardIx",
+      "name": "InitRulesetIx",
       "type": {
         "kind": "struct",
         "fields": [
@@ -1288,7 +1296,7 @@ export const IDL: CardinalCreatorStandard = {
             "type": "string"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -1303,7 +1311,7 @@ export const IDL: CardinalCreatorStandard = {
       }
     },
     {
-      "name": "UpdateStandardIx",
+      "name": "UpdateRulesetIx",
       "type": {
         "kind": "struct",
         "fields": [
@@ -1312,7 +1320,7 @@ export const IDL: CardinalCreatorStandard = {
             "type": "bool"
           },
           {
-            "name": "disallowedPrograms",
+            "name": "disallowedAddresses",
             "type": {
               "vec": "publicKey"
             }
@@ -1370,8 +1378,8 @@ export const IDL: CardinalCreatorStandard = {
     },
     {
       "code": 6008,
-      "name": "InvalidStandard",
-      "msg": "Invalid standard"
+      "name": "InvalidRuleset",
+      "msg": "Invalid ruleset"
     },
     {
       "code": 6009,

From c8e6a764243d31bb3c8790a5c6d2a5a06868ced8 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 02:54:09 -0400
Subject: [PATCH 15/37] Add ruleset payouts

---
 .../mint_manager/update_mint_manager.rs       | 21 +++++++++++++++++++
 program/src/instructions/token/init_mint.rs   | 15 ++++++++++++-
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/program/src/instructions/mint_manager/update_mint_manager.rs b/program/src/instructions/mint_manager/update_mint_manager.rs
index 07e219c0..73d25c2b 100644
--- a/program/src/instructions/mint_manager/update_mint_manager.rs
+++ b/program/src/instructions/mint_manager/update_mint_manager.rs
@@ -1,6 +1,8 @@
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
+use solana_program::program::invoke;
+use solana_program::system_instruction::transfer;
 
 #[derive(AnchorSerialize, AnchorDeserialize)]
 pub struct UpdateMintManagerIx {
@@ -11,8 +13,13 @@ pub struct UpdateMintManagerIx {
 pub struct UpdateMintManagerCtx<'info> {
     mint_manager: Account<'info, MintManager>,
     ruleset: Account<'info, Ruleset>,
+    /// CHECK: Account is not read from
+    #[account(mut, constraint = collector.key() == ruleset.collector @ ErrorCode::InvalidCollector)]
+    collector: UncheckedAccount<'info>,
     #[account(constraint = authority.key() == mint_manager.authority @ ErrorCode::InvalidAuthority)]
     authority: Signer<'info>,
+    #[account(mut)]
+    payer: Signer<'info>,
     system_program: Program<'info, System>,
 }
 
@@ -20,5 +27,19 @@ pub fn handler(ctx: Context<UpdateMintManagerCtx>, ix: UpdateMintManagerIx) -> R
     let mint_manager = &mut ctx.accounts.mint_manager;
     mint_manager.authority = ix.authority;
     mint_manager.ruleset = ctx.accounts.ruleset.key();
+
+    // update
+    invoke(
+        &transfer(
+            &ctx.accounts.payer.key(),
+            &ctx.accounts.collector.key(),
+            CREATION_LAMPORTS,
+        ),
+        &[
+            ctx.accounts.payer.to_account_info(),
+            ctx.accounts.collector.to_account_info(),
+            ctx.accounts.system_program.to_account_info(),
+        ],
+    )?;
     Ok(())
 }
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index 0c69d4e0..8dd5ca3f 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -10,6 +10,7 @@ use anchor_spl::token::TokenAccount;
 use anchor_spl::token::{self};
 use solana_program::program_pack::Pack;
 use solana_program::system_instruction::create_account;
+use solana_program::system_instruction::transfer;
 use spl_associated_token_account::get_associated_token_address;
 
 #[derive(Accounts)]
@@ -33,7 +34,7 @@ pub struct InitMintCtx<'info> {
     target: Signer<'info>,
 
     /// CHECK: Account is not read from
-    #[account(mut)]
+    #[account(mut, constraint = collector.key() == ruleset.collector @ ErrorCode::InvalidCollector)]
     collector: UncheckedAccount<'info>,
     authority: Signer<'info>,
     #[account(mut)]
@@ -132,5 +133,17 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
     token::mint_to(cpi_context, 1)?;
 
+    invoke(
+        &transfer(
+            &ctx.accounts.payer.key(),
+            &ctx.accounts.collector.key(),
+            CREATION_LAMPORTS,
+        ),
+        &[
+            ctx.accounts.payer.to_account_info(),
+            ctx.accounts.collector.to_account_info(),
+            ctx.accounts.system_program.to_account_info(),
+        ],
+    )?;
     Ok(())
 }

From 5ffd9e11278f0e5b1923247c5f047436893d5579 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 03:47:34 -0400
Subject: [PATCH 16/37] Pre instruction

---
 program/src/errors.rs                         |   2 +
 program/src/instructions/token/init_mint.rs   |   4 +-
 .../src/instructions/token/pre_transfer.rs    |  77 ++++++++-
 program/src/instructions/token/transfer.rs    |   3 +-
 program/src/state.rs                          |  14 ++
 sdk/idl/cardinal_creator_standard.json        |  61 +++++++
 sdk/src/generated/accounts/AccountBalances.ts | 162 ++++++++++++++++++
 sdk/src/generated/accounts/index.ts           |   4 +-
 sdk/src/generated/errors/index.ts             |  20 +++
 sdk/src/generated/instructions/preTransfer.ts |  14 ++
 .../instructions/updateMintManager.ts         |  14 ++
 sdk/src/generated/types/AccountBalance.ts     |  28 +++
 sdk/src/generated/types/index.ts              |   1 +
 sdk/src/idl/cardinal_creator_standard.ts      | 122 +++++++++++++
 14 files changed, 519 insertions(+), 7 deletions(-)
 create mode 100644 sdk/src/generated/accounts/AccountBalances.ts
 create mode 100644 sdk/src/generated/types/AccountBalance.ts

diff --git a/program/src/errors.rs b/program/src/errors.rs
index 188bf7ab..ba05a740 100644
--- a/program/src/errors.rs
+++ b/program/src/errors.rs
@@ -28,4 +28,6 @@ pub enum ErrorCode {
     ProgramDisallowed,
     #[msg("Program not allowed in allowed programs to transfer")]
     ProgramNotAllowed,
+    #[msg("Unknown account found in instruction")]
+    UnknownAccount,
 }
diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index 8dd5ca3f..5a35a2d5 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -59,9 +59,7 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
         &create_account(
             ctx.accounts.payer.key,
             ctx.accounts.mint.key,
-            ctx.accounts
-                .rent
-                .minimum_balance(spl_token::state::Mint::LEN),
+            Rent::get()?.minimum_balance(spl_token::state::Mint::LEN),
             spl_token::state::Mint::LEN as u64,
             &spl_token::id(),
         ),
diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
index 1a0c2318..22157649 100644
--- a/program/src/instructions/token/pre_transfer.rs
+++ b/program/src/instructions/token/pre_transfer.rs
@@ -1,6 +1,14 @@
+use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
+use anchor_spl::token::TokenAccount;
+use mpl_token_metadata::utils::assert_derivation;
+use solana_program::program::invoke;
+use solana_program::serialize_utils::read_u16;
+use solana_program::system_instruction::create_account;
+use solana_program::sysvar::instructions::load_instruction_at_checked;
 use solana_program::sysvar::{self};
+use std::collections::HashSet;
 
 pub const PRE_TRANSFER_DISCRIMINATOR: [u8; 8] = [158, 85, 53, 202, 155, 118, 19, 228];
 
@@ -8,11 +16,78 @@ pub const PRE_TRANSFER_DISCRIMINATOR: [u8; 8] = [158, 85, 53, 202, 155, 118, 19,
 pub struct PreTransferCtx<'info> {
     mint_manager: Account<'info, MintManager>,
     ruleset: Account<'info, Ruleset>,
+    #[account(mut)]
+    payer: Signer<'info>,
+    /// CHECK: This is not dangerous because we check it inside the handler
+    #[account(mut)]
+    account_balances: UncheckedAccount<'info>,
     /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
     #[account(address = sysvar::instructions::id())]
     instructions: UncheckedAccount<'info>,
+    // remaining_accounts
 }
 
-pub fn handler(_ctx: Context<PreTransferCtx>) -> Result<()> {
+pub fn handler(ctx: Context<PreTransferCtx>) -> Result<()> {
+    let mint = ctx.accounts.mint_manager.mint;
+    let path = &[ACCOUNT_BALANCES_SEED.as_bytes(), mint.as_ref()];
+    assert_derivation(ctx.program_id, &ctx.accounts.account_balances, path)?;
+
+    let instructions_account_info = ctx.accounts.instructions.to_account_info();
+    let instruction_sysvar = instructions_account_info.try_borrow_data()?;
+    let mut current: usize = 0;
+    let num_instructions =
+        read_u16(&mut current, &instruction_sysvar).expect("Invalid instruction");
+
+    let mut all_addresses = HashSet::new();
+    for i in 0..num_instructions {
+        let ix = load_instruction_at_checked(i.into(), &instructions_account_info)
+            .expect("Failed to get instruction");
+        for account in ix.accounts {
+            all_addresses.insert(account.pubkey);
+        }
+    }
+
+    let mut account_balances = Vec::new();
+    let remaining_accounts = &mut ctx.remaining_accounts.iter();
+    while let Some(account) = remaining_accounts.next() {
+        if !all_addresses.contains(account.key) {
+            return Err(error!(ErrorCode::UnknownAccount));
+        }
+        account_balances.push(AccountBalance {
+            address: account.key(),
+            balance: **account.lamports.borrow(),
+            mint: Pubkey::default(),
+        });
+
+        if *account.owner == spl_token::id() {
+            if let Ok(token_account) = Account::<TokenAccount>::try_from(&account) {
+                account_balances.push(AccountBalance {
+                    address: account.key(),
+                    balance: token_account.amount,
+                    mint: token_account.mint,
+                });
+            }
+        }
+    }
+
+    let space = 8 + std::mem::size_of_val(&account_balances) + 8;
+    invoke(
+        &create_account(
+            ctx.accounts.payer.key,
+            ctx.accounts.account_balances.key,
+            Rent::get()?.minimum_balance(space),
+            space.try_into().expect("Error allocating space"),
+            &spl_token::id(),
+        ),
+        &[
+            ctx.accounts.payer.to_account_info(),
+            ctx.accounts.account_balances.to_account_info(),
+        ],
+    )?;
+
+    // skip discriminator check
+    let account_balances_account =
+        &mut Account::<AccountBalances>::try_from_unchecked(&ctx.accounts.account_balances)?;
+    account_balances_account.balances = account_balances;
     Ok(())
 }
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
index 496ac519..61c1e6f6 100644
--- a/program/src/instructions/token/transfer.rs
+++ b/program/src/instructions/token/transfer.rs
@@ -1,5 +1,3 @@
-use std::collections::HashSet;
-
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
@@ -14,6 +12,7 @@ use arrayref::array_ref;
 use solana_program::serialize_utils::read_u16;
 use solana_program::sysvar::instructions::load_instruction_at_checked;
 use solana_program::sysvar::{self};
+use std::collections::HashSet;
 
 use super::POST_TRANSFER_DISCRIMINATOR;
 use super::PRE_TRANSFER_DISCRIMINATOR;
diff --git a/program/src/state.rs b/program/src/state.rs
index b127d8d3..aca5c57e 100644
--- a/program/src/state.rs
+++ b/program/src/state.rs
@@ -29,3 +29,17 @@ pub struct Ruleset {
     pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
 }
+
+pub const ACCOUNT_BALANCES_SEED: &str = "account-balances";
+
+#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Debug)]
+pub struct AccountBalance {
+    pub address: Pubkey,
+    pub mint: Pubkey,
+    pub balance: u64,
+}
+
+#[account]
+pub struct AccountBalances {
+    pub balances: Vec<AccountBalance>,
+}
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index 4d5c43fb..475eb6f0 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -61,11 +61,21 @@
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "authority",
           "isMut": false,
           "isSigner": true
         },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
         {
           "name": "systemProgram",
           "isMut": false,
@@ -462,6 +472,16 @@
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "instructions",
           "isMut": false,
@@ -564,6 +584,22 @@
           }
         ]
       }
+    },
+    {
+      "name": "AccountBalances",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "balances",
+            "type": {
+              "vec": {
+                "defined": "AccountBalance"
+              }
+            }
+          }
+        ]
+      }
     }
   ],
   "types": [
@@ -630,6 +666,26 @@
           }
         ]
       }
+    },
+    {
+      "name": "AccountBalance",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "address",
+            "type": "publicKey"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "balance",
+            "type": "u64"
+          }
+        ]
+      }
     }
   ],
   "errors": [
@@ -697,6 +753,11 @@
       "code": 6012,
       "name": "ProgramNotAllowed",
       "msg": "Program not allowed in allowed programs to transfer"
+    },
+    {
+      "code": 6013,
+      "name": "UnknownAccount",
+      "msg": "Unknown account found in instruction"
     }
   ],
   "metadata": {
diff --git a/sdk/src/generated/accounts/AccountBalances.ts b/sdk/src/generated/accounts/AccountBalances.ts
new file mode 100644
index 00000000..6a07b2e4
--- /dev/null
+++ b/sdk/src/generated/accounts/AccountBalances.ts
@@ -0,0 +1,162 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as beet from '@metaplex-foundation/beet'
+import * as web3 from '@solana/web3.js'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+import { AccountBalance, accountBalanceBeet } from '../types/AccountBalance'
+
+/**
+ * Arguments used to create {@link AccountBalances}
+ * @category Accounts
+ * @category generated
+ */
+export type AccountBalancesArgs = {
+  balances: AccountBalance[]
+}
+
+export const accountBalancesDiscriminator = [84, 88, 42, 245, 122, 70, 248, 203]
+/**
+ * Holds the data for the {@link AccountBalances} Account and provides de/serialization
+ * functionality for that data
+ *
+ * @category Accounts
+ * @category generated
+ */
+export class AccountBalances implements AccountBalancesArgs {
+  private constructor(readonly balances: AccountBalance[]) {}
+
+  /**
+   * Creates a {@link AccountBalances} instance from the provided args.
+   */
+  static fromArgs(args: AccountBalancesArgs) {
+    return new AccountBalances(args.balances)
+  }
+
+  /**
+   * Deserializes the {@link AccountBalances} from the data of the provided {@link web3.AccountInfo}.
+   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
+   */
+  static fromAccountInfo(
+    accountInfo: web3.AccountInfo<Buffer>,
+    offset = 0
+  ): [AccountBalances, number] {
+    return AccountBalances.deserialize(accountInfo.data, offset)
+  }
+
+  /**
+   * Retrieves the account info from the provided address and deserializes
+   * the {@link AccountBalances} from its data.
+   *
+   * @throws Error if no account info is found at the address or if deserialization fails
+   */
+  static async fromAccountAddress(
+    connection: web3.Connection,
+    address: web3.PublicKey
+  ): Promise<AccountBalances> {
+    const accountInfo = await connection.getAccountInfo(address)
+    if (accountInfo == null) {
+      throw new Error(`Unable to find AccountBalances account at ${address}`)
+    }
+    return AccountBalances.fromAccountInfo(accountInfo, 0)[0]
+  }
+
+  /**
+   * Provides a {@link web3.Connection.getProgramAccounts} config builder,
+   * to fetch accounts matching filters that can be specified via that builder.
+   *
+   * @param programId - the program that owns the accounts we are filtering
+   */
+  static gpaBuilder(
+    programId: web3.PublicKey = new web3.PublicKey(
+      'creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez'
+    )
+  ) {
+    return beetSolana.GpaBuilder.fromStruct(programId, accountBalancesBeet)
+  }
+
+  /**
+   * Deserializes the {@link AccountBalances} from the provided data Buffer.
+   * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
+   */
+  static deserialize(buf: Buffer, offset = 0): [AccountBalances, number] {
+    return accountBalancesBeet.deserialize(buf, offset)
+  }
+
+  /**
+   * Serializes the {@link AccountBalances} into a Buffer.
+   * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
+   */
+  serialize(): [Buffer, number] {
+    return accountBalancesBeet.serialize({
+      accountDiscriminator: accountBalancesDiscriminator,
+      ...this,
+    })
+  }
+
+  /**
+   * Returns the byteSize of a {@link Buffer} holding the serialized data of
+   * {@link AccountBalances} for the provided args.
+   *
+   * @param args need to be provided since the byte size for this account
+   * depends on them
+   */
+  static byteSize(args: AccountBalancesArgs) {
+    const instance = AccountBalances.fromArgs(args)
+    return accountBalancesBeet.toFixedFromValue({
+      accountDiscriminator: accountBalancesDiscriminator,
+      ...instance,
+    }).byteSize
+  }
+
+  /**
+   * Fetches the minimum balance needed to exempt an account holding
+   * {@link AccountBalances} data from rent
+   *
+   * @param args need to be provided since the byte size for this account
+   * depends on them
+   * @param connection used to retrieve the rent exemption information
+   */
+  static async getMinimumBalanceForRentExemption(
+    args: AccountBalancesArgs,
+    connection: web3.Connection,
+    commitment?: web3.Commitment
+  ): Promise<number> {
+    return connection.getMinimumBalanceForRentExemption(
+      AccountBalances.byteSize(args),
+      commitment
+    )
+  }
+
+  /**
+   * Returns a readable version of {@link AccountBalances} properties
+   * and can be used to convert to JSON and/or logging
+   */
+  pretty() {
+    return {
+      balances: this.balances,
+    }
+  }
+}
+
+/**
+ * @category Accounts
+ * @category generated
+ */
+export const accountBalancesBeet = new beet.FixableBeetStruct<
+  AccountBalances,
+  AccountBalancesArgs & {
+    accountDiscriminator: number[] /* size: 8 */
+  }
+>(
+  [
+    ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],
+    ['balances', beet.array(accountBalanceBeet)],
+  ],
+  AccountBalances.fromArgs,
+  'AccountBalances'
+)
diff --git a/sdk/src/generated/accounts/index.ts b/sdk/src/generated/accounts/index.ts
index 8fe79dfa..5398b2e6 100644
--- a/sdk/src/generated/accounts/index.ts
+++ b/sdk/src/generated/accounts/index.ts
@@ -1,7 +1,9 @@
+export * from './AccountBalances'
 export * from './MintManager'
 export * from './Ruleset'
 
 import { MintManager } from './MintManager'
 import { Ruleset } from './Ruleset'
+import { AccountBalances } from './AccountBalances'
 
-export const accountProviders = { MintManager, Ruleset }
+export const accountProviders = { MintManager, Ruleset, AccountBalances }
diff --git a/sdk/src/generated/errors/index.ts b/sdk/src/generated/errors/index.ts
index a979a768..8a1e4054 100644
--- a/sdk/src/generated/errors/index.ts
+++ b/sdk/src/generated/errors/index.ts
@@ -319,6 +319,26 @@ createErrorFromNameLookup.set(
   () => new ProgramNotAllowedError()
 )
 
+/**
+ * UnknownAccount: 'Unknown account found in instruction'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class UnknownAccountError extends Error {
+  readonly code: number = 0x177d
+  readonly name: string = 'UnknownAccount'
+  constructor() {
+    super('Unknown account found in instruction')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, UnknownAccountError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x177d, () => new UnknownAccountError())
+createErrorFromNameLookup.set('UnknownAccount', () => new UnknownAccountError())
+
 /**
  * Attempts to resolve a custom program error from the provided error code.
  * @category Errors
diff --git a/sdk/src/generated/instructions/preTransfer.ts b/sdk/src/generated/instructions/preTransfer.ts
index cf34f75d..c1bf2fd0 100644
--- a/sdk/src/generated/instructions/preTransfer.ts
+++ b/sdk/src/generated/instructions/preTransfer.ts
@@ -24,6 +24,8 @@ export const preTransferStruct = new beet.BeetArgsStruct<{
  *
  * @property [] mintManager
  * @property [] ruleset
+ * @property [_writable_, **signer**] payer
+ * @property [_writable_] accountBalances
  * @property [] instructions
  * @category Instructions
  * @category PreTransfer
@@ -32,6 +34,8 @@ export const preTransferStruct = new beet.BeetArgsStruct<{
 export type PreTransferInstructionAccounts = {
   mintManager: web3.PublicKey
   ruleset: web3.PublicKey
+  payer: web3.PublicKey
+  accountBalances: web3.PublicKey
   instructions: web3.PublicKey
 }
 
@@ -65,6 +69,16 @@ export function createPreTransferInstruction(
       isWritable: false,
       isSigner: false,
     },
+    {
+      pubkey: accounts.payer,
+      isWritable: true,
+      isSigner: true,
+    },
+    {
+      pubkey: accounts.accountBalances,
+      isWritable: true,
+      isSigner: false,
+    },
     {
       pubkey: accounts.instructions,
       isWritable: false,
diff --git a/sdk/src/generated/instructions/updateMintManager.ts b/sdk/src/generated/instructions/updateMintManager.ts
index 37a13043..f6e152e3 100644
--- a/sdk/src/generated/instructions/updateMintManager.ts
+++ b/sdk/src/generated/instructions/updateMintManager.ts
@@ -41,7 +41,9 @@ export const updateMintManagerStruct = new beet.BeetArgsStruct<
  *
  * @property [] mintManager
  * @property [] ruleset
+ * @property [_writable_] collector
  * @property [**signer**] authority
+ * @property [_writable_, **signer**] payer
  * @category Instructions
  * @category UpdateMintManager
  * @category generated
@@ -49,7 +51,9 @@ export const updateMintManagerStruct = new beet.BeetArgsStruct<
 export type UpdateMintManagerInstructionAccounts = {
   mintManager: web3.PublicKey
   ruleset: web3.PublicKey
+  collector: web3.PublicKey
   authority: web3.PublicKey
+  payer: web3.PublicKey
   systemProgram?: web3.PublicKey
 }
 
@@ -87,11 +91,21 @@ export function createUpdateMintManagerInstruction(
       isWritable: false,
       isSigner: false,
     },
+    {
+      pubkey: accounts.collector,
+      isWritable: true,
+      isSigner: false,
+    },
     {
       pubkey: accounts.authority,
       isWritable: false,
       isSigner: true,
     },
+    {
+      pubkey: accounts.payer,
+      isWritable: true,
+      isSigner: true,
+    },
     {
       pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,
       isWritable: false,
diff --git a/sdk/src/generated/types/AccountBalance.ts b/sdk/src/generated/types/AccountBalance.ts
new file mode 100644
index 00000000..886f8553
--- /dev/null
+++ b/sdk/src/generated/types/AccountBalance.ts
@@ -0,0 +1,28 @@
+/**
+ * This code was GENERATED using the solita package.
+ * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
+ *
+ * See: https://github.com/metaplex-foundation/solita
+ */
+
+import * as web3 from '@solana/web3.js'
+import * as beet from '@metaplex-foundation/beet'
+import * as beetSolana from '@metaplex-foundation/beet-solana'
+export type AccountBalance = {
+  address: web3.PublicKey
+  mint: web3.PublicKey
+  balance: beet.bignum
+}
+
+/**
+ * @category userTypes
+ * @category generated
+ */
+export const accountBalanceBeet = new beet.BeetArgsStruct<AccountBalance>(
+  [
+    ['address', beetSolana.publicKey],
+    ['mint', beetSolana.publicKey],
+    ['balance', beet.u64],
+  ],
+  'AccountBalance'
+)
diff --git a/sdk/src/generated/types/index.ts b/sdk/src/generated/types/index.ts
index be1fcf1d..681b149c 100644
--- a/sdk/src/generated/types/index.ts
+++ b/sdk/src/generated/types/index.ts
@@ -1,3 +1,4 @@
+export * from './AccountBalance'
 export * from './InitRulesetIx'
 export * from './UpdateMintManagerIx'
 export * from './UpdateRulesetIx'
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
index 77b50f4a..6bd8a94e 100644
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ b/sdk/src/idl/cardinal_creator_standard.ts
@@ -61,11 +61,21 @@ export type CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "authority",
           "isMut": false,
           "isSigner": true
         },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
         {
           "name": "systemProgram",
           "isMut": false,
@@ -462,6 +472,16 @@ export type CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "instructions",
           "isMut": false,
@@ -564,6 +584,22 @@ export type CardinalCreatorStandard = {
           }
         ]
       }
+    },
+    {
+      "name": "accountBalances",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "balances",
+            "type": {
+              "vec": {
+                "defined": "AccountBalance"
+              }
+            }
+          }
+        ]
+      }
     }
   ],
   "types": [
@@ -630,6 +666,26 @@ export type CardinalCreatorStandard = {
           }
         ]
       }
+    },
+    {
+      "name": "AccountBalance",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "address",
+            "type": "publicKey"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "balance",
+            "type": "u64"
+          }
+        ]
+      }
     }
   ],
   "errors": [
@@ -697,6 +753,11 @@ export type CardinalCreatorStandard = {
       "code": 6012,
       "name": "ProgramNotAllowed",
       "msg": "Program not allowed in allowed programs to transfer"
+    },
+    {
+      "code": 6013,
+      "name": "UnknownAccount",
+      "msg": "Unknown account found in instruction"
     }
   ]
 };
@@ -764,11 +825,21 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "authority",
           "isMut": false,
           "isSigner": true
         },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
         {
           "name": "systemProgram",
           "isMut": false,
@@ -1165,6 +1236,16 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "instructions",
           "isMut": false,
@@ -1267,6 +1348,22 @@ export const IDL: CardinalCreatorStandard = {
           }
         ]
       }
+    },
+    {
+      "name": "accountBalances",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "balances",
+            "type": {
+              "vec": {
+                "defined": "AccountBalance"
+              }
+            }
+          }
+        ]
+      }
     }
   ],
   "types": [
@@ -1333,6 +1430,26 @@ export const IDL: CardinalCreatorStandard = {
           }
         ]
       }
+    },
+    {
+      "name": "AccountBalance",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "address",
+            "type": "publicKey"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "balance",
+            "type": "u64"
+          }
+        ]
+      }
     }
   ],
   "errors": [
@@ -1400,6 +1517,11 @@ export const IDL: CardinalCreatorStandard = {
       "code": 6012,
       "name": "ProgramNotAllowed",
       "msg": "Program not allowed in allowed programs to transfer"
+    },
+    {
+      "code": 6013,
+      "name": "UnknownAccount",
+      "msg": "Unknown account found in instruction"
     }
   ]
 };

From 53c5947710769c76c50d600afc6cf4d6c48a0c53 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 04:39:32 -0400
Subject: [PATCH 17/37] Post ix

---
 program/src/errors.rs                         |   2 +
 .../src/instructions/token/post_transfer.rs   | 103 +++++++++++++++++-
 .../src/instructions/token/pre_transfer.rs    |  34 +++---
 program/src/instructions/token/transfer.rs    |  13 +++
 program/src/state.rs                          |   1 +
 sdk/idl/cardinal_creator_standard.json        |  31 +++---
 sdk/src/generated/errors/index.ts             |  23 ++++
 .../generated/instructions/postTransfer.ts    |  16 +--
 sdk/src/generated/instructions/preTransfer.ts |  22 +---
 sdk/src/generated/types/AccountBalance.ts     |   2 +
 sdk/src/idl/cardinal_creator_standard.ts      |  62 +++++------
 11 files changed, 216 insertions(+), 93 deletions(-)

diff --git a/program/src/errors.rs b/program/src/errors.rs
index ba05a740..d5e9ad02 100644
--- a/program/src/errors.rs
+++ b/program/src/errors.rs
@@ -30,4 +30,6 @@ pub enum ErrorCode {
     ProgramNotAllowed,
     #[msg("Unknown account found in instruction")]
     UnknownAccount,
+    #[msg("Account not found in instruction")]
+    AccountNotFound,
 }
diff --git a/program/src/instructions/token/post_transfer.rs b/program/src/instructions/token/post_transfer.rs
index 67937255..f04e8121 100644
--- a/program/src/instructions/token/post_transfer.rs
+++ b/program/src/instructions/token/post_transfer.rs
@@ -1,18 +1,115 @@
+use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
+use anchor_spl::token::TokenAccount;
+use solana_program::serialize_utils::read_u16;
+use solana_program::sysvar::instructions::load_instruction_at_checked;
 use solana_program::sysvar::{self};
+use std::collections::HashMap;
+use std::collections::HashSet;
 
 pub const POST_TRANSFER_DISCRIMINATOR: [u8; 8] = [195, 252, 43, 202, 149, 119, 175, 84];
 
 #[derive(Accounts)]
 pub struct PostTransferCtx<'info> {
-    mint_manager: Account<'info, MintManager>,
-    ruleset: Account<'info, Ruleset>,
+    /// CHECK: Checked by the transfer instruction
+    #[account(mut, close = collector)]
+    account_balances: Box<Account<'info, AccountBalances>>,
+    /// CHECK: This is not dangerous because it is recipient of payment
+    #[account(mut)]
+    collector: UncheckedAccount<'info>,
     /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
     #[account(address = sysvar::instructions::id())]
     instructions: UncheckedAccount<'info>,
+    // remaining_accounts
 }
 
-pub fn handler(_ctx: Context<PostTransferCtx>) -> Result<()> {
+pub fn handler(ctx: Context<PostTransferCtx>) -> Result<()> {
+    let instructions_account_info = ctx.accounts.instructions.to_account_info();
+    let instruction_sysvar = instructions_account_info.try_borrow_data()?;
+    let mut current: usize = 0;
+    let num_instructions =
+        read_u16(&mut current, &instruction_sysvar).expect("Invalid instruction");
+
+    let mut all_addresses = HashSet::new();
+    for i in 0..num_instructions {
+        let ix = load_instruction_at_checked(i.into(), &instructions_account_info)
+            .expect("Failed to get instruction");
+        for account in ix.accounts {
+            all_addresses.insert(account.pubkey);
+        }
+    }
+
+    let mut end_balances = HashMap::new();
+    let remaining_accounts = &mut ctx.remaining_accounts.iter();
+    while let Some(account) = remaining_accounts.next() {
+        if !all_addresses.remove(account.key) {
+            return Err(error!(ErrorCode::UnknownAccount));
+        }
+        end_balances.insert(
+            [account.key(), Pubkey::default()],
+            AccountBalance {
+                address: account.key(),
+                size: if let Ok(data) = account.data.try_borrow() {
+                    data.len().try_into().expect("Conversion error")
+                } else {
+                    0
+                },
+                balance: **account.lamports.borrow(),
+                mint: Pubkey::default(),
+            },
+        );
+
+        if *account.owner == spl_token::id() {
+            if let Ok(token_account) = Account::<TokenAccount>::try_from(&account) {
+                end_balances.insert(
+                    [account.key(), token_account.mint],
+                    AccountBalance {
+                        address: account.key(),
+                        size: 0,
+                        balance: token_account.amount,
+                        mint: token_account.mint,
+                    },
+                );
+            }
+        }
+    }
+    if all_addresses.len() > 0 {
+        return Err(error!(ErrorCode::AccountNotFound));
+    }
+
+    let mut balance_change_by_mint: HashMap<Pubkey, u64> = HashMap::new();
+    for account_balance in &ctx.accounts.account_balances.balances {
+        let end_balance = end_balances
+            .get(&[account_balance.address, account_balance.mint])
+            .expect("Expected to find balance");
+
+        if end_balance.mint == Pubkey::default() {
+            // saturating sub rent_exempt_minimum from start and end
+            let rent_exempt_minimum = Rent::get()?
+                .minimum_balance(account_balance.size.try_into().expect("Conversion error"));
+            let diff = end_balance
+                .balance
+                .saturating_sub(rent_exempt_minimum)
+                .saturating_sub(account_balance.balance.saturating_sub(rent_exempt_minimum));
+            let v = if let Some(current_value) = balance_change_by_mint.get(&end_balance.mint) {
+                *current_value
+            } else {
+                0
+            };
+            balance_change_by_mint
+                .insert(end_balance.mint, v.checked_add(diff).expect("Add error"));
+        } else {
+            let diff = end_balance.balance.saturating_sub(account_balance.balance);
+            let v = if let Some(current_value) = balance_change_by_mint.get(&end_balance.mint) {
+                *current_value
+            } else {
+                0
+            };
+            balance_change_by_mint
+                .insert(end_balance.mint, v.checked_add(diff).expect("Add error"));
+        }
+    }
+
     Ok(())
 }
diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
index 22157649..a3296c42 100644
--- a/program/src/instructions/token/pre_transfer.rs
+++ b/program/src/instructions/token/pre_transfer.rs
@@ -2,7 +2,6 @@ use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
 use anchor_spl::token::TokenAccount;
-use mpl_token_metadata::utils::assert_derivation;
 use solana_program::program::invoke;
 use solana_program::serialize_utils::read_u16;
 use solana_program::system_instruction::create_account;
@@ -14,13 +13,11 @@ pub const PRE_TRANSFER_DISCRIMINATOR: [u8; 8] = [158, 85, 53, 202, 155, 118, 19,
 
 #[derive(Accounts)]
 pub struct PreTransferCtx<'info> {
-    mint_manager: Account<'info, MintManager>,
-    ruleset: Account<'info, Ruleset>,
-    #[account(mut)]
-    payer: Signer<'info>,
-    /// CHECK: This is not dangerous because we check it inside the handler
+    /// CHECK: Checked by the transfer instruction
     #[account(mut)]
     account_balances: UncheckedAccount<'info>,
+    #[account(mut)]
+    payer: Signer<'info>,
     /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
     #[account(address = sysvar::instructions::id())]
     instructions: UncheckedAccount<'info>,
@@ -28,10 +25,6 @@ pub struct PreTransferCtx<'info> {
 }
 
 pub fn handler(ctx: Context<PreTransferCtx>) -> Result<()> {
-    let mint = ctx.accounts.mint_manager.mint;
-    let path = &[ACCOUNT_BALANCES_SEED.as_bytes(), mint.as_ref()];
-    assert_derivation(ctx.program_id, &ctx.accounts.account_balances, path)?;
-
     let instructions_account_info = ctx.accounts.instructions.to_account_info();
     let instruction_sysvar = instructions_account_info.try_borrow_data()?;
     let mut current: usize = 0;
@@ -47,30 +40,39 @@ pub fn handler(ctx: Context<PreTransferCtx>) -> Result<()> {
         }
     }
 
-    let mut account_balances = Vec::new();
+    let mut start_balances = Vec::new();
     let remaining_accounts = &mut ctx.remaining_accounts.iter();
     while let Some(account) = remaining_accounts.next() {
-        if !all_addresses.contains(account.key) {
+        if !all_addresses.remove(account.key) {
             return Err(error!(ErrorCode::UnknownAccount));
         }
-        account_balances.push(AccountBalance {
+        start_balances.push(AccountBalance {
             address: account.key(),
+            size: if let Ok(data) = account.data.try_borrow() {
+                data.len().try_into().expect("Conversion error")
+            } else {
+                0
+            },
             balance: **account.lamports.borrow(),
             mint: Pubkey::default(),
         });
 
         if *account.owner == spl_token::id() {
             if let Ok(token_account) = Account::<TokenAccount>::try_from(&account) {
-                account_balances.push(AccountBalance {
+                start_balances.push(AccountBalance {
                     address: account.key(),
+                    size: 0,
                     balance: token_account.amount,
                     mint: token_account.mint,
                 });
             }
         }
     }
+    if all_addresses.len() > 0 {
+        return Err(error!(ErrorCode::AccountNotFound));
+    }
 
-    let space = 8 + std::mem::size_of_val(&account_balances) + 8;
+    let space = 8 + std::mem::size_of_val(&start_balances) + 8;
     invoke(
         &create_account(
             ctx.accounts.payer.key,
@@ -88,6 +90,6 @@ pub fn handler(ctx: Context<PreTransferCtx>) -> Result<()> {
     // skip discriminator check
     let account_balances_account =
         &mut Account::<AccountBalances>::try_from_unchecked(&ctx.accounts.account_balances)?;
-    account_balances_account.balances = account_balances;
+    account_balances_account.balances = start_balances;
     Ok(())
 }
diff --git a/program/src/instructions/token/transfer.rs b/program/src/instructions/token/transfer.rs
index 61c1e6f6..761f3aec 100644
--- a/program/src/instructions/token/transfer.rs
+++ b/program/src/instructions/token/transfer.rs
@@ -53,6 +53,14 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
             .expect("Failed to get first instruction");
         let data: &[u8] = &first_ix.data;
         let disc_bytes = array_ref![data, 0, 8];
+        // check first account is account balances for this mint
+        let mint = ctx.accounts.mint_manager.mint;
+        let path = &[ACCOUNT_BALANCES_SEED.as_bytes(), mint.as_ref()];
+        let (account_balances_address, _bump) = Pubkey::find_program_address(path, ctx.program_id);
+        if account_balances_address != first_ix.accounts[0].pubkey {
+            return Err(error!(ErrorCode::InvalidPreTransferInstruction));
+        }
+        // check instruction
         if first_ix.program_id != *ctx.program_id || disc_bytes != &PRE_TRANSFER_DISCRIMINATOR {
             return Err(error!(ErrorCode::InvalidPreTransferInstruction));
         }
@@ -61,6 +69,11 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
         let last_ix =
             load_instruction_at_checked(num_instructions.into(), &instructions_account_info)
                 .expect("Failed to get last instruction");
+        // check first account is account balances for this mint
+        if account_balances_address != last_ix.accounts[0].pubkey {
+            return Err(error!(ErrorCode::InvalidPreTransferInstruction));
+        }
+        // check instruction
         let data: &[u8] = &last_ix.data;
         let disc_bytes = array_ref![data, 0, 8];
         if last_ix.program_id != *ctx.program_id || disc_bytes != &POST_TRANSFER_DISCRIMINATOR {
diff --git a/program/src/state.rs b/program/src/state.rs
index aca5c57e..c0853f3f 100644
--- a/program/src/state.rs
+++ b/program/src/state.rs
@@ -36,6 +36,7 @@ pub const ACCOUNT_BALANCES_SEED: &str = "account-balances";
 pub struct AccountBalance {
     pub address: Pubkey,
     pub mint: Pubkey,
+    pub size: u64,
     pub balance: u64,
 }
 
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index 475eb6f0..bc788198 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -463,13 +463,8 @@
       "name": "preTransfer",
       "accounts": [
         {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
+          "name": "accountBalances",
+          "isMut": true,
           "isSigner": false
         },
         {
@@ -477,11 +472,6 @@
           "isMut": true,
           "isSigner": true
         },
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
         {
           "name": "instructions",
           "isMut": false,
@@ -494,13 +484,13 @@
       "name": "postTransfer",
       "accounts": [
         {
-          "name": "mintManager",
-          "isMut": false,
+          "name": "accountBalances",
+          "isMut": true,
           "isSigner": false
         },
         {
-          "name": "ruleset",
-          "isMut": false,
+          "name": "collector",
+          "isMut": true,
           "isSigner": false
         },
         {
@@ -680,6 +670,10 @@
             "name": "mint",
             "type": "publicKey"
           },
+          {
+            "name": "size",
+            "type": "u64"
+          },
           {
             "name": "balance",
             "type": "u64"
@@ -758,6 +752,11 @@
       "code": 6013,
       "name": "UnknownAccount",
       "msg": "Unknown account found in instruction"
+    },
+    {
+      "code": 6014,
+      "name": "AccountNotFound",
+      "msg": "Account not found in instruction"
     }
   ],
   "metadata": {
diff --git a/sdk/src/generated/errors/index.ts b/sdk/src/generated/errors/index.ts
index 8a1e4054..a79f02ab 100644
--- a/sdk/src/generated/errors/index.ts
+++ b/sdk/src/generated/errors/index.ts
@@ -339,6 +339,29 @@ export class UnknownAccountError extends Error {
 createErrorFromCodeLookup.set(0x177d, () => new UnknownAccountError())
 createErrorFromNameLookup.set('UnknownAccount', () => new UnknownAccountError())
 
+/**
+ * AccountNotFound: 'Account not found in instruction'
+ *
+ * @category Errors
+ * @category generated
+ */
+export class AccountNotFoundError extends Error {
+  readonly code: number = 0x177e
+  readonly name: string = 'AccountNotFound'
+  constructor() {
+    super('Account not found in instruction')
+    if (typeof Error.captureStackTrace === 'function') {
+      Error.captureStackTrace(this, AccountNotFoundError)
+    }
+  }
+}
+
+createErrorFromCodeLookup.set(0x177e, () => new AccountNotFoundError())
+createErrorFromNameLookup.set(
+  'AccountNotFound',
+  () => new AccountNotFoundError()
+)
+
 /**
  * Attempts to resolve a custom program error from the provided error code.
  * @category Errors
diff --git a/sdk/src/generated/instructions/postTransfer.ts b/sdk/src/generated/instructions/postTransfer.ts
index 100cec45..48577320 100644
--- a/sdk/src/generated/instructions/postTransfer.ts
+++ b/sdk/src/generated/instructions/postTransfer.ts
@@ -22,16 +22,16 @@ export const postTransferStruct = new beet.BeetArgsStruct<{
 /**
  * Accounts required by the _postTransfer_ instruction
  *
- * @property [] mintManager
- * @property [] ruleset
+ * @property [_writable_] accountBalances
+ * @property [_writable_] collector
  * @property [] instructions
  * @category Instructions
  * @category PostTransfer
  * @category generated
  */
 export type PostTransferInstructionAccounts = {
-  mintManager: web3.PublicKey
-  ruleset: web3.PublicKey
+  accountBalances: web3.PublicKey
+  collector: web3.PublicKey
   instructions: web3.PublicKey
 }
 
@@ -56,13 +56,13 @@ export function createPostTransferInstruction(
   })
   const keys: web3.AccountMeta[] = [
     {
-      pubkey: accounts.mintManager,
-      isWritable: false,
+      pubkey: accounts.accountBalances,
+      isWritable: true,
       isSigner: false,
     },
     {
-      pubkey: accounts.ruleset,
-      isWritable: false,
+      pubkey: accounts.collector,
+      isWritable: true,
       isSigner: false,
     },
     {
diff --git a/sdk/src/generated/instructions/preTransfer.ts b/sdk/src/generated/instructions/preTransfer.ts
index c1bf2fd0..bf838ce1 100644
--- a/sdk/src/generated/instructions/preTransfer.ts
+++ b/sdk/src/generated/instructions/preTransfer.ts
@@ -22,20 +22,16 @@ export const preTransferStruct = new beet.BeetArgsStruct<{
 /**
  * Accounts required by the _preTransfer_ instruction
  *
- * @property [] mintManager
- * @property [] ruleset
- * @property [_writable_, **signer**] payer
  * @property [_writable_] accountBalances
+ * @property [_writable_, **signer**] payer
  * @property [] instructions
  * @category Instructions
  * @category PreTransfer
  * @category generated
  */
 export type PreTransferInstructionAccounts = {
-  mintManager: web3.PublicKey
-  ruleset: web3.PublicKey
-  payer: web3.PublicKey
   accountBalances: web3.PublicKey
+  payer: web3.PublicKey
   instructions: web3.PublicKey
 }
 
@@ -60,13 +56,8 @@ export function createPreTransferInstruction(
   })
   const keys: web3.AccountMeta[] = [
     {
-      pubkey: accounts.mintManager,
-      isWritable: false,
-      isSigner: false,
-    },
-    {
-      pubkey: accounts.ruleset,
-      isWritable: false,
+      pubkey: accounts.accountBalances,
+      isWritable: true,
       isSigner: false,
     },
     {
@@ -74,11 +65,6 @@ export function createPreTransferInstruction(
       isWritable: true,
       isSigner: true,
     },
-    {
-      pubkey: accounts.accountBalances,
-      isWritable: true,
-      isSigner: false,
-    },
     {
       pubkey: accounts.instructions,
       isWritable: false,
diff --git a/sdk/src/generated/types/AccountBalance.ts b/sdk/src/generated/types/AccountBalance.ts
index 886f8553..d5050f30 100644
--- a/sdk/src/generated/types/AccountBalance.ts
+++ b/sdk/src/generated/types/AccountBalance.ts
@@ -11,6 +11,7 @@ import * as beetSolana from '@metaplex-foundation/beet-solana'
 export type AccountBalance = {
   address: web3.PublicKey
   mint: web3.PublicKey
+  size: beet.bignum
   balance: beet.bignum
 }
 
@@ -22,6 +23,7 @@ export const accountBalanceBeet = new beet.BeetArgsStruct<AccountBalance>(
   [
     ['address', beetSolana.publicKey],
     ['mint', beetSolana.publicKey],
+    ['size', beet.u64],
     ['balance', beet.u64],
   ],
   'AccountBalance'
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
index 6bd8a94e..d3c97378 100644
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ b/sdk/src/idl/cardinal_creator_standard.ts
@@ -463,13 +463,8 @@ export type CardinalCreatorStandard = {
       "name": "preTransfer",
       "accounts": [
         {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
+          "name": "accountBalances",
+          "isMut": true,
           "isSigner": false
         },
         {
@@ -477,11 +472,6 @@ export type CardinalCreatorStandard = {
           "isMut": true,
           "isSigner": true
         },
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
         {
           "name": "instructions",
           "isMut": false,
@@ -494,13 +484,13 @@ export type CardinalCreatorStandard = {
       "name": "postTransfer",
       "accounts": [
         {
-          "name": "mintManager",
-          "isMut": false,
+          "name": "accountBalances",
+          "isMut": true,
           "isSigner": false
         },
         {
-          "name": "ruleset",
-          "isMut": false,
+          "name": "collector",
+          "isMut": true,
           "isSigner": false
         },
         {
@@ -680,6 +670,10 @@ export type CardinalCreatorStandard = {
             "name": "mint",
             "type": "publicKey"
           },
+          {
+            "name": "size",
+            "type": "u64"
+          },
           {
             "name": "balance",
             "type": "u64"
@@ -758,6 +752,11 @@ export type CardinalCreatorStandard = {
       "code": 6013,
       "name": "UnknownAccount",
       "msg": "Unknown account found in instruction"
+    },
+    {
+      "code": 6014,
+      "name": "AccountNotFound",
+      "msg": "Account not found in instruction"
     }
   ]
 };
@@ -1227,13 +1226,8 @@ export const IDL: CardinalCreatorStandard = {
       "name": "preTransfer",
       "accounts": [
         {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
+          "name": "accountBalances",
+          "isMut": true,
           "isSigner": false
         },
         {
@@ -1241,11 +1235,6 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": true,
           "isSigner": true
         },
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
         {
           "name": "instructions",
           "isMut": false,
@@ -1258,13 +1247,13 @@ export const IDL: CardinalCreatorStandard = {
       "name": "postTransfer",
       "accounts": [
         {
-          "name": "mintManager",
-          "isMut": false,
+          "name": "accountBalances",
+          "isMut": true,
           "isSigner": false
         },
         {
-          "name": "ruleset",
-          "isMut": false,
+          "name": "collector",
+          "isMut": true,
           "isSigner": false
         },
         {
@@ -1444,6 +1433,10 @@ export const IDL: CardinalCreatorStandard = {
             "name": "mint",
             "type": "publicKey"
           },
+          {
+            "name": "size",
+            "type": "u64"
+          },
           {
             "name": "balance",
             "type": "u64"
@@ -1522,6 +1515,11 @@ export const IDL: CardinalCreatorStandard = {
       "code": 6013,
       "name": "UnknownAccount",
       "msg": "Unknown account found in instruction"
+    },
+    {
+      "code": 6014,
+      "name": "AccountNotFound",
+      "msg": "Account not found in instruction"
     }
   ]
 };

From 612f520863d62948815bdde94321b87d981b4f3f Mon Sep 17 00:00:00 2001
From: Giannis Chatziveroglou <gchatz@mit.edu>
Date: Fri, 21 Oct 2022 10:42:31 -0700
Subject: [PATCH 18/37] program owner for account_balances

---
 program/src/instructions/token/pre_transfer.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/program/src/instructions/token/pre_transfer.rs b/program/src/instructions/token/pre_transfer.rs
index a3296c42..d3bd28b1 100644
--- a/program/src/instructions/token/pre_transfer.rs
+++ b/program/src/instructions/token/pre_transfer.rs
@@ -79,7 +79,7 @@ pub fn handler(ctx: Context<PreTransferCtx>) -> Result<()> {
             ctx.accounts.account_balances.key,
             Rent::get()?.minimum_balance(space),
             space.try_into().expect("Error allocating space"),
-            &spl_token::id(),
+            ctx.program_id,
         ),
         &[
             ctx.accounts.payer.to_account_info(),

From 3cc0727ca1fcf15330f9737199312a784631d419 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 16:32:34 -0400
Subject: [PATCH 19/37] Test fixes

---
 Makefile                                      |   2 +-
 .../mint_manager/init_mint_manager.rs         |   4 +-
 .../src/instructions/ruleset/init_ruleset.rs  |   2 +
 .../instructions/ruleset/update_ruleset.rs    |   4 +
 sdk/idl/cardinal_creator_standard.json        |  12 ++
 sdk/package.json                              |   3 +-
 sdk/src/errors/formatLogs.ts                  |  73 ++++++++
 sdk/src/errors/parseTransactionLogs.ts        | 170 ++++++++++++++++++
 sdk/src/errors/programErrors.ts               | 152 ++++++++++++++++
 sdk/src/generated/types/InitRulesetIx.ts      |   2 +
 sdk/src/generated/types/UpdateRulesetIx.ts    |   6 +-
 sdk/src/idl/cardinal_creator_standard.ts      |  24 +++
 sdk/src/pda.ts                                |   4 +-
 sdk/{ => src}/utils.ts                        |  31 +++-
 sdk/tests/init.test.ts                        |  77 +++++---
 sdk/tsconfig.json                             |   2 +-
 sdk/yarn.lock                                 |   5 +
 17 files changed, 537 insertions(+), 36 deletions(-)
 create mode 100644 sdk/src/errors/formatLogs.ts
 create mode 100644 sdk/src/errors/parseTransactionLogs.ts
 create mode 100644 sdk/src/errors/programErrors.ts
 rename sdk/{ => src}/utils.ts (73%)

diff --git a/Makefile b/Makefile
index 5e9ba9e7..2e0082c0 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ start:
 	pkill solana-test-validator || true
 	solana-test-validator --url https://api.mainnet-beta.solana.com \
 		--clone metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s --clone PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT \
-		--bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./program/target/deploy/cardinal_creator_standard.so \
+		--bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./target/deploy/cardinal_creator_standard.so \
 		--reset --quiet & echo $$! > validator.PID
 	sleep 8
 	solana airdrop 1000 $(TEST_KEY) --url http://localhost:8899
diff --git a/program/src/instructions/mint_manager/init_mint_manager.rs b/program/src/instructions/mint_manager/init_mint_manager.rs
index 511a2766..9c10b884 100644
--- a/program/src/instructions/mint_manager/init_mint_manager.rs
+++ b/program/src/instructions/mint_manager/init_mint_manager.rs
@@ -47,7 +47,7 @@ pub fn handler(ctx: Context<InitMintManagerCtx>) -> Result<()> {
     // set mint authoriy
     let cpi_accounts = SetAuthority {
         account_or_mint: ctx.accounts.mint.to_account_info(),
-        current_authority: ctx.accounts.mint_manager.to_account_info(),
+        current_authority: ctx.accounts.authority.to_account_info(),
     };
     let cpi_program = ctx.accounts.token_program.to_account_info();
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
@@ -60,7 +60,7 @@ pub fn handler(ctx: Context<InitMintManagerCtx>) -> Result<()> {
     // set freeze authoriy
     let cpi_accounts = SetAuthority {
         account_or_mint: ctx.accounts.mint.to_account_info(),
-        current_authority: ctx.accounts.mint_manager.to_account_info(),
+        current_authority: ctx.accounts.authority.to_account_info(),
     };
     let cpi_program = ctx.accounts.token_program.to_account_info();
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
diff --git a/program/src/instructions/ruleset/init_ruleset.rs b/program/src/instructions/ruleset/init_ruleset.rs
index bc00a9a2..7f1d58bd 100644
--- a/program/src/instructions/ruleset/init_ruleset.rs
+++ b/program/src/instructions/ruleset/init_ruleset.rs
@@ -5,6 +5,7 @@ use anchor_lang::prelude::*;
 pub struct InitRulesetIx {
     pub check_seller_fee_basis_points: bool,
     pub name: String,
+    pub collector: Pubkey,
     pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
 }
@@ -31,6 +32,7 @@ pub fn handler(ctx: Context<InitRulesetCtx>, ix: InitRulesetIx) -> Result<()> {
     ruleset.bump = *ctx.bumps.get("ruleset").unwrap();
     ruleset.version = 0;
     ruleset.authority = ctx.accounts.authority.key();
+    ruleset.collector = ix.collector;
     ruleset.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
     ruleset.name = ix.name;
     ruleset.allowed_programs = ix.allowed_programs;
diff --git a/program/src/instructions/ruleset/update_ruleset.rs b/program/src/instructions/ruleset/update_ruleset.rs
index b4949ab9..83109ed7 100644
--- a/program/src/instructions/ruleset/update_ruleset.rs
+++ b/program/src/instructions/ruleset/update_ruleset.rs
@@ -4,6 +4,8 @@ use anchor_lang::prelude::*;
 
 #[derive(AnchorSerialize, AnchorDeserialize)]
 pub struct UpdateRulesetIx {
+    pub authority: Pubkey,
+    pub collector: Pubkey,
     pub check_seller_fee_basis_points: bool,
     pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
@@ -21,6 +23,8 @@ pub struct UpdateRulesetCtx<'info> {
 
 pub fn handler(ctx: Context<UpdateRulesetCtx>, ix: UpdateRulesetIx) -> Result<()> {
     let ruleset = &mut ctx.accounts.ruleset;
+    ruleset.authority = ix.authority;
+    ruleset.collector = ix.collector;
     ruleset.check_seller_fee_basis_points = ix.check_seller_fee_basis_points;
     ruleset.allowed_programs = ix.allowed_programs;
     ruleset.disallowed_addresses = ix.disallowed_addresses;
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index bc788198..11587c4e 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -618,6 +618,10 @@
             "name": "name",
             "type": "string"
           },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "disallowedAddresses",
             "type": {
@@ -638,6 +642,14 @@
       "type": {
         "kind": "struct",
         "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "checkSellerFeeBasisPoints",
             "type": "bool"
diff --git a/sdk/package.json b/sdk/package.json
index 173c55fe..dec23373 100644
--- a/sdk/package.json
+++ b/sdk/package.json
@@ -19,11 +19,12 @@
   "devDependencies": {
     "@rushstack/eslint-patch": "^1.2.0",
     "@types/jest": "^29.2.0",
+    "colors": "^1.4.0",
     "dotenv": "^16.0.3",
     "eslint": "^8.25.0",
     "eslint-import-resolver-node": "^0.3.6",
-    "eslint-plugin-import": "^2.26.0",
     "eslint-plugin-github": "^4.3.2",
+    "eslint-plugin-import": "^2.26.0",
     "eslint-plugin-jest": "^25.3.2",
     "jest": "^29.2.1",
     "lint-staged": "^13.0.3",
diff --git a/sdk/src/errors/formatLogs.ts b/sdk/src/errors/formatLogs.ts
new file mode 100644
index 00000000..3cf2ef91
--- /dev/null
+++ b/sdk/src/errors/formatLogs.ts
@@ -0,0 +1,73 @@
+import type { SendTransactionError } from "@solana/web3.js";
+import { default as colors } from "colors/safe.js";
+import {
+  InstructionLogs,
+  LogMessage,
+  parseProgramLogs,
+} from "./parseTransactionLogs";
+
+/**
+ * Formats a log entry to be printed out.
+ * @param entry
+ * @param prefix
+ * @returns
+ */
+export const formatLogEntry = (entry: LogMessage): string => {
+  switch (entry.style) {
+    case "success":
+      return `Program returned success`;
+    case "muted":
+      return `Program returned error: ${entry.text}`;
+    case "info":
+      return `Runtime error: ${entry.text}`;
+    case "warning":
+      return entry.text;
+  }
+};
+
+/**
+ * Formats instruction logs to be printed to the console.
+ * @param logs
+ */
+export const formatInstructionLogsForConsole = (
+  logs: readonly InstructionLogs[]
+): string =>
+  logs
+    .map((log, i) => {
+      return [
+        [
+          colors.bold(colors.blue("=> ")),
+          colors.bold(colors.white(`Instruction #${i}: `)),
+          log.invokedProgram
+            ? colors.yellow(`Program ${log.invokedProgram}`)
+            : "System",
+        ].join(""),
+        ...log.logs.map((entry) => {
+          const entryStr = formatLogEntry(entry);
+          switch (entry.style) {
+            case "info":
+              return colors.white(entryStr);
+            case "warning":
+              return colors.cyan(entryStr);
+            case "muted":
+              return colors.white(entryStr);
+            case "success":
+              return colors.green(entryStr);
+          }
+        }),
+      ].join("\n");
+    })
+    .join("\n");
+
+export const printSendTransactionError = (err: SendTransactionError) => {
+  try {
+    const parsed = parseProgramLogs(err.logs ?? [], err);
+    console.log(formatInstructionLogsForConsole(parsed));
+  } catch (e) {
+    console.warn(
+      colors.yellow("Could not print logs due to error. Printing raw logs"),
+      e
+    );
+    console.log(err.logs?.join("\n"));
+  }
+};
diff --git a/sdk/src/errors/parseTransactionLogs.ts b/sdk/src/errors/parseTransactionLogs.ts
new file mode 100644
index 00000000..ecbf80a1
--- /dev/null
+++ b/sdk/src/errors/parseTransactionLogs.ts
@@ -0,0 +1,170 @@
+/**
+ * Adapted from explorer.solana.com code written by @jstarry.
+ */
+
+import { TransactionError } from "@solana/web3.js";
+import {
+  getTransactionInstructionError,
+  getProgramName,
+} from "./programErrors";
+
+export type LogMessage = {
+  text: string;
+  prefix: string;
+  style: "muted" | "info" | "success" | "warning";
+};
+
+export type InstructionLogs = {
+  invokedProgram: string | null;
+  logs: LogMessage[];
+  computeUnits: number;
+  truncated: boolean;
+  failed: boolean;
+};
+
+export function parseProgramLogs(
+  logs: string[],
+  error: TransactionError | null
+): InstructionLogs[] {
+  let depth = 0;
+  let prettyLogs: InstructionLogs[] = [];
+  function prefixBuilder(
+    // Indent level starts at 1.
+    indentLevel: number
+  ) {
+    let prefix;
+    if (indentLevel <= 0) {
+      console.warn(
+        `Tried to build a prefix for a program log at indent level \`${indentLevel}\`. ` +
+          "Logs should only ever be built at indent level 1 or higher."
+      );
+      prefix = "";
+    } else {
+      prefix = new Array(indentLevel - 1).fill("\u00A0\u00A0").join("");
+    }
+    return prefix + "> ";
+  }
+
+  let prettyError;
+  if (error) {
+    prettyError = getTransactionInstructionError(error);
+  }
+
+  logs.forEach((log) => {
+    if (log.startsWith("Program log:")) {
+      // Use passive tense
+      log = log.replace(/Program log: (.*)/g, (_match, p1) => {
+        return `Program logged: "${p1}"`;
+      });
+
+      prettyLogs[prettyLogs.length - 1]?.logs.push({
+        prefix: prefixBuilder(depth),
+        text: log,
+        style: "muted",
+      });
+    } else if (log.startsWith("Log truncated")) {
+      prettyLogs[prettyLogs.length - 1]!.truncated = true;
+    } else {
+      const regex = /Program (\w*) invoke \[(\d)\]/g;
+      const matches = [...log.matchAll(regex)];
+
+      if (matches.length > 0) {
+        const programAddress = matches[0]![1];
+        const programName = getProgramName(programAddress);
+
+        if (depth === 0) {
+          prettyLogs.push({
+            invokedProgram: programAddress ?? null,
+            logs: [],
+            computeUnits: 0,
+            failed: false,
+            truncated: false,
+          });
+        } else {
+          prettyLogs[prettyLogs.length - 1]?.logs.push({
+            prefix: prefixBuilder(depth),
+            style: "info",
+            text: `Program invoked: ${programName}`,
+          });
+        }
+
+        depth++;
+      } else if (log.includes("success")) {
+        prettyLogs[prettyLogs.length - 1]?.logs.push({
+          prefix: prefixBuilder(depth),
+          style: "success",
+          text: `Program returned success`,
+        });
+        depth--;
+      } else if (log.includes("failed")) {
+        const instructionLog = prettyLogs[prettyLogs.length - 1]!;
+        instructionLog.failed = true;
+        instructionLog.logs.push({
+          prefix: prefixBuilder(depth),
+          style: "warning",
+          text: `Program returned error: "${log.slice(log.indexOf(": ") + 2)}"`,
+        });
+        depth--;
+      } else {
+        if (depth === 0) {
+          prettyLogs.push({
+            invokedProgram: null,
+            logs: [],
+            computeUnits: 0,
+            failed: false,
+            truncated: false,
+          });
+          depth++;
+        }
+
+        // Remove redundant program address from logs
+        log = log.replace(
+          /Program \w* consumed (\d*) (.*)/g,
+          (_match, p1, p2) => {
+            // Only aggregate compute units consumed from top-level tx instructions
+            // because they include inner ix compute units as well.
+            if (depth === 1) {
+              prettyLogs[prettyLogs.length - 1]!.computeUnits +=
+                Number.parseInt(p1);
+            }
+
+            return `Program consumed: ${p1} ${p2}`;
+          }
+        );
+
+        // native program logs don't start with "Program log:"
+        prettyLogs[prettyLogs.length - 1]?.logs.push({
+          prefix: prefixBuilder(depth),
+          text: log,
+          style: "muted",
+        });
+      }
+    }
+  });
+
+  // If the instruction's simulation returned an error without any logs then add an empty log entry for Runtime error
+  // For example BpfUpgradableLoader fails without returning any logs for Upgrade instruction with buffer that doesn't exist
+  if (prettyError && prettyLogs.length === 0) {
+    prettyLogs.push({
+      invokedProgram: null,
+      logs: [],
+      computeUnits: 0,
+      failed: true,
+      truncated: false,
+    });
+  }
+
+  if (prettyError && prettyError.index === prettyLogs.length - 1) {
+    const failedIx = prettyLogs[prettyError.index];
+    if (failedIx && !failedIx?.failed) {
+      failedIx.failed = true;
+      failedIx.logs.push({
+        prefix: prefixBuilder(1),
+        text: `Runtime error: ${prettyError.message}`,
+        style: "warning",
+      });
+    }
+  }
+
+  return prettyLogs;
+}
diff --git a/sdk/src/errors/programErrors.ts b/sdk/src/errors/programErrors.ts
new file mode 100644
index 00000000..e6a9ba1a
--- /dev/null
+++ b/sdk/src/errors/programErrors.ts
@@ -0,0 +1,152 @@
+/**
+ * Adapted from explorer.solana.com code written by @jstarry.
+ */
+
+import { TransactionError } from "@solana/web3.js";
+
+const instructionErrorMessage: Map<string, string> = new Map([
+  ["GenericError", "generic instruction error"],
+  ["InvalidArgument", "invalid program argument"],
+  ["InvalidInstructionData", "invalid instruction data"],
+  ["InvalidAccountData", "invalid account data for instruction"],
+  ["AccountDataTooSmall", "account data too small for instruction"],
+  ["InsufficientFunds", "insufficient funds for instruction"],
+  ["IncorrectProgramId", "incorrect program id for instruction"],
+  ["MissingRequiredSignature", "missing required signature for instruction"],
+  [
+    "AccountAlreadyInitialized",
+    "instruction requires an uninitialized account",
+  ],
+  ["UninitializedAccount", "instruction requires an initialized account"],
+  [
+    "UnbalancedInstruction",
+    "sum of account balances before and after instruction do not match",
+  ],
+  ["ModifiedProgramId", "instruction modified the program id of an account"],
+  [
+    "ExternalAccountLamportSpend",
+    "instruction spent from the balance of an account it does not own",
+  ],
+  [
+    "ExternalAccountDataModified",
+    "instruction modified data of an account it does not own",
+  ],
+  [
+    "ReadonlyLamportChange",
+    "instruction changed the balance of a read-only account",
+  ],
+  ["ReadonlyDataModified", "instruction modified data of a read-only account"],
+  ["DuplicateAccountIndex", "instruction contains duplicate accounts"],
+  ["ExecutableModified", "instruction changed executable bit of an account"],
+  ["RentEpochModified", "instruction modified rent epoch of an account"],
+  ["NotEnoughAccountKeys", "insufficient account keys for instruction"],
+  ["AccountDataSizeChanged", "non-system instruction changed account size"],
+  ["AccountNotExecutable", "instruction expected an executable account"],
+  [
+    "AccountBorrowFailed",
+    "instruction tries to borrow reference for an account which is already borrowed",
+  ],
+  [
+    "AccountBorrowOutstanding",
+    "instruction left account with an outstanding borrowed reference",
+  ],
+  [
+    "DuplicateAccountOutOfSync",
+    "instruction modifications of multiply-passed account differ",
+  ],
+  ["Custom", "custom program error: {0}"],
+  ["InvalidError", "program returned invalid error code"],
+  ["ExecutableDataModified", "instruction changed executable accounts data"],
+  [
+    "ExecutableLamportChange",
+    "instruction changed the balance of a executable account",
+  ],
+  ["ExecutableAccountNotRentExempt", "executable accounts must be rent exempt"],
+  ["UnsupportedProgramId", "Unsupported program id"],
+  ["CallDepth", "Cross-program invocation call depth too deep"],
+  ["MissingAccount", "An account required by the instruction is missing"],
+  [
+    "ReentrancyNotAllowed",
+    "Cross-program invocation reentrancy not allowed for this instruction",
+  ],
+  [
+    "MaxSeedLengthExceeded",
+    "Length of the seed is too long for address generation",
+  ],
+  ["InvalidSeeds", "Provided seeds do not result in a valid address"],
+  ["InvalidRealloc", "Failed to reallocate account data"],
+  ["ComputationalBudgetExceeded", "Computational budget exceeded"],
+  [
+    "PrivilegeEscalation",
+    "Cross-program invocation with unauthorized signer or writable account",
+  ],
+  [
+    "ProgramEnvironmentSetupFailure",
+    "Failed to create program execution environment",
+  ],
+  ["ProgramFailedToComplete", "Program failed to complete"],
+  ["ProgramFailedToCompile", "Program failed to compile"],
+  ["Immutable", "Account is immutable"],
+  ["IncorrectAuthority", "Incorrect authority provided"],
+  ["BorshIoError", "Failed to serialize or deserialize account data: {0}"],
+  [
+    "AccountNotRentExempt",
+    "An account does not have enough lamports to be rent-exempt",
+  ],
+  ["InvalidAccountOwner", "Invalid account owner"],
+  ["ArithmeticOverflow", "Program arithmetic overflowed"],
+  ["UnsupportedSysvar", "Unsupported sysvar"],
+  ["IllegalOwner", "Provided owner is not allowed"],
+]);
+
+export type ProgramError = {
+  index: number;
+  message: string;
+};
+
+export function getTransactionInstructionError(
+  error?: TransactionError | { InstructionError: number[] } | null
+): ProgramError | undefined {
+  if (!error) {
+    return;
+  }
+
+  if (typeof error === "object" && "InstructionError" in error) {
+    const innerError = error["InstructionError"];
+    const index = innerError[0] as number;
+    const instructionError = innerError[1];
+
+    return {
+      index,
+      message: getInstructionError(instructionError),
+    };
+  }
+}
+
+function getInstructionError(error: any): string {
+  let out;
+  let value;
+
+  if (typeof error === "string") {
+    const message = instructionErrorMessage.get(error);
+    if (message) {
+      return message;
+    }
+  } else if ("Custom" in error) {
+    out = instructionErrorMessage.get("Custom");
+    value = error["Custom"];
+  } else if ("BorshIoError" in error) {
+    out = instructionErrorMessage.get("BorshIoError");
+    value = error["BorshIoError"];
+  }
+
+  if (out && value) {
+    return out.replace("{0}", value);
+  }
+
+  return "Unknown instruction error";
+}
+
+export function getProgramName(address: string | undefined): string {
+  return address ?? "????";
+}
diff --git a/sdk/src/generated/types/InitRulesetIx.ts b/sdk/src/generated/types/InitRulesetIx.ts
index 64d9ef11..c427dc70 100644
--- a/sdk/src/generated/types/InitRulesetIx.ts
+++ b/sdk/src/generated/types/InitRulesetIx.ts
@@ -11,6 +11,7 @@ import * as beetSolana from '@metaplex-foundation/beet-solana'
 export type InitRulesetIx = {
   checkSellerFeeBasisPoints: boolean
   name: string
+  collector: web3.PublicKey
   disallowedAddresses: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
 }
@@ -23,6 +24,7 @@ export const initRulesetIxBeet = new beet.FixableBeetArgsStruct<InitRulesetIx>(
   [
     ['checkSellerFeeBasisPoints', beet.bool],
     ['name', beet.utf8String],
+    ['collector', beetSolana.publicKey],
     ['disallowedAddresses', beet.array(beetSolana.publicKey)],
     ['allowedPrograms', beet.array(beetSolana.publicKey)],
   ],
diff --git a/sdk/src/generated/types/UpdateRulesetIx.ts b/sdk/src/generated/types/UpdateRulesetIx.ts
index 3f430e58..af640807 100644
--- a/sdk/src/generated/types/UpdateRulesetIx.ts
+++ b/sdk/src/generated/types/UpdateRulesetIx.ts
@@ -6,9 +6,11 @@
  */
 
 import * as web3 from '@solana/web3.js'
-import * as beet from '@metaplex-foundation/beet'
 import * as beetSolana from '@metaplex-foundation/beet-solana'
+import * as beet from '@metaplex-foundation/beet'
 export type UpdateRulesetIx = {
+  authority: web3.PublicKey
+  collector: web3.PublicKey
   checkSellerFeeBasisPoints: boolean
   disallowedAddresses: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
@@ -21,6 +23,8 @@ export type UpdateRulesetIx = {
 export const updateRulesetIxBeet =
   new beet.FixableBeetArgsStruct<UpdateRulesetIx>(
     [
+      ['authority', beetSolana.publicKey],
+      ['collector', beetSolana.publicKey],
       ['checkSellerFeeBasisPoints', beet.bool],
       ['disallowedAddresses', beet.array(beetSolana.publicKey)],
       ['allowedPrograms', beet.array(beetSolana.publicKey)],
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
index d3c97378..dbef73e2 100644
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ b/sdk/src/idl/cardinal_creator_standard.ts
@@ -618,6 +618,10 @@ export type CardinalCreatorStandard = {
             "name": "name",
             "type": "string"
           },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "disallowedAddresses",
             "type": {
@@ -638,6 +642,14 @@ export type CardinalCreatorStandard = {
       "type": {
         "kind": "struct",
         "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "checkSellerFeeBasisPoints",
             "type": "bool"
@@ -1381,6 +1393,10 @@ export const IDL: CardinalCreatorStandard = {
             "name": "name",
             "type": "string"
           },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "disallowedAddresses",
             "type": {
@@ -1401,6 +1417,14 @@ export const IDL: CardinalCreatorStandard = {
       "type": {
         "kind": "struct",
         "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
           {
             "name": "checkSellerFeeBasisPoints",
             "type": "bool"
diff --git a/sdk/src/pda.ts b/sdk/src/pda.ts
index 24eb2751..031c61a3 100644
--- a/sdk/src/pda.ts
+++ b/sdk/src/pda.ts
@@ -10,9 +10,9 @@ export const findMintManagerId = (mintId: PublicKey) => {
   )[0];
 };
 
-export const findStandardId = (name: string) => {
+export const findRulesetId = (name: string) => {
   return findProgramAddressSync(
-    [utils.bytes.utf8.encode("standard"), utils.bytes.utf8.encode(name)],
+    [utils.bytes.utf8.encode("ruleset"), utils.bytes.utf8.encode(name)],
     PROGRAM_ID
   )[0];
 };
diff --git a/sdk/utils.ts b/sdk/src/utils.ts
similarity index 73%
rename from sdk/utils.ts
rename to sdk/src/utils.ts
index ac05915d..6e93f5a4 100644
--- a/sdk/utils.ts
+++ b/sdk/src/utils.ts
@@ -2,10 +2,13 @@ import {
   Connection,
   Transaction,
   sendAndConfirmRawTransaction,
+  SendTransactionError,
 } from "@solana/web3.js";
 import { PublicKey, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
-import { PROGRAM_ADDRESS } from "./src/generated";
+import { PROGRAM_ADDRESS } from "./generated";
 import { utils, Wallet } from "@project-serum/anchor";
+import { parseProgramLogs } from "./errors/parseTransactionLogs";
+import { formatInstructionLogsForConsole } from "./errors/formatLogs";
 
 export async function newAccountWithLamports(
   connection: Connection,
@@ -36,10 +39,16 @@ export async function executeTransaction(
   tx.recentBlockhash = await (await connection.getLatestBlockhash()).blockhash;
   tx.feePayer = wallet.publicKey;
   await wallet.signTransaction(tx);
-  return sendAndConfirmRawTransaction(connection, tx.serialize());
+  try {
+    const txid = await sendAndConfirmRawTransaction(connection, tx.serialize());
+    return txid;
+  } catch (e) {
+    handleError(e);
+    throw e;
+  }
 }
 
-type CardinalProvider = {
+export type CardinalProvider = {
   connection: Connection;
   wallet: Wallet;
   keypair: Keypair;
@@ -96,3 +105,19 @@ export const keypairFrom = (s: string, n?: string): Keypair => {
     }
   }
 };
+
+export const handleError = (e: any) => {
+  const message = (e as SendTransactionError).message ?? "";
+  const logs =
+    (e as SendTransactionError).logs ?? [
+      (e as SendTransactionError).message ?? "",
+    ] ?? [(e as Error).toString()] ??
+    [];
+  if (logs) {
+    const parsed = parseProgramLogs(logs, message);
+    const fmt = formatInstructionLogsForConsole(parsed);
+    console.log(fmt);
+  } else {
+    console.log(e);
+  }
+};
diff --git a/sdk/tests/init.test.ts b/sdk/tests/init.test.ts
index 29daaea3..ec6a7e70 100644
--- a/sdk/tests/init.test.ts
+++ b/sdk/tests/init.test.ts
@@ -1,23 +1,32 @@
 import { test, beforeAll, expect } from "@jest/globals";
-import { executeTransaction, getProvider } from "../utils";
+import {
+  CardinalProvider,
+  executeTransaction,
+  getProvider,
+} from "../src/utils";
 import type { PublicKey } from "@solana/web3.js";
 import { Keypair, Transaction } from "@solana/web3.js";
-import { createMint } from "@solana/spl-token";
+import {
+  createMint,
+  getOrCreateAssociatedTokenAccount,
+  mintTo,
+} from "@solana/spl-token";
 import {
   findMintManagerId,
   createInitMintManagerInstruction,
   MintManager,
-  createInitStandardInstruction,
-  findStandardId,
-  Standard,
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
 } from "../src";
 let mint: PublicKey;
 
-const STANDARD_NAME = "global";
-const STANDARD_ID = findStandardId(STANDARD_NAME);
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
 
 beforeAll(async () => {
-  const provider = await getProvider();
+  provider = await getProvider();
   const mintKeypair = Keypair.generate();
   mint = await createMint(
     provider.connection,
@@ -27,53 +36,71 @@ beforeAll(async () => {
     0,
     mintKeypair
   );
+  const ata = await getOrCreateAssociatedTokenAccount(
+    provider.connection,
+    provider.keypair,
+    mint,
+    provider.wallet.publicKey
+  );
+  await mintTo(
+    provider.connection,
+    provider.keypair,
+    mint,
+    ata.address,
+    provider.wallet.publicKey,
+    1
+  );
 });
 
-test("Create standard", async () => {
-  const provider = await getProvider();
+test("Create ruleset", async () => {
   const tx = new Transaction();
   tx.add(
-    createInitStandardInstruction(
+    createInitRulesetInstruction(
       {
-        standard: STANDARD_ID,
+        ruleset: RULESET_ID,
         authority: provider.wallet.publicKey,
         payer: provider.wallet.publicKey,
       },
       {
         ix: {
-          standardName: STANDARD_NAME,
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
           checkSellerFeeBasisPoints: true,
-          disallowedPrograms: [],
+          disallowedAddresses: [],
           allowedPrograms: [],
         },
       }
     )
   );
   await executeTransaction(provider.connection, tx, provider.wallet);
-  const standard = await Standard.fromAccountAddress(
+  const ruleset = await Ruleset.fromAccountAddress(
     provider.connection,
-    STANDARD_ID
+    RULESET_ID
   );
-  expect(standard.authority.toString()).toBe(
+  expect(ruleset.authority.toString()).toBe(
     provider.wallet.publicKey.toString()
   );
-  expect(standard.checkSellerFeeBasisPoints).toBe(true);
-  expect(standard.disallowedPrograms).toBe([]);
-  expect(standard.allowedPrograms).toBe([]);
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
 });
 
 test("Init", async () => {
-  const provider = await getProvider();
   const mintManagerId = findMintManagerId(mint);
   const tx = new Transaction();
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
   tx.add(
     createInitMintManagerInstruction({
       mint: mint,
       mintManager: mintManagerId,
       authority: provider.wallet.publicKey,
       payer: provider.wallet.publicKey,
-      collector: provider.wallet.publicKey,
-      standard: Keypair.generate().publicKey,
+      collector: ruleset.collector,
+      ruleset: RULESET_ID,
     })
   );
   await executeTransaction(provider.connection, tx, provider.wallet);
@@ -86,7 +113,7 @@ test("Init", async () => {
   expect(mintManager.authority.toString()).toBe(
     provider.wallet.publicKey.toString()
   );
-  expect(mintManager.standard.toString()).toBe(
-    findStandardId(STANDARD_NAME).toString()
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME).toString()
   );
 });
diff --git a/sdk/tsconfig.json b/sdk/tsconfig.json
index 0b3672af..178243b6 100644
--- a/sdk/tsconfig.json
+++ b/sdk/tsconfig.json
@@ -36,5 +36,5 @@
     "declarationMap": true,
     "inlineSources": true
   },
-  "include": ["src/", "tests/"]
+  "include": ["src/", "tests/", "src/utils.ts"]
 }
diff --git a/sdk/yarn.lock b/sdk/yarn.lock
index 252264f8..b4cce8e6 100644
--- a/sdk/yarn.lock
+++ b/sdk/yarn.lock
@@ -1499,6 +1499,11 @@ colorette@^2.0.16, colorette@^2.0.17:
   resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
   integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
 
+colors@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+  integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
 commander@^2.20.3:
   version "2.20.3"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"

From 8beab5e2dc6c288d8f2469f316dcd15cc6253de4 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Fri, 21 Oct 2022 17:06:10 -0400
Subject: [PATCH 20/37] Init mint test

---
 program/src/instructions/token/init_mint.rs   |   8 +-
 sdk/package.json                              |   3 +-
 sdk/src/utils.ts                              |   5 +-
 sdk/tests/initRulesetInitMint.test.ts         | 101 ++++++++++++++++++
 ...test.ts => initRulesetMintManager.test.ts} |  34 ++----
 sdk/tests/utils.ts                            |  31 ++++++
 sdk/tsconfig.json                             |   3 +-
 sdk/yarn.lock                                 |  21 ++++
 8 files changed, 169 insertions(+), 37 deletions(-)
 create mode 100644 sdk/tests/initRulesetInitMint.test.ts
 rename sdk/tests/{init.test.ts => initRulesetMintManager.test.ts} (81%)
 create mode 100644 sdk/tests/utils.ts

diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index 5a35a2d5..ece0eae5 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -6,7 +6,6 @@ use anchor_spl::associated_token::AssociatedToken;
 use anchor_spl::associated_token::{self};
 use anchor_spl::token::MintTo;
 use anchor_spl::token::Token;
-use anchor_spl::token::TokenAccount;
 use anchor_spl::token::{self};
 use solana_program::program_pack::Pack;
 use solana_program::system_instruction::create_account;
@@ -30,7 +29,7 @@ pub struct InitMintCtx<'info> {
 
     /// CHECK: Account created or checked in handler
     #[account(mut)]
-    target_token_account: Account<'info, TokenAccount>,
+    target_token_account: UncheckedAccount<'info>,
     target: Signer<'info>,
 
     /// CHECK: Account is not read from
@@ -107,11 +106,6 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
         let cpi_program = ctx.accounts.token_program.to_account_info();
         let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
         associated_token::create(cpi_context)?;
-    } else if ctx.accounts.target_token_account.mint != ctx.accounts.mint_manager.mint
-        || ctx.accounts.target_token_account.owner != ctx.accounts.target.key()
-        || ctx.accounts.target_token_account.amount != 0
-    {
-        return Err(error!(ErrorCode::InvalidTargetTokenAccount));
     }
 
     // mint to
diff --git a/sdk/package.json b/sdk/package.json
index dec23373..26571766 100644
--- a/sdk/package.json
+++ b/sdk/package.json
@@ -14,7 +14,8 @@
     "@metaplex-foundation/rustbin": "^0.3.1",
     "@metaplex-foundation/solita": "^0.12.2",
     "@project-serum/anchor": "^0.25.0",
-    "@solana/spl-token": "^0.3.5"
+    "@solana/spl-token": "^0.3.5",
+    "@solana/web3.js": "^1.66.2"
   },
   "devDependencies": {
     "@rushstack/eslint-patch": "^1.2.0",
diff --git a/sdk/src/utils.ts b/sdk/src/utils.ts
index 6e93f5a4..1b07a459 100644
--- a/sdk/src/utils.ts
+++ b/sdk/src/utils.ts
@@ -3,6 +3,7 @@ import {
   Transaction,
   sendAndConfirmRawTransaction,
   SendTransactionError,
+  Signer,
 } from "@solana/web3.js";
 import { PublicKey, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
 import { PROGRAM_ADDRESS } from "./generated";
@@ -34,11 +35,13 @@ export async function getConnection(): Promise<Connection> {
 export async function executeTransaction(
   connection: Connection,
   tx: Transaction,
-  wallet: Wallet
+  wallet: Wallet,
+  signers?: Signer[]
 ): Promise<String> {
   tx.recentBlockhash = await (await connection.getLatestBlockhash()).blockhash;
   tx.feePayer = wallet.publicKey;
   await wallet.signTransaction(tx);
+  signers && tx.partialSign(...signers);
   try {
     const txid = await sendAndConfirmRawTransaction(connection, tx.serialize());
     return txid;
diff --git a/sdk/tests/initRulesetInitMint.test.ts b/sdk/tests/initRulesetInitMint.test.ts
new file mode 100644
index 00000000..cc44323c
--- /dev/null
+++ b/sdk/tests/initRulesetInitMint.test.ts
@@ -0,0 +1,101 @@
+import { test, expect } from "@jest/globals";
+import {
+  CardinalProvider,
+  executeTransaction,
+  getProvider,
+} from "../src/utils";
+import { Keypair, Transaction } from "@solana/web3.js";
+
+import {
+  findMintManagerId,
+  MintManager,
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
+  createInitMintInstruction,
+} from "../src";
+import {
+  ASSOCIATED_TOKEN_PROGRAM_ID,
+  getAssociatedTokenAddressSync,
+} from "@solana/spl-token";
+
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
+
+test("Create ruleset", async () => {
+  provider = await getProvider();
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: true,
+          disallowedAddresses: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Init", async () => {
+  const mintKeypair = Keypair.generate();
+  const mint = mintKeypair.publicKey;
+  const mintManagerId = findMintManagerId(mint);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
+  const tx = new Transaction();
+  tx.add(
+    createInitMintInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      ruleset: RULESET_ID,
+      targetTokenAccount: getAssociatedTokenAddressSync(
+        mintKeypair.publicKey,
+        provider.wallet.publicKey
+      ),
+      target: provider.wallet.publicKey,
+      authority: provider.wallet.publicKey,
+      payer: provider.wallet.publicKey,
+      collector: ruleset.collector,
+      associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet, [
+    mintKeypair,
+  ]);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME).toString()
+  );
+});
diff --git a/sdk/tests/init.test.ts b/sdk/tests/initRulesetMintManager.test.ts
similarity index 81%
rename from sdk/tests/init.test.ts
rename to sdk/tests/initRulesetMintManager.test.ts
index ec6a7e70..50412b08 100644
--- a/sdk/tests/init.test.ts
+++ b/sdk/tests/initRulesetMintManager.test.ts
@@ -4,13 +4,9 @@ import {
   executeTransaction,
   getProvider,
 } from "../src/utils";
-import type { PublicKey } from "@solana/web3.js";
+import { PublicKey } from "@solana/web3.js";
 import { Keypair, Transaction } from "@solana/web3.js";
-import {
-  createMint,
-  getOrCreateAssociatedTokenAccount,
-  mintTo,
-} from "@solana/spl-token";
+
 import {
   findMintManagerId,
   createInitMintManagerInstruction,
@@ -19,6 +15,7 @@ import {
   findRulesetId,
   Ruleset,
 } from "../src";
+import { createMintTx } from "./utils";
 let mint: PublicKey;
 
 const RULESET_NAME = `global-${Math.random()}`;
@@ -28,27 +25,12 @@ let provider: CardinalProvider;
 beforeAll(async () => {
   provider = await getProvider();
   const mintKeypair = Keypair.generate();
-  mint = await createMint(
-    provider.connection,
-    provider.keypair,
-    provider.wallet.publicKey,
-    provider.wallet.publicKey,
-    0,
-    mintKeypair
-  );
-  const ata = await getOrCreateAssociatedTokenAccount(
-    provider.connection,
-    provider.keypair,
-    mint,
-    provider.wallet.publicKey
-  );
-  await mintTo(
+  mint = mintKeypair.publicKey;
+  executeTransaction(
     provider.connection,
-    provider.keypair,
-    mint,
-    ata.address,
-    provider.wallet.publicKey,
-    1
+    await createMintTx(provider.connection, mint, provider.wallet.publicKey),
+    provider.wallet,
+    [mintKeypair]
   );
 });
 
diff --git a/sdk/tests/utils.ts b/sdk/tests/utils.ts
new file mode 100644
index 00000000..82d79068
--- /dev/null
+++ b/sdk/tests/utils.ts
@@ -0,0 +1,31 @@
+import { Connection, PublicKey, SystemProgram } from "@solana/web3.js";
+import { Transaction } from "@solana/web3.js";
+import {
+  createAssociatedTokenAccountInstruction,
+  createInitializeMint2Instruction,
+  createMintToInstruction,
+  getAssociatedTokenAddressSync,
+  getMinimumBalanceForRentExemptMint,
+  MINT_SIZE,
+  TOKEN_PROGRAM_ID,
+} from "@solana/spl-token";
+
+export const createMintTx = async (
+  connection: Connection,
+  mint: PublicKey,
+  authority: PublicKey
+) => {
+  const ata = getAssociatedTokenAddressSync(mint, authority);
+  return new Transaction().add(
+    SystemProgram.createAccount({
+      fromPubkey: authority,
+      newAccountPubkey: mint,
+      space: MINT_SIZE,
+      lamports: await getMinimumBalanceForRentExemptMint(connection),
+      programId: TOKEN_PROGRAM_ID,
+    }),
+    createInitializeMint2Instruction(mint, 0, authority, authority),
+    createAssociatedTokenAccountInstruction(authority, ata, authority, mint),
+    createMintToInstruction(mint, ata, authority, 1)
+  );
+};
diff --git a/sdk/tsconfig.json b/sdk/tsconfig.json
index 178243b6..f0559db0 100644
--- a/sdk/tsconfig.json
+++ b/sdk/tsconfig.json
@@ -1,7 +1,6 @@
 {
   "compilerOptions": {
     "outDir": "./lib",
-    "rootDir": "./src",
 
     // target
     "target": "ES2019",
@@ -36,5 +35,5 @@
     "declarationMap": true,
     "inlineSources": true
   },
-  "include": ["src/", "tests/", "src/utils.ts"]
+  "include": ["src/", "tests/"]
 }
diff --git a/sdk/yarn.lock b/sdk/yarn.lock
index b4cce8e6..e6e78278 100644
--- a/sdk/yarn.lock
+++ b/sdk/yarn.lock
@@ -789,6 +789,27 @@
     rpc-websockets "^7.5.0"
     superstruct "^0.14.2"
 
+"@solana/web3.js@^1.66.2":
+  version "1.66.2"
+  resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.66.2.tgz#80b43c5868b846124fe3ebac7d3943930c3fa60c"
+  integrity sha512-RyaHMR2jGmaesnYP045VLeBGfR/gAW3cvZHzMFGg7bkO+WOYOYp1nEllf0/la4U4qsYGKCsO9eEevR5fhHiVHg==
+  dependencies:
+    "@babel/runtime" "^7.12.5"
+    "@noble/ed25519" "^1.7.0"
+    "@noble/hashes" "^1.1.2"
+    "@noble/secp256k1" "^1.6.3"
+    "@solana/buffer-layout" "^4.0.0"
+    bigint-buffer "^1.1.5"
+    bn.js "^5.0.0"
+    borsh "^0.7.0"
+    bs58 "^4.0.1"
+    buffer "6.0.1"
+    fast-stable-stringify "^1.0.0"
+    jayson "^3.4.4"
+    node-fetch "2"
+    rpc-websockets "^7.5.0"
+    superstruct "^0.14.2"
+
 "@types/babel__core@^7.1.14":
   version "7.1.19"
   resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"

From 76071113d51e0d8deea47c32a7feff10487b2243 Mon Sep 17 00:00:00 2001
From: Giannis Chatziveroglou <gchatz@mit.edu>
Date: Fri, 21 Oct 2022 16:46:41 -0700
Subject: [PATCH 21/37] update generate-idls.sh

---
 sdk/generate-idls.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
index 3ba86735..d5e737a7 100755
--- a/sdk/generate-idls.sh
+++ b/sdk/generate-idls.sh
@@ -2,13 +2,13 @@
 
 # This script generates the IDL JSONs without buildling the full packages.
 
-rm -rf src/idl/
-mkdir -p src/idl/
+rm -rf sdk/idl/
+mkdir -p sdk/idl/
 
 for PROGRAM in $(find ../program/ -maxdepth 3 -name lib.rs); do
     PROGRAM_NAME="cardinal_creator_standard"
     echo "Parsing IDL for $PROGRAM_NAME"
-    anchor idl parse --file $PROGRAM --out-ts src/idl/$PROGRAM_NAME.ts || {
+    anchor idl parse --file $PROGRAM --out-ts sdk/idl/$PROGRAM_NAME.ts || {
         echo "Could not parse IDL"
         exit 1
     }

From 6675ac383819e16a3d8d1bcaea795a7746356465 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Sun, 23 Oct 2022 23:23:23 -0400
Subject: [PATCH 22/37] Init test

---
 program/src/instructions/token/init_mint.rs |  2 +-
 sdk/generate-idls.sh                        |  2 +-
 sdk/idl/cardinal_creator_standard.json      |  2 +-
 sdk/src/generated/instructions/initMint.ts  |  4 +-
 sdk/src/utils.ts                            |  4 +-
 sdk/tests/initRulesetInitMint.test.ts       |  1 +
 sdk/tests/initRulesetUpdateRuleset.test.ts  | 98 +++++++++++++++++++++
 7 files changed, 107 insertions(+), 6 deletions(-)
 create mode 100644 sdk/tests/initRulesetUpdateRuleset.test.ts

diff --git a/program/src/instructions/token/init_mint.rs b/program/src/instructions/token/init_mint.rs
index ece0eae5..1f1e4812 100644
--- a/program/src/instructions/token/init_mint.rs
+++ b/program/src/instructions/token/init_mint.rs
@@ -24,7 +24,7 @@ pub struct InitMintCtx<'info> {
     mint_manager: Account<'info, MintManager>,
     /// CHECK: Account is not read from
     #[account(mut)]
-    mint: UncheckedAccount<'info>,
+    mint: Signer<'info>,
     ruleset: Account<'info, Ruleset>,
 
     /// CHECK: Account created or checked in handler
diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
index d5e737a7..544bbd63 100755
--- a/sdk/generate-idls.sh
+++ b/sdk/generate-idls.sh
@@ -8,7 +8,7 @@ mkdir -p sdk/idl/
 for PROGRAM in $(find ../program/ -maxdepth 3 -name lib.rs); do
     PROGRAM_NAME="cardinal_creator_standard"
     echo "Parsing IDL for $PROGRAM_NAME"
-    anchor idl parse --file $PROGRAM --out-ts sdk/idl/$PROGRAM_NAME.ts || {
+    anchor idl parse --file $PROGRAM --out-ts sdk/src/idl/$PROGRAM_NAME.ts || {
         echo "Could not parse IDL"
         exit 1
     }
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index 11587c4e..c4724060 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -163,7 +163,7 @@
         {
           "name": "mint",
           "isMut": true,
-          "isSigner": false
+          "isSigner": true
         },
         {
           "name": "ruleset",
diff --git a/sdk/src/generated/instructions/initMint.ts b/sdk/src/generated/instructions/initMint.ts
index 88e3bab4..a874603f 100644
--- a/sdk/src/generated/instructions/initMint.ts
+++ b/sdk/src/generated/instructions/initMint.ts
@@ -24,7 +24,7 @@ export const initMintStruct = new beet.BeetArgsStruct<{
  * Accounts required by the _initMint_ instruction
  *
  * @property [_writable_] mintManager
- * @property [_writable_] mint
+ * @property [_writable_, **signer**] mint
  * @property [] ruleset
  * @property [_writable_] targetTokenAccount
  * @property [**signer**] target
@@ -79,7 +79,7 @@ export function createInitMintInstruction(
     {
       pubkey: accounts.mint,
       isWritable: true,
-      isSigner: false,
+      isSigner: true,
     },
     {
       pubkey: accounts.ruleset,
diff --git a/sdk/src/utils.ts b/sdk/src/utils.ts
index 1b07a459..5548d3a1 100644
--- a/sdk/src/utils.ts
+++ b/sdk/src/utils.ts
@@ -41,7 +41,9 @@ export async function executeTransaction(
   tx.recentBlockhash = await (await connection.getLatestBlockhash()).blockhash;
   tx.feePayer = wallet.publicKey;
   await wallet.signTransaction(tx);
-  signers && tx.partialSign(...signers);
+  if (signers) {
+    tx.partialSign(...signers);
+  }
   try {
     const txid = await sendAndConfirmRawTransaction(connection, tx.serialize());
     return txid;
diff --git a/sdk/tests/initRulesetInitMint.test.ts b/sdk/tests/initRulesetInitMint.test.ts
index cc44323c..b061efb3 100644
--- a/sdk/tests/initRulesetInitMint.test.ts
+++ b/sdk/tests/initRulesetInitMint.test.ts
@@ -83,6 +83,7 @@ test("Init", async () => {
       associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
     })
   );
+  console.log("----------");
   await executeTransaction(provider.connection, tx, provider.wallet, [
     mintKeypair,
   ]);
diff --git a/sdk/tests/initRulesetUpdateRuleset.test.ts b/sdk/tests/initRulesetUpdateRuleset.test.ts
new file mode 100644
index 00000000..debf262a
--- /dev/null
+++ b/sdk/tests/initRulesetUpdateRuleset.test.ts
@@ -0,0 +1,98 @@
+import { test, beforeAll, expect } from "@jest/globals";
+import {
+  CardinalProvider,
+  executeTransaction,
+  getProvider,
+} from "../src/utils";
+import { PublicKey } from "@solana/web3.js";
+import { Keypair, Transaction } from "@solana/web3.js";
+
+import {
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
+  createUpdateRulesetInstruction,
+} from "../src";
+import { createMintTx } from "./utils";
+let mint: PublicKey;
+
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
+
+beforeAll(async () => {
+  provider = await getProvider();
+  const mintKeypair = Keypair.generate();
+  mint = mintKeypair.publicKey;
+  executeTransaction(
+    provider.connection,
+    await createMintTx(provider.connection, mint, provider.wallet.publicKey),
+    provider.wallet,
+    [mintKeypair]
+  );
+});
+
+test("Create ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: true,
+          disallowedAddresses: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Update ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createUpdateRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          authority: provider.wallet.publicKey,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: true,
+          disallowedAddresses: [provider.wallet.publicKey],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
+  expect(ruleset.disallowedAddresses.length).toBe(1);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});

From 450b4da851fc2ba1ca7e0781ac8377b406cbac92 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Mon, 24 Oct 2022 00:24:28 -0400
Subject: [PATCH 23/37] Tests

---
 .../mint_manager/update_mint_manager.rs       |    1 +
 .../instructions/ruleset/update_ruleset.rs    |    1 -
 sdk/generate-idls.sh                          |    4 +-
 sdk/idl/cardinal_creator_standard.json        |    2 +-
 sdk/sdk/src/idl/cardinal_creator_standard.ts  | 1549 +++++++++++++++++
 .../instructions/updateMintManager.ts         |    4 +-
 sdk/src/utils.ts                              |  128 --
 sdk/tests/mint.ts                             |   31 +
 ...lesetInitMint.test.ts => mintInit.test.ts} |    7 +-
 ...anager.test.ts => mintManagerInit.test.ts} |    8 +-
 sdk/tests/mintManagerInitUpdate.test.ts       |  168 ++
 ...eset.test.ts => rulesetInitUpdate.test.ts} |   24 +-
 sdk/tests/utils.ts                            |  149 +-
 sdk/tsconfig.cjs.json                         |    8 +
 sdk/tsconfig.esm.json                         |   10 +
 sdk/tsconfig.json                             |    6 +-
 16 files changed, 1904 insertions(+), 196 deletions(-)
 create mode 100644 sdk/sdk/src/idl/cardinal_creator_standard.ts
 delete mode 100644 sdk/src/utils.ts
 create mode 100644 sdk/tests/mint.ts
 rename sdk/tests/{initRulesetInitMint.test.ts => mintInit.test.ts} (95%)
 rename sdk/tests/{initRulesetMintManager.test.ts => mintManagerInit.test.ts} (95%)
 create mode 100644 sdk/tests/mintManagerInitUpdate.test.ts
 rename sdk/tests/{initRulesetUpdateRuleset.test.ts => rulesetInitUpdate.test.ts} (78%)
 create mode 100644 sdk/tsconfig.cjs.json
 create mode 100644 sdk/tsconfig.esm.json

diff --git a/program/src/instructions/mint_manager/update_mint_manager.rs b/program/src/instructions/mint_manager/update_mint_manager.rs
index 73d25c2b..d94e48ca 100644
--- a/program/src/instructions/mint_manager/update_mint_manager.rs
+++ b/program/src/instructions/mint_manager/update_mint_manager.rs
@@ -11,6 +11,7 @@ pub struct UpdateMintManagerIx {
 
 #[derive(Accounts)]
 pub struct UpdateMintManagerCtx<'info> {
+    #[account(mut)]
     mint_manager: Account<'info, MintManager>,
     ruleset: Account<'info, Ruleset>,
     /// CHECK: Account is not read from
diff --git a/program/src/instructions/ruleset/update_ruleset.rs b/program/src/instructions/ruleset/update_ruleset.rs
index 83109ed7..e8f2cda7 100644
--- a/program/src/instructions/ruleset/update_ruleset.rs
+++ b/program/src/instructions/ruleset/update_ruleset.rs
@@ -12,7 +12,6 @@ pub struct UpdateRulesetIx {
 }
 
 #[derive(Accounts)]
-#[instruction(ix: UpdateRulesetIx)]
 pub struct UpdateRulesetCtx<'info> {
     #[account(mut)]
     ruleset: Account<'info, Ruleset>,
diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
index 544bbd63..0bc03dc6 100755
--- a/sdk/generate-idls.sh
+++ b/sdk/generate-idls.sh
@@ -2,8 +2,8 @@
 
 # This script generates the IDL JSONs without buildling the full packages.
 
-rm -rf sdk/idl/
-mkdir -p sdk/idl/
+rm -rf sdk/src/idl
+mkdir -p sdk/src/idl
 
 for PROGRAM in $(find ../program/ -maxdepth 3 -name lib.rs); do
     PROGRAM_NAME="cardinal_creator_standard"
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/idl/cardinal_creator_standard.json
index c4724060..84047c52 100644
--- a/sdk/idl/cardinal_creator_standard.json
+++ b/sdk/idl/cardinal_creator_standard.json
@@ -53,7 +53,7 @@
       "accounts": [
         {
           "name": "mintManager",
-          "isMut": false,
+          "isMut": true,
           "isSigner": false
         },
         {
diff --git a/sdk/sdk/src/idl/cardinal_creator_standard.ts b/sdk/sdk/src/idl/cardinal_creator_standard.ts
new file mode 100644
index 00000000..97b114e0
--- /dev/null
+++ b/sdk/sdk/src/idl/cardinal_creator_standard.ts
@@ -0,0 +1,1549 @@
+export type CardinalCreatorStandard = {
+  "version": "0.1.0",
+  "name": "cardinal_creator_standard",
+  "instructions": [
+    {
+      "name": "initMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "updateMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateMintManagerIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initRuleset",
+      "accounts": [
+        {
+          "name": "ruleset",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "InitRulesetIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "updateRuleset",
+      "accounts": [
+        {
+          "name": "ruleset",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateRulesetIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initMint",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "targetTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "target",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "initAccount",
+      "accounts": [
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccountOwner",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "approve",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "delegate",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "revoke",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "burn",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "close",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "owner",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "transfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "from",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "to",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "preTransfer",
+      "accounts": [
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "postTransfer",
+      "accounts": [
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    }
+  ],
+  "accounts": [
+    {
+      "name": "mintManager",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "bump",
+            "type": "u8"
+          },
+          {
+            "name": "version",
+            "type": "u8"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "ruleset",
+            "type": "publicKey"
+          }
+        ]
+      }
+    },
+    {
+      "name": "ruleset",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "bump",
+            "type": "u8"
+          },
+          {
+            "name": "version",
+            "type": "u8"
+          },
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "name": "disallowedAddresses",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "accountBalances",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "balances",
+            "type": {
+              "vec": {
+                "defined": "AccountBalance"
+              }
+            }
+          }
+        ]
+      }
+    }
+  ],
+  "types": [
+    {
+      "name": "UpdateMintManagerIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          }
+        ]
+      }
+    },
+    {
+      "name": "InitRulesetIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
+          {
+            "name": "disallowedAddresses",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "UpdateRulesetIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "disallowedAddresses",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "AccountBalance",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "address",
+            "type": "publicKey"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "size",
+            "type": "u64"
+          },
+          {
+            "name": "balance",
+            "type": "u64"
+          }
+        ]
+      }
+    }
+  ],
+  "errors": [
+    {
+      "code": 6000,
+      "name": "InvalidMint",
+      "msg": "Invalid mint"
+    },
+    {
+      "code": 6001,
+      "name": "InvalidCollector",
+      "msg": "Invalid collector address"
+    },
+    {
+      "code": 6002,
+      "name": "InvalidAuthority",
+      "msg": "Invalid authority address"
+    },
+    {
+      "code": 6003,
+      "name": "InvalidMintManager",
+      "msg": "Invalid mint manager"
+    },
+    {
+      "code": 6004,
+      "name": "InvlaidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6005,
+      "name": "InvalidTargetTokenAccount",
+      "msg": "Invalid target token account"
+    },
+    {
+      "code": 6006,
+      "name": "InvalidCloseTokenAccount",
+      "msg": "Invalid token account to close"
+    },
+    {
+      "code": 6007,
+      "name": "InvalidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6008,
+      "name": "InvalidRuleset",
+      "msg": "Invalid ruleset"
+    },
+    {
+      "code": 6009,
+      "name": "InvalidPreTransferInstruction",
+      "msg": "Invalid pre transfer instruction"
+    },
+    {
+      "code": 6010,
+      "name": "InvalidPostTransferInstruction",
+      "msg": "Invalid post transfer instruction"
+    },
+    {
+      "code": 6011,
+      "name": "ProgramDisallowed",
+      "msg": "Disallowed program included in transfer"
+    },
+    {
+      "code": 6012,
+      "name": "ProgramNotAllowed",
+      "msg": "Program not allowed in allowed programs to transfer"
+    },
+    {
+      "code": 6013,
+      "name": "UnknownAccount",
+      "msg": "Unknown account found in instruction"
+    },
+    {
+      "code": 6014,
+      "name": "AccountNotFound",
+      "msg": "Account not found in instruction"
+    }
+  ]
+};
+
+export const IDL: CardinalCreatorStandard = {
+  "version": "0.1.0",
+  "name": "cardinal_creator_standard",
+  "instructions": [
+    {
+      "name": "initMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "updateMintManager",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateMintManagerIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initRuleset",
+      "accounts": [
+        {
+          "name": "ruleset",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "InitRulesetIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "updateRuleset",
+      "accounts": [
+        {
+          "name": "ruleset",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": [
+        {
+          "name": "ix",
+          "type": {
+            "defined": "UpdateRulesetIx"
+          }
+        }
+      ]
+    },
+    {
+      "name": "initMint",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "targetTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "target",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "initAccount",
+      "accounts": [
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccountOwner",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "associatedTokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "approve",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "delegate",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "revoke",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "burn",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "holder",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "close",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "tokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "owner",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "transfer",
+      "accounts": [
+        {
+          "name": "mintManager",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "ruleset",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "mint",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "from",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "to",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "authority",
+          "isMut": false,
+          "isSigner": true
+        },
+        {
+          "name": "rent",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "tokenProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "systemProgram",
+          "isMut": false,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "preTransfer",
+      "accounts": [
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "payer",
+          "isMut": true,
+          "isSigner": true
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    },
+    {
+      "name": "postTransfer",
+      "accounts": [
+        {
+          "name": "accountBalances",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "collector",
+          "isMut": true,
+          "isSigner": false
+        },
+        {
+          "name": "instructions",
+          "isMut": false,
+          "isSigner": false
+        }
+      ],
+      "args": []
+    }
+  ],
+  "accounts": [
+    {
+      "name": "mintManager",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "bump",
+            "type": "u8"
+          },
+          {
+            "name": "version",
+            "type": "u8"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "ruleset",
+            "type": "publicKey"
+          }
+        ]
+      }
+    },
+    {
+      "name": "ruleset",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "bump",
+            "type": "u8"
+          },
+          {
+            "name": "version",
+            "type": "u8"
+          },
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "name": "disallowedAddresses",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "accountBalances",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "balances",
+            "type": {
+              "vec": {
+                "defined": "AccountBalance"
+              }
+            }
+          }
+        ]
+      }
+    }
+  ],
+  "types": [
+    {
+      "name": "UpdateMintManagerIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          }
+        ]
+      }
+    },
+    {
+      "name": "InitRulesetIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
+          {
+            "name": "disallowedAddresses",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "UpdateRulesetIx",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "authority",
+            "type": "publicKey"
+          },
+          {
+            "name": "collector",
+            "type": "publicKey"
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
+          },
+          {
+            "name": "disallowedAddresses",
+            "type": {
+              "vec": "publicKey"
+            }
+          },
+          {
+            "name": "allowedPrograms",
+            "type": {
+              "vec": "publicKey"
+            }
+          }
+        ]
+      }
+    },
+    {
+      "name": "AccountBalance",
+      "type": {
+        "kind": "struct",
+        "fields": [
+          {
+            "name": "address",
+            "type": "publicKey"
+          },
+          {
+            "name": "mint",
+            "type": "publicKey"
+          },
+          {
+            "name": "size",
+            "type": "u64"
+          },
+          {
+            "name": "balance",
+            "type": "u64"
+          }
+        ]
+      }
+    }
+  ],
+  "errors": [
+    {
+      "code": 6000,
+      "name": "InvalidMint",
+      "msg": "Invalid mint"
+    },
+    {
+      "code": 6001,
+      "name": "InvalidCollector",
+      "msg": "Invalid collector address"
+    },
+    {
+      "code": 6002,
+      "name": "InvalidAuthority",
+      "msg": "Invalid authority address"
+    },
+    {
+      "code": 6003,
+      "name": "InvalidMintManager",
+      "msg": "Invalid mint manager"
+    },
+    {
+      "code": 6004,
+      "name": "InvlaidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6005,
+      "name": "InvalidTargetTokenAccount",
+      "msg": "Invalid target token account"
+    },
+    {
+      "code": 6006,
+      "name": "InvalidCloseTokenAccount",
+      "msg": "Invalid token account to close"
+    },
+    {
+      "code": 6007,
+      "name": "InvalidHolderTokenAccount",
+      "msg": "Invalid holder token account"
+    },
+    {
+      "code": 6008,
+      "name": "InvalidRuleset",
+      "msg": "Invalid ruleset"
+    },
+    {
+      "code": 6009,
+      "name": "InvalidPreTransferInstruction",
+      "msg": "Invalid pre transfer instruction"
+    },
+    {
+      "code": 6010,
+      "name": "InvalidPostTransferInstruction",
+      "msg": "Invalid post transfer instruction"
+    },
+    {
+      "code": 6011,
+      "name": "ProgramDisallowed",
+      "msg": "Disallowed program included in transfer"
+    },
+    {
+      "code": 6012,
+      "name": "ProgramNotAllowed",
+      "msg": "Program not allowed in allowed programs to transfer"
+    },
+    {
+      "code": 6013,
+      "name": "UnknownAccount",
+      "msg": "Unknown account found in instruction"
+    },
+    {
+      "code": 6014,
+      "name": "AccountNotFound",
+      "msg": "Account not found in instruction"
+    }
+  ]
+};
diff --git a/sdk/src/generated/instructions/updateMintManager.ts b/sdk/src/generated/instructions/updateMintManager.ts
index f6e152e3..42e8e259 100644
--- a/sdk/src/generated/instructions/updateMintManager.ts
+++ b/sdk/src/generated/instructions/updateMintManager.ts
@@ -39,7 +39,7 @@ export const updateMintManagerStruct = new beet.BeetArgsStruct<
 /**
  * Accounts required by the _updateMintManager_ instruction
  *
- * @property [] mintManager
+ * @property [_writable_] mintManager
  * @property [] ruleset
  * @property [_writable_] collector
  * @property [**signer**] authority
@@ -83,7 +83,7 @@ export function createUpdateMintManagerInstruction(
   const keys: web3.AccountMeta[] = [
     {
       pubkey: accounts.mintManager,
-      isWritable: false,
+      isWritable: true,
       isSigner: false,
     },
     {
diff --git a/sdk/src/utils.ts b/sdk/src/utils.ts
deleted file mode 100644
index 5548d3a1..00000000
--- a/sdk/src/utils.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import {
-  Connection,
-  Transaction,
-  sendAndConfirmRawTransaction,
-  SendTransactionError,
-  Signer,
-} from "@solana/web3.js";
-import { PublicKey, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
-import { PROGRAM_ADDRESS } from "./generated";
-import { utils, Wallet } from "@project-serum/anchor";
-import { parseProgramLogs } from "./errors/parseTransactionLogs";
-import { formatInstructionLogsForConsole } from "./errors/formatLogs";
-
-export async function newAccountWithLamports(
-  connection: Connection,
-  lamports = LAMPORTS_PER_SOL,
-  keypair = Keypair.generate()
-): Promise<Keypair> {
-  const account = keypair;
-  const signature = await connection.requestAirdrop(
-    account.publicKey,
-    lamports
-  );
-  await connection.confirmTransaction(signature);
-  return account;
-}
-
-export async function getConnection(): Promise<Connection> {
-  const url = "http://localhost:8899";
-  const connection = new Connection(url, "confirmed");
-  await connection.getVersion();
-  return connection;
-}
-
-export async function executeTransaction(
-  connection: Connection,
-  tx: Transaction,
-  wallet: Wallet,
-  signers?: Signer[]
-): Promise<String> {
-  tx.recentBlockhash = await (await connection.getLatestBlockhash()).blockhash;
-  tx.feePayer = wallet.publicKey;
-  await wallet.signTransaction(tx);
-  if (signers) {
-    tx.partialSign(...signers);
-  }
-  try {
-    const txid = await sendAndConfirmRawTransaction(connection, tx.serialize());
-    return txid;
-  } catch (e) {
-    handleError(e);
-    throw e;
-  }
-}
-
-export type CardinalProvider = {
-  connection: Connection;
-  wallet: Wallet;
-  keypair: Keypair;
-};
-
-export async function getProvider(): Promise<CardinalProvider> {
-  const connection = await getConnection();
-  const keypair = await newAccountWithLamports(
-    connection,
-    LAMPORTS_PER_SOL,
-    keypairFrom(process.env.TEST_KEY ?? "./tests/test-keypairs/test-key.json")
-  );
-  const wallet = new Wallet(keypair);
-  return {
-    connection,
-    wallet,
-    keypair,
-  };
-}
-
-export const TEST_PROGRAM_ID = process.env.TEST_PROGRAM_ID
-  ? new PublicKey(process.env.TEST_PROGRAM_ID)
-  : PROGRAM_ADDRESS;
-
-export const keypairFrom = (s: string, n?: string): Keypair => {
-  try {
-    if (s.includes("[")) {
-      return Keypair.fromSecretKey(
-        Buffer.from(
-          s
-            .replace("[", "")
-            .replace("]", "")
-            .split(",")
-            .map((c) => parseInt(c))
-        )
-      );
-    } else {
-      return Keypair.fromSecretKey(utils.bytes.bs58.decode(s));
-    }
-  } catch (e) {
-    try {
-      return Keypair.fromSecretKey(
-        Buffer.from(
-          JSON.parse(
-            require("fs").readFileSync(s, {
-              encoding: "utf-8",
-            })
-          )
-        )
-      );
-    } catch (e) {
-      process.stdout.write(`${n ?? "keypair"} is not valid keypair`);
-      process.exit(1);
-    }
-  }
-};
-
-export const handleError = (e: any) => {
-  const message = (e as SendTransactionError).message ?? "";
-  const logs =
-    (e as SendTransactionError).logs ?? [
-      (e as SendTransactionError).message ?? "",
-    ] ?? [(e as Error).toString()] ??
-    [];
-  if (logs) {
-    const parsed = parseProgramLogs(logs, message);
-    const fmt = formatInstructionLogsForConsole(parsed);
-    console.log(fmt);
-  } else {
-    console.log(e);
-  }
-};
diff --git a/sdk/tests/mint.ts b/sdk/tests/mint.ts
new file mode 100644
index 00000000..82d79068
--- /dev/null
+++ b/sdk/tests/mint.ts
@@ -0,0 +1,31 @@
+import { Connection, PublicKey, SystemProgram } from "@solana/web3.js";
+import { Transaction } from "@solana/web3.js";
+import {
+  createAssociatedTokenAccountInstruction,
+  createInitializeMint2Instruction,
+  createMintToInstruction,
+  getAssociatedTokenAddressSync,
+  getMinimumBalanceForRentExemptMint,
+  MINT_SIZE,
+  TOKEN_PROGRAM_ID,
+} from "@solana/spl-token";
+
+export const createMintTx = async (
+  connection: Connection,
+  mint: PublicKey,
+  authority: PublicKey
+) => {
+  const ata = getAssociatedTokenAddressSync(mint, authority);
+  return new Transaction().add(
+    SystemProgram.createAccount({
+      fromPubkey: authority,
+      newAccountPubkey: mint,
+      space: MINT_SIZE,
+      lamports: await getMinimumBalanceForRentExemptMint(connection),
+      programId: TOKEN_PROGRAM_ID,
+    }),
+    createInitializeMint2Instruction(mint, 0, authority, authority),
+    createAssociatedTokenAccountInstruction(authority, ata, authority, mint),
+    createMintToInstruction(mint, ata, authority, 1)
+  );
+};
diff --git a/sdk/tests/initRulesetInitMint.test.ts b/sdk/tests/mintInit.test.ts
similarity index 95%
rename from sdk/tests/initRulesetInitMint.test.ts
rename to sdk/tests/mintInit.test.ts
index b061efb3..a693550c 100644
--- a/sdk/tests/initRulesetInitMint.test.ts
+++ b/sdk/tests/mintInit.test.ts
@@ -1,9 +1,5 @@
 import { test, expect } from "@jest/globals";
-import {
-  CardinalProvider,
-  executeTransaction,
-  getProvider,
-} from "../src/utils";
+import { CardinalProvider, executeTransaction, getProvider } from "./utils";
 import { Keypair, Transaction } from "@solana/web3.js";
 
 import {
@@ -83,7 +79,6 @@ test("Init", async () => {
       associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
     })
   );
-  console.log("----------");
   await executeTransaction(provider.connection, tx, provider.wallet, [
     mintKeypair,
   ]);
diff --git a/sdk/tests/initRulesetMintManager.test.ts b/sdk/tests/mintManagerInit.test.ts
similarity index 95%
rename from sdk/tests/initRulesetMintManager.test.ts
rename to sdk/tests/mintManagerInit.test.ts
index 50412b08..3bbcdf8c 100644
--- a/sdk/tests/initRulesetMintManager.test.ts
+++ b/sdk/tests/mintManagerInit.test.ts
@@ -1,9 +1,5 @@
 import { test, beforeAll, expect } from "@jest/globals";
-import {
-  CardinalProvider,
-  executeTransaction,
-  getProvider,
-} from "../src/utils";
+import { CardinalProvider, executeTransaction, getProvider } from "./utils";
 import { PublicKey } from "@solana/web3.js";
 import { Keypair, Transaction } from "@solana/web3.js";
 
@@ -15,7 +11,7 @@ import {
   findRulesetId,
   Ruleset,
 } from "../src";
-import { createMintTx } from "./utils";
+import { createMintTx } from "./mint";
 let mint: PublicKey;
 
 const RULESET_NAME = `global-${Math.random()}`;
diff --git a/sdk/tests/mintManagerInitUpdate.test.ts b/sdk/tests/mintManagerInitUpdate.test.ts
new file mode 100644
index 00000000..239f3fb8
--- /dev/null
+++ b/sdk/tests/mintManagerInitUpdate.test.ts
@@ -0,0 +1,168 @@
+import { test, beforeAll, expect } from "@jest/globals";
+import { CardinalProvider, executeTransaction, getProvider } from "./utils";
+import { PublicKey } from "@solana/web3.js";
+import { Keypair, Transaction } from "@solana/web3.js";
+
+import {
+  findMintManagerId,
+  createInitMintManagerInstruction,
+  MintManager,
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
+  createUpdateMintManagerInstruction,
+} from "../src";
+import { createMintTx } from "./mint";
+let mint: PublicKey;
+
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_NAME2 = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
+
+beforeAll(async () => {
+  provider = await getProvider();
+  const mintKeypair = Keypair.generate();
+  mint = mintKeypair.publicKey;
+  executeTransaction(
+    provider.connection,
+    await createMintTx(provider.connection, mint, provider.wallet.publicKey),
+    provider.wallet,
+    [mintKeypair]
+  );
+});
+
+test("Create ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: true,
+          disallowedAddresses: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Create 2nd ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: findRulesetId(RULESET_NAME2),
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME2,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: false,
+          disallowedAddresses: [provider.wallet.publicKey],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    findRulesetId(RULESET_NAME2)
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(false);
+  expect(ruleset.disallowedAddresses.length).toBe(1);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Init mint manager", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
+  tx.add(
+    createInitMintManagerInstruction({
+      mint: mint,
+      mintManager: mintManagerId,
+      authority: provider.wallet.publicKey,
+      payer: provider.wallet.publicKey,
+      collector: ruleset.collector,
+      ruleset: RULESET_ID,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME).toString()
+  );
+});
+
+test("Update mint manager", async () => {
+  const newAuthority = Keypair.generate();
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
+  tx.add(
+    createUpdateMintManagerInstruction(
+      {
+        mintManager: mintManagerId,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+        collector: ruleset.collector,
+        ruleset: findRulesetId(RULESET_NAME2),
+      },
+      { ix: { authority: newAuthority.publicKey } }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    newAuthority.publicKey.toString()
+  );
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME2).toString()
+  );
+});
diff --git a/sdk/tests/initRulesetUpdateRuleset.test.ts b/sdk/tests/rulesetInitUpdate.test.ts
similarity index 78%
rename from sdk/tests/initRulesetUpdateRuleset.test.ts
rename to sdk/tests/rulesetInitUpdate.test.ts
index debf262a..db988f9d 100644
--- a/sdk/tests/initRulesetUpdateRuleset.test.ts
+++ b/sdk/tests/rulesetInitUpdate.test.ts
@@ -1,10 +1,5 @@
 import { test, beforeAll, expect } from "@jest/globals";
-import {
-  CardinalProvider,
-  executeTransaction,
-  getProvider,
-} from "../src/utils";
-import { PublicKey } from "@solana/web3.js";
+import { CardinalProvider, executeTransaction, getProvider } from "./utils";
 import { Keypair, Transaction } from "@solana/web3.js";
 
 import {
@@ -13,8 +8,6 @@ import {
   Ruleset,
   createUpdateRulesetInstruction,
 } from "../src";
-import { createMintTx } from "./utils";
-let mint: PublicKey;
 
 const RULESET_NAME = `global-${Math.random()}`;
 const RULESET_ID = findRulesetId(RULESET_NAME);
@@ -22,14 +15,6 @@ let provider: CardinalProvider;
 
 beforeAll(async () => {
   provider = await getProvider();
-  const mintKeypair = Keypair.generate();
-  mint = mintKeypair.publicKey;
-  executeTransaction(
-    provider.connection,
-    await createMintTx(provider.connection, mint, provider.wallet.publicKey),
-    provider.wallet,
-    [mintKeypair]
-  );
 });
 
 test("Create ruleset", async () => {
@@ -67,6 +52,7 @@ test("Create ruleset", async () => {
 
 test("Update ruleset", async () => {
   const tx = new Transaction();
+  const newAuthority = Keypair.generate();
   tx.add(
     createUpdateRulesetInstruction(
       {
@@ -75,7 +61,7 @@ test("Update ruleset", async () => {
       },
       {
         ix: {
-          authority: provider.wallet.publicKey,
+          authority: newAuthority.publicKey,
           collector: provider.wallet.publicKey,
           checkSellerFeeBasisPoints: true,
           disallowedAddresses: [provider.wallet.publicKey],
@@ -89,9 +75,7 @@ test("Update ruleset", async () => {
     provider.connection,
     RULESET_ID
   );
-  expect(ruleset.authority.toString()).toBe(
-    provider.wallet.publicKey.toString()
-  );
+  expect(ruleset.authority.toString()).toBe(newAuthority.publicKey.toString());
   expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
   expect(ruleset.disallowedAddresses.length).toBe(1);
   expect(ruleset.allowedPrograms.length).toBe(0);
diff --git a/sdk/tests/utils.ts b/sdk/tests/utils.ts
index 82d79068..ccce61a9 100644
--- a/sdk/tests/utils.ts
+++ b/sdk/tests/utils.ts
@@ -1,31 +1,126 @@
-import { Connection, PublicKey, SystemProgram } from "@solana/web3.js";
-import { Transaction } from "@solana/web3.js";
 import {
-  createAssociatedTokenAccountInstruction,
-  createInitializeMint2Instruction,
-  createMintToInstruction,
-  getAssociatedTokenAddressSync,
-  getMinimumBalanceForRentExemptMint,
-  MINT_SIZE,
-  TOKEN_PROGRAM_ID,
-} from "@solana/spl-token";
-
-export const createMintTx = async (
+  Connection,
+  Transaction,
+  sendAndConfirmRawTransaction,
+  SendTransactionError,
+  Signer,
+} from "@solana/web3.js";
+import { PublicKey, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
+import { PROGRAM_ADDRESS } from "../src/generated";
+import { utils, Wallet } from "@project-serum/anchor";
+import { parseProgramLogs } from "../src/errors/parseTransactionLogs";
+import { formatInstructionLogsForConsole } from "../src/errors/formatLogs";
+
+export async function newAccountWithLamports(
+  connection: Connection,
+  lamports = LAMPORTS_PER_SOL,
+  keypair = Keypair.generate()
+): Promise<Keypair> {
+  const account = keypair;
+  const signature = await connection.requestAirdrop(
+    account.publicKey,
+    lamports
+  );
+  await connection.confirmTransaction(signature);
+  return account;
+}
+
+export function getConnection(): Connection {
+  const url = "http://localhost:8899";
+  return new Connection(url, "confirmed");
+}
+
+export async function executeTransaction(
   connection: Connection,
-  mint: PublicKey,
-  authority: PublicKey
-) => {
-  const ata = getAssociatedTokenAddressSync(mint, authority);
-  return new Transaction().add(
-    SystemProgram.createAccount({
-      fromPubkey: authority,
-      newAccountPubkey: mint,
-      space: MINT_SIZE,
-      lamports: await getMinimumBalanceForRentExemptMint(connection),
-      programId: TOKEN_PROGRAM_ID,
-    }),
-    createInitializeMint2Instruction(mint, 0, authority, authority),
-    createAssociatedTokenAccountInstruction(authority, ata, authority, mint),
-    createMintToInstruction(mint, ata, authority, 1)
+  tx: Transaction,
+  wallet: Wallet,
+  signers?: Signer[]
+): Promise<String> {
+  tx.recentBlockhash = await (await connection.getLatestBlockhash()).blockhash;
+  tx.feePayer = wallet.publicKey;
+  await wallet.signTransaction(tx);
+  if (signers) {
+    tx.partialSign(...signers);
+  }
+  try {
+    const txid = await sendAndConfirmRawTransaction(connection, tx.serialize());
+    return txid;
+  } catch (e) {
+    handleError(e);
+    throw e;
+  }
+}
+
+export type CardinalProvider = {
+  connection: Connection;
+  wallet: Wallet;
+  keypair: Keypair;
+};
+
+export async function getProvider(): Promise<CardinalProvider> {
+  const connection = getConnection();
+  const keypair = await newAccountWithLamports(
+    connection,
+    LAMPORTS_PER_SOL,
+    keypairFrom(process.env.TEST_KEY ?? "./tests/test-keypairs/test-key.json")
   );
+  const wallet = new Wallet(keypair);
+  return {
+    connection,
+    wallet,
+    keypair,
+  };
+}
+
+export const TEST_PROGRAM_ID = process.env.TEST_PROGRAM_ID
+  ? new PublicKey(process.env.TEST_PROGRAM_ID)
+  : PROGRAM_ADDRESS;
+
+export const keypairFrom = (s: string, n?: string): Keypair => {
+  try {
+    if (s.includes("[")) {
+      return Keypair.fromSecretKey(
+        Buffer.from(
+          s
+            .replace("[", "")
+            .replace("]", "")
+            .split(",")
+            .map((c) => parseInt(c))
+        )
+      );
+    } else {
+      return Keypair.fromSecretKey(utils.bytes.bs58.decode(s));
+    }
+  } catch (e) {
+    try {
+      return Keypair.fromSecretKey(
+        Buffer.from(
+          JSON.parse(
+            require("fs").readFileSync(s, {
+              encoding: "utf-8",
+            })
+          )
+        )
+      );
+    } catch (e) {
+      process.stdout.write(`${n ?? "keypair"} is not valid keypair`);
+      process.exit(1);
+    }
+  }
+};
+
+export const handleError = (e: any) => {
+  const message = (e as SendTransactionError).message ?? "";
+  const logs =
+    (e as SendTransactionError).logs ?? [
+      (e as SendTransactionError).message ?? "",
+    ] ?? [(e as Error).toString()] ??
+    [];
+  if (logs) {
+    const parsed = parseProgramLogs(logs, message);
+    const fmt = formatInstructionLogsForConsole(parsed);
+    console.log(fmt);
+  } else {
+    console.log(e);
+  }
 };
diff --git a/sdk/tsconfig.cjs.json b/sdk/tsconfig.cjs.json
new file mode 100644
index 00000000..dfc56c96
--- /dev/null
+++ b/sdk/tsconfig.cjs.json
@@ -0,0 +1,8 @@
+{
+  "extends": "./tsconfig.esm.json",
+  "compilerOptions": {
+    "module": "CommonJS",
+    "outDir": "dist/cjs/"
+  },
+  "include": ["sdk/"]
+}
diff --git a/sdk/tsconfig.esm.json b/sdk/tsconfig.esm.json
new file mode 100644
index 00000000..9debc5d0
--- /dev/null
+++ b/sdk/tsconfig.esm.json
@@ -0,0 +1,10 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "module": "ESNext",
+    "types": [],
+    "noEmit": false,
+    "outDir": "dist/esm/"
+  },
+  "include": ["sdk/"]
+}
diff --git a/sdk/tsconfig.json b/sdk/tsconfig.json
index f0559db0..122ffacf 100644
--- a/sdk/tsconfig.json
+++ b/sdk/tsconfig.json
@@ -9,7 +9,7 @@
     "lib": ["ES2019"],
 
     // build
-    "types": [],
+    // "types": [],
     "esModuleInterop": true,
     "preserveConstEnums": true,
     "skipLibCheck": true,
@@ -21,7 +21,7 @@
 
     // linting
     "strict": true,
-    "noUnusedLocals": true,
+    "noUnusedLocals": false,
     "noUnusedParameters": true,
     "noUncheckedIndexedAccess": true,
     "noFallthroughCasesInSwitch": true,
@@ -35,5 +35,5 @@
     "declarationMap": true,
     "inlineSources": true
   },
-  "include": ["src/", "tests/"]
+  "include": ["sdk/", "tests/"]
 }

From f400490d341f1a748833df42637a84bbd186f132 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Mon, 24 Oct 2022 13:07:06 -0400
Subject: [PATCH 24/37] Refactor directories and tests

---
 sdk/.eslintrc.json => .eslintrc.json          |    0
 .github/actions/install-anchor/action.yml     |   31 +
 .../install-linux-build-deps/action.yml       |   30 +
 .github/actions/install-rust/action.yml       |   37 +
 .github/actions/install-solana/action.yml     |   45 +
 .github/actions/install-soteria/action.yml    |   28 +
 .github/dependabot.yml                        |   14 +
 .github/workflows/deps.yml                    |   43 +
 .github/workflows/publish-docs.yml            |   40 +
 .github/workflows/publish-js.yml              |   61 +
 .github/workflows/release.yml                 |  118 +
 .github/workflows/test.yml                    |  144 +
 .gitignore                                    |   56 +-
 sdk/.solitarc.js => .solitarc.js              |    6 +-
 Anchor.toml                                   |    8 -
 Cargo.toml                                    |   13 +-
 Makefile                                      |    8 +-
 generate-idls.sh                              |   15 +
 sdk/jest.config.js => jest.config.js          |    0
 sdk/package.json => package.json              |    0
 .../cardinal-creator-standard}/Cargo.lock     |    0
 .../cardinal-creator-standard}/Cargo.toml     |    0
 .../cardinal-creator-standard}/rustfmt.toml   |    0
 .../cardinal-creator-standard}/src/errors.rs  |    0
 .../mint_manager/init_mint_manager.rs         |    0
 .../src/instructions/mint_manager/mod.rs      |    0
 .../mint_manager/update_mint_manager.rs       |    0
 .../src/instructions/mod.rs                   |    0
 .../src/instructions/ruleset/init_ruleset.rs  |    0
 .../src/instructions/ruleset/mod.rs           |    0
 .../instructions/ruleset/update_ruleset.rs    |    0
 .../src/instructions/token/approve.rs         |    0
 .../src/instructions/token/burn.rs            |    0
 .../src/instructions/token/close.rs           |    0
 .../src/instructions/token/init_account.rs    |    0
 .../src/instructions/token/init_mint.rs       |    0
 .../src/instructions/token/mod.rs             |    0
 .../src/instructions/token/post_transfer.rs   |    0
 .../src/instructions/token/pre_transfer.rs    |    0
 .../src/instructions/token/revoke.rs          |    0
 .../src/instructions/token/transfer.rs        |    0
 .../cardinal-creator-standard}/src/lib.rs     |    0
 .../cardinal-creator-standard}/src/state.rs   |    0
 sdk/{idl => }/cardinal_creator_standard.json  |    0
 sdk/{src => }/errors/formatLogs.ts            |    0
 sdk/{src => }/errors/parseTransactionLogs.ts  |    0
 sdk/{src => }/errors/programErrors.ts         |    0
 sdk/generate-idls.sh                          |   15 -
 .../generated/accounts/AccountBalances.ts     |    0
 .../generated/accounts/MintManager.ts         |    0
 sdk/{src => }/generated/accounts/Ruleset.ts   |    0
 sdk/{src => }/generated/accounts/index.ts     |    0
 sdk/{src => }/generated/errors/index.ts       |    0
 sdk/{src => }/generated/index.ts              |    0
 .../generated/instructions/approve.ts         |    0
 sdk/{src => }/generated/instructions/burn.ts  |    0
 sdk/{src => }/generated/instructions/close.ts |    0
 sdk/{src => }/generated/instructions/index.ts |    0
 .../generated/instructions/initAccount.ts     |    0
 .../generated/instructions/initMint.ts        |    0
 .../generated/instructions/initMintManager.ts |    0
 .../generated/instructions/initRuleset.ts     |    0
 .../generated/instructions/postTransfer.ts    |    0
 .../generated/instructions/preTransfer.ts     |    0
 .../generated/instructions/revoke.ts          |    0
 .../generated/instructions/transfer.ts        |    0
 .../instructions/updateMintManager.ts         |    0
 .../generated/instructions/updateRuleset.ts   |    0
 .../generated/types/AccountBalance.ts         |    0
 .../generated/types/InitRulesetIx.ts          |    0
 .../generated/types/UpdateMintManagerIx.ts    |    0
 .../generated/types/UpdateRulesetIx.ts        |    0
 sdk/{src => }/generated/types/index.ts        |    0
 .../src => }/idl/cardinal_creator_standard.ts |    0
 sdk/{src => }/index.ts                        |    0
 sdk/{src => }/pda.ts                          |    0
 sdk/src/idl/cardinal_creator_standard.ts      | 1549 ----------
 sdk/yarn-error.log                            | 2643 -----------------
 {sdk/tests => tests}/mint.ts                  |    0
 {sdk/tests => tests}/mintInit.test.ts         |    2 +-
 {sdk/tests => tests}/mintManagerInit.test.ts  |    2 +-
 .../mintManagerInitUpdate.test.ts             |    2 +-
 .../tests => tests}/rulesetInitUpdate.test.ts |    2 +-
 .../cardinal_creator_standard-keypair.json    |    0
 ...wJZT3pxFQHfY65jp6QbvcTvda6oPSbaeKbYEs.json |    0
 .../test-keypairs/test-key.json               |    0
 {sdk/tests => tests}/utils.ts                 |    6 +-
 sdk/tsconfig.cjs.json => tsconfig.cjs.json    |    0
 sdk/tsconfig.esm.json => tsconfig.esm.json    |    0
 sdk/tsconfig.json => tsconfig.json            |    0
 sdk/yarn.lock => yarn.lock                    |    0
 91 files changed, 681 insertions(+), 4237 deletions(-)
 rename sdk/.eslintrc.json => .eslintrc.json (100%)
 create mode 100644 .github/actions/install-anchor/action.yml
 create mode 100644 .github/actions/install-linux-build-deps/action.yml
 create mode 100644 .github/actions/install-rust/action.yml
 create mode 100644 .github/actions/install-solana/action.yml
 create mode 100644 .github/actions/install-soteria/action.yml
 create mode 100644 .github/dependabot.yml
 create mode 100644 .github/workflows/deps.yml
 create mode 100644 .github/workflows/publish-docs.yml
 create mode 100644 .github/workflows/publish-js.yml
 create mode 100644 .github/workflows/release.yml
 create mode 100644 .github/workflows/test.yml
 rename sdk/.solitarc.js => .solitarc.js (63%)
 create mode 100755 generate-idls.sh
 rename sdk/jest.config.js => jest.config.js (100%)
 rename sdk/package.json => package.json (100%)
 rename {program => programs/cardinal-creator-standard}/Cargo.lock (100%)
 rename {program => programs/cardinal-creator-standard}/Cargo.toml (100%)
 rename {program => programs/cardinal-creator-standard}/rustfmt.toml (100%)
 rename {program => programs/cardinal-creator-standard}/src/errors.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/mint_manager/init_mint_manager.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/mint_manager/mod.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/mint_manager/update_mint_manager.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/mod.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/ruleset/init_ruleset.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/ruleset/mod.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/ruleset/update_ruleset.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/approve.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/burn.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/close.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/init_account.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/init_mint.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/mod.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/post_transfer.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/pre_transfer.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/revoke.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/instructions/token/transfer.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/lib.rs (100%)
 rename {program => programs/cardinal-creator-standard}/src/state.rs (100%)
 rename sdk/{idl => }/cardinal_creator_standard.json (100%)
 rename sdk/{src => }/errors/formatLogs.ts (100%)
 rename sdk/{src => }/errors/parseTransactionLogs.ts (100%)
 rename sdk/{src => }/errors/programErrors.ts (100%)
 delete mode 100755 sdk/generate-idls.sh
 rename sdk/{src => }/generated/accounts/AccountBalances.ts (100%)
 rename sdk/{src => }/generated/accounts/MintManager.ts (100%)
 rename sdk/{src => }/generated/accounts/Ruleset.ts (100%)
 rename sdk/{src => }/generated/accounts/index.ts (100%)
 rename sdk/{src => }/generated/errors/index.ts (100%)
 rename sdk/{src => }/generated/index.ts (100%)
 rename sdk/{src => }/generated/instructions/approve.ts (100%)
 rename sdk/{src => }/generated/instructions/burn.ts (100%)
 rename sdk/{src => }/generated/instructions/close.ts (100%)
 rename sdk/{src => }/generated/instructions/index.ts (100%)
 rename sdk/{src => }/generated/instructions/initAccount.ts (100%)
 rename sdk/{src => }/generated/instructions/initMint.ts (100%)
 rename sdk/{src => }/generated/instructions/initMintManager.ts (100%)
 rename sdk/{src => }/generated/instructions/initRuleset.ts (100%)
 rename sdk/{src => }/generated/instructions/postTransfer.ts (100%)
 rename sdk/{src => }/generated/instructions/preTransfer.ts (100%)
 rename sdk/{src => }/generated/instructions/revoke.ts (100%)
 rename sdk/{src => }/generated/instructions/transfer.ts (100%)
 rename sdk/{src => }/generated/instructions/updateMintManager.ts (100%)
 rename sdk/{src => }/generated/instructions/updateRuleset.ts (100%)
 rename sdk/{src => }/generated/types/AccountBalance.ts (100%)
 rename sdk/{src => }/generated/types/InitRulesetIx.ts (100%)
 rename sdk/{src => }/generated/types/UpdateMintManagerIx.ts (100%)
 rename sdk/{src => }/generated/types/UpdateRulesetIx.ts (100%)
 rename sdk/{src => }/generated/types/index.ts (100%)
 rename sdk/{sdk/src => }/idl/cardinal_creator_standard.ts (100%)
 rename sdk/{src => }/index.ts (100%)
 rename sdk/{src => }/pda.ts (100%)
 delete mode 100644 sdk/src/idl/cardinal_creator_standard.ts
 delete mode 100644 sdk/yarn-error.log
 rename {sdk/tests => tests}/mint.ts (100%)
 rename {sdk/tests => tests}/mintInit.test.ts (99%)
 rename {sdk/tests => tests}/mintManagerInit.test.ts (99%)
 rename {sdk/tests => tests}/mintManagerInitUpdate.test.ts (99%)
 rename {sdk/tests => tests}/rulesetInitUpdate.test.ts (99%)
 rename {sdk/tests => tests}/test-keypairs/cardinal_creator_standard-keypair.json (100%)
 rename {sdk/tests => tests}/test-keypairs/t1LVbNwJZT3pxFQHfY65jp6QbvcTvda6oPSbaeKbYEs.json (100%)
 rename {sdk/tests => tests}/test-keypairs/test-key.json (100%)
 rename {sdk/tests => tests}/utils.ts (94%)
 rename sdk/tsconfig.cjs.json => tsconfig.cjs.json (100%)
 rename sdk/tsconfig.esm.json => tsconfig.esm.json (100%)
 rename sdk/tsconfig.json => tsconfig.json (100%)
 rename sdk/yarn.lock => yarn.lock (100%)

diff --git a/sdk/.eslintrc.json b/.eslintrc.json
similarity index 100%
rename from sdk/.eslintrc.json
rename to .eslintrc.json
diff --git a/.github/actions/install-anchor/action.yml b/.github/actions/install-anchor/action.yml
new file mode 100644
index 00000000..8a2735e7
--- /dev/null
+++ b/.github/actions/install-anchor/action.yml
@@ -0,0 +1,31 @@
+name: Setup Anchor cli
+
+inputs:
+  anchor_git:
+    description: Link to Anchor cli GH repository
+    required: true
+  anchor_version:
+    description: Version of Anchor cli
+    required: true
+
+runs:
+  using: "composite"
+  steps:
+    - uses: actions/cache@v2
+      name: Cache Cargo registry + index
+      id: cache-anchor
+      with:
+        path: |
+          ~/.cargo/bin/
+          ~/.cargo/registry/index/
+          ~/.cargo/registry/cache/
+          ~/.cargo/git/db/
+        key: cargo-${{ runner.os }}-anchor-${{ hashFiles('**/Cargo.lock') }}
+    - name: Install anchor
+      if: steps.cache-anchor.outputs.cache-hit != 'true'
+      run: cargo install --git ${{inputs.anchor_git}} --tag v${{inputs.anchor_version}} anchor-cli --locked --force
+      shell: bash
+    - uses: actions/upload-artifact@v2
+      with:
+        name: anchor-binary
+        path: ~/.cargo/bin/anchor
diff --git a/.github/actions/install-linux-build-deps/action.yml b/.github/actions/install-linux-build-deps/action.yml
new file mode 100644
index 00000000..18723ee8
--- /dev/null
+++ b/.github/actions/install-linux-build-deps/action.yml
@@ -0,0 +1,30 @@
+name: Install Linux Build Deps
+runs:
+  using: "composite"
+  steps:
+    - name: apt-get add llvm-snapshot key and update
+      run: |
+        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
+        sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main"
+        sudo apt-get update
+      shell: bash
+
+    - name: apt-get install clang
+      run: |
+        sudo apt-get install -y clang-7 --allow-unauthenticated
+        clang-7 --version
+      shell: bash
+
+    - name: apt-get install ssl libs
+      run: |
+        sudo apt-get install -y openssl --allow-unauthenticated
+        sudo apt-get install -y libssl-dev --allow-unauthenticated
+        sudo apt-get install -y libssl1.1 --allow-unauthenticated
+      shell: bash
+
+    - name: apt-get install dev tools
+      run: |
+        sudo apt-get install -y libudev-dev
+        sudo apt-get install -y binutils-dev
+        sudo apt-get install -y libunwind-dev
+      shell: bash
diff --git a/.github/actions/install-rust/action.yml b/.github/actions/install-rust/action.yml
new file mode 100644
index 00000000..ddde4cdd
--- /dev/null
+++ b/.github/actions/install-rust/action.yml
@@ -0,0 +1,37 @@
+name: Install Rust
+
+inputs:
+  toolchain:
+    description: The Rust version to use, default env.RUST_TOOLCHAIN
+    required: true
+
+runs:
+  using: "composite"
+  steps:
+    - name: Install Rust Stable
+      id: rust_toolchain
+      uses: actions-rs/toolchain@v1
+      with:
+        toolchain: ${{ inputs.toolchain }}
+        override: true
+        profile: minimal
+        components: rustfmt, clippy
+
+    - name: Add Cargo bin to Path
+      run: |
+        echo "$HOME/.cargo/bin" >> $GITHUB_PATH
+      shell: bash
+
+    - name: Verify Rust install
+      run: |
+        echo "Verifying rust '${{ inputs.toolchain }}' ..."
+        rustc --version
+        cargo --version
+        cargo clippy --version
+        rustfmt --version
+      shell: bash
+
+    - name: Share rustc hash
+      run: |
+        echo 'RUSTC_HASH=${{ steps.rust_toolchain.outputs.rustc_hash }}' >> $GITHUB_ENV
+      shell: bash
diff --git a/.github/actions/install-solana/action.yml b/.github/actions/install-solana/action.yml
new file mode 100644
index 00000000..babc6cf2
--- /dev/null
+++ b/.github/actions/install-solana/action.yml
@@ -0,0 +1,45 @@
+name: Install Solana
+
+inputs:
+  solana_version:
+    description: Version of Solana to install
+    required: true
+
+runs:
+  using: "composite"
+  steps:
+    - name: Cache Solana Install
+      id: cache-solana-install
+      uses: actions/cache@v2
+      with:
+        path: "$HOME/.local/share/solana/install/releases/${{ inputs.solana_version }}"
+        key: ${{ runner.os }}-Solana-v${{ inputs.solana_version  }}
+
+    - name: Install Solana
+      # if: steps.cache-solana-install.outputs.cache-hit != 'true'
+      run: |
+        sh -c "$(curl -sSfL https://release.solana.com/v${{ inputs.solana_version }}/install)"
+      shell: bash
+
+    - name: Set Active Solana Version
+      run: |
+        rm -f "$HOME/.local/share/solana/install/active_release"
+        ln -s "$HOME/.local/share/solana/install/releases/${{ inputs.solana_version }}/solana-release" "$HOME/.local/share/solana/install/active_release"
+      shell: bash
+
+    - name: Add Solana bin to Path
+      run: |
+        echo "$HOME/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH
+        export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+      shell: bash
+
+    - name: Verify Solana install
+      run: |
+        solana --version
+      shell: bash
+
+    - name: Install toolchain
+      run: |
+        echo Installing bpf toolchain...
+        (cd /home/runner/.local/share/solana/install/active_release/bin/sdk/bpf/scripts; ./install.sh)
+      shell: bash
diff --git a/.github/actions/install-soteria/action.yml b/.github/actions/install-soteria/action.yml
new file mode 100644
index 00000000..ab50133d
--- /dev/null
+++ b/.github/actions/install-soteria/action.yml
@@ -0,0 +1,28 @@
+name: Install soteria
+
+inputs:
+  soteria-version:
+    description: Version of Solana to install
+    required: true
+
+runs:
+  using: "composite"
+  steps:
+    - name: Cache Soteria Install
+      id: cache-soteria-install
+      uses: actions/cache@v2
+      with:
+        path: "PATH=$PWD/soteria-linux-develop/bin/soteria"
+        key: ${{ runner.os }}-soteria-v${{ inputs.soteria-version  }}
+    - name: Install soteria
+      if: steps.cache-soteria.outputs.cache-hit != 'true'
+      run: |
+        echo Installing Soteria...
+        sh -c "$(curl -k https://supercompiler.xyz/install)"
+        export PATH=$PWD/soteria-linux-develop/bin/:$PATH
+        echo "$PWD/soteria-linux-develop/bin" >> $GITHUB_PATH
+      shell: bash
+    # - uses: actions/upload-artifact@v2
+    #   with:
+    #     name: soteria-binary
+    #     path: $PWD/soteria-linux-develop/bin/soteria
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..6fb613e4
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,14 @@
+version: 2
+updates:
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "daily"
+  - package-ecosystem: "npm"
+    directory: "/"
+    schedule:
+      interval: "daily"
+  - package-ecosystem: "cargo"
+    directory: "/"
+    schedule:
+      interval: "daily"
diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml
new file mode 100644
index 00000000..13729ddc
--- /dev/null
+++ b/.github/workflows/deps.yml
@@ -0,0 +1,43 @@
+name: Deps
+
+on:
+  workflow_dispatch: {}
+
+env:
+  CARGO_TERM_COLOR: always
+  SOLANA_VERSION: 1.10.30
+  RUST_TOOLCHAIN: nightly
+  NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
+  ANCHOR_GIT: https://github.com/project-serum/anchor
+  ANCHOR_VERSION: 0.24.2
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    name: Build deps and cache
+    steps:
+      - uses: actions/checkout@v3
+      - uses: ./.github/actions/install-linux-build-deps
+      - name: Install Rust nightly
+        uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - uses: ./.github/actions/install-solana
+        with:
+          solana_version: ${{ env.SOLANA_VERSION }}
+      - uses: ./.github/actions/install-anchor
+        with:
+          anchor_git: ${{ env.ANCHOR_GIT }}
+          anchor_version: ${{ env.ANCHOR_VERSION }}
+
+      - uses: actions/cache@v2
+        with:
+          path: |
+            ~/.cargo/bin/
+            ~/.cargo/registry/index/
+            ~/.cargo/registry/cache/
+            ~/.cargo/git/db/
+            ./rust/target
+          key: ${{ env.cache_id }}-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ env.RUSTC_HASH }}
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
new file mode 100644
index 00000000..07e3a46c
--- /dev/null
+++ b/.github/workflows/publish-docs.yml
@@ -0,0 +1,40 @@
+name: Publish docs
+
+on:
+  workflow_dispatch: {}
+  push:
+    branches: [main]
+
+env:
+  CARGO_TERM_COLOR: always
+  RUST_TOOLCHAIN: nightly
+  NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
+
+jobs:
+  site:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+
+      - name: Get yarn cache directory path
+        id: yarn-cache-dir-path
+        run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
+      - name: Yarn Cache
+        uses: actions/cache@v3
+        with:
+          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-modules-
+
+      - name: Install Yarn dependencies
+        run: yarn install
+      - run: yarn docs:generate
+      - run: cp -R images/ site/
+
+      - name: Deploy 🚀
+        uses: JamesIves/github-pages-deploy-action@v4.2.5
+        with:
+          branch: gh-pages
+          folder: site
diff --git a/.github/workflows/publish-js.yml b/.github/workflows/publish-js.yml
new file mode 100644
index 00000000..8ff3e5b0
--- /dev/null
+++ b/.github/workflows/publish-js.yml
@@ -0,0 +1,61 @@
+name: Publish JS
+
+on:
+  workflow_dispatch: {}
+  push:
+    tags:
+      - "js-v*.*.*"
+
+env:
+  CARGO_TERM_COLOR: always
+  RUST_TOOLCHAIN: nightly
+  NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
+
+jobs:
+  release-sdk:
+    runs-on: ubuntu-latest
+    name: Release SDK on NPM
+    steps:
+      - uses: actions/checkout@v3
+
+      - name: Get yarn cache directory path
+        id: yarn-cache-dir-path
+        run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
+      - name: Yarn Cache
+        uses: actions/cache@v3
+        with:
+          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-modules-
+      - uses: actions/setup-node@v3
+        env:
+          FORCE_COLOR: 0
+        with:
+          node-version: ${{ env.NODE_VERSION }}
+          cache: "yarn"
+          cache-dependency-path: ./yarn.lock
+
+      - name: Install Yarn dependencies
+        run: yarn install
+      - run: yarn build
+      - run: |
+          echo 'npmAuthToken: "${NPM_AUTH_TOKEN}"' >> .yarnrc.yml
+      - name: Publish
+        run: yarn publish
+  site:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+
+      - name: Install Yarn dependencies
+        run: yarn install
+      - run: yarn docs:generate
+      - run: cp -R images/ site/
+
+      - name: Deploy 🚀
+        uses: JamesIves/github-pages-deploy-action@v4.2.5
+        with:
+          branch: gh-pages
+          folder: site
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..7bd51295
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,118 @@
+name: Release
+
+on:
+  workflow_dispatch: {}
+  push:
+    tags:
+      - "v*.*.*"
+
+env:
+  CARGO_TERM_COLOR: always
+  RUST_TOOLCHAIN: nightly
+  NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
+  SOLANA_VERSION: 1.10.30
+  ANCHOR_GIT: https://github.com/project-serum/anchor
+  ANCHOR_VERSION: 0.24.2
+
+jobs:
+  release-sdk:
+    runs-on: ubuntu-latest
+    name: Release SDK on NPM
+    steps:
+      - uses: actions/checkout@v3
+      - name: Get yarn cache directory path
+        id: yarn-cache-dir-path
+        run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
+      - name: Yarn Cache
+        uses: actions/cache@v3
+        with:
+          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-modules-
+      - uses: actions/setup-node@v3
+        env:
+          FORCE_COLOR: 0
+        with:
+          node-version: ${{ env.NODE_VERSION }}
+          cache: "yarn"
+          cache-dependency-path: ./yarn.lock
+
+      - name: Install Yarn dependencies
+        run: yarn install
+      - run: yarn build
+      - run: |
+          echo 'npmAuthToken: "${NPM_AUTH_TOKEN}"' >> .yarnrc.yml
+      - name: Publish
+        run: yarn publish
+
+  release-crate:
+    runs-on: ubuntu-latest
+    name: Release crate on crates.io
+    steps:
+      - uses: actions/checkout@v3
+      - name: Install Rust nightly
+        uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - run: cargo install cargo-workspaces
+      - uses: Swatinem/rust-cache@v1
+      - name: Publish crates
+        run: cargo workspaces publish --from-git --yes --skip-published --token ${{ secrets.CARGO_PUBLISH_TOKEN }}
+
+  release-binaries:
+    runs-on: ubuntu-latest
+    name: Release verifiable binaries
+    steps:
+      - uses: actions/checkout@v3
+      - uses: ./.github/actions/install-linux-build-deps
+      - uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - uses: ./.github/actions/install-solana
+        with:
+          solana_version: ${{ env.SOLANA_VERSION }}
+      - uses: ./.github/actions/install-anchor
+        with:
+          anchor_git: ${{ env.ANCHOR_GIT }}
+          anchor_version: ${{ env.ANCHOR_VERSION }}
+      - name: Build programs
+        run: anchor build --verifiable
+      - name: Release
+        uses: softprops/action-gh-release@v1
+        with:
+          files: |
+            target/deploy/*
+            target/idl/*
+            target/verifiable/*
+
+  site:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+      - name: Get yarn cache directory path
+        id: yarn-cache-dir-path
+        run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
+      - name: Yarn Cache
+        uses: actions/cache@v3
+        with:
+          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-modules-
+
+      - name: Install Yarn dependencies
+        run: yarn install
+      - run: yarn docs:generate
+      - run: cp -R images/ site/
+
+      - name: Deploy 🚀
+        uses: JamesIves/github-pages-deploy-action@v4.3.0
+        with:
+          branch: gh-pages
+          folder: site
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 00000000..507de200
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,144 @@
+name: Test
+
+on:
+  workflow_dispatch: {}
+  push:
+    branches: [main]
+  pull_request:
+    branches: [main]
+
+permissions:
+  checks: write
+  contents: read
+  issues: read
+  pull-requests: write
+
+env:
+  CARGO_TERM_COLOR: always
+  SOLANA_VERSION: 1.10.30
+  RUST_TOOLCHAIN: nightly
+  SOTERIA_VERSION: 0.0.0
+  ANCHOR_GIT: https://github.com/project-serum/anchor
+  ANCHOR_VERSION: 0.24.2
+
+jobs:
+  rust-clippy:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          components: rustfmt, clippy
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - uses: actions-rs/clippy-check@v1
+        with:
+          token: ${{ secrets.GITHUB_TOKEN }}
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+          args: --all-features
+
+  rust-fmt:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          components: rustfmt, clippy
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - name: Run fmt
+        uses: actions-rs/cargo@v1
+        with:
+          command: fmt
+          args: --all --manifest-path ./Cargo.toml -- --check
+
+  soteria-scan:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - uses: ./.github/actions/install-solana
+        with:
+          solana_version: ${{ env.SOLANA_VERSION }}
+      - uses: ./.github/actions/install-soteria
+        with:
+          soteria_version: ${{ env.SOTERIA_VERSION }}
+      - name: Soteria scan programs
+        working-directory: ./programs
+        run: >-
+          for PROGRAM in ./*; do
+              if [ -d "$PROGRAM" ]; then
+                  cd "$PROGRAM"
+                  echo "Soteria scan for $PROGRAM"
+                  soteria -analyzeAll .
+                  cd ..
+              fi
+          done
+        shell: bash
+
+  integration-tests:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: ./.github/actions/install-linux-build-deps
+      - uses: actions-rs/toolchain@v1
+        with:
+          override: true
+          profile: minimal
+          toolchain: ${{ env.RUST_TOOLCHAIN }}
+      - uses: ./.github/actions/install-solana
+        with:
+          solana_version: ${{ env.SOLANA_VERSION }}
+      - uses: ./.github/actions/install-anchor
+        with:
+          anchor_git: ${{ env.ANCHOR_GIT }}
+          anchor_version: ${{ env.ANCHOR_VERSION }}
+
+      - uses: actions/cache@v3
+        with:
+          path: |
+            ~/.cargo/bin/
+            ~/.cargo/registry/index/
+            ~/.cargo/registry/cache/
+            ~/.cargo/git/db/
+            ./rust/target
+          key: ${{ env.cache_id }}-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ env.RUSTC_HASH }}
+
+      - name: Install Yarn dependencies
+        run: yarn install
+
+      - name: Setup
+        run: mkdir -p target/deploy
+      - name: build
+        run: anchor buld
+
+      - name: Run local validator
+        run: solana-test-validator --url https://api.devnet.solana.com --clone metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s --clone PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT --bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./target/deploy/cardinal_creator_standard.so --reset & echo $$! > validator.PID
+      - run: sleep 6
+      - run: solana airdrop 1000 $(solana-keygen pubkey tests/test-key.json) --url http://localhost:8899
+      - run: yarn test
+
+      # - uses: dorny/test-reporter@v1
+      #   if: always()
+      #   with:
+      #     artifact: test-results
+      #     name: Local Tests
+      #     path: tests/*.json
+      #     reporter: mocha-json
+      - name: upload-integration-tests
+        if: always()
+        uses: actions/upload-artifact@v3
+        with:
+          name: Unit Test Results
+          path: tests/out.xml
+      - name: publish-integration-tests
+        uses: EnricoMi/publish-unit-test-result-action/composite@v1
+        if: always()
+        with:
+          files: tests/out.xml
diff --git a/.gitignore b/.gitignore
index 7b5346a3..cd34091d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,53 @@
-program/target
-sdk/node_modules
+# Ignore Mac OS noise
+.DS_Store
+
+# VSCode history
+.history
+
+# Ignore makefile output
 validator.PID
-test-ledger
+tests/out.xml
+
+# Ignore the build directory for Rust/Anchor
+target
+# Anchor verified builds directory
+docker-target
+
+# Ignore backup files creates by cargo fmt.
+**/*.rs.bk
+
+# Ignore logs
+.anchor
 yarn-error.log
-sdk/.env
-target
\ No newline at end of file
+lerna-debug.log
+
+# Ignore node modules
+node_modules
+.eslintcache
+
+# Ignore submodule dependencies
+deps
+
+# VM
+.vagrant/
+test-ledger/
+
+# Generated IDL types
+artifacts/
+dist/
+src/idls/
+keypairs
+
+site/
+
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
+
+.env
+.env.local
+
diff --git a/sdk/.solitarc.js b/.solitarc.js
similarity index 63%
rename from sdk/.solitarc.js
rename to .solitarc.js
index 2962eb0b..fa86ee0d 100644
--- a/sdk/.solitarc.js
+++ b/.solitarc.js
@@ -1,7 +1,7 @@
 const path = require("path");
-const programDir = path.join(__dirname, "..", "program");
-const idlDir = path.join(__dirname, "idl");
-const sdkDir = path.join(__dirname, "src", "generated");
+const programDir = path.join(__dirname, "programs/cardinal-creator-standard");
+const idlDir = path.join(__dirname, "sdk");
+const sdkDir = path.join(__dirname, "sdk", "generated");
 const binaryInstallDir = path.join(__dirname, "..", "..", "target", "solita");
 
 module.exports = {
diff --git a/Anchor.toml b/Anchor.toml
index 72fa17b5..4cccc0bd 100644
--- a/Anchor.toml
+++ b/Anchor.toml
@@ -1,14 +1,6 @@
-[features]
-seeds = false
-
 [registry]
 url = "https://anchor.projectserum.com"
 
 [provider]
 cluster = "localnet"
 wallet = "./tests/test-key.json"
-
-[workspace]
-members = [
-  "program",
-]
\ No newline at end of file
diff --git a/Cargo.toml b/Cargo.toml
index dd57c84e..ad6f6649 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,4 +1,11 @@
 [workspace]
-members = [
-    "program",
-]
\ No newline at end of file
+members = ["programs/*"]
+
+[profile.release]
+lto = "fat"
+codegen-units = 1
+
+[profile.release.build-override]
+opt-level = 3
+incremental = false
+codegen-units = 1
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 2e0082c0..3c5fd8c9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,12 @@
 .PHONY: build
 
-TEST_KEY := $(shell solana-keygen pubkey ./sdk/tests/test-keypairs/test-key.json)
+TEST_KEY := $(shell solana-keygen pubkey ./tests/test-keypairs/test-key.json)
 
 all: build start test stop
 
 build:
-	cd program && anchor build
-	cd sdk && yarn idl:generate && yarn solita
+	anchor build
+	yarn idl:generate && yarn solita
 
 start:
 	pkill solana-test-validator || true
@@ -18,7 +18,7 @@ start:
 	solana airdrop 1000 $(TEST_KEY) --url http://localhost:8899
 
 test:
-	cd sdk && yarn test
+	yarn test
 
 stop:
 	pkill solana-test-validator
\ No newline at end of file
diff --git a/generate-idls.sh b/generate-idls.sh
new file mode 100755
index 00000000..da46793c
--- /dev/null
+++ b/generate-idls.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+# This script generates the IDL JSONs without buildling the full packages.
+
+rm -rf sdk/idl/
+mkdir -p sdk/idl/
+
+for PROGRAM in $(find programs/ -maxdepth 3 -name lib.rs); do
+    PROGRAM_NAME=$(dirname $PROGRAM | xargs dirname | xargs basename | tr '-' '_')
+    echo "Parsing IDL for $PROGRAM_NAME"
+    anchor idl parse --file $PROGRAM --out-ts sdk/idl/$PROGRAM_NAME.ts || {
+        echo "Could not parse IDL"
+        exit 1
+    }
+done
diff --git a/sdk/jest.config.js b/jest.config.js
similarity index 100%
rename from sdk/jest.config.js
rename to jest.config.js
diff --git a/sdk/package.json b/package.json
similarity index 100%
rename from sdk/package.json
rename to package.json
diff --git a/program/Cargo.lock b/programs/cardinal-creator-standard/Cargo.lock
similarity index 100%
rename from program/Cargo.lock
rename to programs/cardinal-creator-standard/Cargo.lock
diff --git a/program/Cargo.toml b/programs/cardinal-creator-standard/Cargo.toml
similarity index 100%
rename from program/Cargo.toml
rename to programs/cardinal-creator-standard/Cargo.toml
diff --git a/program/rustfmt.toml b/programs/cardinal-creator-standard/rustfmt.toml
similarity index 100%
rename from program/rustfmt.toml
rename to programs/cardinal-creator-standard/rustfmt.toml
diff --git a/program/src/errors.rs b/programs/cardinal-creator-standard/src/errors.rs
similarity index 100%
rename from program/src/errors.rs
rename to programs/cardinal-creator-standard/src/errors.rs
diff --git a/program/src/instructions/mint_manager/init_mint_manager.rs b/programs/cardinal-creator-standard/src/instructions/mint_manager/init_mint_manager.rs
similarity index 100%
rename from program/src/instructions/mint_manager/init_mint_manager.rs
rename to programs/cardinal-creator-standard/src/instructions/mint_manager/init_mint_manager.rs
diff --git a/program/src/instructions/mint_manager/mod.rs b/programs/cardinal-creator-standard/src/instructions/mint_manager/mod.rs
similarity index 100%
rename from program/src/instructions/mint_manager/mod.rs
rename to programs/cardinal-creator-standard/src/instructions/mint_manager/mod.rs
diff --git a/program/src/instructions/mint_manager/update_mint_manager.rs b/programs/cardinal-creator-standard/src/instructions/mint_manager/update_mint_manager.rs
similarity index 100%
rename from program/src/instructions/mint_manager/update_mint_manager.rs
rename to programs/cardinal-creator-standard/src/instructions/mint_manager/update_mint_manager.rs
diff --git a/program/src/instructions/mod.rs b/programs/cardinal-creator-standard/src/instructions/mod.rs
similarity index 100%
rename from program/src/instructions/mod.rs
rename to programs/cardinal-creator-standard/src/instructions/mod.rs
diff --git a/program/src/instructions/ruleset/init_ruleset.rs b/programs/cardinal-creator-standard/src/instructions/ruleset/init_ruleset.rs
similarity index 100%
rename from program/src/instructions/ruleset/init_ruleset.rs
rename to programs/cardinal-creator-standard/src/instructions/ruleset/init_ruleset.rs
diff --git a/program/src/instructions/ruleset/mod.rs b/programs/cardinal-creator-standard/src/instructions/ruleset/mod.rs
similarity index 100%
rename from program/src/instructions/ruleset/mod.rs
rename to programs/cardinal-creator-standard/src/instructions/ruleset/mod.rs
diff --git a/program/src/instructions/ruleset/update_ruleset.rs b/programs/cardinal-creator-standard/src/instructions/ruleset/update_ruleset.rs
similarity index 100%
rename from program/src/instructions/ruleset/update_ruleset.rs
rename to programs/cardinal-creator-standard/src/instructions/ruleset/update_ruleset.rs
diff --git a/program/src/instructions/token/approve.rs b/programs/cardinal-creator-standard/src/instructions/token/approve.rs
similarity index 100%
rename from program/src/instructions/token/approve.rs
rename to programs/cardinal-creator-standard/src/instructions/token/approve.rs
diff --git a/program/src/instructions/token/burn.rs b/programs/cardinal-creator-standard/src/instructions/token/burn.rs
similarity index 100%
rename from program/src/instructions/token/burn.rs
rename to programs/cardinal-creator-standard/src/instructions/token/burn.rs
diff --git a/program/src/instructions/token/close.rs b/programs/cardinal-creator-standard/src/instructions/token/close.rs
similarity index 100%
rename from program/src/instructions/token/close.rs
rename to programs/cardinal-creator-standard/src/instructions/token/close.rs
diff --git a/program/src/instructions/token/init_account.rs b/programs/cardinal-creator-standard/src/instructions/token/init_account.rs
similarity index 100%
rename from program/src/instructions/token/init_account.rs
rename to programs/cardinal-creator-standard/src/instructions/token/init_account.rs
diff --git a/program/src/instructions/token/init_mint.rs b/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
similarity index 100%
rename from program/src/instructions/token/init_mint.rs
rename to programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
diff --git a/program/src/instructions/token/mod.rs b/programs/cardinal-creator-standard/src/instructions/token/mod.rs
similarity index 100%
rename from program/src/instructions/token/mod.rs
rename to programs/cardinal-creator-standard/src/instructions/token/mod.rs
diff --git a/program/src/instructions/token/post_transfer.rs b/programs/cardinal-creator-standard/src/instructions/token/post_transfer.rs
similarity index 100%
rename from program/src/instructions/token/post_transfer.rs
rename to programs/cardinal-creator-standard/src/instructions/token/post_transfer.rs
diff --git a/program/src/instructions/token/pre_transfer.rs b/programs/cardinal-creator-standard/src/instructions/token/pre_transfer.rs
similarity index 100%
rename from program/src/instructions/token/pre_transfer.rs
rename to programs/cardinal-creator-standard/src/instructions/token/pre_transfer.rs
diff --git a/program/src/instructions/token/revoke.rs b/programs/cardinal-creator-standard/src/instructions/token/revoke.rs
similarity index 100%
rename from program/src/instructions/token/revoke.rs
rename to programs/cardinal-creator-standard/src/instructions/token/revoke.rs
diff --git a/program/src/instructions/token/transfer.rs b/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
similarity index 100%
rename from program/src/instructions/token/transfer.rs
rename to programs/cardinal-creator-standard/src/instructions/token/transfer.rs
diff --git a/program/src/lib.rs b/programs/cardinal-creator-standard/src/lib.rs
similarity index 100%
rename from program/src/lib.rs
rename to programs/cardinal-creator-standard/src/lib.rs
diff --git a/program/src/state.rs b/programs/cardinal-creator-standard/src/state.rs
similarity index 100%
rename from program/src/state.rs
rename to programs/cardinal-creator-standard/src/state.rs
diff --git a/sdk/idl/cardinal_creator_standard.json b/sdk/cardinal_creator_standard.json
similarity index 100%
rename from sdk/idl/cardinal_creator_standard.json
rename to sdk/cardinal_creator_standard.json
diff --git a/sdk/src/errors/formatLogs.ts b/sdk/errors/formatLogs.ts
similarity index 100%
rename from sdk/src/errors/formatLogs.ts
rename to sdk/errors/formatLogs.ts
diff --git a/sdk/src/errors/parseTransactionLogs.ts b/sdk/errors/parseTransactionLogs.ts
similarity index 100%
rename from sdk/src/errors/parseTransactionLogs.ts
rename to sdk/errors/parseTransactionLogs.ts
diff --git a/sdk/src/errors/programErrors.ts b/sdk/errors/programErrors.ts
similarity index 100%
rename from sdk/src/errors/programErrors.ts
rename to sdk/errors/programErrors.ts
diff --git a/sdk/generate-idls.sh b/sdk/generate-idls.sh
deleted file mode 100755
index 0bc03dc6..00000000
--- a/sdk/generate-idls.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-# This script generates the IDL JSONs without buildling the full packages.
-
-rm -rf sdk/src/idl
-mkdir -p sdk/src/idl
-
-for PROGRAM in $(find ../program/ -maxdepth 3 -name lib.rs); do
-    PROGRAM_NAME="cardinal_creator_standard"
-    echo "Parsing IDL for $PROGRAM_NAME"
-    anchor idl parse --file $PROGRAM --out-ts sdk/src/idl/$PROGRAM_NAME.ts || {
-        echo "Could not parse IDL"
-        exit 1
-    }
-done
diff --git a/sdk/src/generated/accounts/AccountBalances.ts b/sdk/generated/accounts/AccountBalances.ts
similarity index 100%
rename from sdk/src/generated/accounts/AccountBalances.ts
rename to sdk/generated/accounts/AccountBalances.ts
diff --git a/sdk/src/generated/accounts/MintManager.ts b/sdk/generated/accounts/MintManager.ts
similarity index 100%
rename from sdk/src/generated/accounts/MintManager.ts
rename to sdk/generated/accounts/MintManager.ts
diff --git a/sdk/src/generated/accounts/Ruleset.ts b/sdk/generated/accounts/Ruleset.ts
similarity index 100%
rename from sdk/src/generated/accounts/Ruleset.ts
rename to sdk/generated/accounts/Ruleset.ts
diff --git a/sdk/src/generated/accounts/index.ts b/sdk/generated/accounts/index.ts
similarity index 100%
rename from sdk/src/generated/accounts/index.ts
rename to sdk/generated/accounts/index.ts
diff --git a/sdk/src/generated/errors/index.ts b/sdk/generated/errors/index.ts
similarity index 100%
rename from sdk/src/generated/errors/index.ts
rename to sdk/generated/errors/index.ts
diff --git a/sdk/src/generated/index.ts b/sdk/generated/index.ts
similarity index 100%
rename from sdk/src/generated/index.ts
rename to sdk/generated/index.ts
diff --git a/sdk/src/generated/instructions/approve.ts b/sdk/generated/instructions/approve.ts
similarity index 100%
rename from sdk/src/generated/instructions/approve.ts
rename to sdk/generated/instructions/approve.ts
diff --git a/sdk/src/generated/instructions/burn.ts b/sdk/generated/instructions/burn.ts
similarity index 100%
rename from sdk/src/generated/instructions/burn.ts
rename to sdk/generated/instructions/burn.ts
diff --git a/sdk/src/generated/instructions/close.ts b/sdk/generated/instructions/close.ts
similarity index 100%
rename from sdk/src/generated/instructions/close.ts
rename to sdk/generated/instructions/close.ts
diff --git a/sdk/src/generated/instructions/index.ts b/sdk/generated/instructions/index.ts
similarity index 100%
rename from sdk/src/generated/instructions/index.ts
rename to sdk/generated/instructions/index.ts
diff --git a/sdk/src/generated/instructions/initAccount.ts b/sdk/generated/instructions/initAccount.ts
similarity index 100%
rename from sdk/src/generated/instructions/initAccount.ts
rename to sdk/generated/instructions/initAccount.ts
diff --git a/sdk/src/generated/instructions/initMint.ts b/sdk/generated/instructions/initMint.ts
similarity index 100%
rename from sdk/src/generated/instructions/initMint.ts
rename to sdk/generated/instructions/initMint.ts
diff --git a/sdk/src/generated/instructions/initMintManager.ts b/sdk/generated/instructions/initMintManager.ts
similarity index 100%
rename from sdk/src/generated/instructions/initMintManager.ts
rename to sdk/generated/instructions/initMintManager.ts
diff --git a/sdk/src/generated/instructions/initRuleset.ts b/sdk/generated/instructions/initRuleset.ts
similarity index 100%
rename from sdk/src/generated/instructions/initRuleset.ts
rename to sdk/generated/instructions/initRuleset.ts
diff --git a/sdk/src/generated/instructions/postTransfer.ts b/sdk/generated/instructions/postTransfer.ts
similarity index 100%
rename from sdk/src/generated/instructions/postTransfer.ts
rename to sdk/generated/instructions/postTransfer.ts
diff --git a/sdk/src/generated/instructions/preTransfer.ts b/sdk/generated/instructions/preTransfer.ts
similarity index 100%
rename from sdk/src/generated/instructions/preTransfer.ts
rename to sdk/generated/instructions/preTransfer.ts
diff --git a/sdk/src/generated/instructions/revoke.ts b/sdk/generated/instructions/revoke.ts
similarity index 100%
rename from sdk/src/generated/instructions/revoke.ts
rename to sdk/generated/instructions/revoke.ts
diff --git a/sdk/src/generated/instructions/transfer.ts b/sdk/generated/instructions/transfer.ts
similarity index 100%
rename from sdk/src/generated/instructions/transfer.ts
rename to sdk/generated/instructions/transfer.ts
diff --git a/sdk/src/generated/instructions/updateMintManager.ts b/sdk/generated/instructions/updateMintManager.ts
similarity index 100%
rename from sdk/src/generated/instructions/updateMintManager.ts
rename to sdk/generated/instructions/updateMintManager.ts
diff --git a/sdk/src/generated/instructions/updateRuleset.ts b/sdk/generated/instructions/updateRuleset.ts
similarity index 100%
rename from sdk/src/generated/instructions/updateRuleset.ts
rename to sdk/generated/instructions/updateRuleset.ts
diff --git a/sdk/src/generated/types/AccountBalance.ts b/sdk/generated/types/AccountBalance.ts
similarity index 100%
rename from sdk/src/generated/types/AccountBalance.ts
rename to sdk/generated/types/AccountBalance.ts
diff --git a/sdk/src/generated/types/InitRulesetIx.ts b/sdk/generated/types/InitRulesetIx.ts
similarity index 100%
rename from sdk/src/generated/types/InitRulesetIx.ts
rename to sdk/generated/types/InitRulesetIx.ts
diff --git a/sdk/src/generated/types/UpdateMintManagerIx.ts b/sdk/generated/types/UpdateMintManagerIx.ts
similarity index 100%
rename from sdk/src/generated/types/UpdateMintManagerIx.ts
rename to sdk/generated/types/UpdateMintManagerIx.ts
diff --git a/sdk/src/generated/types/UpdateRulesetIx.ts b/sdk/generated/types/UpdateRulesetIx.ts
similarity index 100%
rename from sdk/src/generated/types/UpdateRulesetIx.ts
rename to sdk/generated/types/UpdateRulesetIx.ts
diff --git a/sdk/src/generated/types/index.ts b/sdk/generated/types/index.ts
similarity index 100%
rename from sdk/src/generated/types/index.ts
rename to sdk/generated/types/index.ts
diff --git a/sdk/sdk/src/idl/cardinal_creator_standard.ts b/sdk/idl/cardinal_creator_standard.ts
similarity index 100%
rename from sdk/sdk/src/idl/cardinal_creator_standard.ts
rename to sdk/idl/cardinal_creator_standard.ts
diff --git a/sdk/src/index.ts b/sdk/index.ts
similarity index 100%
rename from sdk/src/index.ts
rename to sdk/index.ts
diff --git a/sdk/src/pda.ts b/sdk/pda.ts
similarity index 100%
rename from sdk/src/pda.ts
rename to sdk/pda.ts
diff --git a/sdk/src/idl/cardinal_creator_standard.ts b/sdk/src/idl/cardinal_creator_standard.ts
deleted file mode 100644
index dbef73e2..00000000
--- a/sdk/src/idl/cardinal_creator_standard.ts
+++ /dev/null
@@ -1,1549 +0,0 @@
-export type CardinalCreatorStandard = {
-  "version": "0.1.0",
-  "name": "cardinal_creator_standard",
-  "instructions": [
-    {
-      "name": "initMintManager",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "updateMintManager",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": [
-        {
-          "name": "ix",
-          "type": {
-            "defined": "UpdateMintManagerIx"
-          }
-        }
-      ]
-    },
-    {
-      "name": "initRuleset",
-      "accounts": [
-        {
-          "name": "ruleset",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": [
-        {
-          "name": "ix",
-          "type": {
-            "defined": "InitRulesetIx"
-          }
-        }
-      ]
-    },
-    {
-      "name": "updateRuleset",
-      "accounts": [
-        {
-          "name": "ruleset",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": [
-        {
-          "name": "ix",
-          "type": {
-            "defined": "UpdateRulesetIx"
-          }
-        }
-      ]
-    },
-    {
-      "name": "initMint",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "targetTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "target",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "associatedTokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "initAccount",
-      "accounts": [
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "tokenAccountOwner",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "associatedTokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "approve",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "holderTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holder",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "delegate",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "revoke",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "holderTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holder",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "burn",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holderTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holder",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "close",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "tokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "owner",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "transfer",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "from",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "to",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "instructions",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "preTransfer",
-      "accounts": [
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "instructions",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "postTransfer",
-      "accounts": [
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "instructions",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    }
-  ],
-  "accounts": [
-    {
-      "name": "mintManager",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "bump",
-            "type": "u8"
-          },
-          {
-            "name": "version",
-            "type": "u8"
-          },
-          {
-            "name": "mint",
-            "type": "publicKey"
-          },
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "ruleset",
-            "type": "publicKey"
-          }
-        ]
-      }
-    },
-    {
-      "name": "ruleset",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "bump",
-            "type": "u8"
-          },
-          {
-            "name": "version",
-            "type": "u8"
-          },
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "collector",
-            "type": "publicKey"
-          },
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
-          {
-            "name": "name",
-            "type": "string"
-          },
-          {
-            "name": "disallowedAddresses",
-            "type": {
-              "vec": "publicKey"
-            }
-          },
-          {
-            "name": "allowedPrograms",
-            "type": {
-              "vec": "publicKey"
-            }
-          }
-        ]
-      }
-    },
-    {
-      "name": "accountBalances",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "balances",
-            "type": {
-              "vec": {
-                "defined": "AccountBalance"
-              }
-            }
-          }
-        ]
-      }
-    }
-  ],
-  "types": [
-    {
-      "name": "UpdateMintManagerIx",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "authority",
-            "type": "publicKey"
-          }
-        ]
-      }
-    },
-    {
-      "name": "InitRulesetIx",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
-          {
-            "name": "name",
-            "type": "string"
-          },
-          {
-            "name": "collector",
-            "type": "publicKey"
-          },
-          {
-            "name": "disallowedAddresses",
-            "type": {
-              "vec": "publicKey"
-            }
-          },
-          {
-            "name": "allowedPrograms",
-            "type": {
-              "vec": "publicKey"
-            }
-          }
-        ]
-      }
-    },
-    {
-      "name": "UpdateRulesetIx",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "collector",
-            "type": "publicKey"
-          },
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
-          {
-            "name": "disallowedAddresses",
-            "type": {
-              "vec": "publicKey"
-            }
-          },
-          {
-            "name": "allowedPrograms",
-            "type": {
-              "vec": "publicKey"
-            }
-          }
-        ]
-      }
-    },
-    {
-      "name": "AccountBalance",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "address",
-            "type": "publicKey"
-          },
-          {
-            "name": "mint",
-            "type": "publicKey"
-          },
-          {
-            "name": "size",
-            "type": "u64"
-          },
-          {
-            "name": "balance",
-            "type": "u64"
-          }
-        ]
-      }
-    }
-  ],
-  "errors": [
-    {
-      "code": 6000,
-      "name": "InvalidMint",
-      "msg": "Invalid mint"
-    },
-    {
-      "code": 6001,
-      "name": "InvalidCollector",
-      "msg": "Invalid collector address"
-    },
-    {
-      "code": 6002,
-      "name": "InvalidAuthority",
-      "msg": "Invalid authority address"
-    },
-    {
-      "code": 6003,
-      "name": "InvalidMintManager",
-      "msg": "Invalid mint manager"
-    },
-    {
-      "code": 6004,
-      "name": "InvlaidHolderTokenAccount",
-      "msg": "Invalid holder token account"
-    },
-    {
-      "code": 6005,
-      "name": "InvalidTargetTokenAccount",
-      "msg": "Invalid target token account"
-    },
-    {
-      "code": 6006,
-      "name": "InvalidCloseTokenAccount",
-      "msg": "Invalid token account to close"
-    },
-    {
-      "code": 6007,
-      "name": "InvalidHolderTokenAccount",
-      "msg": "Invalid holder token account"
-    },
-    {
-      "code": 6008,
-      "name": "InvalidRuleset",
-      "msg": "Invalid ruleset"
-    },
-    {
-      "code": 6009,
-      "name": "InvalidPreTransferInstruction",
-      "msg": "Invalid pre transfer instruction"
-    },
-    {
-      "code": 6010,
-      "name": "InvalidPostTransferInstruction",
-      "msg": "Invalid post transfer instruction"
-    },
-    {
-      "code": 6011,
-      "name": "ProgramDisallowed",
-      "msg": "Disallowed program included in transfer"
-    },
-    {
-      "code": 6012,
-      "name": "ProgramNotAllowed",
-      "msg": "Program not allowed in allowed programs to transfer"
-    },
-    {
-      "code": 6013,
-      "name": "UnknownAccount",
-      "msg": "Unknown account found in instruction"
-    },
-    {
-      "code": 6014,
-      "name": "AccountNotFound",
-      "msg": "Account not found in instruction"
-    }
-  ]
-};
-
-export const IDL: CardinalCreatorStandard = {
-  "version": "0.1.0",
-  "name": "cardinal_creator_standard",
-  "instructions": [
-    {
-      "name": "initMintManager",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "updateMintManager",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": [
-        {
-          "name": "ix",
-          "type": {
-            "defined": "UpdateMintManagerIx"
-          }
-        }
-      ]
-    },
-    {
-      "name": "initRuleset",
-      "accounts": [
-        {
-          "name": "ruleset",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": [
-        {
-          "name": "ix",
-          "type": {
-            "defined": "InitRulesetIx"
-          }
-        }
-      ]
-    },
-    {
-      "name": "updateRuleset",
-      "accounts": [
-        {
-          "name": "ruleset",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": [
-        {
-          "name": "ix",
-          "type": {
-            "defined": "UpdateRulesetIx"
-          }
-        }
-      ]
-    },
-    {
-      "name": "initMint",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "targetTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "target",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "associatedTokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "initAccount",
-      "accounts": [
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "tokenAccountOwner",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "associatedTokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "approve",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "holderTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holder",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "delegate",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "revoke",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "holderTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holder",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "burn",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holderTokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "holder",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "close",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "tokenAccount",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "owner",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "transfer",
-      "accounts": [
-        {
-          "name": "mintManager",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "ruleset",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "mint",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "from",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "to",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "authority",
-          "isMut": false,
-          "isSigner": true
-        },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "tokenProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "systemProgram",
-          "isMut": false,
-          "isSigner": false
-        },
-        {
-          "name": "instructions",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "preTransfer",
-      "accounts": [
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "payer",
-          "isMut": true,
-          "isSigner": true
-        },
-        {
-          "name": "instructions",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    },
-    {
-      "name": "postTransfer",
-      "accounts": [
-        {
-          "name": "accountBalances",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "collector",
-          "isMut": true,
-          "isSigner": false
-        },
-        {
-          "name": "instructions",
-          "isMut": false,
-          "isSigner": false
-        }
-      ],
-      "args": []
-    }
-  ],
-  "accounts": [
-    {
-      "name": "mintManager",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "bump",
-            "type": "u8"
-          },
-          {
-            "name": "version",
-            "type": "u8"
-          },
-          {
-            "name": "mint",
-            "type": "publicKey"
-          },
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "ruleset",
-            "type": "publicKey"
-          }
-        ]
-      }
-    },
-    {
-      "name": "ruleset",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "bump",
-            "type": "u8"
-          },
-          {
-            "name": "version",
-            "type": "u8"
-          },
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "collector",
-            "type": "publicKey"
-          },
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
-          {
-            "name": "name",
-            "type": "string"
-          },
-          {
-            "name": "disallowedAddresses",
-            "type": {
-              "vec": "publicKey"
-            }
-          },
-          {
-            "name": "allowedPrograms",
-            "type": {
-              "vec": "publicKey"
-            }
-          }
-        ]
-      }
-    },
-    {
-      "name": "accountBalances",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "balances",
-            "type": {
-              "vec": {
-                "defined": "AccountBalance"
-              }
-            }
-          }
-        ]
-      }
-    }
-  ],
-  "types": [
-    {
-      "name": "UpdateMintManagerIx",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "authority",
-            "type": "publicKey"
-          }
-        ]
-      }
-    },
-    {
-      "name": "InitRulesetIx",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
-          {
-            "name": "name",
-            "type": "string"
-          },
-          {
-            "name": "collector",
-            "type": "publicKey"
-          },
-          {
-            "name": "disallowedAddresses",
-            "type": {
-              "vec": "publicKey"
-            }
-          },
-          {
-            "name": "allowedPrograms",
-            "type": {
-              "vec": "publicKey"
-            }
-          }
-        ]
-      }
-    },
-    {
-      "name": "UpdateRulesetIx",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "authority",
-            "type": "publicKey"
-          },
-          {
-            "name": "collector",
-            "type": "publicKey"
-          },
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
-          {
-            "name": "disallowedAddresses",
-            "type": {
-              "vec": "publicKey"
-            }
-          },
-          {
-            "name": "allowedPrograms",
-            "type": {
-              "vec": "publicKey"
-            }
-          }
-        ]
-      }
-    },
-    {
-      "name": "AccountBalance",
-      "type": {
-        "kind": "struct",
-        "fields": [
-          {
-            "name": "address",
-            "type": "publicKey"
-          },
-          {
-            "name": "mint",
-            "type": "publicKey"
-          },
-          {
-            "name": "size",
-            "type": "u64"
-          },
-          {
-            "name": "balance",
-            "type": "u64"
-          }
-        ]
-      }
-    }
-  ],
-  "errors": [
-    {
-      "code": 6000,
-      "name": "InvalidMint",
-      "msg": "Invalid mint"
-    },
-    {
-      "code": 6001,
-      "name": "InvalidCollector",
-      "msg": "Invalid collector address"
-    },
-    {
-      "code": 6002,
-      "name": "InvalidAuthority",
-      "msg": "Invalid authority address"
-    },
-    {
-      "code": 6003,
-      "name": "InvalidMintManager",
-      "msg": "Invalid mint manager"
-    },
-    {
-      "code": 6004,
-      "name": "InvlaidHolderTokenAccount",
-      "msg": "Invalid holder token account"
-    },
-    {
-      "code": 6005,
-      "name": "InvalidTargetTokenAccount",
-      "msg": "Invalid target token account"
-    },
-    {
-      "code": 6006,
-      "name": "InvalidCloseTokenAccount",
-      "msg": "Invalid token account to close"
-    },
-    {
-      "code": 6007,
-      "name": "InvalidHolderTokenAccount",
-      "msg": "Invalid holder token account"
-    },
-    {
-      "code": 6008,
-      "name": "InvalidRuleset",
-      "msg": "Invalid ruleset"
-    },
-    {
-      "code": 6009,
-      "name": "InvalidPreTransferInstruction",
-      "msg": "Invalid pre transfer instruction"
-    },
-    {
-      "code": 6010,
-      "name": "InvalidPostTransferInstruction",
-      "msg": "Invalid post transfer instruction"
-    },
-    {
-      "code": 6011,
-      "name": "ProgramDisallowed",
-      "msg": "Disallowed program included in transfer"
-    },
-    {
-      "code": 6012,
-      "name": "ProgramNotAllowed",
-      "msg": "Program not allowed in allowed programs to transfer"
-    },
-    {
-      "code": 6013,
-      "name": "UnknownAccount",
-      "msg": "Unknown account found in instruction"
-    },
-    {
-      "code": 6014,
-      "name": "AccountNotFound",
-      "msg": "Account not found in instruction"
-    }
-  ]
-};
diff --git a/sdk/yarn-error.log b/sdk/yarn-error.log
deleted file mode 100644
index 107a6afc..00000000
--- a/sdk/yarn-error.log
+++ /dev/null
@@ -1,2643 +0,0 @@
-Arguments: 
-  /opt/homebrew/Cellar/node/18.2.0/bin/node /usr/local/bin/yarn add -D jest
-
-PATH: 
-  /Users/jbogle/Code/solana/bin:/Users/jbogle/Code/solana/target/release:/opt/homebrew/opt/openssl@1.1/bin:/opt/homebrew/opt/openssl@3/bin:/Users/jbogle/.cargo/bin:/opt/homebrew/bin:/Users/jbogle/.local/share/solana/install/active_release/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
-
-Yarn version: 
-  1.22.17
-
-Node version: 
-  18.2.0
-
-Platform: 
-  darwin arm64
-
-Trace: 
-  SyntaxError: /Users/jbogle/Code/cardinal-creator-standard/sdk/package.json: Unexpected string in JSON at position 351
-      at JSON.parse (<anonymous>)
-      at /usr/local/lib/node_modules/yarn/lib/cli.js:1625:59
-      at Generator.next (<anonymous>)
-      at step (/usr/local/lib/node_modules/yarn/lib/cli.js:310:30)
-      at /usr/local/lib/node_modules/yarn/lib/cli.js:321:13
-
-npm manifest: 
-  {
-    "name": "cardinal-creator-standard",
-    "version": "1.0.0",
-    "description": "SDK for cardinal-creator-standard",
-    "main": "index.ts",
-    "license": "MIT",
-    "scripts": {
-      "test": "jest"
-    },
-  
-    "dependencies": {
-      "@metaplex-foundation/rustbin": "^0.3.1",
-      "@metaplex-foundation/solita": "^0.12.2",
-      "@solana/spl-token": "0.1.8"
-    }
-  }
-  
-  "jest": "^27.2.5",
-  "js-yaml": "^4.1.0",
-  "prettier": "2.5.1",
-  "ts-jest": "^27.1.2",
-
-yarn manifest: 
-  No manifest
-
-Lockfile: 
-  # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-  # yarn lockfile v1
-  
-  
-  "@ampproject/remapping@^2.1.0":
-    version "2.2.0"
-    resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
-    integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
-    dependencies:
-      "@jridgewell/gen-mapping" "^0.1.0"
-      "@jridgewell/trace-mapping" "^0.3.9"
-  
-  "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
-    integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
-    dependencies:
-      "@babel/highlight" "^7.18.6"
-  
-  "@babel/compat-data@^7.19.3":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747"
-    integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==
-  
-  "@babel/core@^7.11.6", "@babel/core@^7.12.3":
-    version "7.19.3"
-    resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
-    integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
-    dependencies:
-      "@ampproject/remapping" "^2.1.0"
-      "@babel/code-frame" "^7.18.6"
-      "@babel/generator" "^7.19.3"
-      "@babel/helper-compilation-targets" "^7.19.3"
-      "@babel/helper-module-transforms" "^7.19.0"
-      "@babel/helpers" "^7.19.0"
-      "@babel/parser" "^7.19.3"
-      "@babel/template" "^7.18.10"
-      "@babel/traverse" "^7.19.3"
-      "@babel/types" "^7.19.3"
-      convert-source-map "^1.7.0"
-      debug "^4.1.0"
-      gensync "^1.0.0-beta.2"
-      json5 "^2.2.1"
-      semver "^6.3.0"
-  
-  "@babel/generator@^7.19.3", "@babel/generator@^7.19.4", "@babel/generator@^7.7.2":
-    version "7.19.5"
-    resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.5.tgz#da3f4b301c8086717eee9cab14da91b1fa5dcca7"
-    integrity sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==
-    dependencies:
-      "@babel/types" "^7.19.4"
-      "@jridgewell/gen-mapping" "^0.3.2"
-      jsesc "^2.5.1"
-  
-  "@babel/helper-compilation-targets@^7.19.3":
-    version "7.19.3"
-    resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca"
-    integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==
-    dependencies:
-      "@babel/compat-data" "^7.19.3"
-      "@babel/helper-validator-option" "^7.18.6"
-      browserslist "^4.21.3"
-      semver "^6.3.0"
-  
-  "@babel/helper-environment-visitor@^7.18.9":
-    version "7.18.9"
-    resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
-    integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
-  
-  "@babel/helper-function-name@^7.19.0":
-    version "7.19.0"
-    resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
-    integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
-    dependencies:
-      "@babel/template" "^7.18.10"
-      "@babel/types" "^7.19.0"
-  
-  "@babel/helper-hoist-variables@^7.18.6":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
-    integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
-    dependencies:
-      "@babel/types" "^7.18.6"
-  
-  "@babel/helper-module-imports@^7.18.6":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
-    integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
-    dependencies:
-      "@babel/types" "^7.18.6"
-  
-  "@babel/helper-module-transforms@^7.19.0":
-    version "7.19.0"
-    resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30"
-    integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==
-    dependencies:
-      "@babel/helper-environment-visitor" "^7.18.9"
-      "@babel/helper-module-imports" "^7.18.6"
-      "@babel/helper-simple-access" "^7.18.6"
-      "@babel/helper-split-export-declaration" "^7.18.6"
-      "@babel/helper-validator-identifier" "^7.18.6"
-      "@babel/template" "^7.18.10"
-      "@babel/traverse" "^7.19.0"
-      "@babel/types" "^7.19.0"
-  
-  "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0":
-    version "7.19.0"
-    resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
-    integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
-  
-  "@babel/helper-simple-access@^7.18.6":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7"
-    integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==
-    dependencies:
-      "@babel/types" "^7.19.4"
-  
-  "@babel/helper-split-export-declaration@^7.18.6":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
-    integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
-    dependencies:
-      "@babel/types" "^7.18.6"
-  
-  "@babel/helper-string-parser@^7.19.4":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
-    integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
-  
-  "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
-    version "7.19.1"
-    resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
-    integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
-  
-  "@babel/helper-validator-option@^7.18.6":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
-    integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
-  
-  "@babel/helpers@^7.19.0":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5"
-    integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==
-    dependencies:
-      "@babel/template" "^7.18.10"
-      "@babel/traverse" "^7.19.4"
-      "@babel/types" "^7.19.4"
-  
-  "@babel/highlight@^7.18.6":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
-    integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
-    dependencies:
-      "@babel/helper-validator-identifier" "^7.18.6"
-      chalk "^2.0.0"
-      js-tokens "^4.0.0"
-  
-  "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.19.4":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc"
-    integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==
-  
-  "@babel/plugin-syntax-async-generators@^7.8.4":
-    version "7.8.4"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
-    integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-bigint@^7.8.3":
-    version "7.8.3"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
-    integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-class-properties@^7.8.3":
-    version "7.12.13"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
-    integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.12.13"
-  
-  "@babel/plugin-syntax-import-meta@^7.8.3":
-    version "7.10.4"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
-    integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.10.4"
-  
-  "@babel/plugin-syntax-json-strings@^7.8.3":
-    version "7.8.3"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
-    integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-jsx@^7.7.2":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
-    integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.18.6"
-  
-  "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
-    version "7.10.4"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
-    integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.10.4"
-  
-  "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
-    version "7.8.3"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
-    integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-numeric-separator@^7.8.3":
-    version "7.10.4"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
-    integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.10.4"
-  
-  "@babel/plugin-syntax-object-rest-spread@^7.8.3":
-    version "7.8.3"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
-    integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
-    version "7.8.3"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
-    integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-optional-chaining@^7.8.3":
-    version "7.8.3"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
-    integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.8.0"
-  
-  "@babel/plugin-syntax-top-level-await@^7.8.3":
-    version "7.14.5"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
-    integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.14.5"
-  
-  "@babel/plugin-syntax-typescript@^7.7.2":
-    version "7.18.6"
-    resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285"
-    integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.18.6"
-  
-  "@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78"
-    integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==
-    dependencies:
-      regenerator-runtime "^0.13.4"
-  
-  "@babel/template@^7.18.10", "@babel/template@^7.3.3":
-    version "7.18.10"
-    resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
-    integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
-    dependencies:
-      "@babel/code-frame" "^7.18.6"
-      "@babel/parser" "^7.18.10"
-      "@babel/types" "^7.18.10"
-  
-  "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.7.2":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.4.tgz#f117820e18b1e59448a6c1fa9d0ff08f7ac459a8"
-    integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==
-    dependencies:
-      "@babel/code-frame" "^7.18.6"
-      "@babel/generator" "^7.19.4"
-      "@babel/helper-environment-visitor" "^7.18.9"
-      "@babel/helper-function-name" "^7.19.0"
-      "@babel/helper-hoist-variables" "^7.18.6"
-      "@babel/helper-split-export-declaration" "^7.18.6"
-      "@babel/parser" "^7.19.4"
-      "@babel/types" "^7.19.4"
-      debug "^4.1.0"
-      globals "^11.1.0"
-  
-  "@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
-    version "7.19.4"
-    resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7"
-    integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==
-    dependencies:
-      "@babel/helper-string-parser" "^7.19.4"
-      "@babel/helper-validator-identifier" "^7.19.1"
-      to-fast-properties "^2.0.0"
-  
-  "@bcoe/v8-coverage@^0.2.3":
-    version "0.2.3"
-    resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
-    integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-  
-  "@istanbuljs/load-nyc-config@^1.0.0":
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
-    integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
-    dependencies:
-      camelcase "^5.3.1"
-      find-up "^4.1.0"
-      get-package-type "^0.1.0"
-      js-yaml "^3.13.1"
-      resolve-from "^5.0.0"
-  
-  "@istanbuljs/schema@^0.1.2":
-    version "0.1.3"
-    resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
-    integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-  
-  "@jest/console@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.2.1.tgz#5f2c62dcdd5ce66e94b6d6729e021758bceea090"
-    integrity sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      chalk "^4.0.0"
-      jest-message-util "^29.2.1"
-      jest-util "^29.2.1"
-      slash "^3.0.0"
-  
-  "@jest/core@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.1.tgz#30af794ebd73bfb87cd8ba36718738dfe38b772e"
-    integrity sha512-kuLKYqnqgerXkBUwlHVxeSuhSnd+JMnMCLfU98bpacBSfWEJPegytDh3P2m15/JHzet32hGGld4KR4OzMb6/Tg==
-    dependencies:
-      "@jest/console" "^29.2.1"
-      "@jest/reporters" "^29.2.1"
-      "@jest/test-result" "^29.2.1"
-      "@jest/transform" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      ansi-escapes "^4.2.1"
-      chalk "^4.0.0"
-      ci-info "^3.2.0"
-      exit "^0.1.2"
-      graceful-fs "^4.2.9"
-      jest-changed-files "^29.2.0"
-      jest-config "^29.2.1"
-      jest-haste-map "^29.2.1"
-      jest-message-util "^29.2.1"
-      jest-regex-util "^29.2.0"
-      jest-resolve "^29.2.1"
-      jest-resolve-dependencies "^29.2.1"
-      jest-runner "^29.2.1"
-      jest-runtime "^29.2.1"
-      jest-snapshot "^29.2.1"
-      jest-util "^29.2.1"
-      jest-validate "^29.2.1"
-      jest-watcher "^29.2.1"
-      micromatch "^4.0.4"
-      pretty-format "^29.2.1"
-      slash "^3.0.0"
-      strip-ansi "^6.0.0"
-  
-  "@jest/environment@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.1.tgz#acb1994fbd5ad02819a1a34a923c531e6923b665"
-    integrity sha512-EutqA7T/X6zFjw6mAWRHND+ZkTPklmIEWCNbmwX6uCmOrFrWaLbDZjA+gePHJx6fFMMRvNfjXcvzXEtz54KPlg==
-    dependencies:
-      "@jest/fake-timers" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      jest-mock "^29.2.1"
-  
-  "@jest/expect-utils@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.1.tgz#eae61c90f2066540f60d23b8f254f03b7869b22f"
-    integrity sha512-yr4aHNg5Z1CjKby5ozm7sKjgBlCOorlAoFcvrOQ/4rbZRfgZQdnmh7cth192PYIgiPZo2bBXvqdOApnAMWFJZg==
-    dependencies:
-      jest-get-type "^29.2.0"
-  
-  "@jest/expect@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.1.tgz#8d99be3886ebfcffd6cabb2b46602a301b976ffe"
-    integrity sha512-o14R2t2tHHHudwji43UKkzmmH49xfF5T++FQBK2tl88qwuBWQOcx7fNUYl+mA/9TPNAN0FkQ3usnpyS8FUwsvQ==
-    dependencies:
-      expect "^29.2.1"
-      jest-snapshot "^29.2.1"
-  
-  "@jest/fake-timers@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.1.tgz#786d60e8cb60ca70c9f913cb49fcc77610c072bb"
-    integrity sha512-KWil+8fef7Uj/P/PTZlPKk1Pw117wAmr71VWFV8ZDtRtkwmTG8oY4IRf0Ss44J2y5CYRy8d/zLOhxyoGRENjvA==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      "@sinonjs/fake-timers" "^9.1.2"
-      "@types/node" "*"
-      jest-message-util "^29.2.1"
-      jest-mock "^29.2.1"
-      jest-util "^29.2.1"
-  
-  "@jest/globals@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.2.1.tgz#6933beb8b4e43b990409a19c462fde7b71210e63"
-    integrity sha512-Z4EejYPP1OPVq2abk1+9urAwJqkgw5jB2UJGlPjb5ZwzPQF8WLMcigKEfFzZb2OHhEVPP0RZD0/DbVTY1R6iQA==
-    dependencies:
-      "@jest/environment" "^29.2.1"
-      "@jest/expect" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      jest-mock "^29.2.1"
-  
-  "@jest/reporters@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.1.tgz#599e4376823751fdda50f2ca97243e013da10c4d"
-    integrity sha512-sCsfUKM/yIF4nNed3e/rIgVIS58EiASGMDEPWqItfLZ9UO1ALW2ASDNJzdWkxEt0T8o2Ztj619G0KKrvK+McAw==
-    dependencies:
-      "@bcoe/v8-coverage" "^0.2.3"
-      "@jest/console" "^29.2.1"
-      "@jest/test-result" "^29.2.1"
-      "@jest/transform" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@jridgewell/trace-mapping" "^0.3.15"
-      "@types/node" "*"
-      chalk "^4.0.0"
-      collect-v8-coverage "^1.0.0"
-      exit "^0.1.2"
-      glob "^7.1.3"
-      graceful-fs "^4.2.9"
-      istanbul-lib-coverage "^3.0.0"
-      istanbul-lib-instrument "^5.1.0"
-      istanbul-lib-report "^3.0.0"
-      istanbul-lib-source-maps "^4.0.0"
-      istanbul-reports "^3.1.3"
-      jest-message-util "^29.2.1"
-      jest-util "^29.2.1"
-      jest-worker "^29.2.1"
-      slash "^3.0.0"
-      string-length "^4.0.1"
-      strip-ansi "^6.0.0"
-      v8-to-istanbul "^9.0.1"
-  
-  "@jest/schemas@^29.0.0":
-    version "29.0.0"
-    resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a"
-    integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==
-    dependencies:
-      "@sinclair/typebox" "^0.24.1"
-  
-  "@jest/source-map@^29.2.0":
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744"
-    integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==
-    dependencies:
-      "@jridgewell/trace-mapping" "^0.3.15"
-      callsites "^3.0.0"
-      graceful-fs "^4.2.9"
-  
-  "@jest/test-result@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.2.1.tgz#f42dbf7b9ae465d0a93eee6131473b8bb3bd2edb"
-    integrity sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA==
-    dependencies:
-      "@jest/console" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/istanbul-lib-coverage" "^2.0.0"
-      collect-v8-coverage "^1.0.0"
-  
-  "@jest/test-sequencer@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.1.tgz#cafd2c5f3528c70bd4cc243800459ac366e480cc"
-    integrity sha512-O/pnk0/xGj3lxPVNwB6HREJ7AYvUdyP2xo/s14/9Dtf091HoOeyIhWLKQE/4HzB8lNQBMo6J5mg0bHz/uCWK7w==
-    dependencies:
-      "@jest/test-result" "^29.2.1"
-      graceful-fs "^4.2.9"
-      jest-haste-map "^29.2.1"
-      slash "^3.0.0"
-  
-  "@jest/transform@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.1.tgz#f3d8154edd19cdbcaf1d6646bd8f4ff7812318a2"
-    integrity sha512-xup+iEuaIRSQabQaeqxaQyN0vg1Dctrp9oTObQsNf3sZEowTIa5cANYuoyi8Tqhg4GCqEVLTf18KW7ii0UeFVA==
-    dependencies:
-      "@babel/core" "^7.11.6"
-      "@jest/types" "^29.2.1"
-      "@jridgewell/trace-mapping" "^0.3.15"
-      babel-plugin-istanbul "^6.1.1"
-      chalk "^4.0.0"
-      convert-source-map "^1.4.0"
-      fast-json-stable-stringify "^2.1.0"
-      graceful-fs "^4.2.9"
-      jest-haste-map "^29.2.1"
-      jest-regex-util "^29.2.0"
-      jest-util "^29.2.1"
-      micromatch "^4.0.4"
-      pirates "^4.0.4"
-      slash "^3.0.0"
-      write-file-atomic "^4.0.1"
-  
-  "@jest/types@^29.2.1":
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0"
-    integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==
-    dependencies:
-      "@jest/schemas" "^29.0.0"
-      "@types/istanbul-lib-coverage" "^2.0.0"
-      "@types/istanbul-reports" "^3.0.0"
-      "@types/node" "*"
-      "@types/yargs" "^17.0.8"
-      chalk "^4.0.0"
-  
-  "@jridgewell/gen-mapping@^0.1.0":
-    version "0.1.1"
-    resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
-    integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
-    dependencies:
-      "@jridgewell/set-array" "^1.0.0"
-      "@jridgewell/sourcemap-codec" "^1.4.10"
-  
-  "@jridgewell/gen-mapping@^0.3.2":
-    version "0.3.2"
-    resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
-    integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
-    dependencies:
-      "@jridgewell/set-array" "^1.0.1"
-      "@jridgewell/sourcemap-codec" "^1.4.10"
-      "@jridgewell/trace-mapping" "^0.3.9"
-  
-  "@jridgewell/resolve-uri@3.1.0":
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
-    integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
-  
-  "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
-    version "1.1.2"
-    resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
-    integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
-  
-  "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
-    version "1.4.14"
-    resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
-    integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
-  
-  "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9":
-    version "0.3.17"
-    resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
-    integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
-    dependencies:
-      "@jridgewell/resolve-uri" "3.1.0"
-      "@jridgewell/sourcemap-codec" "1.4.14"
-  
-  "@metaplex-foundation/beet-solana@^0.3.0":
-    version "0.3.1"
-    resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35"
-    integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==
-    dependencies:
-      "@metaplex-foundation/beet" ">=0.1.0"
-      "@solana/web3.js" "^1.56.2"
-      bs58 "^5.0.0"
-      debug "^4.3.4"
-  
-  "@metaplex-foundation/beet@>=0.1.0":
-    version "0.7.1"
-    resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.1.tgz#0975314211643f87b5f6f3e584fa31abcf4c612c"
-    integrity sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==
-    dependencies:
-      ansicolors "^0.3.2"
-      bn.js "^5.2.0"
-      debug "^4.3.3"
-  
-  "@metaplex-foundation/beet@^0.4.0":
-    version "0.4.0"
-    resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.4.0.tgz#eb2a0a6eb084bb25d67dd9bed2f7387ee7e63a55"
-    integrity sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA==
-    dependencies:
-      ansicolors "^0.3.2"
-      bn.js "^5.2.0"
-      debug "^4.3.3"
-  
-  "@metaplex-foundation/rustbin@^0.3.0", "@metaplex-foundation/rustbin@^0.3.1":
-    version "0.3.1"
-    resolved "https://registry.yarnpkg.com/@metaplex-foundation/rustbin/-/rustbin-0.3.1.tgz#bbcd61e8699b73c0b062728c6f5e8d52e8145042"
-    integrity sha512-hWd2JPrnt2/nJzkBpZD3Y6ZfCUlJujv2K7qUfsxdS0jSwLrSrOvYwmNWFw6mc3lbULj6VP4WDyuy9W5/CHU/lQ==
-    dependencies:
-      debug "^4.3.3"
-      semver "^7.3.7"
-      text-table "^0.2.0"
-      toml "^3.0.0"
-  
-  "@metaplex-foundation/solita@^0.12.2":
-    version "0.12.2"
-    resolved "https://registry.yarnpkg.com/@metaplex-foundation/solita/-/solita-0.12.2.tgz#13ef213ac183c986f6d01c5d981c44e59a900834"
-    integrity sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw==
-    dependencies:
-      "@metaplex-foundation/beet" "^0.4.0"
-      "@metaplex-foundation/beet-solana" "^0.3.0"
-      "@metaplex-foundation/rustbin" "^0.3.0"
-      "@solana/web3.js" "^1.36.0"
-      camelcase "^6.2.1"
-      debug "^4.3.3"
-      js-sha256 "^0.9.0"
-      prettier "^2.5.1"
-      snake-case "^3.0.4"
-      spok "^1.4.3"
-  
-  "@noble/ed25519@^1.7.0":
-    version "1.7.1"
-    resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.1.tgz#6899660f6fbb97798a6fbd227227c4589a454724"
-    integrity sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==
-  
-  "@noble/hashes@^1.1.2":
-    version "1.1.3"
-    resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111"
-    integrity sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==
-  
-  "@noble/secp256k1@^1.6.3":
-    version "1.7.0"
-    resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.0.tgz#d15357f7c227e751d90aa06b05a0e5cf993ba8c1"
-    integrity sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==
-  
-  "@sinclair/typebox@^0.24.1":
-    version "0.24.47"
-    resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.47.tgz#530b67163714356f93e82bdb871e7db4b7bc564e"
-    integrity sha512-J4Xw0xYK4h7eC34MNOPQi6IkNxGRck6n4VJpWDzXIFVTW8I/D43Gf+NfWz/v/7NHlzWOPd3+T4PJ4OqklQ2u7A==
-  
-  "@sinonjs/commons@^1.7.0":
-    version "1.8.3"
-    resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
-    integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
-    dependencies:
-      type-detect "4.0.8"
-  
-  "@sinonjs/fake-timers@^9.1.2":
-    version "9.1.2"
-    resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c"
-    integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==
-    dependencies:
-      "@sinonjs/commons" "^1.7.0"
-  
-  "@solana/buffer-layout@^4.0.0":
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz#75b1b11adc487234821c81dfae3119b73a5fd734"
-    integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==
-    dependencies:
-      buffer "~6.0.3"
-  
-  "@solana/spl-token@0.1.8":
-    version "0.1.8"
-    resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.8.tgz#f06e746341ef8d04165e21fc7f555492a2a0faa6"
-    integrity sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==
-    dependencies:
-      "@babel/runtime" "^7.10.5"
-      "@solana/web3.js" "^1.21.0"
-      bn.js "^5.1.0"
-      buffer "6.0.3"
-      buffer-layout "^1.2.0"
-      dotenv "10.0.0"
-  
-  "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2":
-    version "1.66.1"
-    resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.66.1.tgz#f11bf657e76500780a1b94fa286e9ff9e6106c71"
-    integrity sha512-AAVW9vGqYo8m2kMdwQtzEFuEBT21D0Z13wCzGC0lv4vay1BaqDUGSangmakeDEirtIsaAtM0gfAPu1YNLkIy/Q==
-    dependencies:
-      "@babel/runtime" "^7.12.5"
-      "@noble/ed25519" "^1.7.0"
-      "@noble/hashes" "^1.1.2"
-      "@noble/secp256k1" "^1.6.3"
-      "@solana/buffer-layout" "^4.0.0"
-      bigint-buffer "^1.1.5"
-      bn.js "^5.0.0"
-      borsh "^0.7.0"
-      bs58 "^4.0.1"
-      buffer "6.0.1"
-      fast-stable-stringify "^1.0.0"
-      jayson "^3.4.4"
-      node-fetch "2"
-      rpc-websockets "^7.5.0"
-      superstruct "^0.14.2"
-  
-  "@types/babel__core@^7.1.14":
-    version "7.1.19"
-    resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
-    integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
-    dependencies:
-      "@babel/parser" "^7.1.0"
-      "@babel/types" "^7.0.0"
-      "@types/babel__generator" "*"
-      "@types/babel__template" "*"
-      "@types/babel__traverse" "*"
-  
-  "@types/babel__generator@*":
-    version "7.6.4"
-    resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
-    integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
-    dependencies:
-      "@babel/types" "^7.0.0"
-  
-  "@types/babel__template@*":
-    version "7.4.1"
-    resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
-    integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
-    dependencies:
-      "@babel/parser" "^7.1.0"
-      "@babel/types" "^7.0.0"
-  
-  "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
-    version "7.18.2"
-    resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309"
-    integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==
-    dependencies:
-      "@babel/types" "^7.3.0"
-  
-  "@types/connect@^3.4.33":
-    version "3.4.35"
-    resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
-    integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
-    dependencies:
-      "@types/node" "*"
-  
-  "@types/graceful-fs@^4.1.3":
-    version "4.1.5"
-    resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
-    integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==
-    dependencies:
-      "@types/node" "*"
-  
-  "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
-    version "2.0.4"
-    resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
-    integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
-  
-  "@types/istanbul-lib-report@*":
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
-    integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
-    dependencies:
-      "@types/istanbul-lib-coverage" "*"
-  
-  "@types/istanbul-reports@^3.0.0":
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff"
-    integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
-    dependencies:
-      "@types/istanbul-lib-report" "*"
-  
-  "@types/node@*":
-    version "18.11.2"
-    resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.2.tgz#c59b7641832531264fda3f1ba610362dc9a7dfc8"
-    integrity sha512-BWN3M23gLO2jVG8g/XHIRFWiiV4/GckeFIqbU/C4V3xpoBBWSMk4OZomouN0wCkfQFPqgZikyLr7DOYDysIkkw==
-  
-  "@types/node@^12.12.54":
-    version "12.20.55"
-    resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240"
-    integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==
-  
-  "@types/prettier@^2.1.5":
-    version "2.7.1"
-    resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e"
-    integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==
-  
-  "@types/stack-utils@^2.0.0":
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
-    integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
-  
-  "@types/ws@^7.4.4":
-    version "7.4.7"
-    resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
-    integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==
-    dependencies:
-      "@types/node" "*"
-  
-  "@types/yargs-parser@*":
-    version "21.0.0"
-    resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
-    integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
-  
-  "@types/yargs@^17.0.8":
-    version "17.0.13"
-    resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76"
-    integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==
-    dependencies:
-      "@types/yargs-parser" "*"
-  
-  JSONStream@^1.3.5:
-    version "1.3.5"
-    resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
-    integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
-    dependencies:
-      jsonparse "^1.2.0"
-      through ">=2.2.7 <3"
-  
-  ansi-escapes@^4.2.1:
-    version "4.3.2"
-    resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
-    integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
-    dependencies:
-      type-fest "^0.21.3"
-  
-  ansi-regex@^5.0.1:
-    version "5.0.1"
-    resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
-    integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-  
-  ansi-styles@^3.2.1:
-    version "3.2.1"
-    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
-    integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
-    dependencies:
-      color-convert "^1.9.0"
-  
-  ansi-styles@^4.0.0, ansi-styles@^4.1.0:
-    version "4.3.0"
-    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
-    integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
-    dependencies:
-      color-convert "^2.0.1"
-  
-  ansi-styles@^5.0.0:
-    version "5.2.0"
-    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
-    integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
-  
-  ansicolors@^0.3.2, ansicolors@~0.3.2:
-    version "0.3.2"
-    resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
-    integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
-  
-  anymatch@^3.0.3:
-    version "3.1.2"
-    resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
-    integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
-    dependencies:
-      normalize-path "^3.0.0"
-      picomatch "^2.0.4"
-  
-  argparse@^1.0.7:
-    version "1.0.10"
-    resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
-    integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
-    dependencies:
-      sprintf-js "~1.0.2"
-  
-  babel-jest@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1"
-    integrity sha512-gQJwArok0mqoREiCYhXKWOgUhElJj9DpnssW6GL8dG7ARYqHEhrM9fmPHTjdqEGRVXZAd6+imo3/Vwa8TjLcsw==
-    dependencies:
-      "@jest/transform" "^29.2.1"
-      "@types/babel__core" "^7.1.14"
-      babel-plugin-istanbul "^6.1.1"
-      babel-preset-jest "^29.2.0"
-      chalk "^4.0.0"
-      graceful-fs "^4.2.9"
-      slash "^3.0.0"
-  
-  babel-plugin-istanbul@^6.1.1:
-    version "6.1.1"
-    resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
-    integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
-    dependencies:
-      "@babel/helper-plugin-utils" "^7.0.0"
-      "@istanbuljs/load-nyc-config" "^1.0.0"
-      "@istanbuljs/schema" "^0.1.2"
-      istanbul-lib-instrument "^5.0.4"
-      test-exclude "^6.0.0"
-  
-  babel-plugin-jest-hoist@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094"
-    integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==
-    dependencies:
-      "@babel/template" "^7.3.3"
-      "@babel/types" "^7.3.3"
-      "@types/babel__core" "^7.1.14"
-      "@types/babel__traverse" "^7.0.6"
-  
-  babel-preset-current-node-syntax@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
-    integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
-    dependencies:
-      "@babel/plugin-syntax-async-generators" "^7.8.4"
-      "@babel/plugin-syntax-bigint" "^7.8.3"
-      "@babel/plugin-syntax-class-properties" "^7.8.3"
-      "@babel/plugin-syntax-import-meta" "^7.8.3"
-      "@babel/plugin-syntax-json-strings" "^7.8.3"
-      "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
-      "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
-      "@babel/plugin-syntax-numeric-separator" "^7.8.3"
-      "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
-      "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-      "@babel/plugin-syntax-optional-chaining" "^7.8.3"
-      "@babel/plugin-syntax-top-level-await" "^7.8.3"
-  
-  babel-preset-jest@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc"
-    integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==
-    dependencies:
-      babel-plugin-jest-hoist "^29.2.0"
-      babel-preset-current-node-syntax "^1.0.0"
-  
-  balanced-match@^1.0.0:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
-    integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-  
-  base-x@^3.0.2:
-    version "3.0.9"
-    resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
-    integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
-    dependencies:
-      safe-buffer "^5.0.1"
-  
-  base-x@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a"
-    integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==
-  
-  base64-js@^1.3.1:
-    version "1.5.1"
-    resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
-    integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-  
-  bigint-buffer@^1.1.5:
-    version "1.1.5"
-    resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442"
-    integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==
-    dependencies:
-      bindings "^1.3.0"
-  
-  bindings@^1.3.0:
-    version "1.5.0"
-    resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
-    integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
-    dependencies:
-      file-uri-to-path "1.0.0"
-  
-  bn.js@^5.0.0, bn.js@^5.1.0, bn.js@^5.2.0:
-    version "5.2.1"
-    resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
-    integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
-  
-  borsh@^0.7.0:
-    version "0.7.0"
-    resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a"
-    integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==
-    dependencies:
-      bn.js "^5.2.0"
-      bs58 "^4.0.0"
-      text-encoding-utf-8 "^1.0.2"
-  
-  brace-expansion@^1.1.7:
-    version "1.1.11"
-    resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-    integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
-    dependencies:
-      balanced-match "^1.0.0"
-      concat-map "0.0.1"
-  
-  braces@^3.0.2:
-    version "3.0.2"
-    resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
-    integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
-    dependencies:
-      fill-range "^7.0.1"
-  
-  browserslist@^4.21.3:
-    version "4.21.4"
-    resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
-    integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
-    dependencies:
-      caniuse-lite "^1.0.30001400"
-      electron-to-chromium "^1.4.251"
-      node-releases "^2.0.6"
-      update-browserslist-db "^1.0.9"
-  
-  bs58@^4.0.0, bs58@^4.0.1:
-    version "4.0.1"
-    resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a"
-    integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==
-    dependencies:
-      base-x "^3.0.2"
-  
-  bs58@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279"
-    integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==
-    dependencies:
-      base-x "^4.0.0"
-  
-  bser@2.1.1:
-    version "2.1.1"
-    resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
-    integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
-    dependencies:
-      node-int64 "^0.4.0"
-  
-  buffer-from@^1.0.0:
-    version "1.1.2"
-    resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
-    integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
-  
-  buffer-layout@^1.2.0:
-    version "1.2.2"
-    resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5"
-    integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==
-  
-  buffer@6.0.1:
-    version "6.0.1"
-    resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2"
-    integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==
-    dependencies:
-      base64-js "^1.3.1"
-      ieee754 "^1.2.1"
-  
-  buffer@6.0.3, buffer@~6.0.3:
-    version "6.0.3"
-    resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
-    integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
-    dependencies:
-      base64-js "^1.3.1"
-      ieee754 "^1.2.1"
-  
-  bufferutil@^4.0.1:
-    version "4.0.7"
-    resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad"
-    integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==
-    dependencies:
-      node-gyp-build "^4.3.0"
-  
-  callsites@^3.0.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
-    integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-  
-  camelcase@^5.3.1:
-    version "5.3.1"
-    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
-    integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-  
-  camelcase@^6.2.0, camelcase@^6.2.1:
-    version "6.3.0"
-    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
-    integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-  
-  caniuse-lite@^1.0.30001400:
-    version "1.0.30001422"
-    resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001422.tgz#f2d7c6202c49a8359e6e35add894d88ef93edba1"
-    integrity sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog==
-  
-  chalk@^2.0.0:
-    version "2.4.2"
-    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
-    integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
-    dependencies:
-      ansi-styles "^3.2.1"
-      escape-string-regexp "^1.0.5"
-      supports-color "^5.3.0"
-  
-  chalk@^4.0.0:
-    version "4.1.2"
-    resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
-    integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
-    dependencies:
-      ansi-styles "^4.1.0"
-      supports-color "^7.1.0"
-  
-  char-regex@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
-    integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
-  
-  ci-info@^3.2.0:
-    version "3.5.0"
-    resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f"
-    integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==
-  
-  cjs-module-lexer@^1.0.0:
-    version "1.2.2"
-    resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
-    integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
-  
-  cliui@^8.0.1:
-    version "8.0.1"
-    resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
-    integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
-    dependencies:
-      string-width "^4.2.0"
-      strip-ansi "^6.0.1"
-      wrap-ansi "^7.0.0"
-  
-  co@^4.6.0:
-    version "4.6.0"
-    resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-    integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
-  
-  collect-v8-coverage@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
-    integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
-  
-  color-convert@^1.9.0:
-    version "1.9.3"
-    resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
-    integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
-    dependencies:
-      color-name "1.1.3"
-  
-  color-convert@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
-    integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
-    dependencies:
-      color-name "~1.1.4"
-  
-  color-name@1.1.3:
-    version "1.1.3"
-    resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-    integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-  
-  color-name@~1.1.4:
-    version "1.1.4"
-    resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
-    integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-  
-  commander@^2.20.3:
-    version "2.20.3"
-    resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
-    integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-  
-  concat-map@0.0.1:
-    version "0.0.1"
-    resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-    integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-  
-  convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
-    version "1.9.0"
-    resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
-    integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
-  
-  cross-spawn@^7.0.3:
-    version "7.0.3"
-    resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
-    integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
-    dependencies:
-      path-key "^3.1.0"
-      shebang-command "^2.0.0"
-      which "^2.0.1"
-  
-  debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4:
-    version "4.3.4"
-    resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
-    integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
-    dependencies:
-      ms "2.1.2"
-  
-  dedent@^0.7.0:
-    version "0.7.0"
-    resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
-    integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
-  
-  deepmerge@^4.2.2:
-    version "4.2.2"
-    resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
-    integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-  
-  delay@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
-    integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
-  
-  detect-newline@^3.0.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
-    integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-  
-  diff-sequences@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6"
-    integrity sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==
-  
-  dot-case@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
-    integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
-    dependencies:
-      no-case "^3.0.4"
-      tslib "^2.0.3"
-  
-  dotenv@10.0.0:
-    version "10.0.0"
-    resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
-    integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
-  
-  electron-to-chromium@^1.4.251:
-    version "1.4.284"
-    resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
-    integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
-  
-  emittery@^0.10.2:
-    version "0.10.2"
-    resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933"
-    integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==
-  
-  emoji-regex@^8.0.0:
-    version "8.0.0"
-    resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
-    integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-  
-  error-ex@^1.3.1:
-    version "1.3.2"
-    resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
-    integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
-    dependencies:
-      is-arrayish "^0.2.1"
-  
-  es6-promise@^4.0.3:
-    version "4.2.8"
-    resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
-    integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
-  
-  es6-promisify@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
-    integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==
-    dependencies:
-      es6-promise "^4.0.3"
-  
-  escalade@^3.1.1:
-    version "3.1.1"
-    resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
-    integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-  
-  escape-string-regexp@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-    integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-  
-  escape-string-regexp@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
-    integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
-  
-  esprima@^4.0.0:
-    version "4.0.1"
-    resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
-    integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-  
-  eventemitter3@^4.0.7:
-    version "4.0.7"
-    resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
-    integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-  
-  execa@^5.0.0:
-    version "5.1.1"
-    resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
-    integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
-    dependencies:
-      cross-spawn "^7.0.3"
-      get-stream "^6.0.0"
-      human-signals "^2.1.0"
-      is-stream "^2.0.0"
-      merge-stream "^2.0.0"
-      npm-run-path "^4.0.1"
-      onetime "^5.1.2"
-      signal-exit "^3.0.3"
-      strip-final-newline "^2.0.0"
-  
-  exit@^0.1.2:
-    version "0.1.2"
-    resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
-    integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
-  
-  expect@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.1.tgz#25752d0df92d3daa5188dc8804de1f30759658cf"
-    integrity sha512-BJtA754Fba0YWRWHgjKUMTA3ltWarKgITXHQnbZ2mTxTXC4yMQlR0FI7HkB3fJYkhWBf4qjNiqvg3LDtXCcVRQ==
-    dependencies:
-      "@jest/expect-utils" "^29.2.1"
-      jest-get-type "^29.2.0"
-      jest-matcher-utils "^29.2.1"
-      jest-message-util "^29.2.1"
-      jest-util "^29.2.1"
-  
-  eyes@^0.1.8:
-    version "0.1.8"
-    resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
-    integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==
-  
-  fast-json-stable-stringify@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
-    integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-  
-  fast-stable-stringify@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313"
-    integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==
-  
-  fb-watchman@^2.0.0:
-    version "2.0.2"
-    resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
-    integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
-    dependencies:
-      bser "2.1.1"
-  
-  file-uri-to-path@1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
-    integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-  
-  fill-range@^7.0.1:
-    version "7.0.1"
-    resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
-    integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
-    dependencies:
-      to-regex-range "^5.0.1"
-  
-  find-up@^4.0.0, find-up@^4.1.0:
-    version "4.1.0"
-    resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
-    integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
-    dependencies:
-      locate-path "^5.0.0"
-      path-exists "^4.0.0"
-  
-  fs.realpath@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-    integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-  
-  fsevents@^2.3.2:
-    version "2.3.2"
-    resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
-    integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-  
-  function-bind@^1.1.1:
-    version "1.1.1"
-    resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-    integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-  
-  gensync@^1.0.0-beta.2:
-    version "1.0.0-beta.2"
-    resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
-    integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-  
-  get-caller-file@^2.0.5:
-    version "2.0.5"
-    resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
-    integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-  
-  get-package-type@^0.1.0:
-    version "0.1.0"
-    resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
-    integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
-  
-  get-stream@^6.0.0:
-    version "6.0.1"
-    resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
-    integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
-  
-  glob@^7.1.3, glob@^7.1.4:
-    version "7.2.3"
-    resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
-    integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
-    dependencies:
-      fs.realpath "^1.0.0"
-      inflight "^1.0.4"
-      inherits "2"
-      minimatch "^3.1.1"
-      once "^1.3.0"
-      path-is-absolute "^1.0.0"
-  
-  globals@^11.1.0:
-    version "11.12.0"
-    resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
-    integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-  
-  graceful-fs@^4.2.9:
-    version "4.2.10"
-    resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
-    integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
-  
-  has-flag@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-    integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
-  
-  has-flag@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
-    integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-  
-  has@^1.0.3:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
-    integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
-    dependencies:
-      function-bind "^1.1.1"
-  
-  html-escaper@^2.0.0:
-    version "2.0.2"
-    resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
-    integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-  
-  human-signals@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
-    integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-  
-  ieee754@^1.2.1:
-    version "1.2.1"
-    resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
-    integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-  
-  import-local@^3.0.2:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
-    integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
-    dependencies:
-      pkg-dir "^4.2.0"
-      resolve-cwd "^3.0.0"
-  
-  imurmurhash@^0.1.4:
-    version "0.1.4"
-    resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-    integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
-  
-  inflight@^1.0.4:
-    version "1.0.6"
-    resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-    integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
-    dependencies:
-      once "^1.3.0"
-      wrappy "1"
-  
-  inherits@2:
-    version "2.0.4"
-    resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
-    integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-  
-  is-arrayish@^0.2.1:
-    version "0.2.1"
-    resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-    integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
-  
-  is-core-module@^2.9.0:
-    version "2.11.0"
-    resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
-    integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
-    dependencies:
-      has "^1.0.3"
-  
-  is-fullwidth-code-point@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
-    integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-  
-  is-generator-fn@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
-    integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
-  
-  is-number@^7.0.0:
-    version "7.0.0"
-    resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
-    integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-  
-  is-stream@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
-    integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
-  
-  isexe@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-    integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-  
-  isomorphic-ws@^4.0.1:
-    version "4.0.1"
-    resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
-    integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
-  
-  istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
-    version "3.2.0"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
-    integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
-  
-  istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
-    version "5.2.1"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
-    integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
-    dependencies:
-      "@babel/core" "^7.12.3"
-      "@babel/parser" "^7.14.7"
-      "@istanbuljs/schema" "^0.1.2"
-      istanbul-lib-coverage "^3.2.0"
-      semver "^6.3.0"
-  
-  istanbul-lib-report@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
-    integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
-    dependencies:
-      istanbul-lib-coverage "^3.0.0"
-      make-dir "^3.0.0"
-      supports-color "^7.1.0"
-  
-  istanbul-lib-source-maps@^4.0.0:
-    version "4.0.1"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
-    integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
-    dependencies:
-      debug "^4.1.1"
-      istanbul-lib-coverage "^3.0.0"
-      source-map "^0.6.1"
-  
-  istanbul-reports@^3.1.3:
-    version "3.1.5"
-    resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae"
-    integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
-    dependencies:
-      html-escaper "^2.0.0"
-      istanbul-lib-report "^3.0.0"
-  
-  jayson@^3.4.4:
-    version "3.7.0"
-    resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25"
-    integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==
-    dependencies:
-      "@types/connect" "^3.4.33"
-      "@types/node" "^12.12.54"
-      "@types/ws" "^7.4.4"
-      JSONStream "^1.3.5"
-      commander "^2.20.3"
-      delay "^5.0.0"
-      es6-promisify "^5.0.0"
-      eyes "^0.1.8"
-      isomorphic-ws "^4.0.1"
-      json-stringify-safe "^5.0.1"
-      lodash "^4.17.20"
-      uuid "^8.3.2"
-      ws "^7.4.5"
-  
-  jest-changed-files@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289"
-    integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==
-    dependencies:
-      execa "^5.0.0"
-      p-limit "^3.1.0"
-  
-  jest-circus@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.2.1.tgz#1385353d9bca6acf58f916068bbeffcfc95bef02"
-    integrity sha512-W+ZQQ5ln4Db2UZNM4NJIeasnhCdDhSuYW4eLgNAUi0XiSSpF634Kc5wiPvGiHvTgXMFVn1ZgWIijqhi9+kLNLg==
-    dependencies:
-      "@jest/environment" "^29.2.1"
-      "@jest/expect" "^29.2.1"
-      "@jest/test-result" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      chalk "^4.0.0"
-      co "^4.6.0"
-      dedent "^0.7.0"
-      is-generator-fn "^2.0.0"
-      jest-each "^29.2.1"
-      jest-matcher-utils "^29.2.1"
-      jest-message-util "^29.2.1"
-      jest-runtime "^29.2.1"
-      jest-snapshot "^29.2.1"
-      jest-util "^29.2.1"
-      p-limit "^3.1.0"
-      pretty-format "^29.2.1"
-      slash "^3.0.0"
-      stack-utils "^2.0.3"
-  
-  jest-cli@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.2.1.tgz#fbfa90b87b27a04e1041cc9d33ee80f32e2f2528"
-    integrity sha512-UIMD5aNqvPKpdlJSaeUAoLfxsh9TZvOkaMETx5qXnkboc317bcbb0eLHbIj8sFBHdcJAIAM+IRKnIU7Wi61MBw==
-    dependencies:
-      "@jest/core" "^29.2.1"
-      "@jest/test-result" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      chalk "^4.0.0"
-      exit "^0.1.2"
-      graceful-fs "^4.2.9"
-      import-local "^3.0.2"
-      jest-config "^29.2.1"
-      jest-util "^29.2.1"
-      jest-validate "^29.2.1"
-      prompts "^2.0.1"
-      yargs "^17.3.1"
-  
-  jest-config@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.2.1.tgz#2182af014d6c73978208626335db5134803dd183"
-    integrity sha512-EV5F1tQYW/quZV2br2o88hnYEeRzG53Dfi6rSG3TZBuzGQ6luhQBux/RLlU5QrJjCdq3LXxRRM8F1LP6DN1ycA==
-    dependencies:
-      "@babel/core" "^7.11.6"
-      "@jest/test-sequencer" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      babel-jest "^29.2.1"
-      chalk "^4.0.0"
-      ci-info "^3.2.0"
-      deepmerge "^4.2.2"
-      glob "^7.1.3"
-      graceful-fs "^4.2.9"
-      jest-circus "^29.2.1"
-      jest-environment-node "^29.2.1"
-      jest-get-type "^29.2.0"
-      jest-regex-util "^29.2.0"
-      jest-resolve "^29.2.1"
-      jest-runner "^29.2.1"
-      jest-util "^29.2.1"
-      jest-validate "^29.2.1"
-      micromatch "^4.0.4"
-      parse-json "^5.2.0"
-      pretty-format "^29.2.1"
-      slash "^3.0.0"
-      strip-json-comments "^3.1.1"
-  
-  jest-diff@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.1.tgz#027e42f5a18b693fb2e88f81b0ccab533c08faee"
-    integrity sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==
-    dependencies:
-      chalk "^4.0.0"
-      diff-sequences "^29.2.0"
-      jest-get-type "^29.2.0"
-      pretty-format "^29.2.1"
-  
-  jest-docblock@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82"
-    integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==
-    dependencies:
-      detect-newline "^3.0.0"
-  
-  jest-each@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.2.1.tgz#6b0a88ee85c2ba27b571a6010c2e0c674f5c9b29"
-    integrity sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      chalk "^4.0.0"
-      jest-get-type "^29.2.0"
-      jest-util "^29.2.1"
-      pretty-format "^29.2.1"
-  
-  jest-environment-node@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.1.tgz#f90311d0f0e8ef720349f83c97a076e403f90665"
-    integrity sha512-PulFKwEMz6nTAdLUwglFKei3b/LixwlRiqTN6nvPE1JtrLtlnpd6LXnFI1NFHYJGlTmIWilMP2n9jEtPPKX50g==
-    dependencies:
-      "@jest/environment" "^29.2.1"
-      "@jest/fake-timers" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      jest-mock "^29.2.1"
-      jest-util "^29.2.1"
-  
-  jest-get-type@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408"
-    integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==
-  
-  jest-haste-map@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.2.1.tgz#f803fec57f8075e6c55fb5cd551f99a72471c699"
-    integrity sha512-wF460rAFmYc6ARcCFNw4MbGYQjYkvjovb9GBT+W10Um8q5nHq98jD6fHZMDMO3tA56S8XnmNkM8GcA8diSZfnA==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      "@types/graceful-fs" "^4.1.3"
-      "@types/node" "*"
-      anymatch "^3.0.3"
-      fb-watchman "^2.0.0"
-      graceful-fs "^4.2.9"
-      jest-regex-util "^29.2.0"
-      jest-util "^29.2.1"
-      jest-worker "^29.2.1"
-      micromatch "^4.0.4"
-      walker "^1.0.8"
-    optionalDependencies:
-      fsevents "^2.3.2"
-  
-  jest-leak-detector@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz#ec551686b7d512ec875616c2c3534298b1ffe2fc"
-    integrity sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug==
-    dependencies:
-      jest-get-type "^29.2.0"
-      pretty-format "^29.2.1"
-  
-  jest-matcher-utils@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.1.tgz#2bf876c5f891b33786aadf5d65d5da5970744122"
-    integrity sha512-hUTBh7H/Mnb6GTpihbLh8uF5rjAMdekfW/oZNXUMAXi7bbmym2HiRpzgqf/zzkjgejMrVAkPdVSQj+32enlUww==
-    dependencies:
-      chalk "^4.0.0"
-      jest-diff "^29.2.1"
-      jest-get-type "^29.2.0"
-      pretty-format "^29.2.1"
-  
-  jest-message-util@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.2.1.tgz#3a51357fbbe0cc34236f17a90d772746cf8d9193"
-    integrity sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==
-    dependencies:
-      "@babel/code-frame" "^7.12.13"
-      "@jest/types" "^29.2.1"
-      "@types/stack-utils" "^2.0.0"
-      chalk "^4.0.0"
-      graceful-fs "^4.2.9"
-      micromatch "^4.0.4"
-      pretty-format "^29.2.1"
-      slash "^3.0.0"
-      stack-utils "^2.0.3"
-  
-  jest-mock@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.1.tgz#a0d361cffcb28184fa9c5443adbf591fa5759775"
-    integrity sha512-NDphaY/GqyQpTfnTZiTqqpMaw4Z0I7XnB7yBgrT6IwYrLGxpOhrejYr4ANY4YvO2sEGdd8Tx/6D0+WLQy7/qDA==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      jest-util "^29.2.1"
-  
-  jest-pnp-resolver@^1.2.2:
-    version "1.2.2"
-    resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
-    integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-  
-  jest-regex-util@^29.2.0:
-    version "29.2.0"
-    resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b"
-    integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==
-  
-  jest-resolve-dependencies@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.1.tgz#8d717dd41dc615fef1d412d395ea3deccfb1b9fa"
-    integrity sha512-o3mUGX2j08usj1jIAIE8KmUVpqVAn54k80kI27ldbZf2oJn6eghhB6DvJxjrcH40va9CQgWTfU5f2Ag/MoUqgQ==
-    dependencies:
-      jest-regex-util "^29.2.0"
-      jest-snapshot "^29.2.1"
-  
-  jest-resolve@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.2.1.tgz#a4d2f76db88aeb6ec5f5453c9a40b52483d17799"
-    integrity sha512-1dJTW76Z9622Viq4yRcwBuEXuzGtE9B2kdl05RC8Om/lAzac9uEgC+M8Q5osVidbuBPmxm8wSrcItYhca2ZAtQ==
-    dependencies:
-      chalk "^4.0.0"
-      graceful-fs "^4.2.9"
-      jest-haste-map "^29.2.1"
-      jest-pnp-resolver "^1.2.2"
-      jest-util "^29.2.1"
-      jest-validate "^29.2.1"
-      resolve "^1.20.0"
-      resolve.exports "^1.1.0"
-      slash "^3.0.0"
-  
-  jest-runner@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.2.1.tgz#885afe64661cb2f51f84c1b97afb713d1093c124"
-    integrity sha512-PojFI+uVhQ4u4YZKCN/a3yU0/l/pJJXhq1sW3JpCp8CyvGBYGddRFPKZ1WihApusxqWRTHjBJmGyPWv6Av2lWA==
-    dependencies:
-      "@jest/console" "^29.2.1"
-      "@jest/environment" "^29.2.1"
-      "@jest/test-result" "^29.2.1"
-      "@jest/transform" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      chalk "^4.0.0"
-      emittery "^0.10.2"
-      graceful-fs "^4.2.9"
-      jest-docblock "^29.2.0"
-      jest-environment-node "^29.2.1"
-      jest-haste-map "^29.2.1"
-      jest-leak-detector "^29.2.1"
-      jest-message-util "^29.2.1"
-      jest-resolve "^29.2.1"
-      jest-runtime "^29.2.1"
-      jest-util "^29.2.1"
-      jest-watcher "^29.2.1"
-      jest-worker "^29.2.1"
-      p-limit "^3.1.0"
-      source-map-support "0.5.13"
-  
-  jest-runtime@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.2.1.tgz#62e3a23c33710ae4d9c3304dda851a5fb225b574"
-    integrity sha512-PSQ880OoIW9y8E6/jjhGn3eQNgNc6ndMzCZaKqy357bv7FqCfSyYepu3yDC6Sp1Vkt+GhP2M/PVgldS2uZSFZg==
-    dependencies:
-      "@jest/environment" "^29.2.1"
-      "@jest/fake-timers" "^29.2.1"
-      "@jest/globals" "^29.2.1"
-      "@jest/source-map" "^29.2.0"
-      "@jest/test-result" "^29.2.1"
-      "@jest/transform" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      chalk "^4.0.0"
-      cjs-module-lexer "^1.0.0"
-      collect-v8-coverage "^1.0.0"
-      glob "^7.1.3"
-      graceful-fs "^4.2.9"
-      jest-haste-map "^29.2.1"
-      jest-message-util "^29.2.1"
-      jest-mock "^29.2.1"
-      jest-regex-util "^29.2.0"
-      jest-resolve "^29.2.1"
-      jest-snapshot "^29.2.1"
-      jest-util "^29.2.1"
-      slash "^3.0.0"
-      strip-bom "^4.0.0"
-  
-  jest-snapshot@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.1.tgz#f3843b3099c8fec7e6218dea18cc506f10ea5d30"
-    integrity sha512-KZdLD7iEz5M4ZYd+ezZ/kk73z+DtNbk/yJ4Qx7408Vb0CCuclJIZPa/HmIwSsCfIlOBNcYTKufr7x/Yv47oYlg==
-    dependencies:
-      "@babel/core" "^7.11.6"
-      "@babel/generator" "^7.7.2"
-      "@babel/plugin-syntax-jsx" "^7.7.2"
-      "@babel/plugin-syntax-typescript" "^7.7.2"
-      "@babel/traverse" "^7.7.2"
-      "@babel/types" "^7.3.3"
-      "@jest/expect-utils" "^29.2.1"
-      "@jest/transform" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/babel__traverse" "^7.0.6"
-      "@types/prettier" "^2.1.5"
-      babel-preset-current-node-syntax "^1.0.0"
-      chalk "^4.0.0"
-      expect "^29.2.1"
-      graceful-fs "^4.2.9"
-      jest-diff "^29.2.1"
-      jest-get-type "^29.2.0"
-      jest-haste-map "^29.2.1"
-      jest-matcher-utils "^29.2.1"
-      jest-message-util "^29.2.1"
-      jest-util "^29.2.1"
-      natural-compare "^1.4.0"
-      pretty-format "^29.2.1"
-      semver "^7.3.5"
-  
-  jest-util@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747"
-    integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      chalk "^4.0.0"
-      ci-info "^3.2.0"
-      graceful-fs "^4.2.9"
-      picomatch "^2.2.3"
-  
-  jest-validate@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.1.tgz#db814ce12c4c7e4746044922762e56eb177d066c"
-    integrity sha512-DZVX5msG6J6DL5vUUw+++6LEkXUsPwB5R7fsfM7BXdz2Ipr0Ib046ak+8egrwAR++pvSM/5laxLK977ieIGxkQ==
-    dependencies:
-      "@jest/types" "^29.2.1"
-      camelcase "^6.2.0"
-      chalk "^4.0.0"
-      jest-get-type "^29.2.0"
-      leven "^3.1.0"
-      pretty-format "^29.2.1"
-  
-  jest-watcher@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.2.1.tgz#1cb91f8aa9e77b1332af139944ad65e51430d7c3"
-    integrity sha512-7jFaHUaRq50l4w/f6RuY713bvI5XskMmjWCE54NGYcY74fLkShS8LucXJke1QfGnwDSCoIqGnGGGKPwdaBYz2Q==
-    dependencies:
-      "@jest/test-result" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      "@types/node" "*"
-      ansi-escapes "^4.2.1"
-      chalk "^4.0.0"
-      emittery "^0.10.2"
-      jest-util "^29.2.1"
-      string-length "^4.0.1"
-  
-  jest-worker@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.1.tgz#8ba68255438252e1674f990f0180c54dfa26a3b1"
-    integrity sha512-ROHTZ+oj7sBrgtv46zZ84uWky71AoYi0vEV9CdEtc1FQunsoAGe5HbQmW76nI5QWdvECVPrSi1MCVUmizSavMg==
-    dependencies:
-      "@types/node" "*"
-      jest-util "^29.2.1"
-      merge-stream "^2.0.0"
-      supports-color "^8.0.0"
-  
-  jest@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/jest/-/jest-29.2.1.tgz#352ec0b81a0e436691d546d984cd7d8f72ffd26a"
-    integrity sha512-K0N+7rx+fv3Us3KhuwRSJt55MMpZPs9Q3WSO/spRZSnsalX8yEYOTQ1PiSN7OvqzoRX4JEUXCbOJRlP4n8m5LA==
-    dependencies:
-      "@jest/core" "^29.2.1"
-      "@jest/types" "^29.2.1"
-      import-local "^3.0.2"
-      jest-cli "^29.2.1"
-  
-  js-sha256@^0.9.0:
-    version "0.9.0"
-    resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"
-    integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==
-  
-  js-tokens@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
-    integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-  
-  js-yaml@^3.13.1:
-    version "3.14.1"
-    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
-    integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
-    dependencies:
-      argparse "^1.0.7"
-      esprima "^4.0.0"
-  
-  jsesc@^2.5.1:
-    version "2.5.2"
-    resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
-    integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-  
-  json-parse-even-better-errors@^2.3.0:
-    version "2.3.1"
-    resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
-    integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-  
-  json-stringify-safe@^5.0.1:
-    version "5.0.1"
-    resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-    integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
-  
-  json5@^2.2.1:
-    version "2.2.1"
-    resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
-    integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
-  
-  jsonparse@^1.2.0:
-    version "1.3.1"
-    resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
-    integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
-  
-  kleur@^3.0.3:
-    version "3.0.3"
-    resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
-    integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
-  
-  leven@^3.1.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
-    integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
-  
-  lines-and-columns@^1.1.6:
-    version "1.2.4"
-    resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
-    integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
-  
-  locate-path@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
-    integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
-    dependencies:
-      p-locate "^4.1.0"
-  
-  lodash@^4.17.20:
-    version "4.17.21"
-    resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
-    integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-  
-  lower-case@^2.0.2:
-    version "2.0.2"
-    resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
-    integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
-    dependencies:
-      tslib "^2.0.3"
-  
-  lru-cache@^6.0.0:
-    version "6.0.0"
-    resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
-    integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
-    dependencies:
-      yallist "^4.0.0"
-  
-  make-dir@^3.0.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
-    integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
-    dependencies:
-      semver "^6.0.0"
-  
-  makeerror@1.0.12:
-    version "1.0.12"
-    resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
-    integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
-    dependencies:
-      tmpl "1.0.5"
-  
-  merge-stream@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
-    integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-  
-  micromatch@^4.0.4:
-    version "4.0.5"
-    resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
-    integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
-    dependencies:
-      braces "^3.0.2"
-      picomatch "^2.3.1"
-  
-  mimic-fn@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
-    integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-  
-  minimatch@^3.0.4, minimatch@^3.1.1:
-    version "3.1.2"
-    resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
-    integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
-    dependencies:
-      brace-expansion "^1.1.7"
-  
-  ms@2.1.2:
-    version "2.1.2"
-    resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
-    integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-  
-  natural-compare@^1.4.0:
-    version "1.4.0"
-    resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-    integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-  
-  no-case@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
-    integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
-    dependencies:
-      lower-case "^2.0.2"
-      tslib "^2.0.3"
-  
-  node-fetch@2:
-    version "2.6.7"
-    resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
-    integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
-    dependencies:
-      whatwg-url "^5.0.0"
-  
-  node-gyp-build@^4.3.0:
-    version "4.5.0"
-    resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40"
-    integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==
-  
-  node-int64@^0.4.0:
-    version "0.4.0"
-    resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
-    integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
-  
-  node-releases@^2.0.6:
-    version "2.0.6"
-    resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
-    integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
-  
-  normalize-path@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
-    integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-  
-  npm-run-path@^4.0.1:
-    version "4.0.1"
-    resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
-    integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
-    dependencies:
-      path-key "^3.0.0"
-  
-  once@^1.3.0:
-    version "1.4.0"
-    resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-    integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
-    dependencies:
-      wrappy "1"
-  
-  onetime@^5.1.2:
-    version "5.1.2"
-    resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
-    integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
-    dependencies:
-      mimic-fn "^2.1.0"
-  
-  p-limit@^2.2.0:
-    version "2.3.0"
-    resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
-    integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
-    dependencies:
-      p-try "^2.0.0"
-  
-  p-limit@^3.1.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
-    integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
-    dependencies:
-      yocto-queue "^0.1.0"
-  
-  p-locate@^4.1.0:
-    version "4.1.0"
-    resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
-    integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
-    dependencies:
-      p-limit "^2.2.0"
-  
-  p-try@^2.0.0:
-    version "2.2.0"
-    resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
-    integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-  
-  parse-json@^5.2.0:
-    version "5.2.0"
-    resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
-    integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
-    dependencies:
-      "@babel/code-frame" "^7.0.0"
-      error-ex "^1.3.1"
-      json-parse-even-better-errors "^2.3.0"
-      lines-and-columns "^1.1.6"
-  
-  path-exists@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
-    integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-  
-  path-is-absolute@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-    integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-  
-  path-key@^3.0.0, path-key@^3.1.0:
-    version "3.1.1"
-    resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
-    integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-  
-  path-parse@^1.0.7:
-    version "1.0.7"
-    resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
-    integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-  
-  picocolors@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
-    integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-  
-  picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1:
-    version "2.3.1"
-    resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
-    integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-  
-  pirates@^4.0.4:
-    version "4.0.5"
-    resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
-    integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
-  
-  pkg-dir@^4.2.0:
-    version "4.2.0"
-    resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
-    integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
-    dependencies:
-      find-up "^4.0.0"
-  
-  prettier@^2.5.1:
-    version "2.7.1"
-    resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
-    integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
-  
-  pretty-format@^29.2.1:
-    version "29.2.1"
-    resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611"
-    integrity sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==
-    dependencies:
-      "@jest/schemas" "^29.0.0"
-      ansi-styles "^5.0.0"
-      react-is "^18.0.0"
-  
-  prompts@^2.0.1:
-    version "2.4.2"
-    resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
-    integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
-    dependencies:
-      kleur "^3.0.3"
-      sisteransi "^1.0.5"
-  
-  react-is@^18.0.0:
-    version "18.2.0"
-    resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
-    integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
-  
-  regenerator-runtime@^0.13.4:
-    version "0.13.10"
-    resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee"
-    integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==
-  
-  require-directory@^2.1.1:
-    version "2.1.1"
-    resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-    integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
-  
-  resolve-cwd@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
-    integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
-    dependencies:
-      resolve-from "^5.0.0"
-  
-  resolve-from@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
-    integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-  
-  resolve.exports@^1.1.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
-    integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
-  
-  resolve@^1.20.0:
-    version "1.22.1"
-    resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
-    integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
-    dependencies:
-      is-core-module "^2.9.0"
-      path-parse "^1.0.7"
-      supports-preserve-symlinks-flag "^1.0.0"
-  
-  rpc-websockets@^7.5.0:
-    version "7.5.0"
-    resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.0.tgz#bbeb87572e66703ff151e50af1658f98098e2748"
-    integrity sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==
-    dependencies:
-      "@babel/runtime" "^7.17.2"
-      eventemitter3 "^4.0.7"
-      uuid "^8.3.2"
-      ws "^8.5.0"
-    optionalDependencies:
-      bufferutil "^4.0.1"
-      utf-8-validate "^5.0.2"
-  
-  safe-buffer@^5.0.1:
-    version "5.2.1"
-    resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
-    integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-  
-  semver@^6.0.0, semver@^6.3.0:
-    version "6.3.0"
-    resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
-    integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-  
-  semver@^7.3.5, semver@^7.3.7:
-    version "7.3.8"
-    resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
-    integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
-    dependencies:
-      lru-cache "^6.0.0"
-  
-  shebang-command@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
-    integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
-    dependencies:
-      shebang-regex "^3.0.0"
-  
-  shebang-regex@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
-    integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-  
-  signal-exit@^3.0.3, signal-exit@^3.0.7:
-    version "3.0.7"
-    resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
-    integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-  
-  sisteransi@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
-    integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
-  
-  slash@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
-    integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-  
-  snake-case@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
-    integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
-    dependencies:
-      dot-case "^3.0.4"
-      tslib "^2.0.3"
-  
-  source-map-support@0.5.13:
-    version "0.5.13"
-    resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
-    integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
-    dependencies:
-      buffer-from "^1.0.0"
-      source-map "^0.6.0"
-  
-  source-map@^0.6.0, source-map@^0.6.1:
-    version "0.6.1"
-    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-    integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-  
-  spok@^1.4.3:
-    version "1.4.3"
-    resolved "https://registry.yarnpkg.com/spok/-/spok-1.4.3.tgz#8516234e6bd8caf0e10567bd675e15fd03b5ceb8"
-    integrity sha512-5wFGctwrk638aDs+44u99kohxFNByUq2wo0uShQ9yqxSmsxqx7zKbMo1Busy4s7stZQXU+PhJ/BlVf2XWFEGIw==
-    dependencies:
-      ansicolors "~0.3.2"
-  
-  sprintf-js@~1.0.2:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-    integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
-  
-  stack-utils@^2.0.3:
-    version "2.0.5"
-    resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
-    integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==
-    dependencies:
-      escape-string-regexp "^2.0.0"
-  
-  string-length@^4.0.1:
-    version "4.0.2"
-    resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
-    integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
-    dependencies:
-      char-regex "^1.0.2"
-      strip-ansi "^6.0.0"
-  
-  string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
-    version "4.2.3"
-    resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
-    integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-    dependencies:
-      emoji-regex "^8.0.0"
-      is-fullwidth-code-point "^3.0.0"
-      strip-ansi "^6.0.1"
-  
-  strip-ansi@^6.0.0, strip-ansi@^6.0.1:
-    version "6.0.1"
-    resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
-    integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
-    dependencies:
-      ansi-regex "^5.0.1"
-  
-  strip-bom@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
-    integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
-  
-  strip-final-newline@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
-    integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-  
-  strip-json-comments@^3.1.1:
-    version "3.1.1"
-    resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
-    integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-  
-  superstruct@^0.14.2:
-    version "0.14.2"
-    resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b"
-    integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==
-  
-  supports-color@^5.3.0:
-    version "5.5.0"
-    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
-    integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
-    dependencies:
-      has-flag "^3.0.0"
-  
-  supports-color@^7.1.0:
-    version "7.2.0"
-    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
-    integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
-    dependencies:
-      has-flag "^4.0.0"
-  
-  supports-color@^8.0.0:
-    version "8.1.1"
-    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
-    integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
-    dependencies:
-      has-flag "^4.0.0"
-  
-  supports-preserve-symlinks-flag@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
-    integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-  
-  test-exclude@^6.0.0:
-    version "6.0.0"
-    resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
-    integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
-    dependencies:
-      "@istanbuljs/schema" "^0.1.2"
-      glob "^7.1.4"
-      minimatch "^3.0.4"
-  
-  text-encoding-utf-8@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13"
-    integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==
-  
-  text-table@^0.2.0:
-    version "0.2.0"
-    resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-    integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-  
-  "through@>=2.2.7 <3":
-    version "2.3.8"
-    resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-    integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-  
-  tmpl@1.0.5:
-    version "1.0.5"
-    resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
-    integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
-  
-  to-fast-properties@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-    integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
-  
-  to-regex-range@^5.0.1:
-    version "5.0.1"
-    resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
-    integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
-    dependencies:
-      is-number "^7.0.0"
-  
-  toml@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee"
-    integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
-  
-  tr46@~0.0.3:
-    version "0.0.3"
-    resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
-    integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-  
-  tslib@^2.0.3:
-    version "2.4.0"
-    resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
-    integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
-  
-  type-detect@4.0.8:
-    version "4.0.8"
-    resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
-    integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-  
-  type-fest@^0.21.3:
-    version "0.21.3"
-    resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
-    integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
-  
-  update-browserslist-db@^1.0.9:
-    version "1.0.10"
-    resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
-    integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
-    dependencies:
-      escalade "^3.1.1"
-      picocolors "^1.0.0"
-  
-  utf-8-validate@^5.0.2:
-    version "5.0.10"
-    resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2"
-    integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==
-    dependencies:
-      node-gyp-build "^4.3.0"
-  
-  uuid@^8.3.2:
-    version "8.3.2"
-    resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
-    integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-  
-  v8-to-istanbul@^9.0.1:
-    version "9.0.1"
-    resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4"
-    integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==
-    dependencies:
-      "@jridgewell/trace-mapping" "^0.3.12"
-      "@types/istanbul-lib-coverage" "^2.0.1"
-      convert-source-map "^1.6.0"
-  
-  walker@^1.0.8:
-    version "1.0.8"
-    resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
-    integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
-    dependencies:
-      makeerror "1.0.12"
-  
-  webidl-conversions@^3.0.0:
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-    integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
-  
-  whatwg-url@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
-    integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
-    dependencies:
-      tr46 "~0.0.3"
-      webidl-conversions "^3.0.0"
-  
-  which@^2.0.1:
-    version "2.0.2"
-    resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
-    integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
-    dependencies:
-      isexe "^2.0.0"
-  
-  wrap-ansi@^7.0.0:
-    version "7.0.0"
-    resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
-    integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
-    dependencies:
-      ansi-styles "^4.0.0"
-      string-width "^4.1.0"
-      strip-ansi "^6.0.0"
-  
-  wrappy@1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-    integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-  
-  write-file-atomic@^4.0.1:
-    version "4.0.2"
-    resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
-    integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
-    dependencies:
-      imurmurhash "^0.1.4"
-      signal-exit "^3.0.7"
-  
-  ws@^7.4.5:
-    version "7.5.9"
-    resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
-    integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
-  
-  ws@^8.5.0:
-    version "8.9.0"
-    resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e"
-    integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==
-  
-  y18n@^5.0.5:
-    version "5.0.8"
-    resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
-    integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-  
-  yallist@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
-    integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-  
-  yargs-parser@^21.0.0:
-    version "21.1.1"
-    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
-    integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-  
-  yargs@^17.3.1:
-    version "17.6.0"
-    resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c"
-    integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==
-    dependencies:
-      cliui "^8.0.1"
-      escalade "^3.1.1"
-      get-caller-file "^2.0.5"
-      require-directory "^2.1.1"
-      string-width "^4.2.3"
-      y18n "^5.0.5"
-      yargs-parser "^21.0.0"
-  
-  yocto-queue@^0.1.0:
-    version "0.1.0"
-    resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
-    integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/sdk/tests/mint.ts b/tests/mint.ts
similarity index 100%
rename from sdk/tests/mint.ts
rename to tests/mint.ts
diff --git a/sdk/tests/mintInit.test.ts b/tests/mintInit.test.ts
similarity index 99%
rename from sdk/tests/mintInit.test.ts
rename to tests/mintInit.test.ts
index a693550c..a312685e 100644
--- a/sdk/tests/mintInit.test.ts
+++ b/tests/mintInit.test.ts
@@ -9,7 +9,7 @@ import {
   findRulesetId,
   Ruleset,
   createInitMintInstruction,
-} from "../src";
+} from "../sdk";
 import {
   ASSOCIATED_TOKEN_PROGRAM_ID,
   getAssociatedTokenAddressSync,
diff --git a/sdk/tests/mintManagerInit.test.ts b/tests/mintManagerInit.test.ts
similarity index 99%
rename from sdk/tests/mintManagerInit.test.ts
rename to tests/mintManagerInit.test.ts
index 3bbcdf8c..10db03e9 100644
--- a/sdk/tests/mintManagerInit.test.ts
+++ b/tests/mintManagerInit.test.ts
@@ -10,7 +10,7 @@ import {
   createInitRulesetInstruction,
   findRulesetId,
   Ruleset,
-} from "../src";
+} from "../sdk";
 import { createMintTx } from "./mint";
 let mint: PublicKey;
 
diff --git a/sdk/tests/mintManagerInitUpdate.test.ts b/tests/mintManagerInitUpdate.test.ts
similarity index 99%
rename from sdk/tests/mintManagerInitUpdate.test.ts
rename to tests/mintManagerInitUpdate.test.ts
index 239f3fb8..0b3ef918 100644
--- a/sdk/tests/mintManagerInitUpdate.test.ts
+++ b/tests/mintManagerInitUpdate.test.ts
@@ -11,7 +11,7 @@ import {
   findRulesetId,
   Ruleset,
   createUpdateMintManagerInstruction,
-} from "../src";
+} from "../sdk";
 import { createMintTx } from "./mint";
 let mint: PublicKey;
 
diff --git a/sdk/tests/rulesetInitUpdate.test.ts b/tests/rulesetInitUpdate.test.ts
similarity index 99%
rename from sdk/tests/rulesetInitUpdate.test.ts
rename to tests/rulesetInitUpdate.test.ts
index db988f9d..e4f71211 100644
--- a/sdk/tests/rulesetInitUpdate.test.ts
+++ b/tests/rulesetInitUpdate.test.ts
@@ -7,7 +7,7 @@ import {
   findRulesetId,
   Ruleset,
   createUpdateRulesetInstruction,
-} from "../src";
+} from "../sdk";
 
 const RULESET_NAME = `global-${Math.random()}`;
 const RULESET_ID = findRulesetId(RULESET_NAME);
diff --git a/sdk/tests/test-keypairs/cardinal_creator_standard-keypair.json b/tests/test-keypairs/cardinal_creator_standard-keypair.json
similarity index 100%
rename from sdk/tests/test-keypairs/cardinal_creator_standard-keypair.json
rename to tests/test-keypairs/cardinal_creator_standard-keypair.json
diff --git a/sdk/tests/test-keypairs/t1LVbNwJZT3pxFQHfY65jp6QbvcTvda6oPSbaeKbYEs.json b/tests/test-keypairs/t1LVbNwJZT3pxFQHfY65jp6QbvcTvda6oPSbaeKbYEs.json
similarity index 100%
rename from sdk/tests/test-keypairs/t1LVbNwJZT3pxFQHfY65jp6QbvcTvda6oPSbaeKbYEs.json
rename to tests/test-keypairs/t1LVbNwJZT3pxFQHfY65jp6QbvcTvda6oPSbaeKbYEs.json
diff --git a/sdk/tests/test-keypairs/test-key.json b/tests/test-keypairs/test-key.json
similarity index 100%
rename from sdk/tests/test-keypairs/test-key.json
rename to tests/test-keypairs/test-key.json
diff --git a/sdk/tests/utils.ts b/tests/utils.ts
similarity index 94%
rename from sdk/tests/utils.ts
rename to tests/utils.ts
index ccce61a9..6bfbbdc6 100644
--- a/sdk/tests/utils.ts
+++ b/tests/utils.ts
@@ -6,10 +6,10 @@ import {
   Signer,
 } from "@solana/web3.js";
 import { PublicKey, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
-import { PROGRAM_ADDRESS } from "../src/generated";
+import { PROGRAM_ADDRESS } from "../sdk/generated";
 import { utils, Wallet } from "@project-serum/anchor";
-import { parseProgramLogs } from "../src/errors/parseTransactionLogs";
-import { formatInstructionLogsForConsole } from "../src/errors/formatLogs";
+import { parseProgramLogs } from "../sdk/errors/parseTransactionLogs";
+import { formatInstructionLogsForConsole } from "../sdk/errors/formatLogs";
 
 export async function newAccountWithLamports(
   connection: Connection,
diff --git a/sdk/tsconfig.cjs.json b/tsconfig.cjs.json
similarity index 100%
rename from sdk/tsconfig.cjs.json
rename to tsconfig.cjs.json
diff --git a/sdk/tsconfig.esm.json b/tsconfig.esm.json
similarity index 100%
rename from sdk/tsconfig.esm.json
rename to tsconfig.esm.json
diff --git a/sdk/tsconfig.json b/tsconfig.json
similarity index 100%
rename from sdk/tsconfig.json
rename to tsconfig.json
diff --git a/sdk/yarn.lock b/yarn.lock
similarity index 100%
rename from sdk/yarn.lock
rename to yarn.lock

From 2c8e3b7a42576710ed17d0ccafeba9156e45bbb3 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Mon, 24 Oct 2022 14:24:05 -0400
Subject: [PATCH 25/37] Fix build

---
 .github/workflows/test.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 507de200..a5fc8b0c 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -116,12 +116,12 @@ jobs:
       - name: Setup
         run: mkdir -p target/deploy
       - name: build
-        run: anchor buld
+        run: anchor build
 
       - name: Run local validator
         run: solana-test-validator --url https://api.devnet.solana.com --clone metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s --clone PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT --bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./target/deploy/cardinal_creator_standard.so --reset & echo $$! > validator.PID
       - run: sleep 6
-      - run: solana airdrop 1000 $(solana-keygen pubkey tests/test-key.json) --url http://localhost:8899
+      - run: solana airdrop 1000 $(solana-keygen pubkey tests/test-keypairs/test-key.json) --url http://localhost:8899
       - run: yarn test
 
       # - uses: dorny/test-reporter@v1

From 3bd114bca7811fbc2532a9573c4167c783dd2730 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 04:30:08 +0000
Subject: [PATCH 26/37] Approve and revoke tests

---
 .eslintrc.js                                  |  52 +++++
 .eslintrc.json                                |  18 --
 Makefile                                      |   1 -
 .../mint_manager/init_mint_manager.rs         |  29 ++-
 .../src/instructions/token/approve.rs         |   2 +-
 .../src/instructions/token/init_mint.rs       |  11 +-
 .../src/instructions/token/revoke.rs          |   2 +-
 .../src/instructions/token/transfer.rs        |   9 +-
 sdk/cardinal_creator_standard.json            |  10 +-
 sdk/generated/instructions/initMintManager.ts |   7 +
 sdk/generated/instructions/transfer.ts        |   6 -
 sdk/idl/cardinal_creator_standard.ts          |  20 +-
 tests/approve.test.ts                         | 189 ++++++++++++++++++
 tests/mintInit.test.ts                        |   4 +
 tests/mintManagerInit.test.ts                 |   3 +
 tests/mintManagerInitUpdate.test.ts           |   3 +
 tests/revoke.test.ts                          | 165 +++++++++++++++
 tests/transfer.test.ts                        | 146 ++++++++++++++
 tests/utils.ts                                |  17 +-
 19 files changed, 637 insertions(+), 57 deletions(-)
 create mode 100644 .eslintrc.js
 delete mode 100644 .eslintrc.json
 create mode 100644 tests/approve.test.ts
 create mode 100644 tests/revoke.test.ts
 create mode 100644 tests/transfer.test.ts

diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..50b2eb30
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,52 @@
+module.exports = {
+  root: true,
+  ignorePatterns: ["dist/", "*.js"],
+  parser: "@typescript-eslint/parser",
+  plugins: ["simple-import-sort", "import", "unused-imports"],
+  parserOptions: {
+    tsconfigRootDir: __dirname,
+    project: "tsconfig.json",
+  },
+  extends: [
+    "eslint:recommended",
+    "plugin:@typescript-eslint/recommended",
+    "plugin:@typescript-eslint/recommended-requiring-type-checking",
+    "plugin:prettier/recommended",
+  ],
+  env: {
+    node: true,
+  },
+  rules: {
+    eqeqeq: "error",
+    "@typescript-eslint/explicit-member-accessibility": [
+      "error",
+      { accessibility: "no-public" },
+    ],
+    "import/order": "off",
+    "simple-import-sort/imports": "warn",
+    "simple-import-sort/exports": "warn",
+    "import/first": "warn",
+    "import/newline-after-import": "warn",
+    "import/no-duplicates": "warn",
+    "unused-imports/no-unused-imports": "error",
+    "@typescript-eslint/consistent-type-imports": "error",
+    "@typescript-eslint/no-unused-vars": [
+      "warn",
+      {
+        vars: "all",
+        varsIgnorePattern: "^_",
+        args: "after-used",
+        argsIgnorePattern: "^_",
+      },
+    ],
+    "@typescript-eslint/naming-convention": [
+      "error",
+      {
+        selector: "memberLike",
+        modifiers: ["private"],
+        format: ["camelCase"],
+        leadingUnderscore: "require",
+      },
+    ],
+  },
+};
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index a868a0d3..00000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "plugins": ["jest", "@typescript-eslint"],
-  "parser": "@typescript-eslint/parser",
-  "parserOptions": {
-    "ecmaFeatures": {
-      "ecmaVersion": 2020,
-      "sourceType": "module"
-    },
-    "sourceType": "module",
-    "project": "./tsconfig.json"
-  },
-  "rules": {},
-  "env": {
-    "node": true,
-    "es6": true,
-    "jest/globals": true
-  }
-}
diff --git a/Makefile b/Makefile
index 3c5fd8c9..72f48ad2 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,6 @@ build:
 	yarn idl:generate && yarn solita
 
 start:
-	pkill solana-test-validator || true
 	solana-test-validator --url https://api.mainnet-beta.solana.com \
 		--clone metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s --clone PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT \
 		--bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./target/deploy/cardinal_creator_standard.so \
diff --git a/programs/cardinal-creator-standard/src/instructions/mint_manager/init_mint_manager.rs b/programs/cardinal-creator-standard/src/instructions/mint_manager/init_mint_manager.rs
index 9c10b884..f120cc83 100644
--- a/programs/cardinal-creator-standard/src/instructions/mint_manager/init_mint_manager.rs
+++ b/programs/cardinal-creator-standard/src/instructions/mint_manager/init_mint_manager.rs
@@ -1,9 +1,11 @@
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
+use anchor_spl::token::FreezeAccount;
 use anchor_spl::token::Mint;
 use anchor_spl::token::SetAuthority;
 use anchor_spl::token::Token;
+use anchor_spl::token::TokenAccount;
 use anchor_spl::token::{self};
 use solana_program::program::invoke;
 use solana_program::system_instruction::transfer;
@@ -18,10 +20,14 @@ pub struct InitMintManagerCtx<'info> {
         seeds = [MINT_MANAGER_SEED.as_bytes(), mint.key().as_ref()],
         bump,
     )]
-    mint_manager: Account<'info, MintManager>,
+    mint_manager: Box<Account<'info, MintManager>>,
     #[account(mut)]
-    mint: Account<'info, Mint>,
-    ruleset: Account<'info, Ruleset>,
+    mint: Box<Account<'info, Mint>>,
+    ruleset: Box<Account<'info, Ruleset>>,
+
+    /// CHECK: Account is not read from
+    #[account(mut, constraint = holder_token_account.mint == mint.key() @ ErrorCode::InvalidHolderTokenAccount)]
+    holder_token_account: Box<Account<'info, TokenAccount>>,
 
     /// CHECK: Account is not read from
     #[account(mut, constraint = collector.key() == ruleset.collector @ ErrorCode::InvalidCollector)]
@@ -70,6 +76,23 @@ pub fn handler(ctx: Context<InitMintManagerCtx>) -> Result<()> {
         Some(ctx.accounts.mint_manager.key()),
     )?;
 
+    // freeze holder token account
+    let mint_manager_key = ctx.accounts.mint.key();
+    let mint_manager_seeds = &[
+        MINT_MANAGER_SEED.as_bytes(),
+        mint_manager_key.as_ref(),
+        &[ctx.accounts.mint_manager.bump],
+    ];
+    let mint_manager_signer = &[&mint_manager_seeds[..]];
+    let cpi_accounts = FreezeAccount {
+        account: ctx.accounts.holder_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::freeze_account(cpi_context)?;
+
     // creation
     invoke(
         &transfer(
diff --git a/programs/cardinal-creator-standard/src/instructions/token/approve.rs b/programs/cardinal-creator-standard/src/instructions/token/approve.rs
index 8eb50008..267d6c02 100644
--- a/programs/cardinal-creator-standard/src/instructions/token/approve.rs
+++ b/programs/cardinal-creator-standard/src/instructions/token/approve.rs
@@ -19,7 +19,7 @@ pub struct ApproveCtx<'info> {
     #[account(mut, constraint =
         holder_token_account.owner == holder.key()
         && holder_token_account.mint == mint_manager.mint
-        && holder_token_account.amount > 1
+        && holder_token_account.amount == 1
         && holder_token_account.delegate.is_none()
         @ ErrorCode::InvalidHolderTokenAccount
     )]
diff --git a/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs b/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
index 1f1e4812..2fb27fc2 100644
--- a/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
+++ b/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
@@ -4,9 +4,9 @@ use anchor_lang::prelude::*;
 use anchor_lang::solana_program::program::invoke;
 use anchor_spl::associated_token::AssociatedToken;
 use anchor_spl::associated_token::{self};
-use anchor_spl::token::MintTo;
 use anchor_spl::token::Token;
 use anchor_spl::token::{self};
+use anchor_spl::token::{FreezeAccount, MintTo};
 use solana_program::program_pack::Pack;
 use solana_program::system_instruction::create_account;
 use solana_program::system_instruction::transfer;
@@ -137,5 +137,14 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
             ctx.accounts.system_program.to_account_info(),
         ],
     )?;
+
+    let cpi_accounts = FreezeAccount {
+        account: ctx.accounts.target_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::freeze_account(cpi_context)?;
     Ok(())
 }
diff --git a/programs/cardinal-creator-standard/src/instructions/token/revoke.rs b/programs/cardinal-creator-standard/src/instructions/token/revoke.rs
index 83dba0c9..b4fe2a10 100644
--- a/programs/cardinal-creator-standard/src/instructions/token/revoke.rs
+++ b/programs/cardinal-creator-standard/src/instructions/token/revoke.rs
@@ -20,7 +20,7 @@ pub struct RevokeCtx<'info> {
     #[account(mut, constraint =
         holder_token_account.owner == holder.key()
         && holder_token_account.mint == mint_manager.mint
-        && holder_token_account.amount > 1
+        && holder_token_account.amount >= 1
         && holder_token_account.delegate.is_some()
         @ ErrorCode::InvalidHolderTokenAccount
     )]
diff --git a/programs/cardinal-creator-standard/src/instructions/token/transfer.rs b/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
index 761f3aec..d5fd5a01 100644
--- a/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
+++ b/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
@@ -31,7 +31,6 @@ pub struct TransferCtx<'info> {
     to: Account<'info, TokenAccount>,
 
     authority: Signer<'info>,
-    rent: Sysvar<'info, Rent>,
     token_program: Program<'info, Token>,
     system_program: Program<'info, System>,
     /// CHECK: This is not dangerous because the ID is checked with instructions sysvar
@@ -52,6 +51,9 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
         let first_ix = load_instruction_at_checked(0, &instructions_account_info)
             .expect("Failed to get first instruction");
         let data: &[u8] = &first_ix.data;
+        if data.is_empty() {
+            return Err(error!(ErrorCode::InvalidPreTransferInstruction));
+        }
         let disc_bytes = array_ref![data, 0, 8];
         // check first account is account balances for this mint
         let mint = ctx.accounts.mint_manager.mint;
@@ -75,6 +77,9 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
         }
         // check instruction
         let data: &[u8] = &last_ix.data;
+        if data.is_empty() {
+            return Err(error!(ErrorCode::InvalidPostTransferInstruction));
+        }
         let disc_bytes = array_ref![data, 0, 8];
         if last_ix.program_id != *ctx.program_id || disc_bytes != &POST_TRANSFER_DISCRIMINATOR {
             return Err(error!(ErrorCode::InvalidPostTransferInstruction));
@@ -124,6 +129,8 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
     token::thaw_account(cpi_context)?;
 
+    // todo close from token account if you are the authority?
+
     let cpi_accounts = Transfer {
         from: ctx.accounts.from.to_account_info(),
         to: ctx.accounts.to.to_account_info(),
diff --git a/sdk/cardinal_creator_standard.json b/sdk/cardinal_creator_standard.json
index 84047c52..24be06ef 100644
--- a/sdk/cardinal_creator_standard.json
+++ b/sdk/cardinal_creator_standard.json
@@ -20,6 +20,11 @@
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "collector",
           "isMut": true,
@@ -436,11 +441,6 @@
           "isMut": false,
           "isSigner": true
         },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
         {
           "name": "tokenProgram",
           "isMut": false,
diff --git a/sdk/generated/instructions/initMintManager.ts b/sdk/generated/instructions/initMintManager.ts
index c634c693..57e03ce9 100644
--- a/sdk/generated/instructions/initMintManager.ts
+++ b/sdk/generated/instructions/initMintManager.ts
@@ -26,6 +26,7 @@ export const initMintManagerStruct = new beet.BeetArgsStruct<{
  * @property [_writable_] mintManager
  * @property [_writable_] mint
  * @property [] ruleset
+ * @property [_writable_] holderTokenAccount
  * @property [_writable_] collector
  * @property [**signer**] authority
  * @property [_writable_, **signer**] payer
@@ -37,6 +38,7 @@ export type InitMintManagerInstructionAccounts = {
   mintManager: web3.PublicKey
   mint: web3.PublicKey
   ruleset: web3.PublicKey
+  holderTokenAccount: web3.PublicKey
   collector: web3.PublicKey
   authority: web3.PublicKey
   payer: web3.PublicKey
@@ -79,6 +81,11 @@ export function createInitMintManagerInstruction(
       isWritable: false,
       isSigner: false,
     },
+    {
+      pubkey: accounts.holderTokenAccount,
+      isWritable: true,
+      isSigner: false,
+    },
     {
       pubkey: accounts.collector,
       isWritable: true,
diff --git a/sdk/generated/instructions/transfer.ts b/sdk/generated/instructions/transfer.ts
index d44c8981..7ef64279 100644
--- a/sdk/generated/instructions/transfer.ts
+++ b/sdk/generated/instructions/transfer.ts
@@ -41,7 +41,6 @@ export type TransferInstructionAccounts = {
   from: web3.PublicKey
   to: web3.PublicKey
   authority: web3.PublicKey
-  rent?: web3.PublicKey
   tokenProgram?: web3.PublicKey
   systemProgram?: web3.PublicKey
   instructions: web3.PublicKey
@@ -97,11 +96,6 @@ export function createTransferInstruction(
       isWritable: false,
       isSigner: true,
     },
-    {
-      pubkey: accounts.rent ?? web3.SYSVAR_RENT_PUBKEY,
-      isWritable: false,
-      isSigner: false,
-    },
     {
       pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,
       isWritable: false,
diff --git a/sdk/idl/cardinal_creator_standard.ts b/sdk/idl/cardinal_creator_standard.ts
index 97b114e0..83547526 100644
--- a/sdk/idl/cardinal_creator_standard.ts
+++ b/sdk/idl/cardinal_creator_standard.ts
@@ -20,6 +20,11 @@ export type CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "collector",
           "isMut": true,
@@ -436,11 +441,6 @@ export type CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": true
         },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
         {
           "name": "tokenProgram",
           "isMut": false,
@@ -795,6 +795,11 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": false
         },
+        {
+          "name": "holderTokenAccount",
+          "isMut": true,
+          "isSigner": false
+        },
         {
           "name": "collector",
           "isMut": true,
@@ -1211,11 +1216,6 @@ export const IDL: CardinalCreatorStandard = {
           "isMut": false,
           "isSigner": true
         },
-        {
-          "name": "rent",
-          "isMut": false,
-          "isSigner": false
-        },
         {
           "name": "tokenProgram",
           "isMut": false,
diff --git a/tests/approve.test.ts b/tests/approve.test.ts
new file mode 100644
index 00000000..4c07d3ef
--- /dev/null
+++ b/tests/approve.test.ts
@@ -0,0 +1,189 @@
+import { test, expect } from "@jest/globals";
+import {
+  CardinalProvider,
+  executeTransaction,
+  getProvider,
+  newAccountWithLamports,
+} from "./utils";
+import { SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
+import { Keypair, Transaction } from "@solana/web3.js";
+
+import {
+  findMintManagerId,
+  MintManager,
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
+  createTransferInstruction,
+  createApproveInstruction,
+  createInitMintInstruction,
+} from "../sdk";
+import {
+  ASSOCIATED_TOKEN_PROGRAM_ID,
+  createAssociatedTokenAccountInstruction,
+  getAccount,
+  getAssociatedTokenAddressSync,
+} from "@solana/spl-token";
+import { Wallet } from "@project-serum/anchor";
+const mintKeypair = Keypair.generate();
+const mint = mintKeypair.publicKey;
+let delegate: Keypair;
+
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
+
+beforeAll(async () => {
+  provider = await getProvider();
+  delegate = await newAccountWithLamports(provider.connection);
+});
+
+test("Create ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: false,
+          disallowedAddresses: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(false);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Init", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
+  const tx = new Transaction();
+  tx.add(
+    createInitMintInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      ruleset: RULESET_ID,
+      targetTokenAccount: getAssociatedTokenAddressSync(
+        mintKeypair.publicKey,
+        provider.wallet.publicKey
+      ),
+      target: provider.wallet.publicKey,
+      authority: provider.wallet.publicKey,
+      payer: provider.wallet.publicKey,
+      collector: ruleset.collector,
+      associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet, [
+    mintKeypair,
+  ]);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME).toString()
+  );
+});
+
+test("Delegate", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  const fromAtaId = getAssociatedTokenAddressSync(
+    mint,
+    provider.wallet.publicKey
+  );
+  const fromAta = await getAccount(provider.connection, fromAtaId);
+  expect(fromAta.isFrozen).toBe(true);
+  expect(fromAta.mint.toString()).toBe(mint.toString());
+  expect(fromAta.amount.toString()).toBe("1");
+
+  tx.add(
+    createApproveInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      holderTokenAccount: fromAtaId,
+      holder: provider.wallet.publicKey,
+      delegate: delegate.publicKey,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+
+  const fromAtaCheck = await getAccount(provider.connection, fromAtaId);
+  expect(fromAtaCheck.isFrozen).toBe(true);
+  expect(fromAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(fromAtaCheck.amount.toString()).toBe("1");
+  expect(fromAtaCheck.delegate?.toString()).toBe(delegate.publicKey.toString());
+  expect(fromAtaCheck.delegatedAmount.toString()).toBe("1");
+});
+
+test("Transfer", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  const recipient = Keypair.generate();
+  const fromAtaId = getAssociatedTokenAddressSync(
+    mint,
+    provider.wallet.publicKey
+  );
+  const toAtaId = getAssociatedTokenAddressSync(mint, recipient.publicKey);
+  const fromAta = await getAccount(provider.connection, fromAtaId);
+
+  expect(fromAta.isFrozen).toBe(true);
+  expect(fromAta.mint.toString()).toBe(mint.toString());
+  expect(fromAta.amount.toString()).toBe("1");
+
+  tx.add(
+    createAssociatedTokenAccountInstruction(
+      delegate.publicKey,
+      toAtaId,
+      recipient.publicKey,
+      mint
+    ),
+    createTransferInstruction({
+      mintManager: mintManagerId,
+      ruleset: RULESET_ID,
+      mint: mint,
+      from: fromAtaId,
+      to: toAtaId,
+      authority: delegate.publicKey,
+      instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
+    })
+  );
+  await executeTransaction(provider.connection, tx, new Wallet(delegate));
+
+  const fromAtaCheck = await getAccount(provider.connection, fromAtaId);
+  expect(fromAtaCheck.isFrozen).toBe(false);
+  expect(fromAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(fromAtaCheck.amount.toString()).toBe("0");
+
+  const toAtaCheck = await getAccount(provider.connection, toAtaId);
+  expect(toAtaCheck.isFrozen).toBe(true);
+  expect(toAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(toAtaCheck.amount.toString()).toBe("1");
+});
diff --git a/tests/mintInit.test.ts b/tests/mintInit.test.ts
index a312685e..28f68df7 100644
--- a/tests/mintInit.test.ts
+++ b/tests/mintInit.test.ts
@@ -19,6 +19,10 @@ const RULESET_NAME = `global-${Math.random()}`;
 const RULESET_ID = findRulesetId(RULESET_NAME);
 let provider: CardinalProvider;
 
+beforeAll(async () => {
+  provider = await getProvider();
+});
+
 test("Create ruleset", async () => {
   provider = await getProvider();
   const tx = new Transaction();
diff --git a/tests/mintManagerInit.test.ts b/tests/mintManagerInit.test.ts
index 10db03e9..229250bf 100644
--- a/tests/mintManagerInit.test.ts
+++ b/tests/mintManagerInit.test.ts
@@ -12,6 +12,7 @@ import {
   Ruleset,
 } from "../sdk";
 import { createMintTx } from "./mint";
+import { getAssociatedTokenAddressSync } from "@solana/spl-token";
 let mint: PublicKey;
 
 const RULESET_NAME = `global-${Math.random()}`;
@@ -71,11 +72,13 @@ test("Init", async () => {
     RULESET_ID
   );
 
+  const ata = getAssociatedTokenAddressSync(mint, provider.wallet.publicKey);
   tx.add(
     createInitMintManagerInstruction({
       mint: mint,
       mintManager: mintManagerId,
       authority: provider.wallet.publicKey,
+      holderTokenAccount: ata,
       payer: provider.wallet.publicKey,
       collector: ruleset.collector,
       ruleset: RULESET_ID,
diff --git a/tests/mintManagerInitUpdate.test.ts b/tests/mintManagerInitUpdate.test.ts
index 0b3ef918..0fbcf852 100644
--- a/tests/mintManagerInitUpdate.test.ts
+++ b/tests/mintManagerInitUpdate.test.ts
@@ -13,6 +13,7 @@ import {
   createUpdateMintManagerInstruction,
 } from "../sdk";
 import { createMintTx } from "./mint";
+import { getAssociatedTokenAddressSync } from "@solana/spl-token";
 let mint: PublicKey;
 
 const RULESET_NAME = `global-${Math.random()}`;
@@ -106,11 +107,13 @@ test("Init mint manager", async () => {
     RULESET_ID
   );
 
+  const ata = getAssociatedTokenAddressSync(mint, provider.wallet.publicKey);
   tx.add(
     createInitMintManagerInstruction({
       mint: mint,
       mintManager: mintManagerId,
       authority: provider.wallet.publicKey,
+      holderTokenAccount: ata,
       payer: provider.wallet.publicKey,
       collector: ruleset.collector,
       ruleset: RULESET_ID,
diff --git a/tests/revoke.test.ts b/tests/revoke.test.ts
new file mode 100644
index 00000000..2fc7b784
--- /dev/null
+++ b/tests/revoke.test.ts
@@ -0,0 +1,165 @@
+import { test, expect } from "@jest/globals";
+import { CardinalProvider, executeTransaction, getProvider } from "./utils";
+import { Keypair, Transaction } from "@solana/web3.js";
+
+import {
+  findMintManagerId,
+  MintManager,
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
+  createApproveInstruction,
+  createRevokeInstruction,
+  createInitMintInstruction,
+} from "../sdk";
+import {
+  ASSOCIATED_TOKEN_PROGRAM_ID,
+  createAssociatedTokenAccountInstruction,
+  getAccount,
+  getAssociatedTokenAddressSync,
+} from "@solana/spl-token";
+import { Wallet } from "@project-serum/anchor";
+const mintKeypair = Keypair.generate();
+const mint = mintKeypair.publicKey;
+let delegate: Keypair;
+
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
+
+beforeAll(async () => {
+  provider = await getProvider();
+});
+
+test("Create ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: true,
+          disallowedAddresses: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(true);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Init", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
+  const tx = new Transaction();
+  tx.add(
+    createInitMintInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      ruleset: RULESET_ID,
+      targetTokenAccount: getAssociatedTokenAddressSync(
+        mintKeypair.publicKey,
+        provider.wallet.publicKey
+      ),
+      target: provider.wallet.publicKey,
+      authority: provider.wallet.publicKey,
+      payer: provider.wallet.publicKey,
+      collector: ruleset.collector,
+      associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet, [
+    mintKeypair,
+  ]);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME).toString()
+  );
+});
+
+test("Delegate", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  delegate = Keypair.generate();
+  const fromAtaId = getAssociatedTokenAddressSync(
+    mint,
+    provider.wallet.publicKey
+  );
+  const fromAta = await getAccount(provider.connection, fromAtaId);
+  expect(fromAta.isFrozen).toBe(true);
+  expect(fromAta.mint.toString()).toBe(mint.toString());
+  expect(fromAta.amount.toString()).toBe("1");
+  tx.add(
+    createApproveInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      holderTokenAccount: fromAtaId,
+      holder: provider.wallet.publicKey,
+      delegate: delegate.publicKey,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const fromAtaCheck = await getAccount(provider.connection, fromAtaId);
+  expect(fromAtaCheck.isFrozen).toBe(true);
+  expect(fromAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(fromAtaCheck.amount.toString()).toBe("1");
+  expect(fromAtaCheck.delegate?.toString()).toBe(delegate.publicKey.toString());
+  expect(fromAtaCheck.delegatedAmount.toString()).toBe("1");
+});
+
+test("Revoke", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  const fromAtaId = getAssociatedTokenAddressSync(
+    mint,
+    provider.wallet.publicKey
+  );
+  const fromAta = await getAccount(provider.connection, fromAtaId);
+  expect(fromAta.isFrozen).toBe(true);
+  expect(fromAta.mint.toString()).toBe(mint.toString());
+  expect(fromAta.amount.toString()).toBe("1");
+  expect(fromAta.delegate?.toString()).toBe(delegate.publicKey.toString());
+  expect(fromAta.delegatedAmount.toString()).toBe("1");
+  tx.add(
+    createRevokeInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      holderTokenAccount: fromAtaId,
+      holder: provider.wallet.publicKey,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const fromAtaCheck = await getAccount(provider.connection, fromAtaId);
+  expect(fromAtaCheck.isFrozen).toBe(true);
+  expect(fromAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(fromAtaCheck.amount.toString()).toBe("1");
+  expect(fromAtaCheck.delegate).toBe(null);
+});
diff --git a/tests/transfer.test.ts b/tests/transfer.test.ts
new file mode 100644
index 00000000..d5341d2d
--- /dev/null
+++ b/tests/transfer.test.ts
@@ -0,0 +1,146 @@
+import { test, expect } from "@jest/globals";
+import { CardinalProvider, executeTransaction, getProvider } from "./utils";
+import { SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
+import { Keypair, Transaction } from "@solana/web3.js";
+
+import {
+  findMintManagerId,
+  MintManager,
+  createInitRulesetInstruction,
+  findRulesetId,
+  Ruleset,
+  createTransferInstruction,
+  createInitMintInstruction,
+} from "../sdk";
+import {
+  ASSOCIATED_TOKEN_PROGRAM_ID,
+  createAssociatedTokenAccountInstruction,
+  getAccount,
+  getAssociatedTokenAddressSync,
+} from "@solana/spl-token";
+const mintKeypair = Keypair.generate();
+const mint = mintKeypair.publicKey;
+
+const RULESET_NAME = `global-${Math.random()}`;
+const RULESET_ID = findRulesetId(RULESET_NAME);
+let provider: CardinalProvider;
+
+beforeAll(async () => {
+  provider = await getProvider();
+});
+
+test("Create ruleset", async () => {
+  const tx = new Transaction();
+  tx.add(
+    createInitRulesetInstruction(
+      {
+        ruleset: RULESET_ID,
+        authority: provider.wallet.publicKey,
+        payer: provider.wallet.publicKey,
+      },
+      {
+        ix: {
+          name: RULESET_NAME,
+          collector: provider.wallet.publicKey,
+          checkSellerFeeBasisPoints: false,
+          disallowedAddresses: [],
+          allowedPrograms: [],
+        },
+      }
+    )
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+  expect(ruleset.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(ruleset.checkSellerFeeBasisPoints).toBe(false);
+  expect(ruleset.disallowedAddresses.length).toBe(0);
+  expect(ruleset.allowedPrograms.length).toBe(0);
+});
+
+test("Init", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const ruleset = await Ruleset.fromAccountAddress(
+    provider.connection,
+    RULESET_ID
+  );
+
+  const tx = new Transaction();
+  tx.add(
+    createInitMintInstruction({
+      mintManager: mintManagerId,
+      mint: mint,
+      ruleset: RULESET_ID,
+      targetTokenAccount: getAssociatedTokenAddressSync(
+        mintKeypair.publicKey,
+        provider.wallet.publicKey
+      ),
+      target: provider.wallet.publicKey,
+      authority: provider.wallet.publicKey,
+      payer: provider.wallet.publicKey,
+      collector: ruleset.collector,
+      associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet, [
+    mintKeypair,
+  ]);
+
+  const mintManager = await MintManager.fromAccountAddress(
+    provider.connection,
+    mintManagerId
+  );
+  expect(mintManager.mint.toString()).toBe(mint.toString());
+  expect(mintManager.authority.toString()).toBe(
+    provider.wallet.publicKey.toString()
+  );
+  expect(mintManager.ruleset.toString()).toBe(
+    findRulesetId(RULESET_NAME).toString()
+  );
+});
+
+test("Transfer", async () => {
+  const mintManagerId = findMintManagerId(mint);
+  const tx = new Transaction();
+  const recipient = Keypair.generate();
+  const fromAtaId = getAssociatedTokenAddressSync(
+    mint,
+    provider.wallet.publicKey
+  );
+  const toAtaId = getAssociatedTokenAddressSync(mint, recipient.publicKey);
+  const fromAta = await getAccount(provider.connection, fromAtaId);
+  expect(fromAta.isFrozen).toBe(true);
+  expect(fromAta.mint.toString()).toBe(mint.toString());
+  expect(fromAta.amount.toString()).toBe("1");
+  tx.add(
+    createAssociatedTokenAccountInstruction(
+      provider.wallet.publicKey,
+      toAtaId,
+      recipient.publicKey,
+      mint
+    ),
+    createTransferInstruction({
+      mintManager: mintManagerId,
+      ruleset: RULESET_ID,
+      mint: mint,
+      from: fromAtaId,
+      to: toAtaId,
+      authority: provider.wallet.publicKey,
+      instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
+    })
+  );
+  await executeTransaction(provider.connection, tx, provider.wallet);
+  const fromAtaCheck = await getAccount(provider.connection, fromAtaId);
+  expect(fromAtaCheck.isFrozen).toBe(false);
+  expect(fromAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(fromAtaCheck.amount.toString()).toBe("0");
+
+  const toAtaCheck = await getAccount(provider.connection, toAtaId);
+  expect(toAtaCheck.isFrozen).toBe(true);
+  expect(toAtaCheck.mint.toString()).toBe(mint.toString());
+  expect(toAtaCheck.amount.toString()).toBe("1");
+});
diff --git a/tests/utils.ts b/tests/utils.ts
index 6bfbbdc6..6d932ee4 100644
--- a/tests/utils.ts
+++ b/tests/utils.ts
@@ -21,7 +21,7 @@ export async function newAccountWithLamports(
     account.publicKey,
     lamports
   );
-  await connection.confirmTransaction(signature);
+  await connection.confirmTransaction(signature, "confirmed");
   return account;
 }
 
@@ -111,16 +111,13 @@ export const keypairFrom = (s: string, n?: string): Keypair => {
 
 export const handleError = (e: any) => {
   const message = (e as SendTransactionError).message ?? "";
-  const logs =
-    (e as SendTransactionError).logs ?? [
-      (e as SendTransactionError).message ?? "",
-    ] ?? [(e as Error).toString()] ??
-    [];
+  const logs = (e as SendTransactionError).logs;
   if (logs) {
-    const parsed = parseProgramLogs(logs, message);
-    const fmt = formatInstructionLogsForConsole(parsed);
-    console.log(fmt);
+    console.log(logs);
+    // const parsed = parseProgramLogs(logs, message);
+    // const fmt = formatInstructionLogsForConsole(parsed);
+    // console.log(fmt);
   } else {
-    console.log(e);
+    console.log(e, message);
   }
 };

From f383b4bc3122c756ebb473dca734e60cf37f77c0 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 17:14:24 +0000
Subject: [PATCH 27/37] Close token account on transfer, nightly fmt

---
 .github/workflows/deps.yml                    | 43 -------------------
 .github/workflows/test.yml                    |  2 +-
 .../src/instructions/ruleset/init_ruleset.rs  |  2 +-
 .../src/instructions/token/init_mint.rs       | 21 ++++-----
 .../src/instructions/token/transfer.rs        | 28 ++++++++++--
 5 files changed, 37 insertions(+), 59 deletions(-)
 delete mode 100644 .github/workflows/deps.yml

diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml
deleted file mode 100644
index 13729ddc..00000000
--- a/.github/workflows/deps.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Deps
-
-on:
-  workflow_dispatch: {}
-
-env:
-  CARGO_TERM_COLOR: always
-  SOLANA_VERSION: 1.10.30
-  RUST_TOOLCHAIN: nightly
-  NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
-  ANCHOR_GIT: https://github.com/project-serum/anchor
-  ANCHOR_VERSION: 0.24.2
-
-jobs:
-  test:
-    runs-on: ubuntu-latest
-    name: Build deps and cache
-    steps:
-      - uses: actions/checkout@v3
-      - uses: ./.github/actions/install-linux-build-deps
-      - name: Install Rust nightly
-        uses: actions-rs/toolchain@v1
-        with:
-          override: true
-          profile: minimal
-          toolchain: ${{ env.RUST_TOOLCHAIN }}
-      - uses: ./.github/actions/install-solana
-        with:
-          solana_version: ${{ env.SOLANA_VERSION }}
-      - uses: ./.github/actions/install-anchor
-        with:
-          anchor_git: ${{ env.ANCHOR_GIT }}
-          anchor_version: ${{ env.ANCHOR_VERSION }}
-
-      - uses: actions/cache@v2
-        with:
-          path: |
-            ~/.cargo/bin/
-            ~/.cargo/registry/index/
-            ~/.cargo/registry/cache/
-            ~/.cargo/git/db/
-            ./rust/target
-          key: ${{ env.cache_id }}-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ env.RUSTC_HASH }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a5fc8b0c..6dbbab25 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -51,7 +51,7 @@ jobs:
       - name: Run fmt
         uses: actions-rs/cargo@v1
         with:
-          command: fmt
+          command: +nightly fmt
           args: --all --manifest-path ./Cargo.toml -- --check
 
   soteria-scan:
diff --git a/programs/cardinal-creator-standard/src/instructions/ruleset/init_ruleset.rs b/programs/cardinal-creator-standard/src/instructions/ruleset/init_ruleset.rs
index 7f1d58bd..1a77a188 100644
--- a/programs/cardinal-creator-standard/src/instructions/ruleset/init_ruleset.rs
+++ b/programs/cardinal-creator-standard/src/instructions/ruleset/init_ruleset.rs
@@ -3,11 +3,11 @@ use anchor_lang::prelude::*;
 
 #[derive(AnchorSerialize, AnchorDeserialize)]
 pub struct InitRulesetIx {
-    pub check_seller_fee_basis_points: bool,
     pub name: String,
     pub collector: Pubkey,
     pub disallowed_addresses: Vec<Pubkey>,
     pub allowed_programs: Vec<Pubkey>,
+    pub check_seller_fee_basis_points: bool,
 }
 
 #[derive(Accounts)]
diff --git a/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs b/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
index 2fb27fc2..02be894a 100644
--- a/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
+++ b/programs/cardinal-creator-standard/src/instructions/token/init_mint.rs
@@ -4,9 +4,10 @@ use anchor_lang::prelude::*;
 use anchor_lang::solana_program::program::invoke;
 use anchor_spl::associated_token::AssociatedToken;
 use anchor_spl::associated_token::{self};
+use anchor_spl::token::FreezeAccount;
+use anchor_spl::token::MintTo;
 use anchor_spl::token::Token;
 use anchor_spl::token::{self};
-use anchor_spl::token::{FreezeAccount, MintTo};
 use solana_program::program_pack::Pack;
 use solana_program::system_instruction::create_account;
 use solana_program::system_instruction::transfer;
@@ -125,6 +126,15 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
     token::mint_to(cpi_context, 1)?;
 
+    let cpi_accounts = FreezeAccount {
+        account: ctx.accounts.target_token_account.to_account_info(),
+        mint: ctx.accounts.mint.to_account_info(),
+        authority: ctx.accounts.mint_manager.to_account_info(),
+    };
+    let cpi_program = ctx.accounts.token_program.to_account_info();
+    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
+    token::freeze_account(cpi_context)?;
+
     invoke(
         &transfer(
             &ctx.accounts.payer.key(),
@@ -137,14 +147,5 @@ pub fn handler(ctx: Context<InitMintCtx>) -> Result<()> {
             ctx.accounts.system_program.to_account_info(),
         ],
     )?;
-
-    let cpi_accounts = FreezeAccount {
-        account: ctx.accounts.target_token_account.to_account_info(),
-        mint: ctx.accounts.mint.to_account_info(),
-        authority: ctx.accounts.mint_manager.to_account_info(),
-    };
-    let cpi_program = ctx.accounts.token_program.to_account_info();
-    let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
-    token::freeze_account(cpi_context)?;
     Ok(())
 }
diff --git a/programs/cardinal-creator-standard/src/instructions/token/transfer.rs b/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
index d5fd5a01..6c5b53bf 100644
--- a/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
+++ b/programs/cardinal-creator-standard/src/instructions/token/transfer.rs
@@ -1,6 +1,7 @@
 use crate::errors::ErrorCode;
 use crate::state::*;
 use anchor_lang::prelude::*;
+use anchor_spl::token::CloseAccount;
 use anchor_spl::token::FreezeAccount;
 use anchor_spl::token::Mint;
 use anchor_spl::token::ThawAccount;
@@ -45,7 +46,7 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
     let num_instructions =
         read_u16(&mut current, &instruction_sysvar).expect("Invalid instruction");
 
-    // check pre/post
+    /////////////// check pre/post ///////////////
     if ctx.accounts.ruleset.check_seller_fee_basis_points {
         // check pre_transfer
         let first_ix = load_instruction_at_checked(0, &instructions_account_info)
@@ -86,7 +87,7 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
         }
     }
 
-    // check allowed / disallowed
+    /////////////// check allowed / disallowed ///////////////
     let mut allowed_programs = HashSet::new();
     for program_id in &ctx.accounts.ruleset.allowed_programs {
         allowed_programs.insert(program_id);
@@ -111,6 +112,7 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
             }
         }
     }
+    ////////////////////////////////////////////////////////////
 
     let mint = ctx.accounts.mint.key();
     let mint_manager_seeds = &[
@@ -129,8 +131,6 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
     token::thaw_account(cpi_context)?;
 
-    // todo close from token account if you are the authority?
-
     let cpi_accounts = Transfer {
         from: ctx.accounts.from.to_account_info(),
         to: ctx.accounts.to.to_account_info(),
@@ -148,5 +148,25 @@ pub fn handler(ctx: Context<TransferCtx>) -> Result<()> {
     let cpi_program = ctx.accounts.token_program.to_account_info();
     let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(mint_manager_signer);
     token::freeze_account(cpi_context)?;
+
+    // close from token account
+    if ctx.accounts.authority.key() == ctx.accounts.from.owner
+        || ctx.accounts.from.close_authority.is_some()
+            && ctx.accounts.authority.key()
+                == ctx
+                    .accounts
+                    .from
+                    .close_authority
+                    .expect("Invalid close authority")
+    {
+        let cpi_accounts = CloseAccount {
+            account: ctx.accounts.from.to_account_info(),
+            destination: ctx.accounts.authority.to_account_info(),
+            authority: ctx.accounts.authority.to_account_info(),
+        };
+        let cpi_program = ctx.accounts.token_program.to_account_info();
+        let cpi_context = CpiContext::new(cpi_program, cpi_accounts);
+        token::close_account(cpi_context)?;
+    }
     Ok(())
 }

From df021c8e95a43d61813ef31994d67ff87a7a842f Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 17:24:11 +0000
Subject: [PATCH 28/37] Cargo nightly in CI

---
 .github/workflows/test.yml                      | 5 +----
 programs/cardinal-creator-standard/rustfmt.toml | 2 --
 rustfmt.toml                                    | 3 ++-
 3 files changed, 3 insertions(+), 7 deletions(-)
 delete mode 100644 programs/cardinal-creator-standard/rustfmt.toml

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 6dbbab25..adaca3b3 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -49,10 +49,7 @@ jobs:
           profile: minimal
           toolchain: ${{ env.RUST_TOOLCHAIN }}
       - name: Run fmt
-        uses: actions-rs/cargo@v1
-        with:
-          command: +nightly fmt
-          args: --all --manifest-path ./Cargo.toml -- --check
+        run: cargo +nightly fmt
 
   soteria-scan:
     runs-on: ubuntu-latest
diff --git a/programs/cardinal-creator-standard/rustfmt.toml b/programs/cardinal-creator-standard/rustfmt.toml
deleted file mode 100644
index de424b95..00000000
--- a/programs/cardinal-creator-standard/rustfmt.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-unstable_features = true
-imports_granularity = "Item"
diff --git a/rustfmt.toml b/rustfmt.toml
index ffc467de..de424b95 100644
--- a/rustfmt.toml
+++ b/rustfmt.toml
@@ -1 +1,2 @@
-max_width = 200
+unstable_features = true
+imports_granularity = "Item"

From 05c46c3ef5483cd61402abb1db59c4b51fd163df Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 17:27:47 +0000
Subject: [PATCH 29/37] Change order in init_ruleset

---
 .github/workflows/test.yml           |  2 +-
 sdk/cardinal_creator_standard.json   |  8 ++++----
 sdk/generated/types/InitRulesetIx.ts |  4 ++--
 sdk/idl/cardinal_creator_standard.ts | 16 ++++++++--------
 4 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index adaca3b3..d2a49b91 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -118,7 +118,7 @@ jobs:
       - name: Run local validator
         run: solana-test-validator --url https://api.devnet.solana.com --clone metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s --clone PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT --bpf-program creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez ./target/deploy/cardinal_creator_standard.so --reset & echo $$! > validator.PID
       - run: sleep 6
-      - run: solana airdrop 1000 $(solana-keygen pubkey tests/test-keypairs/test-key.json) --url http://localhost:8899
+      - run: solana airdrop 1000 $(solana-keygen pubkey ./tests/test-keypairs/test-key.json) --url http://localhost:8899
       - run: yarn test
 
       # - uses: dorny/test-reporter@v1
diff --git a/sdk/cardinal_creator_standard.json b/sdk/cardinal_creator_standard.json
index 24be06ef..a4aa2db3 100644
--- a/sdk/cardinal_creator_standard.json
+++ b/sdk/cardinal_creator_standard.json
@@ -610,10 +610,6 @@
       "type": {
         "kind": "struct",
         "fields": [
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
           {
             "name": "name",
             "type": "string"
@@ -633,6 +629,10 @@
             "type": {
               "vec": "publicKey"
             }
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           }
         ]
       }
diff --git a/sdk/generated/types/InitRulesetIx.ts b/sdk/generated/types/InitRulesetIx.ts
index c427dc70..911de6a7 100644
--- a/sdk/generated/types/InitRulesetIx.ts
+++ b/sdk/generated/types/InitRulesetIx.ts
@@ -9,11 +9,11 @@ import * as web3 from '@solana/web3.js'
 import * as beet from '@metaplex-foundation/beet'
 import * as beetSolana from '@metaplex-foundation/beet-solana'
 export type InitRulesetIx = {
-  checkSellerFeeBasisPoints: boolean
   name: string
   collector: web3.PublicKey
   disallowedAddresses: web3.PublicKey[]
   allowedPrograms: web3.PublicKey[]
+  checkSellerFeeBasisPoints: boolean
 }
 
 /**
@@ -22,11 +22,11 @@ export type InitRulesetIx = {
  */
 export const initRulesetIxBeet = new beet.FixableBeetArgsStruct<InitRulesetIx>(
   [
-    ['checkSellerFeeBasisPoints', beet.bool],
     ['name', beet.utf8String],
     ['collector', beetSolana.publicKey],
     ['disallowedAddresses', beet.array(beetSolana.publicKey)],
     ['allowedPrograms', beet.array(beetSolana.publicKey)],
+    ['checkSellerFeeBasisPoints', beet.bool],
   ],
   'InitRulesetIx'
 )
diff --git a/sdk/idl/cardinal_creator_standard.ts b/sdk/idl/cardinal_creator_standard.ts
index 83547526..f92b95b3 100644
--- a/sdk/idl/cardinal_creator_standard.ts
+++ b/sdk/idl/cardinal_creator_standard.ts
@@ -610,10 +610,6 @@ export type CardinalCreatorStandard = {
       "type": {
         "kind": "struct",
         "fields": [
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
           {
             "name": "name",
             "type": "string"
@@ -633,6 +629,10 @@ export type CardinalCreatorStandard = {
             "type": {
               "vec": "publicKey"
             }
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           }
         ]
       }
@@ -1385,10 +1385,6 @@ export const IDL: CardinalCreatorStandard = {
       "type": {
         "kind": "struct",
         "fields": [
-          {
-            "name": "checkSellerFeeBasisPoints",
-            "type": "bool"
-          },
           {
             "name": "name",
             "type": "string"
@@ -1408,6 +1404,10 @@ export const IDL: CardinalCreatorStandard = {
             "type": {
               "vec": "publicKey"
             }
+          },
+          {
+            "name": "checkSellerFeeBasisPoints",
+            "type": "bool"
           }
         ]
       }

From da94dca9c0abb984023dc23638e57f64edaf54e9 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 17:40:48 +0000
Subject: [PATCH 30/37] Close tests

---
 tests/transfer.test.ts | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/tests/transfer.test.ts b/tests/transfer.test.ts
index d5341d2d..6084b91c 100644
--- a/tests/transfer.test.ts
+++ b/tests/transfer.test.ts
@@ -134,10 +134,9 @@ test("Transfer", async () => {
     })
   );
   await executeTransaction(provider.connection, tx, provider.wallet);
-  const fromAtaCheck = await getAccount(provider.connection, fromAtaId);
-  expect(fromAtaCheck.isFrozen).toBe(false);
-  expect(fromAtaCheck.mint.toString()).toBe(mint.toString());
-  expect(fromAtaCheck.amount.toString()).toBe("0");
+  await expect(async () => {
+    await getAccount(provider.connection, fromAtaId);
+  }).rejects.toThrow();
 
   const toAtaCheck = await getAccount(provider.connection, toAtaId);
   expect(toAtaCheck.isFrozen).toBe(true);

From 93b948d98d32a25e40b573e0171c0363461e4118 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 17:54:19 +0000
Subject: [PATCH 31/37] Doc generation

---
 package.json |  5 +++--
 yarn.lock    | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/package.json b/package.json
index 26571766..3f75aed9 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,13 @@
 {
   "name": "cardinal-creator-standard",
-  "version": "1.0.0",
+  "version": "0.1.0",
   "description": "SDK for cardinal-creator-standard",
   "main": "index.ts",
   "license": "MIT",
   "scripts": {
     "test": "jest --setupFiles dotenv/config",
     "idl:generate": "./generate-idls.sh",
-    "docs:generate": "typedoc --excludePrivate --includeVersion --out site/ src/index.ts",
+    "docs:generate": "typedoc --excludePrivate --includeVersion --out site/ sdk/index.ts",
     "lint": "eslint . --ext .ts"
   },
   "dependencies": {
@@ -30,6 +30,7 @@
     "jest": "^29.2.1",
     "lint-staged": "^13.0.3",
     "ts-jest": "^29.0.3",
+    "typedoc": "^0.23.20",
     "typescript": "^4.8.4"
   },
   "lint-staged": {
diff --git a/yarn.lock b/yarn.lock
index e6e78278..d77b84aa 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1306,6 +1306,13 @@ brace-expansion@^1.1.7:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
 
+brace-expansion@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+  integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+  dependencies:
+    balanced-match "^1.0.0"
+
 braces@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
@@ -3056,6 +3063,11 @@ json5@^2.2.1:
   resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
   integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
 
+jsonc-parser@^3.0.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
+  integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
+
 jsonparse@^1.2.0:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
@@ -3215,6 +3227,11 @@ lru-cache@^6.0.0:
   dependencies:
     yallist "^4.0.0"
 
+lunr@^2.3.9:
+  version "2.3.9"
+  resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1"
+  integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==
+
 make-dir@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
@@ -3234,6 +3251,11 @@ makeerror@1.0.12:
   dependencies:
     tmpl "1.0.5"
 
+marked@^4.0.19:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.1.tgz#eaa32594e45b4e58c02e4d118531fd04345de3b4"
+  integrity sha512-VK1/jNtwqDLvPktNpL0Fdg3qoeUZhmRsuiIjPEy/lHwXW4ouLoZfO4XoWd4ClDt+hupV1VLpkZhEovjU0W/kqA==
+
 merge-stream@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -3269,6 +3291,13 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
   dependencies:
     brace-expansion "^1.1.7"
 
+minimatch@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
+  integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
+  dependencies:
+    brace-expansion "^2.0.1"
+
 minimist@^1.2.0, minimist@^1.2.6:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
@@ -3718,6 +3747,15 @@ shebang-regex@^3.0.0:
   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
   integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
+shiki@^0.11.1:
+  version "0.11.1"
+  resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.11.1.tgz#df0f719e7ab592c484d8b73ec10e215a503ab8cc"
+  integrity sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==
+  dependencies:
+    jsonc-parser "^3.0.0"
+    vscode-oniguruma "^1.6.1"
+    vscode-textmate "^6.0.0"
+
 side-channel@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
@@ -4051,6 +4089,16 @@ type-fest@^0.21.3:
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
   integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
 
+typedoc@^0.23.20:
+  version "0.23.20"
+  resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.20.tgz#c6fa221762322837161932990b79416afcdc895c"
+  integrity sha512-nfb4Mx05ZZZXux3zPcLuc7+3TVePDW3jTdEBqXdQzJUyEILxoprgPIiTChbvci9crkqNJG9YESmfCptuh9Gn3g==
+  dependencies:
+    lunr "^2.3.9"
+    marked "^4.0.19"
+    minimatch "^5.1.0"
+    shiki "^0.11.1"
+
 typescript@^4.8.4:
   version "4.8.4"
   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6"
@@ -4102,6 +4150,16 @@ v8-to-istanbul@^9.0.1:
     "@types/istanbul-lib-coverage" "^2.0.1"
     convert-source-map "^1.6.0"
 
+vscode-oniguruma@^1.6.1:
+  version "1.6.2"
+  resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz#aeb9771a2f1dbfc9083c8a7fdd9cccaa3f386607"
+  integrity sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==
+
+vscode-textmate@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210"
+  integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==
+
 walker@^1.0.8:
   version "1.0.8"
   resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"

From 12aa6c77ac8df8fa8ad357c49afef4cdb7466375 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 18:13:11 +0000
Subject: [PATCH 32/37] Fix docs

---
 programs/cardinal-creator-standard/src/state.rs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/programs/cardinal-creator-standard/src/state.rs b/programs/cardinal-creator-standard/src/state.rs
index c0853f3f..43fe3da5 100644
--- a/programs/cardinal-creator-standard/src/state.rs
+++ b/programs/cardinal-creator-standard/src/state.rs
@@ -13,6 +13,7 @@ pub struct MintManager {
     pub mint: Pubkey,
     pub authority: Pubkey,
     pub ruleset: Pubkey,
+    pub in_use_by: Pubkey,
 }
 
 pub const RULESET_SEED: &str = "ruleset";

From bf0f4bef81cb288f139abab753685e611bf506ef Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 18:14:10 +0000
Subject: [PATCH 33/37] Add build

---
 package.json | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package.json b/package.json
index 3f75aed9..e38cb5f2 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
   "license": "MIT",
   "scripts": {
     "test": "jest --setupFiles dotenv/config",
+    "build": "rm -fr dist/ && tsc -P tsconfig.cjs.json && tsc -P tsconfig.esm.json",
     "idl:generate": "./generate-idls.sh",
     "docs:generate": "typedoc --excludePrivate --includeVersion --out site/ sdk/index.ts",
     "lint": "eslint . --ext .ts"

From aed5c4c9eb54f74ea0aff42ab044303cc3132e6b Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 18:17:32 +0000
Subject: [PATCH 34/37] Add banner

---
 images/banner.png | Bin 0 -> 444475 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 images/banner.png

diff --git a/images/banner.png b/images/banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..6be70b35778db2361ec39a38ed420b27ba065ee2
GIT binary patch
literal 444475
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%0A<`!tyr)~kj1mHjX;R4+EfVQCw}rzLZ!KN@+g
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
C72;<A

literal 0
HcmV?d00001


From 7e1bd841fef0887e853ce57b8fd4dc3a4af446cd Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 18:18:34 +0000
Subject: [PATCH 35/37] Add banner

---
 README.md                         |   6 +++++-
 {images => doc-assets}/banner.png | Bin
 2 files changed, 5 insertions(+), 1 deletion(-)
 rename {images => doc-assets}/banner.png (100%)

diff --git a/README.md b/README.md
index 074b8892..71893776 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
 # Cardinal Creator Standard
 
-## Spec outlining [details](https://cardinal-labs.notion.site/The-Creator-Standard-v1-5fce56a1d8bb440f849205e9fb5befc2)
\ No newline at end of file
+<div style="text-align: center; width: 100%;">
+  <img style="height: 450px" src="./doc-assets/banner.png" />
+</div>
+
+## Spec outlining [details](https://cardinal-labs.notion.site/The-Creator-Standard-v1-5fce56a1d8bb440f849205e9fb5befc2)
diff --git a/images/banner.png b/doc-assets/banner.png
similarity index 100%
rename from images/banner.png
rename to doc-assets/banner.png

From 68422033f5789b3aff75ca43cc9d4d2baf5e9219 Mon Sep 17 00:00:00 2001
From: jpbogle <jpbogle22@gmail.com>
Date: Thu, 3 Nov 2022 18:22:44 +0000
Subject: [PATCH 36/37] Fix docs

---
 .github/workflows/publish-docs.yml | 2 +-
 .github/workflows/publish-js.yml   | 2 +-
 .github/workflows/release.yml      | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index 07e3a46c..64c57619 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -31,7 +31,7 @@ jobs:
       - name: Install Yarn dependencies
         run: yarn install
       - run: yarn docs:generate
-      - run: cp -R images/ site/
+      - run: cp -R doc-assets/ site/
 
       - name: Deploy 🚀
         uses: JamesIves/github-pages-deploy-action@v4.2.5
diff --git a/.github/workflows/publish-js.yml b/.github/workflows/publish-js.yml
index 8ff3e5b0..0dea4908 100644
--- a/.github/workflows/publish-js.yml
+++ b/.github/workflows/publish-js.yml
@@ -52,7 +52,7 @@ jobs:
       - name: Install Yarn dependencies
         run: yarn install
       - run: yarn docs:generate
-      - run: cp -R images/ site/
+      - run: cp -R doc-assets/ site/
 
       - name: Deploy 🚀
         uses: JamesIves/github-pages-deploy-action@v4.2.5
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7bd51295..5ce83529 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -109,7 +109,7 @@ jobs:
       - name: Install Yarn dependencies
         run: yarn install
       - run: yarn docs:generate
-      - run: cp -R images/ site/
+      - run: cp -R doc-assets/ site/
 
       - name: Deploy 🚀
         uses: JamesIves/github-pages-deploy-action@v4.3.0

From 6a0633e6b22590db392e8fb1f112f9b471146c58 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 3 Nov 2022 18:23:28 +0000
Subject: [PATCH 37/37] Bump JamesIves/github-pages-deploy-action from 4.2.5 to
 4.4.1

Bumps [JamesIves/github-pages-deploy-action](https://github.com/JamesIves/github-pages-deploy-action) from 4.2.5 to 4.4.1.
- [Release notes](https://github.com/JamesIves/github-pages-deploy-action/releases)
- [Commits](https://github.com/JamesIves/github-pages-deploy-action/compare/v4.2.5...v4.4.1)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
---
 .github/workflows/publish-docs.yml | 2 +-
 .github/workflows/publish-js.yml   | 2 +-
 .github/workflows/release.yml      | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index 64c57619..bcbaf880 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -34,7 +34,7 @@ jobs:
       - run: cp -R doc-assets/ site/
 
       - name: Deploy 🚀
-        uses: JamesIves/github-pages-deploy-action@v4.2.5
+        uses: JamesIves/github-pages-deploy-action@v4.4.1
         with:
           branch: gh-pages
           folder: site
diff --git a/.github/workflows/publish-js.yml b/.github/workflows/publish-js.yml
index 0dea4908..0ed5717f 100644
--- a/.github/workflows/publish-js.yml
+++ b/.github/workflows/publish-js.yml
@@ -55,7 +55,7 @@ jobs:
       - run: cp -R doc-assets/ site/
 
       - name: Deploy 🚀
-        uses: JamesIves/github-pages-deploy-action@v4.2.5
+        uses: JamesIves/github-pages-deploy-action@v4.4.1
         with:
           branch: gh-pages
           folder: site
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 5ce83529..92f9ec35 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -112,7 +112,7 @@ jobs:
       - run: cp -R doc-assets/ site/
 
       - name: Deploy 🚀
-        uses: JamesIves/github-pages-deploy-action@v4.3.0
+        uses: JamesIves/github-pages-deploy-action@v4.4.1
         with:
           branch: gh-pages
           folder: site