diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 00000000..22c07aa8
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,57 @@
+#
+# Docker image to generate deterministic, verifiable builds of Anchor programs.
+# This must be run *after* a given ANCHOR_CLI version is published and a git tag
+# is released on GitHub.
+#
+
+FROM ubuntu:22.04
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG SOLANA_CLI="1.17.16"
+ARG ANCHOR_CLI="0.29.0"
+ARG NODE_VERSION="v18.16.0"
+
+ENV HOME="/root"
+ENV PATH="${HOME}/.cargo/bin:${PATH}"
+ENV PATH="${HOME}/.local/share/solana/install/active_release/bin:${PATH}"
+ENV PATH="${HOME}/.nvm/versions/node/${NODE_VERSION}/bin:${PATH}"
+
+# Install base utilities.
+RUN mkdir -p /workdir && mkdir -p /tmp && \
+ apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \
+ build-essential git curl wget jq pkg-config python3-pip \
+ libssl-dev libudev-dev
+
+#RUN wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.19_amd64.deb
+#RUN dpkg -i libssl1.1_1.1.1f-1ubuntu2.19_amd64.deb
+
+# Install rust.
+RUN curl "https://sh.rustup.rs" -sfo rustup.sh && \
+ sh rustup.sh -y && \
+ rustup component add rustfmt clippy
+
+# Install node / npm / yarn.
+RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
+ENV NVM_DIR="${HOME}/.nvm"
+RUN . $NVM_DIR/nvm.sh && \
+ nvm install ${NODE_VERSION} && \
+ nvm use ${NODE_VERSION} && \
+ nvm alias default node && \
+ npm install -g yarn
+
+# Install Solana tools.
+RUN sh -c "$(curl -sSfL https://release.solana.com/v${SOLANA_CLI}/install)"
+
+# Install anchor.
+RUN cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
+RUN avm install ${ANCHOR_CLI} && avm use ${ANCHOR_CLI}
+
+# set up keypair
+RUN solana-keygen new --no-bip39-passphrase
+
+WORKDIR /workdir
+#be sure to add `/root/.avm/bin` to your PATH to be able to run the installed binaries
+
+# install dependencies
+RUN yarn
\ No newline at end of file
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 00000000..dae163bf
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,3 @@
+{
+ "build": { "dockerfile": "Dockerfile" },
+}
diff --git a/.github/workflows/anchor-test.yaml b/.github/workflows/anchor-test.yaml
index ad4b405f..66fb3c19 100644
--- a/.github/workflows/anchor-test.yaml
+++ b/.github/workflows/anchor-test.yaml
@@ -2,7 +2,8 @@ name: anchor-test
on:
push:
branches:
- - main
+ - develop
+ - production
pull_request:
jobs:
@@ -10,7 +11,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- - uses: metadaoproject/anchor-test@v2
+ - uses: metadaoproject/anchor-test@v2.1
with:
- anchor-version: '0.28.0'
- solana-cli-version: '1.16.0'
+ anchor-version: '0.29.0'
+ solana-cli-version: '1.17.16'
diff --git a/.github/workflows/generate-verifiable-builds.yaml b/.github/workflows/generate-verifiable-builds.yaml
new file mode 100644
index 00000000..bac62509
--- /dev/null
+++ b/.github/workflows/generate-verifiable-builds.yaml
@@ -0,0 +1,57 @@
+name: generate-verifiable-builds
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - production
+ - develop
+
+jobs:
+ generate-verifiable-autocrat:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: metadaoproject/anchor-verifiable-build@v0
+ with:
+ program: autocrat_v0
+ anchor-version: '0.29.0'
+ solana-cli-version: '1.17.16'
+ - run: 'git pull --rebase'
+ - run: cp target/deploy/autocrat_v0.so ./verifiable-builds
+ - name: Commit verifiable build back to mainline
+ uses: EndBug/add-and-commit@v9.1.4
+ with:
+ default_author: github_actions
+ message: 'Update autocrat_v0 verifiable build'
+ generate-verifiable-vault:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: metadaoproject/anchor-verifiable-build@v0
+ with:
+ program: conditional_vault
+ anchor-version: '0.29.0'
+ solana-cli-version: '1.17.16'
+ - run: 'git pull --rebase'
+ - run: cp target/deploy/conditional_vault.so ./verifiable-builds
+ - name: Commit verifiable build back to mainline
+ uses: EndBug/add-and-commit@v9.1.4
+ with:
+ default_author: github_actions
+ message: 'Update conditional_vault verifiable build'
+ generate-verifiable-migrator:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: metadaoproject/anchor-verifiable-build@v0
+ with:
+ program: autocrat_migrator
+ anchor-version: '0.29.0'
+ solana-cli-version: '1.17.16'
+ - run: 'git pull --rebase'
+ - run: cp target/deploy/autocrat_migrator.so ./verifiable-builds
+ - name: Commit verifiable build back to mainline
+ uses: EndBug/add-and-commit@v9.1.4
+ with:
+ default_author: github_actions
+ message: 'Update autocrat_migrator verifiable build'
diff --git a/Anchor.toml b/Anchor.toml
index 6c603551..dab9e108 100644
--- a/Anchor.toml
+++ b/Anchor.toml
@@ -5,9 +5,9 @@ seeds = false
skip-lint = false
[programs.localnet]
-autocrat_migrator = "migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3"
-autocrat_v0 = "metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq"
-conditional_vault = "vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe"
+autocrat_migrator = "MigRDW6uxyNMDBD8fX2njCRyJC4YZk2Rx9pDUZiAESt"
+autocrat_v0 = "metaRK9dUBnrAdZN6uUDKvxBVKW5pyCbPVmLtUZwtBp"
+conditional_vault = "vAuLTQjV5AZx5f3UgE75wcnkxnQowWxThn1hGjfCVwP"
[registry]
url = "https://api.apr.dev"
@@ -17,13 +17,17 @@ cluster = "Localnet"
wallet = "~/.config/solana/id.json"
[scripts]
+initialize_dao = "yarn run ts-node scripts/initializeDao.ts"
+crank_twap = "yarn run ts-node scripts/crankTwap.ts"
airdrop = "yarn run ts-node scripts/airdrop.ts"
autocrat_v0 = "yarn run ts-node scripts/autocratV0.ts"
clob = "yarn run tsc scripts/clob.ts --esModuleInterop --resolveJsonModule && node scripts/clob.js && rm scripts/clob.js"
crank = "yarn run ts-node scripts/crank.ts"
main = "yarn run ts-node scripts/main.ts"
+propose = "yarn run ts-node scripts/initializeProposal.ts"
initialize_vault = "yarn run tsc scripts/initializeVault.ts --esModuleInterop --resolveJsonModule && node scripts/initializeVault.js"
place_order = "yarn run ts-node scripts/placeOrder.ts"
+multisig = "yarn run tsx scripts/multisig.ts"
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/*.ts"
[test]
@@ -38,3 +42,7 @@ program = "./tests/fixtures/openbook_v2.so"
[[test.genesis]]
address = "TWAP7frdvD3ia7TWc8e9SxZMmrpd2Yf3ifSPAHS8VG3"
program = "./tests/fixtures/openbook_twap.so"
+
+[[test.genesis]]
+address = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
+program = "./tests/fixtures/mpl_token_metadata.so"
diff --git a/Cargo.lock b/Cargo.lock
index c1df060a..9f3d79cc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -334,6 +334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78f860599da1c2354e7234c768783049eb42e2f54509ecfc942d2e0076a2da7b"
dependencies = [
"anchor-lang 0.28.0",
+ "mpl-token-metadata 1.13.2",
"solana-program",
"spl-associated-token-account 1.1.3",
"spl-token 3.5.0",
@@ -347,6 +348,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c4fd6e43b2ca6220d2ef1641539e678bfc31b6cc393cf892b373b5997b6a39a"
dependencies = [
"anchor-lang 0.29.0",
+ "mpl-token-metadata 3.2.3",
"solana-program",
"spl-associated-token-account 2.2.0",
"spl-token 4.0.0",
@@ -848,6 +850,8 @@ version = "0.1.0"
dependencies = [
"anchor-lang 0.28.0",
"anchor-spl 0.28.0",
+ "mpl-token-metadata 1.13.2",
+ "solana-program",
"solana-security-txt",
]
@@ -1486,6 +1490,19 @@ dependencies = [
"thiserror",
]
+[[package]]
+name = "mpl-token-metadata"
+version = "3.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba8ee05284d79b367ae8966d558e1a305a781fc80c9df51f37775169117ba64f"
+dependencies = [
+ "borsh 0.10.3",
+ "num-derive 0.3.3",
+ "num-traits",
+ "solana-program",
+ "thiserror",
+]
+
[[package]]
name = "mpl-token-metadata-context-derive"
version = "0.2.1"
@@ -1693,7 +1710,7 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openbook-twap"
version = "1.0.0"
-source = "git+https://github.com/metaDAOproject/openbook-twap.git#bf8f4c2f1f136b32b155b8257d5320fe9cba4892"
+source = "git+https://github.com/metaDAOproject/openbook-twap.git#6ff11f6065ff122d0f2b7270bab92da06cd20da0"
dependencies = [
"anchor-lang 0.28.0",
"anchor-spl 0.28.0",
@@ -1994,13 +2011,13 @@ dependencies = [
[[package]]
name = "raydium-amm-v3"
version = "0.1.0"
-source = "git+https://github.com/raydium-io/raydium-clmm.git#cea4d49ef5acc643cb04fb4db96af6d73a5f0a1d"
+source = "git+https://github.com/raydium-io/raydium-clmm.git#da57b0b7409f5a4437feb8fd0551683b14b8a1f5"
dependencies = [
- "anchor-lang 0.28.0",
- "anchor-spl 0.28.0",
+ "anchor-lang 0.29.0",
+ "anchor-spl 0.29.0",
"arrayref",
"bytemuck",
- "mpl-token-metadata",
+ "mpl-token-metadata 1.13.2",
"solana-program",
"spl-memo 4.0.0",
"uint",
diff --git a/LICENSE b/LICENSE
index 5357f691..a927aadf 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,166 +1,99 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
+Business Source License 1.1
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
+License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
+"Business Source License" is a trademark of MariaDB Corporation Ab.
+-----------------------------------------------------------------------------
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
+Parameters
- 0. Additional Definitions.
+Licensor: MetaDAO LLC
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
+Licensed Work: Futarchy Monorepo
+ The Licensed Work is (c) 2024 MetaDAO LLC
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
+Additional Use Grant: Any uses approved by MetaDAO LLC via calls to
+ the SPL Memo program
+Change Date: 4200-06-09
+
+Change License: GNU Lesser General Public License v2.0 or later
+
+-----------------------------------------------------------------------------
+
+Terms
+
+The Licensor hereby grants you the right to copy, modify, create derivative
+works, redistribute, and make non-production use of the Licensed Work. The
+Licensor may make an Additional Use Grant, above, permitting limited
+production use.
+
+Effective on the Change Date, or the fourth anniversary of the first publicly
+available distribution of a specific version of the Licensed Work under this
+License, whichever comes first, the Licensor hereby grants you rights under
+the terms of the Change License, and the rights granted in the paragraph
+above terminate.
+
+If your use of the Licensed Work does not comply with the requirements
+currently in effect as described in this License, you must purchase a
+commercial license from the Licensor, its affiliated entities, or authorized
+resellers, or you must refrain from using the Licensed Work.
+
+All copies of the original and modified Licensed Work, and derivative works
+of the Licensed Work, are subject to this License. This License applies
+separately for each version of the Licensed Work and the Change Date may vary
+for each version of the Licensed Work released by Licensor.
+
+You must conspicuously display this License on each original or modified copy
+of the Licensed Work. If you receive the Licensed Work in original or
+modified form from a third party, the terms and conditions set forth in this
+License apply to your use of that work.
+
+Any use of the Licensed Work in violation of this License will automatically
+terminate your rights under this License for the current and all other
+versions of the Licensed Work.
+
+This License does not grant you any right in any trademark or logo of
+Licensor or its affiliates (provided that you may use a trademark or logo of
+Licensor as expressly required by this License).
+
+TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
+AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
+EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
+TITLE.
+
+MariaDB hereby grants you permission to use this License’s text to license
+your works, and to refer to it using the trademark "Business Source License",
+as long as you comply with the Covenants of Licensor below.
+
+-----------------------------------------------------------------------------
+
+Covenants of Licensor
+
+In consideration of the right to use this License’s text and the "Business
+Source License" name and trademark, Licensor covenants to MariaDB, and to all
+other recipients of the licensed work to be provided by Licensor:
+
+1. To specify as the Change License the GPL Version 2.0 or any later version,
+ or a license that is compatible with GPL Version 2.0 or a later version,
+ where "compatible" means that software provided under the Change License can
+ be included in a program with software provided under GPL Version 2.0 or a
+ later version. Licensor may specify additional Change Licenses without
+ limitation.
+
+2. To either: (a) specify an additional grant of rights to use that does not
+ impose any additional restriction on the right granted in this License, as
+ the Additional Use Grant; or (b) insert the text "None".
+
+3. To specify a Change Date.
+
+4. Not to modify this License in any other way.
+
+-----------------------------------------------------------------------------
+
+Notice
+
+The Business Source License (this document, or the "License") is not an Open
+Source license. However, the Licensed Work will eventually be made available
+under an Open Source License, as stated in this License.
diff --git a/README.md b/README.md
index 5b40f924..273906f9 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,31 @@
-# Meta-DAO Monorepo
+# Futarchy Monorepo
-![License LGPLv3](https://img.shields.io/badge/License-LGPLv3-violet.svg)
+![License BSLv1.1](https://img.shields.io/badge/License-BSLv1.1-lightgray.svg)
-Monorepo that houses the Meta-DAO's programs. A description of these programs
-and what they do can be found at [themetadao.org](https://themetadao.org).
+Monorepo that houses programs helpful for futarchy. A description of these programs
+and what they do can be found at [docs.themetadao.org](https://docs.themetadao.org).
+
+## Scripts
+
+The scripts folder contains a few scripts that you can use to interact with the Meta-DAO.
+Today, the only way to create proposals is via script. You can do this by modifying the
+`initializeProposal.ts` script and replacing its `pubkey`, `accounts`, and `data` with the
+SVM instruction that you want to use in your proposal.
+
+Then, run `anchor run propose --provider.cluster CLUSTER`, where `CLUSTER` is replaced with
+either devnet, mainnet, or (recommended) an RPC URL.
## Deployments
-| program | tag | program ID |
-| ----------------- | --- | ------------------------------------------- |
-| autocrat_v0 | v0.1| metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq |
-| autocrat_migrator | v0.1| migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3 |
-| autocrat_v0 | v0 | meta3cxKzFBmWYgCVozmvCQAS3y9b3fGxrG9HkHL7Wi |
-| conditional_vault | v0 | vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe |
+| program | tag | program ID |
+| ----------------- | ---- | ------------------------------------------- |
+| autocrat_v0 | v0.2 | metaRK9dUBnrAdZN6uUDKvxBVKW5pyCbPVmLtUZwtBp |
+| autocrat_migrator | v0.2 | MigRDW6uxyNMDBD8fX2njCRyJC4YZk2Rx9pDUZiAESt |
+| conditional_vault | v0.2 | vAuLTQjV5AZx5f3UgE75wcnkxnQowWxThn1hGjfCVwP |
+| autocrat_v0 | v0.1 | metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq |
+| autocrat_migrator | v0.1 | migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3 |
+| autocrat_v0 | v0 | meta3cxKzFBmWYgCVozmvCQAS3y9b3fGxrG9HkHL7Wi |
+| conditional_vault | v0 | vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe |
All programs are immutable and verifiable, and have been verified with the OtterSec API.
diff --git a/package.json b/package.json
index 8bc1beaa..c9ded2d5 100644
--- a/package.json
+++ b/package.json
@@ -4,18 +4,26 @@
"lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check"
},
"dependencies": {
- "@coral-xyz/anchor": "0.28.1-beta.2",
- "@metaplex-foundation/mpl-token-metadata": "^2.5.2",
+ "@coral-xyz/anchor": "0.29.0",
+ "@metaplex-foundation/mpl-token-metadata": "^3.2.0",
+ "@metaplex-foundation/umi": "^0.9.1",
+ "@metaplex-foundation/umi-bundle-defaults": "^0.9.1",
+ "@metaplex-foundation/umi-uploader-bundlr": "^0.9.1",
"@noble/ed25519": "^2.0.0",
"@noble/secp256k1": "^2.0.0",
- "@openbook-dex/openbook-v2": "=0.0.12",
- "@solana/spl-token": "^0.3.0",
+ "@openbook-dex/openbook-v2": "0.1.7",
+ "@solana/spl-token": "^0.3.7",
+ "@solana/web3.js": "^1.90.0",
+ "@sqds/multisig": "^2.0.0",
"anchor-bankrun": "^0.2.0",
"arweave": "^1.14.4",
"solana-bankrun": "^0.2.0",
"spl-token-bankrun": "0.2.3"
},
"devDependencies": {
+ "@mercurial-finance/dynamic-amm-sdk": "^0.4.19",
+ "@solana/spl-memo": "^0.2.3",
+ "@solana/spl-token-registry": "^0.2.4574",
"@types/bn.js": "^5.1.0",
"@types/chai": "^4.3.0",
"@types/mocha": "^9.0.0",
@@ -24,6 +32,7 @@
"mocha": "^9.0.3",
"prettier": "^2.6.2",
"ts-mocha": "^10.0.0",
+ "tsx": "^4.7.1",
"typescript": "^4.3.5"
}
}
diff --git a/programs/autocrat_migrator/src/lib.rs b/programs/autocrat_migrator/src/lib.rs
index ee2864c7..d771a9c0 100644
--- a/programs/autocrat_migrator/src/lib.rs
+++ b/programs/autocrat_migrator/src/lib.rs
@@ -2,10 +2,10 @@
//! to the new autocrat.
use anchor_lang::prelude::*;
-use anchor_spl::token::{transfer, Token, TokenAccount, Transfer};
use anchor_lang::solana_program;
+use anchor_spl::token::{transfer, Token, TokenAccount, Transfer};
-declare_id!("migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3");
+declare_id!("MigRDW6uxyNMDBD8fX2njCRyJC4YZk2Rx9pDUZiAESt");
#[program]
pub mod autocrat_migrator {
@@ -41,7 +41,10 @@ pub mod autocrat_migrator {
let lamport_transfer = solana_program::system_instruction::transfer(
&ctx.accounts.authority.key(),
&ctx.accounts.lamport_receiver.key(),
- ctx.accounts.authority.get_lamports().saturating_sub(rent.minimum_balance(0)),
+ ctx.accounts
+ .authority
+ .get_lamports()
+ .saturating_sub(rent.minimum_balance(0)),
);
solana_program::program::invoke(
@@ -49,7 +52,78 @@ pub mod autocrat_migrator {
&[
ctx.accounts.authority.to_account_info(),
ctx.accounts.lamport_receiver.to_account_info(),
- ]
+ ],
+ )?;
+
+ Ok(())
+ }
+
+ pub fn multi_transfer4(ctx: Context) -> Result<()> {
+ transfer(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ Transfer {
+ from: ctx.accounts.from0.to_account_info(),
+ to: ctx.accounts.to0.to_account_info(),
+ authority: ctx.accounts.authority.to_account_info(),
+ },
+ ),
+ ctx.accounts.from0.amount,
+ )?;
+
+ transfer(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ Transfer {
+ from: ctx.accounts.from1.to_account_info(),
+ to: ctx.accounts.to1.to_account_info(),
+ authority: ctx.accounts.authority.to_account_info(),
+ },
+ ),
+ ctx.accounts.from1.amount,
+ )?;
+
+ transfer(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ Transfer {
+ from: ctx.accounts.from2.to_account_info(),
+ to: ctx.accounts.to2.to_account_info(),
+ authority: ctx.accounts.authority.to_account_info(),
+ },
+ ),
+ ctx.accounts.from2.amount,
+ )?;
+
+ transfer(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ Transfer {
+ from: ctx.accounts.from3.to_account_info(),
+ to: ctx.accounts.to3.to_account_info(),
+ authority: ctx.accounts.authority.to_account_info(),
+ },
+ ),
+ ctx.accounts.from3.amount,
+ )?;
+
+ let rent = Rent::get()?;
+
+ let lamport_transfer = solana_program::system_instruction::transfer(
+ &ctx.accounts.authority.key(),
+ &ctx.accounts.lamport_receiver.key(),
+ ctx.accounts
+ .authority
+ .get_lamports()
+ .saturating_sub(rent.minimum_balance(0)),
+ );
+
+ solana_program::program::invoke(
+ &lamport_transfer,
+ &[
+ ctx.accounts.authority.to_account_info(),
+ ctx.accounts.lamport_receiver.to_account_info(),
+ ],
)?;
Ok(())
@@ -74,3 +148,30 @@ pub struct MultiTransfer2<'info> {
#[account(mut)]
lamport_receiver: UncheckedAccount<'info>,
}
+
+#[derive(Accounts)]
+pub struct MultiTransfer4<'info> {
+ token_program: Program<'info, Token>,
+ #[account(mut)]
+ authority: Signer<'info>,
+ #[account(mut)]
+ from0: Account<'info, TokenAccount>,
+ #[account(mut)]
+ to0: Account<'info, TokenAccount>,
+ #[account(mut)]
+ from1: Account<'info, TokenAccount>,
+ #[account(mut)]
+ to1: Account<'info, TokenAccount>,
+ #[account(mut)]
+ from2: Account<'info, TokenAccount>,
+ #[account(mut)]
+ to2: Account<'info, TokenAccount>,
+ #[account(mut)]
+ from3: Account<'info, TokenAccount>,
+ #[account(mut)]
+ to3: Account<'info, TokenAccount>,
+ system_program: Program<'info, System>,
+ /// CHECK: no r/w, just lamport sub
+ #[account(mut)]
+ lamport_receiver: UncheckedAccount<'info>,
+}
diff --git a/programs/autocrat_v0/src/lib.rs b/programs/autocrat_v0/src/lib.rs
index 049db47b..0dee3f7f 100644
--- a/programs/autocrat_v0/src/lib.rs
+++ b/programs/autocrat_v0/src/lib.rs
@@ -24,13 +24,15 @@ security_txt! {
acknowledgements: "DCF = (CF1 / (1 + r)^1) + (CF2 / (1 + r)^2) + ... (CFn / (1 + r)^n)"
}
-declare_id!("metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq");
+declare_id!("metaRK9dUBnrAdZN6uUDKvxBVKW5pyCbPVmLtUZwtBp");
pub const SLOTS_PER_10_SECS: u64 = 25;
-pub const THREE_DAYS_IN_SLOTS: u64 = 5 * 24 * 60 * 6 * SLOTS_PER_10_SECS;
+pub const THREE_DAYS_IN_SLOTS: u64 = 3 * 24 * 60 * 6 * SLOTS_PER_10_SECS;
-// by default, the pass price needs to be 5% higher than the fail price
-pub const DEFAULT_PASS_THRESHOLD_BPS: u16 = 500;
+pub const TEN_DAYS_IN_SECONDS: i64 = 10 * 24 * 60 * 60;
+
+// by default, the pass price needs to be 3% higher than the fail price
+pub const DEFAULT_PASS_THRESHOLD_BPS: u16 = 300;
// start at 10 SOL ($600 at current prices), decay by ~5 SOL per day
pub const DEFAULT_BASE_BURN_LAMPORTS: u64 = 10 * solana_program::native_token::LAMPORTS_PER_SOL;
@@ -38,6 +40,9 @@ pub const DEFAULT_BURN_DECAY_PER_SLOT_LAMPORTS: u64 = 23_150;
pub const MAX_BPS: u16 = 10_000;
+// TWAP can only move by $5 per slot
+pub const DEFAULT_MAX_OBSERVATION_CHANGE_PER_UPDATE_LOTS: u64 = 5_000;
+
#[account]
pub struct DAO {
// treasury needed even though DAO is PDA for this reason: https://solana.stackexchange.com/questions/7667/a-peculiar-problem-with-cpis
@@ -59,6 +64,7 @@ pub struct DAO {
pub slots_per_proposal: u64,
pub market_taker_fee: i64,
pub twap_expected_value: u64,
+ pub max_observation_change_per_update_lots: u64,
}
#[derive(Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
@@ -115,7 +121,9 @@ pub mod autocrat_v0 {
dao.burn_decay_per_slot_lamports = DEFAULT_BURN_DECAY_PER_SLOT_LAMPORTS;
dao.slots_per_proposal = THREE_DAYS_IN_SLOTS;
dao.market_taker_fee = 0;
- dao.twap_expected_value = 10_000; // 1 USDC per META
+ // 100_000 price lots * quote lot size of 100 = 10_000_000 or $10 per quote lot size of meta, which is 0.1 meta
+ dao.twap_expected_value = 100_000; // $100 USDC per 1 META
+ dao.max_observation_change_per_update_lots = DEFAULT_MAX_OBSERVATION_CHANGE_PER_UPDATE_LOTS;
let (treasury_pubkey, treasury_bump) =
Pubkey::find_program_address(&[dao.key().as_ref()], ctx.program_id);
@@ -145,10 +153,13 @@ pub mod autocrat_v0 {
AutocratError::InvalidMarket
);
- // this should also be checked by `openbook_twap`, but why not take the
- // precaution?
+ let current_time = Clock::get().unwrap().unix_timestamp as i64;
+
+ // The market expires a minimum of 7 days after the end of a 3 day proposal.
+ // Make sure to do final TWAP crank after the proposal period has ended
+ // and before the market expires, or else! Allows for rent retrieval from openbook
require!(
- openbook_pass_market.time_expiry == 0,
+ openbook_pass_market.time_expiry > current_time + TEN_DAYS_IN_SECONDS,
AutocratError::InvalidMarket
);
require!(
@@ -164,7 +175,7 @@ pub mod autocrat_v0 {
AutocratError::InvalidMarket
);
require!(
- openbook_pass_market.base_lot_size == 1_000_000_000, // minimum tradeable = 1 META
+ openbook_pass_market.base_lot_size == 100_000_000, // minimum tradeable = 0.1 META
AutocratError::InvalidMarket
);
require!(
@@ -187,7 +198,7 @@ pub mod autocrat_v0 {
AutocratError::InvalidMarket
);
require!(
- openbook_fail_market.time_expiry == 0,
+ openbook_fail_market.time_expiry > current_time + TEN_DAYS_IN_SECONDS,
AutocratError::InvalidMarket
);
require!(
@@ -203,11 +214,11 @@ pub mod autocrat_v0 {
AutocratError::InvalidMarket
);
require!(
- openbook_fail_market.base_lot_size == 1_000_000_000,
+ openbook_fail_market.base_lot_size == 100_000_000, // minimum tradeable = 0.1 META
AutocratError::InvalidMarket
);
require!(
- openbook_pass_market.quote_lot_size == 100,
+ openbook_fail_market.quote_lot_size == 100,
AutocratError::InvalidMarket
);
require!(
@@ -227,6 +238,20 @@ pub mod autocrat_v0 {
openbook_twap_fail_market.twap_oracle.initial_slot + 50 >= clock.slot,
AutocratError::TWAPMarketTooOld
);
+ require_eq!(
+ openbook_twap_pass_market
+ .twap_oracle
+ .max_observation_change_per_update_lots,
+ dao.max_observation_change_per_update_lots,
+ AutocratError::TWAPOracleWrongChangeLots
+ );
+ require_eq!(
+ openbook_twap_fail_market
+ .twap_oracle
+ .max_observation_change_per_update_lots,
+ dao.max_observation_change_per_update_lots,
+ AutocratError::TWAPOracleWrongChangeLots
+ );
require!(
openbook_twap_pass_market.twap_oracle.expected_value == dao.twap_expected_value,
AutocratError::TWAPMarketInvalidExpectedValue
@@ -390,10 +415,7 @@ pub mod autocrat_v0 {
Ok(())
}
- pub fn update_dao(
- ctx: Context,
- dao_params: UpdateDaoParams,
- ) -> Result<()> {
+ pub fn update_dao(ctx: Context, dao_params: UpdateDaoParams) -> Result<()> {
let dao = &mut ctx.accounts.dao;
if let Some(pass_threshold_bps) = dao_params.pass_threshold_bps {
@@ -420,6 +442,12 @@ pub mod autocrat_v0 {
dao.twap_expected_value = twap_expected_value;
}
+ if let Some(max_observation_change_per_update_lots) =
+ dao_params.max_observation_change_per_update_lots
+ {
+ dao.max_observation_change_per_update_lots = max_observation_change_per_update_lots;
+ }
+
Ok(())
}
}
@@ -514,6 +542,7 @@ pub struct UpdateDaoParams {
pub slots_per_proposal: Option,
pub market_taker_fee: Option,
pub twap_expected_value: Option,
+ pub max_observation_change_per_update_lots: Option,
}
#[derive(Accounts)]
@@ -556,6 +585,8 @@ pub enum AutocratError {
InvalidMarket,
#[msg("`TWAPMarket` must have an `initial_slot` within 50 slots of the proposal's `slot_enqueued`")]
TWAPMarketTooOld,
+ #[msg("`TWAPOracle` has an incorrect max_observation_change_per_update_lots value")]
+ TWAPOracleWrongChangeLots,
#[msg("`TWAPMarket` has the wrong `expected_value`")]
TWAPMarketInvalidExpectedValue,
#[msg("One of the vaults has an invalid `settlement_authority`")]
diff --git a/programs/conditional_vault/Cargo.toml b/programs/conditional_vault/Cargo.toml
index 22ec604a..7d66751f 100644
--- a/programs/conditional_vault/Cargo.toml
+++ b/programs/conditional_vault/Cargo.toml
@@ -17,5 +17,7 @@ default = []
[dependencies]
anchor-lang = "0.28.0"
-anchor-spl = "0.28.0"
+anchor-spl = { version = "0.28.0", features = ["metadata"] }
+mpl-token-metadata = { version = "^1.6.5", features = ["no-entrypoint"] }
+solana-program = "1.16.1"
solana-security-txt = "1.1.1"
diff --git a/programs/conditional_vault/conditional_vault_flows.png b/programs/conditional_vault/conditional_vault_flows.png
deleted file mode 100644
index e8861903..00000000
Binary files a/programs/conditional_vault/conditional_vault_flows.png and /dev/null differ
diff --git a/programs/conditional_vault/src/lib.rs b/programs/conditional_vault/src/lib.rs
index a67c468e..aa31041d 100644
--- a/programs/conditional_vault/src/lib.rs
+++ b/programs/conditional_vault/src/lib.rs
@@ -1,8 +1,13 @@
use anchor_lang::prelude::*;
+use anchor_spl::metadata::{
+ create_metadata_accounts_v3, CreateMetadataAccountsV3, Metadata, MetadataAccount,
+};
use anchor_spl::{
associated_token::AssociatedToken,
token::{self, Burn, Mint, MintTo, Token, TokenAccount, Transfer},
};
+use mpl_token_metadata::state::DataV2;
+
#[cfg(not(feature = "no-entrypoint"))]
use solana_security_txt::security_txt;
@@ -18,7 +23,7 @@ security_txt! {
acknowledgements: "DCF = (CF1 / (1 + r)^1) + (CF2 / (1 + r)^2) + ... (CFn / (1 + r)^n)"
}
-declare_id!("vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe");
+declare_id!("vAuLTQjV5AZx5f3UgE75wcnkxnQowWxThn1hGjfCVwP");
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Copy, PartialEq, Eq)]
pub enum VaultStatus {
@@ -84,6 +89,62 @@ pub mod conditional_vault {
Ok(())
}
+ pub fn add_metadata_to_conditional_tokens(
+ ctx: Context,
+ proposal_number: u64,
+ on_finalize_uri: String,
+ on_revert_uri: String,
+ ) -> Result<()> {
+ let seeds = generate_vault_seeds!(ctx.accounts.vault);
+ let signer_seeds = &[&seeds[..]];
+
+ // there are null bytes we must trim from string, otherwise string value is longer than we want
+ let underlying_token_symbol_raw =
+ ctx.accounts.underlying_token_metadata.data.symbol.clone();
+ let underlying_token_symbol = underlying_token_symbol_raw.trim_matches(char::from(0));
+
+ let on_finalize_token_symbol = format!("p{}", underlying_token_symbol);
+ let on_revert_token_symbol = format!("f{}", underlying_token_symbol);
+
+ create_metadata_accounts_v3(
+ ctx.accounts
+ .into_create_on_finalize_token_metadata_context()
+ .with_signer(signer_seeds),
+ DataV2 {
+ name: format!("Proposal {}: {}", proposal_number, on_finalize_token_symbol),
+ symbol: on_finalize_token_symbol,
+ uri: on_finalize_uri,
+ seller_fee_basis_points: 0,
+ creators: None,
+ collection: None,
+ uses: None,
+ },
+ false,
+ true,
+ None,
+ )?;
+
+ create_metadata_accounts_v3(
+ ctx.accounts
+ .into_create_on_revert_token_metadata_context()
+ .with_signer(signer_seeds),
+ DataV2 {
+ name: format!("Proposal {}: {}", proposal_number, on_revert_token_symbol),
+ symbol: on_revert_token_symbol,
+ uri: on_revert_uri,
+ seller_fee_basis_points: 0,
+ creators: None,
+ collection: None,
+ uses: None,
+ },
+ false,
+ true,
+ None,
+ )?;
+
+ Ok(())
+ }
+
pub fn settle_conditional_vault(
ctx: Context,
new_status: VaultStatus,
@@ -94,6 +155,116 @@ pub mod conditional_vault {
Ok(())
}
+ pub fn merge_conditional_tokens_for_underlying_tokens(
+ ctx: Context,
+ amount: u64,
+ ) -> Result<()> {
+ let accs = &ctx.accounts;
+
+ let vault = &accs.vault;
+
+ // Store Pre-operation Balances
+ let pre_user_conditional_on_finalize_balance = ctx
+ .accounts
+ .user_conditional_on_finalize_token_account
+ .amount;
+ let pre_user_conditional_on_revert_balance =
+ ctx.accounts.user_conditional_on_revert_token_account.amount;
+ let pre_vault_underlying_balance = ctx.accounts.vault_underlying_token_account.amount;
+ let pre_finalize_mint_supply = ctx.accounts.conditional_on_finalize_token_mint.supply;
+ let pre_revert_mint_supply = ctx.accounts.conditional_on_revert_token_mint.supply;
+
+ let seeds = generate_vault_seeds!(vault);
+ let signer = &[&seeds[..]];
+
+ // burn `amount` from both token accounts
+ token::burn(
+ CpiContext::new(
+ accs.token_program.to_account_info(),
+ Burn {
+ mint: accs.conditional_on_finalize_token_mint.to_account_info(),
+ from: accs
+ .user_conditional_on_finalize_token_account
+ .to_account_info(),
+ authority: accs.authority.to_account_info(),
+ },
+ ),
+ amount,
+ )?;
+
+ token::burn(
+ CpiContext::new(
+ accs.token_program.to_account_info(),
+ Burn {
+ mint: accs.conditional_on_revert_token_mint.to_account_info(),
+ from: accs
+ .user_conditional_on_revert_token_account
+ .to_account_info(),
+ authority: accs.authority.to_account_info(),
+ },
+ ),
+ amount,
+ )?;
+
+ // Transfer `amount` from vault to user
+ token::transfer(
+ CpiContext::new_with_signer(
+ accs.token_program.to_account_info(),
+ Transfer {
+ from: accs.vault_underlying_token_account.to_account_info(),
+ to: accs.user_underlying_token_account.to_account_info(),
+ authority: accs.vault.to_account_info(),
+ },
+ signer,
+ ),
+ amount,
+ )?;
+
+ // Reload Accounts to Reflect Changes
+ ctx.accounts
+ .user_conditional_on_finalize_token_account
+ .reload()?;
+ ctx.accounts
+ .user_conditional_on_revert_token_account
+ .reload()?;
+ ctx.accounts.vault_underlying_token_account.reload()?;
+ ctx.accounts.conditional_on_finalize_token_mint.reload()?;
+ ctx.accounts.conditional_on_revert_token_mint.reload()?;
+
+ // Check post-operation balances
+ let post_user_conditional_on_finalize_balance = ctx
+ .accounts
+ .user_conditional_on_finalize_token_account
+ .amount;
+ let post_user_conditional_on_revert_balance =
+ ctx.accounts.user_conditional_on_revert_token_account.amount;
+ let post_vault_underlying_balance = ctx.accounts.vault_underlying_token_account.amount;
+ let post_finalize_mint_supply = ctx.accounts.conditional_on_finalize_token_mint.supply;
+ let post_revert_mint_supply = ctx.accounts.conditional_on_revert_token_mint.supply;
+
+ // Check that the user's conditional token balances are unchanged (since we're not necessarily burning all tokens)
+ require_eq!(
+ post_user_conditional_on_finalize_balance,
+ pre_user_conditional_on_finalize_balance - amount
+ );
+ require_eq!(
+ post_user_conditional_on_revert_balance,
+ pre_user_conditional_on_revert_balance - amount
+ );
+
+ // Check that the mint supplies have been reduced by the burned amounts
+ require_eq!(post_finalize_mint_supply, pre_finalize_mint_supply - amount);
+ require_eq!(post_revert_mint_supply, pre_revert_mint_supply - amount);
+
+ // Check that the vault's underlying balance has been reduced by the transferred amount
+ require_eq!(
+ post_vault_underlying_balance,
+ pre_vault_underlying_balance - amount
+ );
+
+ Ok(())
+ }
+
pub fn mint_conditional_tokens(ctx: Context, amount: u64) -> Result<()> {
let accs = &ctx.accounts;
@@ -355,6 +526,84 @@ pub struct InitializeConditionalVault<'info> {
pub system_program: Program<'info, System>,
}
+#[derive(Accounts)]
+pub struct AddMetadataToConditionalTokens<'info> {
+ #[account(mut)]
+ pub payer: Signer<'info>,
+ #[account(
+ mut,
+ has_one = underlying_token_mint,
+ constraint = vault.status == VaultStatus::Active @ ErrorCode::VaultAlreadySettled
+ )]
+ pub vault: Account<'info, ConditionalVault>,
+ #[account(mut)]
+ pub underlying_token_mint: Account<'info, Mint>,
+ pub underlying_token_metadata: Account<'info, MetadataAccount>,
+ #[account(
+ mut,
+ mint::authority = vault,
+ mint::freeze_authority = vault,
+ mint::decimals = underlying_token_mint.decimals
+ )]
+ pub conditional_on_finalize_token_mint: Account<'info, Mint>,
+ #[account(
+ mut,
+ mint::authority = vault,
+ mint::freeze_authority = vault,
+ mint::decimals = underlying_token_mint.decimals
+ )]
+ pub conditional_on_revert_token_mint: Account<'info, Mint>,
+ /// CHECK: verified via cpi into token metadata
+ #[account(mut)]
+ pub conditional_on_finalize_token_metadata: AccountInfo<'info>,
+ /// CHECK: verified via cpi into token metadata
+ #[account(mut)]
+ pub conditional_on_revert_token_metadata: AccountInfo<'info>,
+ pub token_metadata_program: Program<'info, Metadata>,
+ pub system_program: Program<'info, System>,
+ pub rent: Sysvar<'info, Rent>,
+}
+
+impl<'info> AddMetadataToConditionalTokens<'info> {
+ pub fn into_create_on_finalize_token_metadata_context(
+ &self,
+ ) -> CpiContext<'_, '_, '_, 'info, CreateMetadataAccountsV3<'info>> {
+ let cpi_program = self.token_metadata_program.to_account_info();
+
+ let cpi_accounts = CreateMetadataAccountsV3 {
+ metadata: self
+ .conditional_on_finalize_token_metadata
+ .to_account_info(),
+ mint: self.conditional_on_finalize_token_mint.to_account_info(),
+ mint_authority: self.vault.to_account_info(),
+ payer: self.payer.to_account_info(),
+ update_authority: self.vault.to_account_info(),
+ system_program: self.system_program.to_account_info(),
+ rent: self.rent.to_account_info(),
+ };
+
+ CpiContext::new(cpi_program, cpi_accounts)
+ }
+
+ pub fn into_create_on_revert_token_metadata_context(
+ &self,
+ ) -> CpiContext<'_, '_, '_, 'info, CreateMetadataAccountsV3<'info>> {
+ let cpi_program = self.token_metadata_program.to_account_info();
+
+ let cpi_accounts = CreateMetadataAccountsV3 {
+ metadata: self.conditional_on_revert_token_metadata.to_account_info(),
+ mint: self.conditional_on_revert_token_mint.to_account_info(),
+ mint_authority: self.vault.to_account_info(),
+ payer: self.payer.to_account_info(),
+ update_authority: self.vault.to_account_info(),
+ system_program: self.system_program.to_account_info(),
+ rent: self.rent.to_account_info(),
+ };
+
+ CpiContext::new(cpi_program, cpi_accounts)
+ }
+}
+
#[derive(Accounts)]
pub struct SettleConditionalVault<'info> {
pub settlement_authority: Signer<'info>,
@@ -406,6 +655,45 @@ pub struct MintConditionalTokens<'info> {
pub token_program: Program<'info, Token>,
}
+#[derive(Accounts)]
+pub struct MergeConditionalTokensForUnderlyingTokens<'info> {
+ #[account(
+ has_one = conditional_on_finalize_token_mint @ ErrorCode::InvalidConditionalTokenMint,
+ has_one = conditional_on_revert_token_mint @ ErrorCode::InvalidConditionalTokenMint,
+ constraint = vault.status == VaultStatus::Active @ ErrorCode::VaultAlreadySettled
+ )]
+ pub vault: Account<'info, ConditionalVault>,
+ #[account(mut)]
+ pub conditional_on_finalize_token_mint: Account<'info, Mint>,
+ #[account(mut)]
+ pub conditional_on_revert_token_mint: Account<'info, Mint>,
+ #[account(
+ mut,
+ constraint = vault_underlying_token_account.key() == vault.underlying_token_account @ ErrorCode::InvalidVaultUnderlyingTokenAccount
+ )]
+ pub vault_underlying_token_account: Account<'info, TokenAccount>,
+ pub authority: Signer<'info>,
+ #[account(
+ mut,
+ token::authority = authority,
+ token::mint = conditional_on_finalize_token_mint
+ )]
+ pub user_conditional_on_finalize_token_account: Account<'info, TokenAccount>,
+ #[account(
+ mut,
+ token::authority = authority,
+ token::mint = conditional_on_revert_token_mint
+ )]
+ pub user_conditional_on_revert_token_account: Account<'info, TokenAccount>,
+ #[account(
+ mut,
+ token::authority = authority,
+ token::mint = vault.underlying_token_mint
+ )]
+ pub user_underlying_token_account: Account<'info, TokenAccount>,
+ pub token_program: Program<'info, Token>,
+}
+
#[derive(Accounts)]
pub struct RedeemConditionalTokensForUnderlyingTokens<'info> {
#[account(
diff --git a/scripts/assets/fMETA.png b/scripts/assets/fMETA.png
new file mode 100644
index 00000000..0491fcde
Binary files /dev/null and b/scripts/assets/fMETA.png differ
diff --git a/scripts/assets/fUSDC.png b/scripts/assets/fUSDC.png
new file mode 100644
index 00000000..12ce80fa
Binary files /dev/null and b/scripts/assets/fUSDC.png differ
diff --git a/scripts/assets/pMETA.png b/scripts/assets/pMETA.png
new file mode 100644
index 00000000..253fd5ff
Binary files /dev/null and b/scripts/assets/pMETA.png differ
diff --git a/scripts/assets/pUSDC.png b/scripts/assets/pUSDC.png
new file mode 100644
index 00000000..73ee171d
Binary files /dev/null and b/scripts/assets/pUSDC.png differ
diff --git a/scripts/crankTwap.ts b/scripts/crankTwap.ts
new file mode 100644
index 00000000..3171099d
--- /dev/null
+++ b/scripts/crankTwap.ts
@@ -0,0 +1,152 @@
+import { initializeProposal, payer, provider } from "./main";
+import * as anchor from "@coral-xyz/anchor";
+import * as token from "@solana/spl-token";
+import { MEMO_PROGRAM_ID } from "@solana/spl-memo";
+
+const { PublicKey, Keypair, SystemProgram, ComputeBudgetProgram } = anchor.web3;
+const { BN, Program } = anchor;
+
+import {
+ OpenBookV2Client,
+ PlaceOrderArgs,
+ Side,
+ OrderType,
+ SelfTradeBehavior,
+} from "@openbook-dex/openbook-v2";
+
+import { AutocratV0 } from "../target/types/autocrat_v0";
+
+import {
+ openbookTwap,
+ autocratProgram,
+ openbook,
+ OPENBOOK_PROGRAM_ID,
+} from "./main";
+
+const PROPOSAL_NUMBER = 7;
+
+// crank the TWAPs of a proposal's markets by passing in a bunch of empty orders
+async function crankTwap() {
+ const proposals = await autocratProgram.account.proposal.all();
+ console.log(proposals);
+ const storedProposal = proposals.find(
+ (proposal) => proposal.account.number == PROPOSAL_NUMBER
+ ).account;
+
+ const passMarketTwap = storedProposal.openbookTwapPassMarket;
+ const passMarket = storedProposal.openbookPassMarket;
+ const storedPassMarket = await openbook.deserializeMarketAccount(passMarket);
+
+ const failMarketTwap = storedProposal.openbookTwapFailMarket;
+ const failMarket = storedProposal.openbookFailMarket;
+ const storedFailMarket = await openbook.deserializeMarketAccount(failMarket);
+
+ console.log(await openbookTwap.account.twapMarket.fetch(passMarketTwap));
+ console.log(await openbookTwap.account.twapMarket.fetch(failMarketTwap));
+
+ let emptyBuyArgs: PlaceOrderArgs = {
+ side: Side.Bid,
+ priceLots: new BN(10_000), // 1 USDC for 1 META
+ maxBaseLots: new BN(1),
+ maxQuoteLotsIncludingFees: new BN(1 * 10_000),
+ clientOrderId: new BN(1),
+ orderType: OrderType.Market,
+ expiryTimestamp: new BN(0),
+ selfTradeBehavior: SelfTradeBehavior.DecrementTake,
+ limit: 255,
+ };
+
+ const userPassQuoteAccount = await token.getOrCreateAssociatedTokenAccount(
+ provider.connection,
+ payer,
+ storedPassMarket.quoteMint,
+ payer.publicKey
+ );
+
+ const userFailQuoteAccount = await token.getOrCreateAssociatedTokenAccount(
+ provider.connection,
+ payer,
+ storedFailMarket.quoteMint,
+ payer.publicKey
+ );
+
+ let passMarketOpenOrdersAccount = await openbook.createOpenOrders(
+ payer,
+ passMarket,
+ "oo"
+ );
+
+ let failMarketOpenOrdersAccount = await openbook.createOpenOrders(
+ payer,
+ failMarket,
+ "oo"
+ );
+
+ // openbook.findOpenOrdersForMarket()
+
+ // return;
+
+ // TODO: have this done programmatically
+ // let passMarketOpenOrdersAccount = await openbook.findOpenOrdersForMarket(
+ // payer.publicKey,
+ // passMarket,
+ // )[0];
+
+ // let failMarketOpenOrdersAccount = await openbook.findOpenOrdersForMarket(
+ // payer.publicKey,
+ // failMarket,
+ // )[0];
+
+ // console.log(passMarketOpenOrdersAccount);
+ // return;
+
+ // const indexer = openbook.findOpenOrdersIndexer(payer.publicKey);
+
+ // console.log(await openbook.getOpenOrdersIndexer(indexer));
+
+ const addPriorityFee = ComputeBudgetProgram.setComputeUnitPrice({
+ microLamports: 1,
+ });
+
+ for (let i = 0; i < 500; i++) {
+ try {
+ let tx = await openbookTwap.methods
+ .placeOrder(emptyBuyArgs)
+ .accounts({
+ asks: storedPassMarket.asks,
+ bids: storedPassMarket.bids,
+ eventHeap: storedPassMarket.eventHeap,
+ market: passMarket,
+ openOrdersAccount: passMarketOpenOrdersAccount,
+ userTokenAccount: userPassQuoteAccount.address,
+ marketVault: storedPassMarket.marketQuoteVault,
+ twapMarket: passMarketTwap,
+ openbookProgram: OPENBOOK_PROGRAM_ID,
+ })
+ .preInstructions([
+ addPriorityFee,
+ await openbookTwap.methods
+ .placeOrder(emptyBuyArgs)
+ .accounts({
+ asks: storedFailMarket.asks,
+ bids: storedFailMarket.bids,
+ eventHeap: storedFailMarket.eventHeap,
+ market: failMarket,
+ openOrdersAccount: failMarketOpenOrdersAccount,
+ userTokenAccount: userFailQuoteAccount.address,
+ marketVault: storedFailMarket.marketQuoteVault,
+ twapMarket: failMarketTwap,
+ openbookProgram: OPENBOOK_PROGRAM_ID,
+ })
+ .instruction(),
+ ])
+ .rpc();
+
+ console.log(tx);
+ } catch (err) {
+ console.log("error");
+ }
+ }
+}
+
+crankTwap();
diff --git a/scripts/finalizeProposal.ts b/scripts/finalizeProposal.ts
new file mode 100644
index 00000000..ae231349
--- /dev/null
+++ b/scripts/finalizeProposal.ts
@@ -0,0 +1,19 @@
+import { autocratProgram, finalizeProposal } from "./main";
+import * as anchor from "@coral-xyz/anchor";
+import { MEMO_PROGRAM_ID } from "@solana/spl-memo";
+
+const { PublicKey, Keypair, SystemProgram } = anchor.web3;
+const { BN, Program } = anchor;
+
+const PROPOSAL_NUMBER = 3;
+
+async function main() {
+ const proposals = await autocratProgram.account.proposal.all();
+ const proposal = proposals.find(
+ (proposal) => proposal.account.number == PROPOSAL_NUMBER
+ );
+
+ await finalizeProposal(proposal.publicKey);
+}
+
+main();
diff --git a/scripts/initializeDao.ts b/scripts/initializeDao.ts
new file mode 100644
index 00000000..7299359e
--- /dev/null
+++ b/scripts/initializeDao.ts
@@ -0,0 +1,14 @@
+import { autocratProgram, initializeDAO } from "./main";
+import * as anchor from "@coral-xyz/anchor";
+
+const { PublicKey, Keypair, SystemProgram } = anchor.web3;
+const { BN, Program } = anchor;
+
+const META = new PublicKey("METADDFL6wWMWEoKTFJwcThTbUmtarRJZjRpzUvkxhr");
+const USDC = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
+
+async function main() {
+ await initializeDAO(META, USDC);
+}
+
+main();
diff --git a/scripts/initializeProposal.ts b/scripts/initializeProposal.ts
new file mode 100644
index 00000000..cf3184fd
--- /dev/null
+++ b/scripts/initializeProposal.ts
@@ -0,0 +1,51 @@
+import { initializeProposal, daoTreasury, META } from "./main";
+import * as anchor from "@coral-xyz/anchor";
+import { MEMO_PROGRAM_ID } from "@solana/spl-memo";
+import * as token from "@solana/spl-token";
+
+const { PublicKey, Keypair, SystemProgram } = anchor.web3;
+const { BN, Program } = anchor;
+
+const provider = anchor.AnchorProvider.env();
+anchor.setProvider(provider);
+
+const payer = provider.wallet["payer"];
+
+const PANTERA_PUBKEY = new PublicKey(
+ "BtNPTBX1XkFCwazDJ6ZkK3hcUsomm1RPcfmtUrP6wd2K"
+);
+
+async function main() {
+ const senderAcc = await token.getOrCreateAssociatedTokenAccount(
+ provider.connection,
+ payer,
+ META,
+ daoTreasury,
+ true
+ );
+
+ const receiverAcc = await token.getOrCreateAssociatedTokenAccount(
+ provider.connection,
+ payer,
+ META,
+ PANTERA_PUBKEY,
+ true
+ );
+
+ const transferIx = token.createTransferInstruction(
+ senderAcc.address,
+ receiverAcc.address,
+ daoTreasury,
+ 1_000 * 1_000_000_000 // 1,000 META
+ );
+
+ const ix = {
+ programId: transferIx.programId,
+ accounts: transferIx.keys,
+ data: transferIx.data,
+ };
+
+ await initializeProposal(ix, "https://hackmd.io/@0xNallok/Hy2WJ46op");
+}
+
+main();
diff --git a/scripts/main.ts b/scripts/main.ts
index ed647156..3d5da4c4 100644
--- a/scripts/main.ts
+++ b/scripts/main.ts
@@ -1,7 +1,8 @@
import * as anchor from "@coral-xyz/anchor";
-import * as token from "@solana/spl-token";
-const { PublicKey, Keypair, SystemProgram } = anchor.web3;
+// @ts-ignore
+import * as token from "@solana/spl-token-018";
const { BN, Program } = anchor;
+import { MPL_TOKEN_METADATA_PROGRAM_ID as UMI_MPL_TOKEN_METADATA_PROGRAM_ID } from "@metaplex-foundation/mpl-token-metadata";
import {
OpenBookV2Client,
@@ -10,14 +11,25 @@ import {
OrderType,
SelfTradeBehavior,
} from "@openbook-dex/openbook-v2";
+import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
+import {
+ ComputeBudgetProgram,
+ Keypair,
+ PublicKey,
+ SYSVAR_RENT_PUBKEY,
+ SystemProgram,
+ Transaction,
+} from "@solana/web3.js";
+import {
+ fetchOnchainMetadataForMint,
+ uploadOffchainMetadata,
+} from "./uploadOffchainMetadata";
import { AutocratV0 } from "../target/types/autocrat_v0";
-
import {
IDL as ConditionalVaultIDL,
ConditionalVault,
} from "../target/types/conditional_vault";
-
import { OpenbookTwap } from "../tests/fixtures/openbook_twap";
import { AutocratMigrator } from "../target/types/autocrat_migrator";
@@ -25,19 +37,16 @@ const AutocratIDL: AutocratV0 = require("../target/idl/autocrat_v0.json");
const OpenbookTwapIDL: OpenbookTwap = require("../tests/fixtures/openbook_twap.json");
const AutocratMigratorIDL: AutocratMigrator = require("../target/idl/autocrat_migrator.json");
-const NEW_AUTOCRAT_PROGRAM_ID = new PublicKey(
- "metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq"
-);
const AUTOCRAT_PROGRAM_ID = new PublicKey(
- "meta3cxKzFBmWYgCVozmvCQAS3y9b3fGxrG9HkHL7Wi"
+ "metaRK9dUBnrAdZN6uUDKvxBVKW5pyCbPVmLtUZwtBp"
);
const CONDITIONAL_VAULT_PROGRAM_ID = new PublicKey(
- "vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe"
+ "vAuLTQjV5AZx5f3UgE75wcnkxnQowWxThn1hGjfCVwP"
);
const OPENBOOK_TWAP_PROGRAM_ID = new PublicKey(
- "TWAPrdhADy2aTKN5iFZtNnkQYXERD9NvKjPFVPMSCNN"
+ "twAP5sArq2vDS1mZCT7f4qRLwzTfHvf5Ay5R5Q5df1m"
);
-const OPENBOOK_PROGRAM_ID = new PublicKey(
+export const OPENBOOK_PROGRAM_ID = new PublicKey(
"opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb"
);
@@ -54,9 +63,26 @@ export const PROPH3t_PUBKEY = new PublicKey(
"65U66fcYuNfqN12vzateJhZ4bgDuxFWN9gMwraeQKByg"
);
const AUTOCRAT_MIGRATOR_PROGRAM_ID = new PublicKey(
- "migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3"
+ "MigRDW6uxyNMDBD8fX2njCRyJC4YZk2Rx9pDUZiAESt"
+);
+
+const MPL_TOKEN_METADATA_PROGRAM_ID = toWeb3JsPublicKey(
+ UMI_MPL_TOKEN_METADATA_PROGRAM_ID
);
+const findMetaplexMetadataPda = async (mint: PublicKey) => {
+ const [publicKey] = PublicKey.findProgramAddressSync(
+ [
+ anchor.utils.bytes.utf8.encode("metadata"),
+ MPL_TOKEN_METADATA_PROGRAM_ID.toBuffer(),
+ mint.toBuffer(),
+ ],
+ MPL_TOKEN_METADATA_PROGRAM_ID
+ );
+
+ return publicKey;
+};
+
export const provider = anchor.AnchorProvider.env();
anchor.setProvider(provider);
@@ -67,11 +93,6 @@ export const autocratProgram = new Program(
AUTOCRAT_PROGRAM_ID,
provider
);
-export const newAutocratProgram = new Program(
- AutocratIDL,
- NEW_AUTOCRAT_PROGRAM_ID,
- provider
-);
export const vaultProgram = new Program(
ConditionalVaultIDL,
@@ -92,27 +113,16 @@ export const migrator = new anchor.Program(
provider
);
-const [dao] = PublicKey.findProgramAddressSync(
+export const [dao] = PublicKey.findProgramAddressSync(
[anchor.utils.bytes.utf8.encode("WWCACOTMICMIBMHAFTTWYGHMB")],
autocratProgram.programId
);
-const [daoTreasury] = PublicKey.findProgramAddressSync(
+export const [daoTreasury] = PublicKey.findProgramAddressSync(
[dao.toBuffer()],
autocratProgram.programId
);
-const [newDao] = PublicKey.findProgramAddressSync(
- [anchor.utils.bytes.utf8.encode("WWCACOTMICMIBMHAFTTWYGHMB")],
- newAutocratProgram.programId
-);
-
-const [newDaoTreasury] = PublicKey.findProgramAddressSync(
- [newDao.toBuffer()],
- newAutocratProgram.programId
-);
-
-
async function createMint(
mintAuthority: any,
freezeAuthority: any,
@@ -132,9 +142,9 @@ async function createMint(
async function initializeVault(
settlementAuthority: any,
underlyingTokenMint: any,
- nonce: any
+ nonce: anchor.BN
): Promise {
- const [vault] = anchor.web3.PublicKey.findProgramAddressSync(
+ const [vault] = PublicKey.findProgramAddressSync(
[
anchor.utils.bytes.utf8.encode("conditional_vault"),
settlementAuthority.toBuffer(),
@@ -156,8 +166,51 @@ async function initializeVault(
true
);
- let conditionalOnFinalizeKP = anchor.web3.Keypair.generate();
- let conditionalOnRevertKP = anchor.web3.Keypair.generate();
+ let conditionalOnFinalizeKP = Keypair.generate();
+ let conditionalOnRevertKP = Keypair.generate();
+
+ const { key: underlyingTokenMetadataKey, metadata: underlyingTokenMetadata } =
+ await fetchOnchainMetadataForMint(underlyingTokenMint);
+
+ console.log(
+ `metadata for token = ${underlyingTokenMint.toBase58()}`,
+ underlyingTokenMetadata
+ );
+
+ const conditionalOnFinalizeTokenMetadata = await findMetaplexMetadataPda(
+ conditionalOnFinalizeKP.publicKey
+ );
+ const conditionalOnRevertTokenMetadata = await findMetaplexMetadataPda(
+ conditionalOnRevertKP.publicKey
+ );
+
+ // pull off the least significant 32 bits representing the proposal count
+ const proposalCount = nonce.and(new BN(1).shln(32).sub(new BN(1)));
+
+ // create new json, take that and pipe into the instruction
+ const { passTokenMetadataUri, faileTokenMetadataUri } =
+ await uploadOffchainMetadata(proposalCount, underlyingTokenMetadata.symbol);
+
+ const addMetadataToConditionalTokensIx = await vaultProgram.methods
+ .addMetadataToConditionalTokens(
+ proposalCount,
+ passTokenMetadataUri,
+ faileTokenMetadataUri
+ )
+ .accounts({
+ payer: payer.publicKey,
+ vault,
+ underlyingTokenMint,
+ underlyingTokenMetadata: underlyingTokenMetadataKey,
+ conditionalOnFinalizeTokenMint: conditionalOnFinalizeKP.publicKey,
+ conditionalOnRevertTokenMint: conditionalOnRevertKP.publicKey,
+ conditionalOnFinalizeTokenMetadata,
+ conditionalOnRevertTokenMetadata,
+ tokenMetadataProgram: MPL_TOKEN_METADATA_PROGRAM_ID,
+ systemProgram: SystemProgram.programId,
+ rent: SYSVAR_RENT_PUBKEY,
+ })
+ .instruction();
await vaultProgram.methods
.initializeConditionalVault(settlementAuthority, nonce)
@@ -170,9 +223,18 @@ async function initializeVault(
payer: payer.publicKey,
tokenProgram: token.TOKEN_PROGRAM_ID,
associatedTokenProgram: token.ASSOCIATED_TOKEN_PROGRAM_ID,
- systemProgram: anchor.web3.SystemProgram.programId,
+ systemProgram: SystemProgram.programId,
})
.signers([conditionalOnFinalizeKP, conditionalOnRevertKP])
+ .preInstructions([
+ ComputeBudgetProgram.setComputeUnitLimit({
+ units: 150_000
+ }),
+ ComputeBudgetProgram.setComputeUnitPrice({
+ microLamports: 100
+ }),
+ ])
+ .postInstructions([addMetadataToConditionalTokensIx])
.rpc();
//const storedVault = await vaultProgram.account.conditionalVault.fetch(
@@ -183,7 +245,7 @@ async function initializeVault(
return vault;
}
-async function initializeDAO(META: any, USDC: any) {
+export async function initializeDAO(META: any, USDC: any) {
await autocratProgram.methods
.initializeDao()
.accounts({
@@ -194,82 +256,108 @@ async function initializeDAO(META: any, USDC: any) {
.rpc();
}
-async function initializeProposal() {
- const treasuryMetaAccount = await token.getOrCreateAssociatedTokenAccount(
- provider.connection,
- payer,
- META,
- daoTreasury,
- true
- );
-
- const treasuryUsdcAccount = await token.getOrCreateAssociatedTokenAccount(
- provider.connection,
- payer,
- USDC,
- daoTreasury,
- true
- );
-
- const newTreasuryMetaAccount = await token.getOrCreateAssociatedTokenAccount(
- provider.connection,
- payer,
- META,
- newDaoTreasury,
- true
- );
-
- const newTreasuryUsdcAccount = await token.getOrCreateAssociatedTokenAccount(
- provider.connection,
- payer,
- USDC,
- newDaoTreasury,
- true
- );
-
- const ix = await migrator.methods
- .multiTransfer2()
- .accounts({
- authority: daoTreasury,
- from0: treasuryMetaAccount.address,
- to0: newTreasuryMetaAccount.address,
- from1: treasuryUsdcAccount.address,
- to1: newTreasuryUsdcAccount.address,
- lamportReceiver: newDaoTreasury,
- })
- .instruction();
-
- const instruction = {
- programId: ix.programId,
- accounts: ix.keys,
- data: ix.data,
- };
-
- // const programId = transferIx.programId;
- // const accounts = transferIx.keys;
- // const data = transferIx.data;
-
- // const instruction = {
- // programId,
- // accounts,
- // data,
- // };
+export async function fetchDao() {
+ return autocratProgram.account.dao.fetch(dao);
+}
+// async function finalizeProposal(proposal: PublicKey) {
+// const storedProposal = await autocratProgram.account.proposal.fetch(proposal);
+// console.log(storedProposal)
+// const treasuryMetaAccount = await token.getOrCreateAssociatedTokenAccount(
+// provider.connection,
+// payer,
+// META,
+// daoTreasury,
+// true
+// );
+
+// const treasuryUsdcAccount = await token.getOrCreateAssociatedTokenAccount(
+// provider.connection,
+// payer,
+// USDC,
+// daoTreasury,
+// true
+// );
+
+// const newTreasuryMetaAccount = await token.getOrCreateAssociatedTokenAccount(
+// provider.connection,
+// payer,
+// META,
+// newDaoTreasury,
+// true
+// );
+
+// const newTreasuryUsdcAccount = await token.getOrCreateAssociatedTokenAccount(
+// provider.connection,
+// payer,
+// USDC,
+// newDaoTreasury,
+// true
+// );
+
+// const ix = await migrator.methods
+// .multiTransfer2()
+// .accounts({
+// authority: daoTreasury,
+// from0: treasuryMetaAccount.address,
+// to0: newTreasuryMetaAccount.address,
+// from1: treasuryUsdcAccount.address,
+// to1: newTreasuryUsdcAccount.address,
+// lamportReceiver: newDaoTreasury,
+// })
+// .instruction();
+
+// const instruction = {
+// programId: ix.programId,
+// accounts: ix.keys,
+// data: ix.data,
+// };
+
+// let tx = await autocratProgram.methods
+// .finalizeProposal()
+// .accounts({
+// proposal,
+// openbookTwapPassMarket: storedProposal.openbookTwapPassMarket,
+// openbookTwapFailMarket: storedProposal.openbookTwapFailMarket,
+// dao,
+// baseVault: storedProposal.baseVault,
+// quoteVault: storedProposal.quoteVault,
+// vaultProgram: vaultProgram.programId,
+// daoTreasury,
+// })
+// .remainingAccounts(
+// instruction.accounts
+// .concat({
+// pubkey: instruction.programId,
+// isWritable: false,
+// isSigner: false,
+// })
+// .map((meta) =>
+// meta.pubkey.equals(daoTreasury)
+// ? { ...meta, isSigner: false }
+// : meta
+// )
+// )
+// .rpc();
+
+// console.log("Proposal finalized", tx);
+// }
+
+export async function initializeProposal(
+ instruction: any,
+ proposalURL: string
+) {
const proposalKeypair = Keypair.generate();
- // const storedDAO = await autocratProgram.account.dao.fetch(dao);
- // console.log(storedDAO);
+ const storedDAO = await autocratProgram.account.dao.fetch(dao);
+ console.log(storedDAO);
// least signficant 32 bits of nonce are proposal number
// most significant bit of nonce is 0 for base and 1 for quote
- let baseNonce = new BN(1);
+ let baseNonce = new BN(storedDAO.proposalCount);
- const baseVault = await initializeVault(
- daoTreasury,
- META,
- baseNonce
- );
+ const baseVault = await initializeVault(daoTreasury, META, baseNonce);
const quoteVault = await initializeVault(
daoTreasury,
@@ -292,6 +380,7 @@ async function initializeProposal() {
).conditionalOnRevertTokenMint;
let openbookPassMarketKP = Keypair.generate();
+ // let openbookPassMarket = new PublicKey("HspxPoqFhAmurNGA1FxdeaUbRcZrv8FoR2vAsyYs3EGA");
let [openbookTwapPassMarket] = PublicKey.findProgramAddressSync(
[
@@ -301,32 +390,53 @@ async function initializeProposal() {
openbookTwap.programId
);
- let openbookPassMarket = await openbook.createMarket(
- payer,
- "pMETA/pUSDC",
- passQuoteMint,
- passBaseMint,
- new BN(100),
- new BN(1e9),
- new BN(0),
- new BN(0),
- new BN(0),
- null,
- null,
- openbookTwapPassMarket,
- null,
- openbookTwapPassMarket,
- { confFilter: 0.1, maxStalenessSlots: 100 },
- openbookPassMarketKP
- );
+ const currentTimeInSeconds = Math.floor(Date.now() / 1000);
+ const elevenDaysInSeconds = 11 * 24 * 60 * 60;
+ const expiryTime = new BN(currentTimeInSeconds + elevenDaysInSeconds);
+ const quoteLotSize = new BN(100);
+ const baseLotSize = new BN(1e8);
+ const maxObservationChangePerUpdateLots = new BN(5_000);
+
+ let [passMarketInstructions, passMarketSigners] =
+ await openbook.createMarketIx(
+ payer.publicKey,
+ `${baseNonce}pMETA/pUSDC`,
+ passQuoteMint,
+ passBaseMint,
+ quoteLotSize,
+ baseLotSize,
+ new BN(0),
+ new BN(0),
+ expiryTime,
+ null,
+ null,
+ openbookTwapPassMarket,
+ null,
+ openbookTwapPassMarket,
+ { confFilter: 0.1, maxStalenessSlots: 100 },
+ openbookPassMarketKP,
+ daoTreasury
+ );
- await openbookTwap.methods
- .createTwapMarket(new BN(1_000))
- .accounts({
- market: openbookPassMarket,
- twapMarket: openbookTwapPassMarket,
- })
- .rpc();
+ const cuPriceIx = ComputeBudgetProgram.setComputeUnitPrice({
+ microLamports: 100,
+ });
+ const cuLimitIx = ComputeBudgetProgram.setComputeUnitLimit({
+ units: 150_000
+ });
+
+ let tx1 = new Transaction();
+ tx1.add(...passMarketInstructions);
+ tx1.add(cuPriceIx);
+ tx1.add(cuLimitIx);
+
+ let blockhash = await provider.connection.getLatestBlockhash();
+ tx1.recentBlockhash = blockhash.blockhash;
+
+ tx1.sign(payer);
+
+ const sig1 = await provider.sendAndConfirm(tx1, passMarketSigners);
+ console.log("First market created:\n", sig1);
let openbookFailMarketKP = Keypair.generate();
@@ -338,41 +448,60 @@ async function initializeProposal() {
openbookTwap.programId
);
- let openbookFailMarket = await openbook.createMarket(
- payer,
- "fMETA/fUSDC",
+ let openbookFailMarketIx = await openbook.createMarketIx(
+ payer.publicKey,
+ `${baseNonce}fMETA/fUSDC`,
failQuoteMint,
failBaseMint,
- new BN(100),
- new BN(1e9),
- new BN(0),
+ quoteLotSize,
+ baseLotSize,
new BN(0),
new BN(0),
+ expiryTime,
null,
null,
openbookTwapFailMarket,
null,
openbookTwapFailMarket,
{ confFilter: 0.1, maxStalenessSlots: 100 },
- openbookFailMarketKP
+ openbookFailMarketKP,
+ daoTreasury
);
- await openbookTwap.methods
- .createTwapMarket(new BN(1_000))
- .accounts({
- market: openbookFailMarket,
- twapMarket: openbookTwapFailMarket,
- })
- .rpc();
- const proposalURL = "https://hackmd.io/5ZkjJtE5STGZn2fH9iMPPw?view";
+ let tx = new Transaction();
+ tx.add(...openbookFailMarketIx[0]);
+ tx.add(cuPriceIx);
+ tx.add(cuLimitIx);
+
+ blockhash = await provider.connection.getLatestBlockhash();
+ tx.recentBlockhash = blockhash.blockhash;
+
+ const marketSig2 = await provider.sendAndConfirm(tx, openbookFailMarketIx[1]);
+ console.log("Second market created:\n", marketSig2);
await autocratProgram.methods
.initializeProposal(proposalURL, instruction)
.preInstructions([
await autocratProgram.account.proposal.createInstruction(
proposalKeypair,
- 1500
+ 1000
),
+ await openbookTwap.methods
+ .createTwapMarket(new BN(10_000), maxObservationChangePerUpdateLots)
+ .accounts({
+ market: openbookPassMarketKP.publicKey,
+ twapMarket: openbookTwapPassMarket,
+ })
+ .instruction(),
+ await openbookTwap.methods
+ .createTwapMarket(new BN(10_000), maxObservationChangePerUpdateLots)
+ .accounts({
+ market: openbookFailMarketKP.publicKey,
+ twapMarket: openbookTwapFailMarket,
+ })
+ .instruction(),
+ cuPriceIx,
+ cuLimitIx,
])
.accounts({
proposal: proposalKeypair.publicKey,
@@ -380,8 +509,8 @@ async function initializeProposal() {
daoTreasury,
quoteVault,
baseVault,
- openbookPassMarket,
- openbookFailMarket,
+ openbookPassMarket: openbookPassMarketKP.publicKey,
+ openbookFailMarket: openbookFailMarketKP.publicKey,
openbookTwapPassMarket,
openbookTwapFailMarket,
proposer: payer.publicKey,
@@ -417,8 +546,8 @@ async function placeOrdersOnBothSides(twapMarket: any) {
limit: 255,
};
- const storedMarket = await openbook.getMarketAccount(market);
- let openOrdersAccount = new anchor.web3.PublicKey(
+ const storedMarket = await openbook.deserializeMarketAccount(market);
+ let openOrdersAccount = new PublicKey(
"CxDQ5RSYebF6mRLDrXYn1An7bawe6S3iyaU5rZBjz4Xs"
);
// let openOrdersAccount = await openbook.createOpenOrders(
@@ -476,7 +605,7 @@ async function placeOrdersOnBothSides(twapMarket: any) {
async function placeTakeOrder(twapMarket: any) {
let market = (await openbookTwap.account.twapMarket.fetch(twapMarket)).market;
- const storedMarket = await openbook.getMarketAccount(market);
+ const storedMarket = await openbook.deserializeMarketAccount(market);
const userBaseAccount = await token.getOrCreateAssociatedTokenAccount(
provider.connection,
@@ -570,10 +699,7 @@ async function placeTakeOrder(twapMarket: any) {
);
}
-export async function mintConditionalTokens(
- amount: number,
- vault: anchor.web3.PublicKey
-) {
+export async function mintConditionalTokens(amount: number, vault: PublicKey) {
const storedVault = await vaultProgram.account.conditionalVault.fetch(vault);
// Setting default values for optional parameters
@@ -608,7 +734,7 @@ export async function mintConditionalTokens(
.rpc();
}
-async function getOrCreateAccount(mint: anchor.web3.PublicKey) {
+async function getOrCreateAccount(mint: PublicKey) {
return (
await token.getOrCreateAssociatedTokenAccount(
provider.connection,
@@ -618,9 +744,3 @@ async function getOrCreateAccount(mint: anchor.web3.PublicKey) {
)
).address;
}
-
-async function main() {
- await initializeProposal();
-}
-
-main();
diff --git a/scripts/multisig.ts b/scripts/multisig.ts
new file mode 100644
index 00000000..637fe108
--- /dev/null
+++ b/scripts/multisig.ts
@@ -0,0 +1,130 @@
+import * as anchor from "@coral-xyz/anchor";
+import { MEMO_PROGRAM_ID } from "@solana/spl-memo";
+import * as multisig from "@sqds/multisig";
+import AmmImpl from "@mercurial-finance/dynamic-amm-sdk";
+import { META, PROPH3t_PUBKEY, USDC } from "./main";
+import { TokenInfo } from "@solana/spl-token-registry";
+import { assert } from "console";
+import { TransactionMessage } from "@solana/web3.js";
+
+const { PublicKey, Keypair, SystemProgram } = anchor.web3;
+const { BN, Program } = anchor;
+
+const provider = anchor.AnchorProvider.env();
+anchor.setProvider(provider);
+
+const payer = provider.wallet["payer"];
+
+async function main() {
+ // const connection = new anchor.web3.Connection("https://mainnet.helius-rpc.com/?api-key=3f6d553e-de08-4fb9-9212-5d87bbfd1328");
+ // const createKey = new PublicKey("FpMnruqVCxh3o2oBFZ9uSQmshiyfMqzeJ3YfNQfP9tHy");
+
+ const ms = new PublicKey("8T2Yp9AuiuH3qXymZadr7DiMtZqdRAr7Qm6DPDFsPohz");
+ const msVault = new PublicKey("FpMnruqVCxh3o2oBFZ9uSQmshiyfMqzeJ3YfNQfP9tHy");
+
+ const multisigAccount = await multisig.accounts.Multisig.fromAccountAddress(
+ provider.connection,
+ ms
+ );
+
+ const [vaultPda, vaultBump] = multisig.getVaultPda({
+ multisigPda: ms,
+ index: 0,
+ });
+
+ assert(vaultPda == msVault);
+
+ console.log(multisigAccount);
+
+ const metaPoolAddr = new PublicKey(
+ "6t2CdBC26q9tj6jBwPzzFZogtjX8mtmVHUmAFmjAhMSn"
+ );
+ // const metaPoolAddr = new PublicKey("53miVooS2uLfVpiKShXpMqh6PkZhmfDXiRAzs3tNhjwC");
+
+ const tokenList = (await fetch("https://token.jup.ag/all").then((res) =>
+ res.json()
+ )) as TokenInfo[];
+
+ // const cache = await fetch("https://cache.jup.ag/markets?v=3").then((res) => res.json());
+
+ const USDC_TOKEN_INFO = tokenList.find(
+ (token) => token.address == USDC.toString()
+ );
+ const META_TOKEN_INFO = tokenList.find(
+ (token) => token.address == META.toString()
+ );
+
+ // console.log(USDC_TOKEN_INFO);
+ // console.log(META_TOKEN_INFO);
+
+ const metaPool = await AmmImpl.create(
+ provider.connection,
+ metaPoolAddr,
+ META_TOKEN_INFO,
+ USDC_TOKEN_INFO
+ );
+
+ await metaPool.updateState();
+
+ const { poolTokenAmountOut, tokenAInAmount, tokenBInAmount } =
+ metaPool.getDepositQuote(
+ // new anchor.BN(1_000 * 1_000_000_000),
+ new anchor.BN(0),
+ new anchor.BN(35_000 * 1_000_000),
+ true,
+ 10
+ );
+
+ console.log(tokenAInAmount.toString());
+ console.log(tokenBInAmount.toString());
+ console.log(poolTokenAmountOut.toString());
+
+ const depositTx = await metaPool.deposit(
+ msVault,
+ tokenAInAmount,
+ tokenBInAmount,
+ poolTokenAmountOut
+ );
+
+ // console.log(depositTx.instructions.length);
+
+ const transactionMessage = new TransactionMessage({
+ payerKey: vaultPda,
+ recentBlockhash: (await provider.connection.getLatestBlockhash()).blockhash,
+ instructions: depositTx.instructions,
+ });
+
+ const transactionIndex = BigInt(
+ (multisigAccount.transactionIndex as anchor.BN).addn(1).toString()
+ );
+ console.log(transactionIndex);
+
+ // const sig1 = await multisig.rpc.vaultTransactionCreate({
+ // connection: provider.connection,
+ // feePayer: payer,
+ // multisigPda: ms,
+ // transactionIndex: transactionIndex,
+ // creator: PROPH3t_PUBKEY,
+ // vaultIndex: 0,
+ // ephemeralSigners: 0,
+ // transactionMessage
+ // });
+
+ // console.log(sig1);
+
+ const sig2 = await multisig.rpc.proposalCreate({
+ connection: provider.connection,
+ feePayer: payer,
+ creator: payer,
+ multisigPda: ms,
+ transactionIndex: 17n,
+ });
+
+ console.log(sig2);
+
+ // console.log(depositIx);
+
+ // console.log(metaPool);
+}
+
+main();
diff --git a/scripts/uploadOffchainMetadata.ts b/scripts/uploadOffchainMetadata.ts
new file mode 100755
index 00000000..f6fdb7cd
--- /dev/null
+++ b/scripts/uploadOffchainMetadata.ts
@@ -0,0 +1,187 @@
+import * as anchor from "@coral-xyz/anchor";
+import {
+ Metadata,
+ deserializeMetadata,
+ findMetadataPda,
+} from "@metaplex-foundation/mpl-token-metadata";
+import {
+ GenericFile,
+ createGenericFile,
+ keypairIdentity,
+ publicKey,
+ signerIdentity,
+} from "@metaplex-foundation/umi";
+import {
+ fromWeb3JsPublicKey,
+ toWeb3JsPublicKey,
+} from "@metaplex-foundation/umi-web3js-adapters";
+import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
+import { bundlrUploader } from "@metaplex-foundation/umi-uploader-bundlr";
+import { PublicKey } from "@solana/web3.js";
+
+import fs from "fs";
+
+const uploadedAssetMap: Record = {
+ fMETA: "https://arweave.net/tGxvOjMZw7B0qHsdCcIMO57oH5g5OaItOZdXo3BXKz8",
+ fUSDC: "https://arweave.net/DpvxeAyVbaoivhIVCLjdf566k2SwVn0YVBL0sTOezWk",
+ pMETA: "https://arweave.net/iuqi7PRRESdDxj1oRyk2WzR90_zdFcmZsuWicv3XGfs",
+ pUSDC: "https://arweave.net/e4IO7F59F_RKCiuB--_ABPot7Qh1yFsGkWzVhcXuKDU",
+};
+
+const provider = anchor.AnchorProvider.env();
+anchor.setProvider(provider);
+
+const payer = provider.wallet["payer"];
+
+const umi = createUmi(provider.connection);
+umi.use(keypairIdentity(payer));
+
+type AcceptedVaultTokens = "META" | "USDC";
+type ConditionalToken = "pMETA" | "fMETA" | "pUSDC" | "fUSDC";
+
+const isConditionalToken = (value: string): value is ConditionalToken =>
+ ["pMETA", "fMETA", "pUSDC", "fUSDC"].includes(value as ConditionalToken);
+
+const isAcceptedVaultToken = (value: string): value is AcceptedVaultTokens =>
+ ["META", "USDC"].includes(value as AcceptedVaultTokens);
+
+/**
+ * Usage options
+ *
+ * 1: just upload images
+ * uploadImageData()
+ * .then((res) => console.log(res))
+ * .catch((err) => console.error(err));
+ *
+ * 2: Use pre-existing images in assets/ dir and upload new JSON
+ *
+ * const proposalNumber = new BN(0);
+ * Promise.all(
+ * uploadedAssetMap.map((asset) =>
+ * uploadImageJson(proposalNumber, asset.name as ConditionalToken, asset.uri)
+ * )
+ * ).then((res) => console.log(res))
+ * .catch((err) => console.error(err));
+ *
+ * 3: upload new images, then upload json. new images aren't needed everytime, but
+ * leaving in for reference.
+ *
+ * const proposalNumber = new BN(0);
+ * uploadImageData()
+ * .then((results) => {
+ * results.map((result) => {
+ * uploadImageJson(proposalNumber, result.name as ConditionalToken, result.uri);
+ * });
+ * })
+ * .catch((err) => console.error(err));
+ */
+
+const uploadImageData = async () => {
+ // use bundlr, targeting arweave
+ umi.use(bundlrUploader());
+
+ const sourceDirContent = fs.readdirSync(`${__dirname}/assets`);
+ console.log(sourceDirContent);
+
+ if (
+ !sourceDirContent
+ .map((x) => isConditionalToken(x.split(".")[0]))
+ .every((x) => x)
+ ) {
+ throw new Error(
+ `Found unexpected filename in assets directory. Only setup to handle "ConditionalToken"`
+ );
+ }
+
+ const filesToUpload: Array = [];
+ for (const filename of sourceDirContent) {
+ const data = fs.readFileSync(`${__dirname}/assets/${filename}`);
+ filesToUpload.push(
+ createGenericFile(new Uint8Array(data), filename, {
+ contentType: "image/png",
+ })
+ );
+ }
+
+ const uris = await umi.uploader.upload(filesToUpload);
+
+ return uris.map((uri, idx) => {
+ return {
+ uri,
+ name: filesToUpload[idx].fileName.split(".")[0],
+ };
+ });
+};
+
+export const uploadImageJson = async (
+ proposal: anchor.BN,
+ conditionalToken: ConditionalToken,
+ image: string
+) => {
+ // use bundlr, targeting arweave
+ umi.use(bundlrUploader());
+
+ const market = conditionalToken.toLowerCase().startsWith("p")
+ ? "pass"
+ : "fail";
+ return umi.uploader.uploadJson({
+ name: `Proposal ${proposal.toNumber()}: ${conditionalToken}`,
+ image,
+ symbol: conditionalToken,
+ description: `Native token in the MetaDAO's conditional ${market} market for proposal ${proposal.toNumber()}`,
+ });
+};
+
+export const uploadOffchainMetadata = async (
+ proposal: anchor.BN,
+ symbol: string
+) => {
+ // use bundlr, targeting arweave
+ umi.use(bundlrUploader());
+
+ if (!isAcceptedVaultToken(symbol)) {
+ throw new Error(`Unrecognized symbol provided: ${symbol}`);
+ }
+
+ console.log(`uploading metadata for token ${symbol}...`);
+ const [passUri, failUri] = await Promise.all(
+ [`p${symbol}`, `f${symbol}`].map((symbol) => {
+ return uploadImageJson(
+ proposal,
+ symbol as ConditionalToken,
+ uploadedAssetMap[symbol]
+ );
+ })
+ );
+
+ return {
+ symbol,
+ passTokenMetadataUri: passUri,
+ faileTokenMetadataUri: failUri,
+ };
+};
+
+export const fetchOnchainMetadataForMint = async (
+ address: PublicKey
+):
+ | Promise<{
+ key: PublicKey;
+ metadata: Metadata;
+ }>
+ | undefined => {
+ const pda = findMetadataPda(umi, {
+ mint: fromWeb3JsPublicKey(address),
+ });
+
+ const acct = await umi.rpc.getAccount(pda[0]);
+ if (!acct.exists) {
+ throw new Error(`Unable to find metaplex metdata for mint = ${address}`);
+ }
+
+ return {
+ key: toWeb3JsPublicKey(pda[0]),
+ metadata: deserializeMetadata(acct),
+ };
+};
+
+// fetchOnchainMetadataForMint();
diff --git a/tests/autocratV0.ts b/tests/autocratV0.ts
index 326b784d..8fe22e33 100644
--- a/tests/autocratV0.ts
+++ b/tests/autocratV0.ts
@@ -2,37 +2,42 @@ import * as anchor from "@coral-xyz/anchor";
import { BN, Program } from "@coral-xyz/anchor";
import * as token from "@solana/spl-token";
import { BankrunProvider } from "anchor-bankrun";
-import {
- mintConditionalTokens,
- redeemConditionalTokens,
-} from "./conditionalVault";
import {
OpenBookV2Client,
- IDL,
PlaceOrderArgs,
Side,
OrderType,
SelfTradeBehavior,
} from "@openbook-dex/openbook-v2";
-
-const { PublicKey, Keypair } = anchor.web3;
-
import { assert } from "chai";
-
import {
startAnchor,
Clock,
BanksClient,
ProgramTestContext,
} from "solana-bankrun";
+import {
+ createMint,
+ createAccount,
+ createAssociatedTokenAccount,
+ mintToOverride,
+ getMint,
+ getAccount,
+} from "spl-token-bankrun";
-import { expectError } from "./utils/utils";
+import {
+ mintConditionalTokens,
+ redeemConditionalTokens,
+} from "./conditionalVault";
+import { expectError } from "./utils/utils";
import { AutocratV0 } from "../target/types/autocrat_v0";
import { ConditionalVault } from "../target/types/conditional_vault";
import { AutocratMigrator } from "../target/types/autocrat_migrator";
-import { OpenbookTwap } from "./fixtures/openbook_twap";
+const { PublicKey, Keypair } = anchor.web3;
+
+import { OpenbookTwap } from "./fixtures/openbook_twap";
const OpenbookTwapIDL: OpenbookTwap = require("./fixtures/openbook_twap.json");
const AutocratIDL: AutocratV0 = require("../target/idl/autocrat_v0.json");
@@ -56,27 +61,17 @@ interface MarketMaker {
type ProposalInstruction = anchor.IdlTypes["ProposalInstruction"];
-import {
- createMint,
- createAccount,
- createAssociatedTokenAccount,
- mintToOverride,
- getMint,
- getAccount,
-} from "spl-token-bankrun";
-import { open } from "fs";
-
// this test file isn't 'clean' or DRY or whatever; sorry!
const AUTOCRAT_PROGRAM_ID = new PublicKey(
- "metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq"
+ "metaRK9dUBnrAdZN6uUDKvxBVKW5pyCbPVmLtUZwtBp"
);
const CONDITIONAL_VAULT_PROGRAM_ID = new PublicKey(
- "vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe"
+ "vAuLTQjV5AZx5f3UgE75wcnkxnQowWxThn1hGjfCVwP"
);
const OPENBOOK_TWAP_PROGRAM_ID = new PublicKey(
- "TWAPrdhADy2aTKN5iFZtNnkQYXERD9NvKjPFVPMSCNN"
+ "twAP5sArq2vDS1mZCT7f4qRLwzTfHvf5Ay5R5Q5df1m"
);
const OPENBOOK_PROGRAM_ID = new PublicKey(
@@ -84,22 +79,21 @@ const OPENBOOK_PROGRAM_ID = new PublicKey(
);
const AUTOCRAT_MIGRATOR_PROGRAM_ID = new PublicKey(
- "migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3"
+ "MigRDW6uxyNMDBD8fX2njCRyJC4YZk2Rx9pDUZiAESt"
);
describe("autocrat_v0", async function () {
let provider,
- connection,
autocrat,
payer,
context,
- banksClient,
+ banksClient: BanksClient,
dao,
daoTreasury,
META,
USDC,
vaultProgram,
- openbook,
+ openbook: OpenBookV2Client,
openbookTwap,
migrator,
treasuryMetaAccount,
@@ -148,7 +142,7 @@ describe("autocrat_v0", async function () {
provider
);
- payer = autocrat.provider.wallet.payer;
+ payer = provider.wallet.payer;
USDC = await createMint(
banksClient,
@@ -191,7 +185,7 @@ describe("autocrat_v0", async function () {
assert(daoAcc.metaMint.equals(META));
assert(daoAcc.usdcMint.equals(USDC));
assert.equal(daoAcc.proposalCount, 2);
- assert.equal(daoAcc.passThresholdBps, 500);
+ assert.equal(daoAcc.passThresholdBps, 300);
assert.ok(daoAcc.baseBurnLamports.eq(new BN(1_000_000_000).muln(10)));
assert.ok(daoAcc.burnDecayPerSlotLamports.eq(new BN(23_150)));
@@ -226,7 +220,7 @@ describe("autocrat_v0", async function () {
burnDecayPerSlotLamports: null,
slotsPerProposal: null,
marketTakerFee: null,
- }
+ },
});
const instruction = {
programId: autocrat.programId,
@@ -330,7 +324,7 @@ describe("autocrat_v0", async function () {
// toPubkey: lamportReceiver.publicKey,
// lamports: 1_000_000,
// });
-
+
// instruction = {
// programId: ix.programId,
// accounts: ix.keys,
@@ -537,127 +531,17 @@ describe("autocrat_v0", async function () {
it("finalizes proposals when pass price TWAP > (fail price TWAP + threshold)", async function () {
let storedProposal = await autocrat.account.proposal.fetch(proposal);
- let passBuyArgs: PlaceOrderArgs = {
- side: Side.Bid,
- priceLots: new BN(10000), // 1 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(10000),
- clientOrderId: new BN(1),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
- let failBuyArgs: PlaceOrderArgs = {
- side: Side.Bid,
- priceLots: new BN(7000), // 0.7 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(10000),
- clientOrderId: new BN(1),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
-
- let passSellArgs: PlaceOrderArgs = {
- side: Side.Ask,
- priceLots: new BN(11_000), // 1.1 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(12000),
- clientOrderId: new BN(2),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
- let failSellArgs: PlaceOrderArgs = {
- side: Side.Ask,
- priceLots: new BN(8_000), // 8 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(12000),
- clientOrderId: new BN(2),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
- const storedPassMarket = await openbook.getMarketAccount(
+ const storedPassMarket = await openbook.deserializeMarketAccount(
openbookPassMarket
);
- const storedFailMarket = await openbook.getMarketAccount(
+ const storedFailMarket = await openbook.deserializeMarketAccount(
openbookFailMarket
);
let currentClock;
for (let i = 0; i < 10; i++) {
- await openbookTwap.methods
- .placeOrder(passBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketQuoteVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pUsdcAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(passSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketBaseVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pMetaAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketQuoteVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fUsdcAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketBaseVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fMetaAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapPassMarket, mm0, 140_000);
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapFailMarket, mm0, 7_500);
currentClock = await context.banksClient.getClock();
context.setClock(
new Clock(
@@ -682,11 +566,11 @@ describe("autocrat_v0", async function () {
)
);
- let takeBuyArgs: PlaceOrderArgs = {
+ let takeBuyPassArgs: PlaceOrderArgs = {
side: Side.Bid,
- priceLots: new BN(13000), // 13 USDC for 1 META
- maxBaseLots: new BN(1),
- maxQuoteLotsIncludingFees: new BN(20000),
+ priceLots: new BN(145_000), // $14.5 USDC for 0.1 META
+ maxBaseLots: new BN(10), // Buy 1 meta
+ maxQuoteLotsIncludingFees: new BN(10_450_000),
clientOrderId: new BN(1),
orderType: OrderType.Market,
expiryTimestamp: new BN(0),
@@ -695,7 +579,7 @@ describe("autocrat_v0", async function () {
};
await openbookTwap.methods
- .placeTakeOrder(takeBuyArgs)
+ .placeTakeOrder(takeBuyPassArgs)
.accountsStrict({
market: openbookPassMarket,
asks: storedPassMarket.asks,
@@ -727,76 +611,10 @@ describe("autocrat_v0", async function () {
currentClock.unixTimestamp
)
);
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapPassMarket, mm0, 140_000);
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapFailMarket, mm0, 7_500);
- await openbookTwap.methods
- .placeOrder(passBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketQuoteVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pUsdcAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(passSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketBaseVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pMetaAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketQuoteVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fUsdcAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketBaseVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fMetaAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- let tx = await autocrat.methods
+ await autocrat.methods
.finalizeProposal()
.accounts({
proposal,
@@ -839,11 +657,6 @@ describe("autocrat_v0", async function () {
assert((await getAccount(banksClient, treasuryMetaAccount)).amount == 0n);
assert((await getAccount(banksClient, treasuryUsdcAccount)).amount == 0n);
- // console.log(await banksClient.getAccount(daoTreasury));
-
- // const storedDao = await autocrat.account.dao.fetch(dao);
- // assert.equal(storedDao.passThresholdBps, newPassThresholdBps);
-
await redeemConditionalTokens(
vaultProgram,
alice,
@@ -869,7 +682,7 @@ describe("autocrat_v0", async function () {
banksClient
);
- // alice should have gained 1 META & lost 0.11 USDC
+ // alice should have gained 1 META & lost $145 USDC
assert.equal(
(await getAccount(banksClient, aliceUnderlyingBaseTokenAccount)).amount,
1_000_000_000n
@@ -877,135 +690,32 @@ describe("autocrat_v0", async function () {
assert.equal(
(await getAccount(banksClient, aliceUnderlyingQuoteTokenAccount))
.amount,
- 10_000n * 1_000_000n - 1_100_000n
+ 10_000n * 1_000_000n - 147_000_000n
+ );
+ // And the TWAP on pass market should be $140 per meta / $14 per 0.1 meta
+ assert.equal(
+ (
+ await openbookTwap.account.twapMarket.fetch(openbookTwapPassMarket)
+ ).twapOracle.lastObservation.toNumber(),
+ 140_000 //
);
});
it("rejects proposals when pass price TWAP < fail price TWAP", async function () {
let storedProposal = await autocrat.account.proposal.fetch(proposal);
- let passBuyArgs: PlaceOrderArgs = {
- side: Side.Bid,
- priceLots: new BN(1000), // 0.1 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(10000),
- clientOrderId: new BN(1),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
- let failBuyArgs: PlaceOrderArgs = {
- side: Side.Bid,
- priceLots: new BN(3000), // 0.3 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(10000),
- clientOrderId: new BN(1),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
-
- let passSellArgs: PlaceOrderArgs = {
- side: Side.Ask,
- priceLots: new BN(1100), // 0.11 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(12000),
- clientOrderId: new BN(2),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
-
- let failSellArgs: PlaceOrderArgs = {
- side: Side.Ask,
- priceLots: new BN(3200), // 0.32 USDC for 1 META
- maxBaseLots: new BN(10),
- maxQuoteLotsIncludingFees: new BN(12000),
- clientOrderId: new BN(2),
- orderType: OrderType.Limit,
- expiryTimestamp: new BN(0),
- selfTradeBehavior: SelfTradeBehavior.DecrementTake,
- limit: 255,
- };
- const storedPassMarket = await openbook.getMarketAccount(
+ const storedPassMarket = await openbook.deserializeMarketAccount(
openbookPassMarket
);
- const storedFailMarket = await openbook.getMarketAccount(
+ const storedFailMarket = await openbook.deserializeMarketAccount(
openbookFailMarket
);
let currentClock;
for (let i = 0; i < 10; i++) {
- await openbookTwap.methods
- .placeOrder(passBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketQuoteVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pUsdcAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(passSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketBaseVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pMetaAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketQuoteVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fUsdcAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketBaseVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fMetaAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapPassMarket, mm0, 1050);
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapFailMarket, mm0, 3000);
+
currentClock = await context.banksClient.getClock();
context.setClock(
new Clock(
@@ -1076,73 +786,8 @@ describe("autocrat_v0", async function () {
)
);
- await openbookTwap.methods
- .placeOrder(passBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketQuoteVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pUsdcAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(passSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookPassMarket,
- asks: storedPassMarket.asks,
- bids: storedPassMarket.bids,
- marketVault: storedPassMarket.marketBaseVault,
- eventHeap: storedPassMarket.eventHeap,
- openOrdersAccount: mm0.pOpenOrdersAccount,
- userTokenAccount: mm0.pMetaAcc,
- twapMarket: openbookTwapPassMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failBuyArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketQuoteVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fUsdcAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
-
- await openbookTwap.methods
- .placeOrder(failSellArgs)
- .accounts({
- signer: mm0.publicKey,
- market: openbookFailMarket,
- asks: storedFailMarket.asks,
- bids: storedFailMarket.bids,
- marketVault: storedFailMarket.marketBaseVault,
- eventHeap: storedFailMarket.eventHeap,
- openOrdersAccount: mm0.fOpenOrdersAccount,
- userTokenAccount: mm0.fMetaAcc,
- twapMarket: openbookTwapFailMarket,
- openbookProgram: OPENBOOK_PROGRAM_ID,
- })
- .signers([mm0.keypair])
- .rpc();
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapPassMarket, mm0, 1050);
+ await placeOrdersAroundMid(openbookTwap, openbook, openbookTwapFailMarket, mm0, 3000);
let storedDao = await autocrat.account.dao.fetch(dao);
const passThresholdBpsBefore = storedDao.passThresholdBps;
@@ -1245,8 +890,8 @@ async function generateMarketMaker(
): Promise {
const mm = anchor.web3.Keypair.generate();
- const storedPassMarket = await openbook.getMarketAccount(passMarket);
- const storedFailMarket = await openbook.getMarketAccount(failMarket);
+ const storedPassMarket = await openbook.deserializeMarketAccount(passMarket);
+ const storedFailMarket = await openbook.deserializeMarketAccount(failMarket);
const metaPassAcc = await createAccount(
banksClient,
@@ -1335,18 +980,16 @@ async function generateMarketMaker(
banksClient
);
- let pOpenOrdersAccount = await openbook.createOpenOrders(
+ const pOpenOrdersAccount = await openbook.createOpenOrders(
payer,
passMarket,
- new BN(1),
"oo",
mm
);
- let fOpenOrdersAccount = await openbook.createOpenOrders(
+ const fOpenOrdersAccount = await openbook.createOpenOrders(
payer,
failMarket,
- new BN(2),
"oo",
mm
);
@@ -1356,25 +999,96 @@ async function generateMarketMaker(
keypair: mm,
pOpenOrdersAccount,
fOpenOrdersAccount,
- pMetaAcc: token.getAssociatedTokenAddressSync(
+ pMetaAcc: await token.getAssociatedTokenAddress(
storedBaseVault.conditionalOnFinalizeTokenMint,
- mm.publicKey
+ mm.publicKey,
+ true
),
- fMetaAcc: token.getAssociatedTokenAddressSync(
+ fMetaAcc: await token.getAssociatedTokenAddress(
storedBaseVault.conditionalOnRevertTokenMint,
- mm.publicKey
+ mm.publicKey,
+ true
),
- pUsdcAcc: token.getAssociatedTokenAddressSync(
+ pUsdcAcc: await token.getAssociatedTokenAddress(
storedQuoteVault.conditionalOnFinalizeTokenMint,
- mm.publicKey
+ mm.publicKey,
+ true
),
- fUsdcAcc: token.getAssociatedTokenAddressSync(
+ fUsdcAcc: await token.getAssociatedTokenAddress(
storedQuoteVault.conditionalOnRevertTokenMint,
- mm.publicKey
+ mm.publicKey,
+ true
),
};
}
+function constructOrderArgs(side: any, priceLots: number, baseLots: number): PlaceOrderArgs {
+ return {
+ side,
+ priceLots: new BN(priceLots),
+ maxBaseLots: new BN(baseLots),
+ maxQuoteLotsIncludingFees: new BN(1_000_000_000_000_00),
+ clientOrderId: new BN(1),
+ orderType: OrderType.Limit,
+ expiryTimestamp: new BN(0),
+ selfTradeBehavior: SelfTradeBehavior.DecrementTake,
+ limit: 255,
+ }
+}
+
+async function placeOrdersAroundMid(
+ openbookTwap: Program,
+ openbook: OpenBookV2Client,
+ twapMarket: PublicKey,
+ maker: MarketMaker,
+ priceLots: number
+) {
+ const storedTwapMarket = await openbookTwap.account.twapMarket.fetch(
+ twapMarket
+ );
+ const storedMarket = await openbook.deserializeMarketAccount(
+ storedTwapMarket.market
+ );
+
+ const openOrdersAccount = (await openbook.findOpenOrdersForMarket(maker.publicKey, storedTwapMarket.market))[0];
+
+ await openbookTwap.methods
+ .placeOrder(constructOrderArgs(Side.Bid, Math.round(priceLots * 0.95), 10))
+ .accounts({
+ signer: maker.publicKey,
+ market: storedTwapMarket.market,
+ asks: storedMarket.asks,
+ bids: storedMarket.bids,
+ marketVault: storedMarket.marketQuoteVault,
+ eventHeap: storedMarket.eventHeap,
+ openOrdersAccount,
+ userTokenAccount: token.getAssociatedTokenAddressSync(storedMarket.quoteMint, maker.publicKey),
+ twapMarket,
+ openbookProgram: OPENBOOK_PROGRAM_ID,
+ })
+ .signers([maker.keypair])
+ .rpc();
+
+ await openbookTwap.methods
+ .placeOrder(
+ constructOrderArgs(Side.Ask, Math.round(priceLots * 1.05), 10)
+ )
+ .accounts({
+ signer: maker.publicKey,
+ market: storedTwapMarket.market,
+ asks: storedMarket.asks,
+ bids: storedMarket.bids,
+ marketVault: storedMarket.marketBaseVault,
+ eventHeap: storedMarket.eventHeap,
+ openOrdersAccount,
+ userTokenAccount: token.getAssociatedTokenAddressSync(storedMarket.baseMint, maker.publicKey),
+ twapMarket,
+ openbookProgram: OPENBOOK_PROGRAM_ID,
+ })
+ .signers([maker.keypair])
+ .rpc();
+}
+
async function initializeProposal(
autocrat: Program,
ix: ProposalInstruction,
@@ -1446,6 +1160,7 @@ async function initializeProposal(
const dummyURL = "https://www.eff.org/cyberspace-independence";
let openbookPassMarketKP = Keypair.generate();
+ let openbookPassMarket = openbookPassMarketKP.publicKey;
let [openbookTwapPassMarket] = PublicKey.findProgramAddressSync(
[
@@ -1455,35 +1170,50 @@ async function initializeProposal(
openbookTwap.programId
);
- let openbookPassMarket = await openbook.createMarket(
- payer,
- "pMETA/pUSDC",
- passQuoteMint,
- passBaseMint,
- new BN(100),
- new BN(1e9),
- new BN(0),
- new BN(0),
- new BN(0),
- null,
- null,
- openbookTwapPassMarket,
- null,
- openbookTwapPassMarket,
- { confFilter: 0.1, maxStalenessSlots: 100 },
- openbookPassMarketKP,
- daoTreasury
- );
+ const currentTimeInSeconds = Math.floor(Date.now() / 1000);
+ const elevenDaysInSeconds = 11 * 24 * 60 * 60;
+ const quoteLotSize = new BN(100);
+ const baseLotSize = new BN(1e8);
+ const maxObservationChangePerUpdateLots = new BN(5_000);
+ const expiryTime = new BN(currentTimeInSeconds + elevenDaysInSeconds);
+
+ // https://github.com/openbook-dex/openbook-v2/blob/fd1bfba307479e1587d453e5a8b03a2743339ea6/ts/client/src/client.ts#L246
+ let [openbookPassMarketIxs, openbookPassMarketSigners] =
+ await openbook.createMarketIx(
+ payer.publicKey,
+ "pMETA/pUSDC",
+ passQuoteMint,
+ passBaseMint,
+ quoteLotSize,
+ baseLotSize,
+ new BN(0),
+ new BN(0),
+ expiryTime,
+ null,
+ null,
+ openbookTwapPassMarket,
+ null,
+ openbookTwapPassMarket,
+ { confFilter: 0.1, maxStalenessSlots: 100 },
+ openbookPassMarketKP,
+ daoTreasury
+ );
await openbookTwap.methods
- .createTwapMarket(new BN(daoBefore.twapExpectedValue))
+ .createTwapMarket(
+ new BN(daoBefore.twapExpectedValue),
+ maxObservationChangePerUpdateLots
+ )
.accounts({
- market: openbookPassMarket,
+ market: openbookPassMarketKP.publicKey,
twapMarket: openbookTwapPassMarket,
})
+ .preInstructions(openbookPassMarketIxs)
+ .signers(openbookPassMarketSigners)
.rpc();
let openbookFailMarketKP = Keypair.generate();
+ let openbookFailMarket = openbookFailMarketKP.publicKey;
let [openbookTwapFailMarket] = PublicKey.findProgramAddressSync(
[
@@ -1493,31 +1223,39 @@ async function initializeProposal(
openbookTwap.programId
);
- let openbookFailMarket = await openbook.createMarket(
- payer,
- "fMETA/fUSDC",
- failQuoteMint,
- failBaseMint,
- new BN(100),
- new BN(1e9),
- new BN(0),
- new BN(0),
- new BN(0),
- null,
- null,
- openbookTwapFailMarket,
- null,
- openbookTwapFailMarket,
- { confFilter: 0.1, maxStalenessSlots: 100 },
- openbookFailMarketKP,
- daoTreasury
- );
+ // https://github.com/openbook-dex/openbook-v2/blob/fd1bfba307479e1587d453e5a8b03a2743339ea6/ts/client/src/client.ts#L246
+ let [openbookFailMarketIxs, openbookFailMarketSigners] =
+ await openbook.createMarketIx(
+ payer.publicKey,
+ "fMETA/fUSDC",
+ failQuoteMint,
+ failBaseMint,
+ quoteLotSize,
+ baseLotSize,
+ new BN(0),
+ new BN(0),
+ expiryTime,
+ null,
+ null,
+ openbookTwapFailMarket,
+ null,
+ openbookTwapFailMarket,
+ { confFilter: 0.1, maxStalenessSlots: 100 },
+ openbookFailMarketKP,
+ daoTreasury
+ );
+
await openbookTwap.methods
- .createTwapMarket(new BN(daoBefore.twapExpectedValue))
+ .createTwapMarket(
+ new BN(daoBefore.twapExpectedValue),
+ maxObservationChangePerUpdateLots
+ )
.accounts({
market: openbookFailMarket,
twapMarket: openbookTwapFailMarket,
})
+ .preInstructions(openbookFailMarketIxs)
+ .signers(openbookFailMarketSigners)
.rpc();
await autocrat.methods
@@ -1600,6 +1338,7 @@ async function initializeVault(
vault,
true
);
+
await vaultProgram.methods
.initializeConditionalVault(settlementAuthority, nonce)
.accounts({
diff --git a/tests/conditionalVault.ts b/tests/conditionalVault.ts
index ad8f7af4..68e82b22 100644
--- a/tests/conditionalVault.ts
+++ b/tests/conditionalVault.ts
@@ -1,34 +1,54 @@
import * as anchor from "@coral-xyz/anchor";
import { BN, Program, web3 } from "@coral-xyz/anchor";
-const { PublicKey, Keypair } = web3;
+import {
+ MPL_TOKEN_METADATA_PROGRAM_ID as UMI_MPL_TOKEN_METADATA_PROGRAM_ID,
+ createMetadataAccountV3,
+} from "@metaplex-foundation/mpl-token-metadata";
+import {
+ Umi,
+ createSignerFromKeypair,
+ keypairIdentity,
+ none,
+} from "@metaplex-foundation/umi";
+import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
+import {
+ fromWeb3JsKeypair,
+ fromWeb3JsPublicKey,
+ toWeb3JsLegacyTransaction,
+ toWeb3JsPublicKey,
+} from "@metaplex-foundation/umi-web3js-adapters";
import * as token from "@solana/spl-token";
+import { SYSVAR_RENT_PUBKEY } from "@solana/web3.js";
import { BankrunProvider } from "anchor-bankrun";
-
import { assert } from "chai";
-
-import { BanksClient, startAnchor } from "solana-bankrun";
-
-import { expectError } from "./utils/utils";
-
-import { ConditionalVault } from "../target/types/conditional_vault";
-
-const ConditionalVaultIDL: ConditionalVault = require("../target/idl/conditional_vault.json");
-
+import { BanksClient, ProgramTestContext, startAnchor } from "solana-bankrun";
import {
- createMint,
createAccount,
createAssociatedTokenAccount,
- mintTo,
+ createMint,
getAccount,
+ mintTo,
} from "spl-token-bankrun";
+const { PublicKey, Keypair } = web3;
+
+import { ConditionalVault } from "../target/types/conditional_vault";
+import { expectError } from "./utils/utils";
+const ConditionalVaultIDL: ConditionalVault = require("../target/idl/conditional_vault.json");
+
export type VaultProgram = anchor.Program;
export type PublicKey = anchor.web3.PublicKey;
export type Signer = anchor.web3.Signer;
export type Keypair = anchor.web3.Keypair;
const CONDITIONAL_VAULT_PROGRAM_ID = new PublicKey(
- "vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe"
+ "vAuLTQjV5AZx5f3UgE75wcnkxnQowWxThn1hGjfCVwP"
+);
+
+const METADATA_URI =
+ "https://ftgnmxferax7tpgqyzdo76sisk5fhpsjv34omvgz33m7udvnsfba.arweave.net/LMzWXKSIL_m80MZG7_pIkrpTvkmu-OZU2d7Z-g6tkUI";
+const MPL_TOKEN_METADATA_PROGRAM_ID = toWeb3JsPublicKey(
+ UMI_MPL_TOKEN_METADATA_PROGRAM_ID
);
export enum VaultStatus {
@@ -40,42 +60,59 @@ export enum VaultStatus {
// this test file isn't 'clean' or DRY or whatever; sorry!
describe("conditional_vault", async function () {
- let provider,
- connection,
- vaultProgram,
- payer,
- context,
- banksClient,
- underlyingMintAuthority,
- settlementAuthority,
- nonce,
- alice,
- underlyingTokenMint,
- vault,
- vaultUnderlyingTokenAccount,
- conditionalOnFinalizeMint,
- conditionalOnRevertMint;
+ let provider: anchor.Provider;
+
+ let vault: PublicKey;
+ let vaultUnderlyingTokenAccount: anchor.web3.PublicKey;
+ let underlyingTokenMint: anchor.web3.PublicKey;
+ let conditionalOnFinalizeMint: anchor.web3.PublicKey;
+ let conditionalOnRevertMint: anchor.web3.PublicKey;
+ let nonce: BN;
+ let settlementAuthority: anchor.web3.Keypair;
+ let underlyingMintAuthority: anchor.web3.Keypair;
+ let alice: anchor.web3.Keypair;
+ let context: ProgramTestContext;
+ let banksClient: BanksClient;
+ let umi: Umi;
+
+ // note: adding types to these creates a slew of type errors below
+ let payer;
+ let vaultProgram;
before(async function () {
- context = await startAnchor("./", [], []);
+ context = await startAnchor(
+ "./",
+ [
+ // even though the program is loaded into the test validator, we need
+ // to tell banks test client to load it as well
+ {
+ name: "mpl_token_metadata",
+ programId: MPL_TOKEN_METADATA_PROGRAM_ID,
+ },
+ ],
+ []
+ );
banksClient = context.banksClient;
provider = new BankrunProvider(context);
anchor.setProvider(provider);
+ umi = createUmi(anchor.AnchorProvider.env().connection);
+
vaultProgram = new Program(
ConditionalVaultIDL,
CONDITIONAL_VAULT_PROGRAM_ID,
provider
);
- //vaultProgram = anchor.workspace.ConditionalVault as VaultProgram;
+
payer = vaultProgram.provider.wallet.payer;
alice = anchor.web3.Keypair.generate();
settlementAuthority = anchor.web3.Keypair.generate();
underlyingMintAuthority = anchor.web3.Keypair.generate();
+ umi.use(keypairIdentity(fromWeb3JsKeypair(payer)));
underlyingTokenMint = await createMint(
banksClient,
- payer,
+ payer as anchor.web3.Keypair,
underlyingMintAuthority.publicKey,
null,
8
@@ -168,7 +205,7 @@ describe("conditional_vault", async function () {
bob = anchor.web3.Keypair.generate();
bobUnderlyingTokenAccount = await createAssociatedTokenAccount(
- /* bobUnderlyingTokenAccount = await token.createAccount( */
+ /* bobUnderlyingTokenAccount = await createAccount( */
banksClient,
payer,
underlyingTokenMint,
@@ -447,7 +484,8 @@ describe("conditional_vault", async function () {
let [vault, _, settlementAuthority] = await generateRandomVault(
vaultProgram,
payer,
- banksClient
+ banksClient,
+ umi
);
await vaultProgram.methods
@@ -464,7 +502,8 @@ describe("conditional_vault", async function () {
let [vault, _, settlementAuthority] = await generateRandomVault(
vaultProgram,
payer,
- banksClient
+ banksClient,
+ umi
);
await vaultProgram.methods
@@ -481,7 +520,8 @@ describe("conditional_vault", async function () {
let [vault, _, settlementAuthority] = await generateRandomVault(
vaultProgram,
payer,
- banksClient
+ banksClient,
+ umi
);
await vaultProgram.methods
@@ -511,16 +551,17 @@ describe("conditional_vault", async function () {
});
});
- describe("#redeem_conditional_tokens_for_underlying_tokens", async function () {
+ describe("#redeem_and_merge_conditional_tokens_for_underlying_tokens", async function () {
let bob: Keypair;
let amount = 1000;
+ let mergeAmount = 10;
let bobUnderlyingTokenAccount: PublicKey;
let bobConditionalOnFinalizeTokenAccount: PublicKey;
let bobConditionalOnRevertTokenAccount: PublicKey;
beforeEach(async function () {
[vault, underlyingMintAuthority, settlementAuthority] =
- await generateRandomVault(vaultProgram, payer, banksClient);
+ await generateRandomVault(vaultProgram, payer, banksClient, umi);
let storedVault = await vaultProgram.account.conditionalVault.fetch(
vault
);
@@ -570,6 +611,54 @@ describe("conditional_vault", async function () {
);
});
+ it("successfully merges 10 tokens before the vault has been finalized", async function () {
+ // Assuming the vault has not yet been finalized
+
+ await mergeConditionalTokens(
+ vaultProgram,
+ mergeAmount,
+ bob,
+ bobConditionalOnFinalizeTokenAccount,
+ bobConditionalOnRevertTokenAccount,
+ conditionalOnFinalizeMint,
+ conditionalOnRevertMint,
+ bobUnderlyingTokenAccount,
+ vaultUnderlyingTokenAccount,
+ vault,
+ banksClient
+ );
+ });
+
+ it("prevents users from merging conditional tokens after the vault has been finalized", async function () {
+ await vaultProgram.methods
+ .settleConditionalVault({ finalized: {} })
+ .accounts({
+ settlementAuthority: settlementAuthority.publicKey,
+ vault,
+ })
+ .signers([settlementAuthority])
+ .rpc();
+
+ const callbacks = expectError(
+ vaultProgram,
+ "VaultAlreadySettled",
+ "merge suceeded even though this vault was finalized"
+ );
+ await mergeConditionalTokens(
+ vaultProgram,
+ mergeAmount,
+ bob,
+ bobConditionalOnFinalizeTokenAccount,
+ bobConditionalOnRevertTokenAccount,
+ conditionalOnFinalizeMint,
+ conditionalOnRevertMint,
+ bobUnderlyingTokenAccount,
+ vaultUnderlyingTokenAccount,
+ vault,
+ banksClient
+ ).then(callbacks[0], callbacks[1]);
+ });
+
it("allows users to redeem conditional-on-finalize tokens for underlying tokens when a vault has been finalized", async function () {
await vaultProgram.methods
.settleConditionalVault({ finalized: {} })
@@ -679,6 +768,7 @@ async function generateRandomVault(
vaultProgram: VaultProgram,
payer: Keypair,
banksClient: BanksClient,
+ umi: Umi,
settlementAuthority: Keypair = anchor.web3.Keypair.generate()
): Promise<[PublicKey, Keypair, Keypair]> {
const underlyingMintAuthority = anchor.web3.Keypair.generate();
@@ -691,6 +781,39 @@ async function generateRandomVault(
8
);
+ const tokenMint = fromWeb3JsPublicKey(underlyingTokenMint);
+ let builder = createMetadataAccountV3(umi, {
+ mint: tokenMint,
+ mintAuthority: createSignerFromKeypair(
+ umi,
+ fromWeb3JsKeypair(underlyingMintAuthority)
+ ),
+ data: {
+ name: "TOKE",
+ symbol: "TOKE",
+ uri: "METADATA_URI",
+ sellerFeeBasisPoints: 0,
+ creators: none(),
+ collection: none(),
+ uses: none(),
+ },
+ isMutable: false,
+ collectionDetails: none(),
+ });
+ builder = builder.setBlockhash(
+ (await umi.rpc.getLatestBlockhash()).blockhash
+ );
+
+ const createMetadataResult = await vaultProgram.provider.sendAndConfirm(
+ toWeb3JsLegacyTransaction(builder.build(umi)),
+ [underlyingMintAuthority],
+ {
+ skipPreflight: true,
+ commitment: "confirmed",
+ }
+ );
+ // console.log(createMetadataResult);
+
const nonce = new BN(1003239);
const [vault] = anchor.web3.PublicKey.findProgramAddressSync(
@@ -711,7 +834,61 @@ async function generateRandomVault(
let conditionalOnFinalizeTokenMintKeypair = anchor.web3.Keypair.generate();
let conditionalOnRevertTokenMintKeypair = anchor.web3.Keypair.generate();
- let result = await vaultProgram.methods
+ // when we have a ts lib, we can consolidate this logic there
+ const [conditionalOnFinalizeTokenMetadata] =
+ anchor.web3.PublicKey.findProgramAddressSync(
+ [
+ anchor.utils.bytes.utf8.encode("metadata"),
+ MPL_TOKEN_METADATA_PROGRAM_ID.toBuffer(),
+ conditionalOnFinalizeTokenMintKeypair.publicKey.toBuffer(),
+ ],
+ MPL_TOKEN_METADATA_PROGRAM_ID
+ );
+
+ const [conditionalOnRevertTokenMetadata] =
+ anchor.web3.PublicKey.findProgramAddressSync(
+ [
+ anchor.utils.bytes.utf8.encode("metadata"),
+ MPL_TOKEN_METADATA_PROGRAM_ID.toBuffer(),
+ conditionalOnRevertTokenMintKeypair.publicKey.toBuffer(),
+ ],
+ MPL_TOKEN_METADATA_PROGRAM_ID
+ );
+
+ const [underlyingTokenMetadata] =
+ anchor.web3.PublicKey.findProgramAddressSync(
+ [
+ anchor.utils.bytes.utf8.encode("metadata"),
+ MPL_TOKEN_METADATA_PROGRAM_ID.toBuffer(),
+ underlyingTokenMint.toBuffer(),
+ ],
+ MPL_TOKEN_METADATA_PROGRAM_ID
+ );
+
+ const addMetadataToConditionalTokensIx = await vaultProgram.methods
+ .addMetadataToConditionalTokens(
+ new BN(0), // nonce,
+ METADATA_URI,
+ METADATA_URI
+ )
+ .accounts({
+ payer: payer.publicKey,
+ vault,
+ underlyingTokenMint,
+ underlyingTokenMetadata,
+ conditionalOnFinalizeTokenMint:
+ conditionalOnFinalizeTokenMintKeypair.publicKey,
+ conditionalOnRevertTokenMint:
+ conditionalOnRevertTokenMintKeypair.publicKey,
+ conditionalOnFinalizeTokenMetadata,
+ conditionalOnRevertTokenMetadata,
+ tokenMetadataProgram: MPL_TOKEN_METADATA_PROGRAM_ID,
+ systemProgram: anchor.web3.SystemProgram.programId,
+ rent: SYSVAR_RENT_PUBKEY,
+ })
+ .instruction();
+
+ await vaultProgram.methods
.initializeConditionalVault(settlementAuthority.publicKey, nonce)
.accounts({
vault,
@@ -730,6 +907,7 @@ async function generateRandomVault(
conditionalOnFinalizeTokenMintKeypair,
conditionalOnRevertTokenMintKeypair,
])
+ .postInstructions([addMetadataToConditionalTokensIx])
.rpc();
return [vault, underlyingMintAuthority, settlementAuthority];
@@ -749,21 +927,25 @@ export async function mintConditionalTokens(
) {
const storedVault = await program.account.conditionalVault.fetch(vault);
if (!userUnderlyingTokenAccount) {
- userUnderlyingTokenAccount = token.getAssociatedTokenAddressSync(
+ userUnderlyingTokenAccount = await token.getAssociatedTokenAddress(
storedVault.underlyingTokenMint,
- user.publicKey
+ user.publicKey,
+ true
);
}
if (!userConditionalOnFinalizeTokenAccount) {
- userConditionalOnFinalizeTokenAccount = token.getAssociatedTokenAddressSync(
- storedVault.conditionalOnFinalizeTokenMint,
- user.publicKey
- );
+ userConditionalOnFinalizeTokenAccount =
+ await token.getAssociatedTokenAddress(
+ storedVault.conditionalOnFinalizeTokenMint,
+ user.publicKey,
+ true
+ );
}
if (!userConditionalOnRevertTokenAccount) {
- userConditionalOnRevertTokenAccount = token.getAssociatedTokenAddressSync(
+ userConditionalOnRevertTokenAccount = await token.getAssociatedTokenAddress(
storedVault.conditionalOnRevertTokenMint,
- user.publicKey
+ user.publicKey,
+ true
);
}
if (!vaultUnderlyingTokenAccount) {
@@ -842,6 +1024,88 @@ export async function mintConditionalTokens(
);
}
+export async function mergeConditionalTokens(
+ vaultProgram: VaultProgram,
+ amount: number | bigint,
+ user: Signer,
+ userConditionalOnFinalizeTokenAccount: PublicKey,
+ userConditionalOnRevertTokenAccount: PublicKey,
+ conditionalOnFinalizeTokenMint: PublicKey,
+ conditionalOnRevertTokenMint: PublicKey,
+ userUnderlyingTokenAccount: PublicKey,
+ vaultUnderlyingTokenAccount: PublicKey,
+ vault: PublicKey,
+ banksClient: BanksClient
+) {
+ const vaultUnderlyingTokenAccountBefore = await getAccount(
+ banksClient,
+ vaultUnderlyingTokenAccount
+ );
+ const userUnderlyingTokenAccountBefore = await getAccount(
+ banksClient,
+ userUnderlyingTokenAccount
+ );
+ const userConditionalOnFinalizeTokenAccountBefore = await getAccount(
+ banksClient,
+ userConditionalOnFinalizeTokenAccount
+ );
+ const userConditionalOnRevertTokenAccountBefore = await getAccount(
+ banksClient,
+ userConditionalOnRevertTokenAccount
+ );
+
+ const bnAmount = new anchor.BN(amount.toString());
+ await vaultProgram.methods
+ .mergeConditionalTokensForUnderlyingTokens(bnAmount)
+ .accounts({
+ authority: user.publicKey,
+ userConditionalOnFinalizeTokenAccount,
+ userConditionalOnRevertTokenAccount,
+ userUnderlyingTokenAccount,
+ vaultUnderlyingTokenAccount,
+ vault,
+ conditionalOnFinalizeTokenMint,
+ conditionalOnRevertTokenMint,
+ tokenProgram: token.TOKEN_PROGRAM_ID,
+ })
+ .signers([user])
+ .rpc();
+
+ const vaultUnderlyingTokenAccountAfter = await getAccount(
+ banksClient,
+ vaultUnderlyingTokenAccount
+ );
+ const userUnderlyingTokenAccountAfter = await getAccount(
+ banksClient,
+ userUnderlyingTokenAccount
+ );
+ const userConditionalOnFinalizeTokenAccountAfter = await getAccount(
+ banksClient,
+ userConditionalOnFinalizeTokenAccount
+ );
+ const userConditionalOnRevertTokenAccountAfter = await getAccount(
+ banksClient,
+ userConditionalOnRevertTokenAccount
+ );
+
+ assert.equal(
+ vaultUnderlyingTokenAccountAfter.amount,
+ vaultUnderlyingTokenAccountBefore.amount - BigInt(amount)
+ );
+ assert.equal(
+ userUnderlyingTokenAccountAfter.amount,
+ userUnderlyingTokenAccountBefore.amount + BigInt(amount)
+ );
+ assert.equal(
+ userConditionalOnFinalizeTokenAccountAfter.amount,
+ userConditionalOnFinalizeTokenAccountBefore.amount - BigInt(amount)
+ );
+ assert.equal(
+ userConditionalOnRevertTokenAccountAfter.amount,
+ userConditionalOnRevertTokenAccountBefore.amount - BigInt(amount)
+ );
+}
+
export async function redeemConditionalTokens(
vaultProgram: VaultProgram,
user: Signer,
diff --git a/tests/fixtures/mpl_token_metadata.so b/tests/fixtures/mpl_token_metadata.so
new file mode 100644
index 00000000..fdc129a7
Binary files /dev/null and b/tests/fixtures/mpl_token_metadata.so differ
diff --git a/tests/fixtures/openbook_twap.json b/tests/fixtures/openbook_twap.json
index ab925267..f6bd000d 100644
--- a/tests/fixtures/openbook_twap.json
+++ b/tests/fixtures/openbook_twap.json
@@ -34,6 +34,10 @@
{
"name": "expectedValue",
"type": "u64"
+ },
+ {
+ "name": "maxObservationChangePerUpdateLots",
+ "type": "u64"
}
]
},
@@ -288,6 +292,154 @@
}
]
},
+ {
+ "name": "pruneOrders",
+ "accounts": [
+ {
+ "name": "twapMarket",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
+ ],
+ "args": [
+ {
+ "name": "limit",
+ "type": "u8"
+ }
+ ]
+ },
+ {
+ "name": "settleFundsExpired",
+ "accounts": [
+ {
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "marketAuthority",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
+ }
+ ],
+ "args": []
+ },
+ {
+ "name": "closeMarket",
+ "accounts": [
+ {
+ "name": "closeMarketRentReceiver",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "twapMarket",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
+ ],
+ "args": []
+ },
{
"name": "placeTakeOrder",
"accounts": [
@@ -506,6 +658,10 @@
"type": {
"defined": "TWAPOracle"
}
+ },
+ {
+ "name": "closeMarketRentReceiver",
+ "type": "publicKey"
}
]
}
@@ -540,6 +696,10 @@
{
"name": "observationAggregator",
"type": "u128"
+ },
+ {
+ "name": "maxObservationChangePerUpdateLots",
+ "type": "u64"
}
]
}
@@ -698,36 +858,28 @@
},
{
"code": 6002,
- "name": "NonZeroExpiry",
- "msg": "Market must not expire (have `time_expiry` == 0)"
- },
- {
- "code": 6003,
"name": "NoOracles",
"msg": "Oracle-pegged trades mess up the TWAP so oracles and oracle-pegged trades aren't allowed"
},
{
- "code": 6004,
+ "code": 6003,
"name": "InvalidMakerFee",
"msg": "Maker fee must be zero"
},
{
- "code": 6005,
+ "code": 6004,
"name": "InvalidTakerFee",
"msg": "Taker fee must be zero"
},
{
- "code": 6006,
+ "code": 6005,
"name": "InvalidSeqNum",
"msg": "Seq num must be zero"
},
{
- "code": 6007,
+ "code": 6006,
"name": "InvalidConsumeEventsAdmin",
"msg": "Consume events admin must be None"
}
- ],
- "metadata": {
- "address": "TWAP7frdvD3ia7TWc8e9SxZMmrpd2Yf3ifSPAHS8VG3"
- }
+ ]
}
\ No newline at end of file
diff --git a/tests/fixtures/openbook_twap.so b/tests/fixtures/openbook_twap.so
index b937d624..903b3186 100755
Binary files a/tests/fixtures/openbook_twap.so and b/tests/fixtures/openbook_twap.so differ
diff --git a/tests/fixtures/openbook_twap.ts b/tests/fixtures/openbook_twap.ts
index 6bd8a576..82969d49 100644
--- a/tests/fixtures/openbook_twap.ts
+++ b/tests/fixtures/openbook_twap.ts
@@ -1,1461 +1,1771 @@
export type OpenbookTwap = {
- version: "1.0.0";
- name: "openbook_twap";
- instructions: [
+ "version": "1.0.0",
+ "name": "openbook_twap",
+ "instructions": [
{
- name: "createTwapMarket";
- docs: [
+ "name": "createTwapMarket",
+ "docs": [
"`expected_value` will be the first observation of the TWAP, which is",
"necessary for anti-manipulation"
- ];
- accounts: [
+ ],
+ "accounts": [
{
- name: "market";
- isMut: false;
- isSigner: false;
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "systemProgram";
- isMut: false;
- isSigner: false;
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "payer";
- isMut: true;
- isSigner: true;
+ "name": "payer",
+ "isMut": true,
+ "isSigner": true
}
- ];
- args: [
+ ],
+ "args": [
+ {
+ "name": "expectedValue",
+ "type": "u64"
+ },
{
- name: "expectedValue";
- type: "u64";
+ "name": "maxObservationChangePerUpdateLots",
+ "type": "u64"
}
- ];
+ ]
},
{
- name: "placeOrder";
- accounts: [
+ "name": "placeOrder",
+ "accounts": [
{
- name: "signer";
- isMut: false;
- isSigner: true;
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "openOrdersAccount";
- isMut: true;
- isSigner: false;
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userTokenAccount";
- isMut: true;
- isSigner: false;
+ "name": "userTokenAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market";
- isMut: true;
- isSigner: false;
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids";
- isMut: true;
- isSigner: false;
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks";
- isMut: true;
- isSigner: false;
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap";
- isMut: true;
- isSigner: false;
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketVault";
- isMut: true;
- isSigner: false;
+ "name": "marketVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram";
- isMut: false;
- isSigner: false;
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [
+ ],
+ "args": [
{
- name: "placeOrderArgs";
- type: {
- defined: "PlaceOrderArgs";
- };
+ "name": "placeOrderArgs",
+ "type": {
+ "defined": "PlaceOrderArgs"
+ }
}
- ];
- returns: {
- option: "u128";
- };
+ ],
+ "returns": {
+ "option": "u128"
+ }
},
{
- name: "editOrder";
- accounts: [
+ "name": "editOrder",
+ "accounts": [
{
- name: "signer";
- isMut: false;
- isSigner: true;
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "openOrdersAccount";
- isMut: true;
- isSigner: false;
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userTokenAccount";
- isMut: true;
- isSigner: false;
+ "name": "userTokenAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market";
- isMut: true;
- isSigner: false;
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids";
- isMut: true;
- isSigner: false;
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks";
- isMut: true;
- isSigner: false;
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap";
- isMut: true;
- isSigner: false;
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketVault";
- isMut: true;
- isSigner: false;
+ "name": "marketVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram";
- isMut: false;
- isSigner: false;
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [
+ ],
+ "args": [
{
- name: "clientOrderId";
- type: "u64";
+ "name": "clientOrderId",
+ "type": "u64"
},
{
- name: "expectedCancelSize";
- type: "i64";
+ "name": "expectedCancelSize",
+ "type": "i64"
},
{
- name: "placeOrder";
- type: {
- defined: "PlaceOrderArgs";
- };
+ "name": "placeOrder",
+ "type": {
+ "defined": "PlaceOrderArgs"
+ }
+ }
+ ],
+ "returns": {
+ "option": "u128"
+ }
+ },
+ {
+ "name": "cancelOrderByClientId",
+ "accounts": [
+ {
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
+ },
+ {
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
+ ],
+ "args": [
+ {
+ "name": "clientOrderId",
+ "type": "u64"
}
- ];
- returns: {
- option: "u128";
- };
+ ],
+ "returns": "i64"
},
{
- name: "cancelOrderByClientId";
- accounts: [
+ "name": "cancelAllOrders",
+ "accounts": [
{
- name: "signer";
- isMut: false;
- isSigner: true;
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openOrdersAccount";
- isMut: true;
- isSigner: false;
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market";
- isMut: false;
- isSigner: false;
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids";
- isMut: true;
- isSigner: false;
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks";
- isMut: true;
- isSigner: false;
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openbookProgram";
- isMut: false;
- isSigner: false;
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [
+ ],
+ "args": [
+ {
+ "name": "sideOption",
+ "type": {
+ "option": {
+ "defined": "Side"
+ }
+ }
+ },
{
- name: "clientOrderId";
- type: "u64";
+ "name": "limit",
+ "type": "u8"
}
- ];
- returns: "i64";
+ ]
},
{
- name: "cancelAllOrders";
- accounts: [
+ "name": "pruneOrders",
+ "accounts": [
+ {
+ "name": "twapMarket",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
+ ],
+ "args": [
+ {
+ "name": "limit",
+ "type": "u8"
+ }
+ ]
+ },
+ {
+ "name": "settleFundsExpired",
+ "accounts": [
+ {
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
+ },
{
- name: "signer";
- isMut: false;
- isSigner: true;
+ "name": "marketAuthority",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openOrdersAccount";
- isMut: true;
- isSigner: false;
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market";
- isMut: false;
- isSigner: false;
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids";
- isMut: true;
- isSigner: false;
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks";
- isMut: true;
- isSigner: false;
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram";
- isMut: false;
- isSigner: false;
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [
+ ],
+ "args": []
+ },
+ {
+ "name": "closeMarket",
+ "accounts": [
+ {
+ "name": "closeMarketRentReceiver",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "twapMarket",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
+ },
{
- name: "sideOption";
- type: {
- option: {
- defined: "Side";
- };
- };
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "limit";
- type: "u8";
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
+ ],
+ "args": []
},
{
- name: "placeTakeOrder";
- accounts: [
+ "name": "placeTakeOrder",
+ "accounts": [
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "signer";
- isMut: true;
- isSigner: true;
+ "name": "signer",
+ "isMut": true,
+ "isSigner": true
},
{
- name: "market";
- isMut: true;
- isSigner: false;
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketAuthority";
- isMut: false;
- isSigner: false;
+ "name": "marketAuthority",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids";
- isMut: true;
- isSigner: false;
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks";
- isMut: true;
- isSigner: false;
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketBaseVault";
- isMut: true;
- isSigner: false;
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketQuoteVault";
- isMut: true;
- isSigner: false;
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap";
- isMut: true;
- isSigner: false;
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userBaseAccount";
- isMut: true;
- isSigner: false;
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userQuoteAccount";
- isMut: true;
- isSigner: false;
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram";
- isMut: false;
- isSigner: false;
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "systemProgram";
- isMut: false;
- isSigner: false;
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [
+ ],
+ "args": [
{
- name: "args";
- type: {
- defined: "PlaceTakeOrderArgs";
- };
+ "name": "args",
+ "type": {
+ "defined": "PlaceTakeOrderArgs"
+ }
}
- ];
+ ]
},
{
- name: "cancelAndPlaceOrders";
- accounts: [
+ "name": "cancelAndPlaceOrders",
+ "accounts": [
{
- name: "signer";
- isMut: false;
- isSigner: true;
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "twapMarket";
- isMut: true;
- isSigner: false;
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openOrdersAccount";
- isMut: true;
- isSigner: false;
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userQuoteAccount";
- isMut: true;
- isSigner: false;
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userBaseAccount";
- isMut: true;
- isSigner: false;
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market";
- isMut: true;
- isSigner: false;
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids";
- isMut: true;
- isSigner: false;
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks";
- isMut: true;
- isSigner: false;
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap";
- isMut: true;
- isSigner: false;
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketQuoteVault";
- isMut: true;
- isSigner: false;
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketBaseVault";
- isMut: true;
- isSigner: false;
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram";
- isMut: false;
- isSigner: false;
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [
+ ],
+ "args": [
{
- name: "cancelClientOrdersIds";
- type: {
- vec: "u64";
- };
+ "name": "cancelClientOrdersIds",
+ "type": {
+ "vec": "u64"
+ }
},
{
- name: "placeOrders";
- type: {
- vec: {
- defined: "PlaceOrderArgs";
- };
- };
+ "name": "placeOrders",
+ "type": {
+ "vec": {
+ "defined": "PlaceOrderArgs"
+ }
+ }
+ }
+ ],
+ "returns": {
+ "vec": {
+ "option": "u128"
}
- ];
- returns: {
- vec: {
- option: "u128";
- };
- };
+ }
},
{
- name: "getBestBidAndAsk";
- accounts: [
+ "name": "getBestBidAndAsk",
+ "accounts": [
{
- name: "market";
- isMut: false;
- isSigner: false;
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids";
- isMut: false;
- isSigner: false;
+ "name": "bids",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "asks";
- isMut: false;
- isSigner: false;
+ "name": "asks",
+ "isMut": false,
+ "isSigner": false
}
- ];
- args: [];
- returns: {
- vec: "u64";
- };
+ ],
+ "args": [],
+ "returns": {
+ "vec": "u64"
+ }
}
- ];
- accounts: [
+ ],
+ "accounts": [
{
- name: "twapMarket";
- type: {
- kind: "struct";
- fields: [
+ "name": "twapMarket",
+ "type": {
+ "kind": "struct",
+ "fields": [
{
- name: "market";
- type: "publicKey";
+ "name": "market",
+ "type": "publicKey"
},
{
- name: "pdaBump";
- type: "u8";
+ "name": "pdaBump",
+ "type": "u8"
},
{
- name: "twapOracle";
- type: {
- defined: "TWAPOracle";
- };
+ "name": "twapOracle",
+ "type": {
+ "defined": "TWAPOracle"
+ }
+ },
+ {
+ "name": "closeMarketRentReceiver",
+ "type": "publicKey"
}
- ];
- };
+ ]
+ }
}
- ];
- types: [
+ ],
+ "types": [
{
- name: "TWAPOracle";
- type: {
- kind: "struct";
- fields: [
+ "name": "TWAPOracle",
+ "type": {
+ "kind": "struct",
+ "fields": [
+ {
+ "name": "expectedValue",
+ "type": "u64"
+ },
{
- name: "expectedValue";
- type: "u64";
+ "name": "initialSlot",
+ "type": "u64"
},
{
- name: "initialSlot";
- type: "u64";
+ "name": "lastUpdatedSlot",
+ "type": "u64"
},
{
- name: "lastUpdatedSlot";
- type: "u64";
+ "name": "lastObservedSlot",
+ "type": "u64"
},
{
- name: "lastObservedSlot";
- type: "u64";
+ "name": "lastObservation",
+ "type": "u64"
},
{
- name: "lastObservation";
- type: "u64";
+ "name": "observationAggregator",
+ "type": "u128"
},
{
- name: "observationAggregator";
- type: "u128";
+ "name": "maxObservationChangePerUpdateLots",
+ "type": "u64"
}
- ];
- };
+ ]
+ }
},
{
- name: "PlaceOrderArgs";
- type: {
- kind: "struct";
- fields: [
- {
- name: "side";
- type: {
- defined: "Side";
- };
+ "name": "PlaceOrderArgs",
+ "type": {
+ "kind": "struct",
+ "fields": [
+ {
+ "name": "side",
+ "type": {
+ "defined": "Side"
+ }
},
{
- name: "priceLots";
- type: "i64";
+ "name": "priceLots",
+ "type": "i64"
},
{
- name: "maxBaseLots";
- type: "i64";
+ "name": "maxBaseLots",
+ "type": "i64"
},
{
- name: "maxQuoteLotsIncludingFees";
- type: "i64";
+ "name": "maxQuoteLotsIncludingFees",
+ "type": "i64"
},
{
- name: "clientOrderId";
- type: "u64";
+ "name": "clientOrderId",
+ "type": "u64"
},
{
- name: "orderType";
- type: {
- defined: "PlaceOrderType";
- };
+ "name": "orderType",
+ "type": {
+ "defined": "PlaceOrderType"
+ }
},
{
- name: "expiryTimestamp";
- type: "u64";
+ "name": "expiryTimestamp",
+ "type": "u64"
},
{
- name: "selfTradeBehavior";
- type: {
- defined: "SelfTradeBehavior";
- };
+ "name": "selfTradeBehavior",
+ "type": {
+ "defined": "SelfTradeBehavior"
+ }
},
{
- name: "limit";
- type: "u8";
+ "name": "limit",
+ "type": "u8"
}
- ];
- };
+ ]
+ }
},
{
- name: "PlaceTakeOrderArgs";
- type: {
- kind: "struct";
- fields: [
- {
- name: "side";
- type: {
- defined: "Side";
- };
+ "name": "PlaceTakeOrderArgs",
+ "type": {
+ "kind": "struct",
+ "fields": [
+ {
+ "name": "side",
+ "type": {
+ "defined": "Side"
+ }
},
{
- name: "priceLots";
- type: "i64";
+ "name": "priceLots",
+ "type": "i64"
},
{
- name: "maxBaseLots";
- type: "i64";
+ "name": "maxBaseLots",
+ "type": "i64"
},
{
- name: "maxQuoteLotsIncludingFees";
- type: "i64";
+ "name": "maxQuoteLotsIncludingFees",
+ "type": "i64"
},
{
- name: "orderType";
- type: {
- defined: "PlaceOrderType";
- };
+ "name": "orderType",
+ "type": {
+ "defined": "PlaceOrderType"
+ }
},
{
- name: "limit";
- type: "u8";
+ "name": "limit",
+ "type": "u8"
}
- ];
- };
+ ]
+ }
},
{
- name: "SelfTradeBehavior";
- type: {
- kind: "enum";
- variants: [
+ "name": "SelfTradeBehavior",
+ "type": {
+ "kind": "enum",
+ "variants": [
{
- name: "DecrementTake";
+ "name": "DecrementTake"
},
{
- name: "CancelProvide";
+ "name": "CancelProvide"
},
{
- name: "AbortTransaction";
+ "name": "AbortTransaction"
}
- ];
- };
+ ]
+ }
},
{
- name: "PlaceOrderType";
- type: {
- kind: "enum";
- variants: [
+ "name": "PlaceOrderType",
+ "type": {
+ "kind": "enum",
+ "variants": [
{
- name: "Limit";
+ "name": "Limit"
},
{
- name: "ImmediateOrCancel";
+ "name": "ImmediateOrCancel"
},
{
- name: "PostOnly";
+ "name": "PostOnly"
},
{
- name: "Market";
+ "name": "Market"
},
{
- name: "PostOnlySlide";
+ "name": "PostOnlySlide"
}
- ];
- };
+ ]
+ }
},
{
- name: "Side";
- type: {
- kind: "enum";
- variants: [
+ "name": "Side",
+ "type": {
+ "kind": "enum",
+ "variants": [
{
- name: "Bid";
+ "name": "Bid"
},
{
- name: "Ask";
+ "name": "Ask"
}
- ];
- };
+ ]
+ }
}
- ];
- errors: [
- {
- code: 6000;
- name: "InvalidOpenOrdersAdmin";
- msg: "The `open_orders_admin` of the underlying market must be equal to the `TWAPMarket` PDA";
- },
+ ],
+ "errors": [
{
- code: 6001;
- name: "InvalidCloseMarketAdmin";
- msg: "The `close_market_admin` of the underlying market must be equal to the `TWAPMarket` PDA";
+ "code": 6000,
+ "name": "InvalidOpenOrdersAdmin",
+ "msg": "The `open_orders_admin` of the underlying market must be equal to the `TWAPMarket` PDA"
},
{
- code: 6002;
- name: "NonZeroExpiry";
- msg: "Market must not expire (have `time_expiry` == 0)";
+ "code": 6001,
+ "name": "InvalidCloseMarketAdmin",
+ "msg": "The `close_market_admin` of the underlying market must be equal to the `TWAPMarket` PDA"
},
{
- code: 6003;
- name: "NoOracles";
- msg: "Oracle-pegged trades mess up the TWAP so oracles and oracle-pegged trades aren't allowed";
+ "code": 6002,
+ "name": "NoOracles",
+ "msg": "Oracle-pegged trades mess up the TWAP so oracles and oracle-pegged trades aren't allowed"
},
{
- code: 6004;
- name: "InvalidMakerFee";
- msg: "Maker fee must be zero";
+ "code": 6003,
+ "name": "InvalidMakerFee",
+ "msg": "Maker fee must be zero"
},
{
- code: 6005;
- name: "InvalidTakerFee";
- msg: "Taker fee must be zero";
+ "code": 6004,
+ "name": "InvalidTakerFee",
+ "msg": "Taker fee must be zero"
},
{
- code: 6006;
- name: "InvalidSeqNum";
- msg: "Seq num must be zero";
+ "code": 6005,
+ "name": "InvalidSeqNum",
+ "msg": "Seq num must be zero"
},
{
- code: 6007;
- name: "InvalidConsumeEventsAdmin";
- msg: "Consume events admin must be None";
+ "code": 6006,
+ "name": "InvalidConsumeEventsAdmin",
+ "msg": "Consume events admin must be None"
}
- ];
+ ]
};
export const IDL: OpenbookTwap = {
- version: "1.0.0",
- name: "openbook_twap",
- instructions: [
+ "version": "1.0.0",
+ "name": "openbook_twap",
+ "instructions": [
{
- name: "createTwapMarket",
- docs: [
+ "name": "createTwapMarket",
+ "docs": [
"`expected_value` will be the first observation of the TWAP, which is",
- "necessary for anti-manipulation",
+ "necessary for anti-manipulation"
],
- accounts: [
+ "accounts": [
{
- name: "market",
- isMut: false,
- isSigner: false,
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "systemProgram",
- isMut: false,
- isSigner: false,
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "payer",
- isMut: true,
- isSigner: true,
- },
+ "name": "payer",
+ "isMut": true,
+ "isSigner": true
+ }
],
- args: [
+ "args": [
{
- name: "expectedValue",
- type: "u64",
+ "name": "expectedValue",
+ "type": "u64"
},
- ],
+ {
+ "name": "maxObservationChangePerUpdateLots",
+ "type": "u64"
+ }
+ ]
},
{
- name: "placeOrder",
- accounts: [
+ "name": "placeOrder",
+ "accounts": [
{
- name: "signer",
- isMut: false,
- isSigner: true,
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "openOrdersAccount",
- isMut: true,
- isSigner: false,
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userTokenAccount",
- isMut: true,
- isSigner: false,
+ "name": "userTokenAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market",
- isMut: true,
- isSigner: false,
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids",
- isMut: true,
- isSigner: false,
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks",
- isMut: true,
- isSigner: false,
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap",
- isMut: true,
- isSigner: false,
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketVault",
- isMut: true,
- isSigner: false,
+ "name": "marketVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram",
- isMut: false,
- isSigner: false,
- },
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
- args: [
+ "args": [
{
- name: "placeOrderArgs",
- type: {
- defined: "PlaceOrderArgs",
- },
- },
+ "name": "placeOrderArgs",
+ "type": {
+ "defined": "PlaceOrderArgs"
+ }
+ }
],
- returns: {
- option: "u128",
- },
+ "returns": {
+ "option": "u128"
+ }
},
{
- name: "editOrder",
- accounts: [
+ "name": "editOrder",
+ "accounts": [
{
- name: "signer",
- isMut: false,
- isSigner: true,
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "openOrdersAccount",
- isMut: true,
- isSigner: false,
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userTokenAccount",
- isMut: true,
- isSigner: false,
+ "name": "userTokenAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market",
- isMut: true,
- isSigner: false,
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids",
- isMut: true,
- isSigner: false,
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks",
- isMut: true,
- isSigner: false,
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap",
- isMut: true,
- isSigner: false,
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketVault",
- isMut: true,
- isSigner: false,
+ "name": "marketVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram",
- isMut: false,
- isSigner: false,
- },
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
- args: [
+ "args": [
{
- name: "clientOrderId",
- type: "u64",
+ "name": "clientOrderId",
+ "type": "u64"
},
{
- name: "expectedCancelSize",
- type: "i64",
+ "name": "expectedCancelSize",
+ "type": "i64"
},
{
- name: "placeOrder",
- type: {
- defined: "PlaceOrderArgs",
- },
- },
+ "name": "placeOrder",
+ "type": {
+ "defined": "PlaceOrderArgs"
+ }
+ }
],
- returns: {
- option: "u128",
- },
+ "returns": {
+ "option": "u128"
+ }
},
{
- name: "cancelOrderByClientId",
- accounts: [
+ "name": "cancelOrderByClientId",
+ "accounts": [
{
- name: "signer",
- isMut: false,
- isSigner: true,
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openOrdersAccount",
- isMut: true,
- isSigner: false,
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market",
- isMut: false,
- isSigner: false,
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids",
- isMut: true,
- isSigner: false,
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks",
- isMut: true,
- isSigner: false,
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openbookProgram",
- isMut: false,
- isSigner: false,
- },
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
- args: [
+ "args": [
{
- name: "clientOrderId",
- type: "u64",
- },
+ "name": "clientOrderId",
+ "type": "u64"
+ }
],
- returns: "i64",
+ "returns": "i64"
},
{
- name: "cancelAllOrders",
- accounts: [
+ "name": "cancelAllOrders",
+ "accounts": [
{
- name: "signer",
- isMut: false,
- isSigner: true,
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openOrdersAccount",
- isMut: true,
- isSigner: false,
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market",
- isMut: false,
- isSigner: false,
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids",
- isMut: true,
- isSigner: false,
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks",
- isMut: true,
- isSigner: false,
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "openbookProgram",
- isMut: false,
- isSigner: false,
- },
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
- args: [
+ "args": [
{
- name: "sideOption",
- type: {
- option: {
- defined: "Side",
- },
- },
+ "name": "sideOption",
+ "type": {
+ "option": {
+ "defined": "Side"
+ }
+ }
},
{
- name: "limit",
- type: "u8",
+ "name": "limit",
+ "type": "u8"
+ }
+ ]
+ },
+ {
+ "name": "pruneOrders",
+ "accounts": [
+ {
+ "name": "twapMarket",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
+ {
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
+ "args": [
+ {
+ "name": "limit",
+ "type": "u8"
+ }
+ ]
},
{
- name: "placeTakeOrder",
- accounts: [
+ "name": "settleFundsExpired",
+ "accounts": [
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "signer",
- isMut: true,
- isSigner: true,
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market",
- isMut: true,
- isSigner: false,
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketAuthority",
- isMut: false,
- isSigner: false,
+ "name": "marketAuthority",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids",
- isMut: true,
- isSigner: false,
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks",
- isMut: true,
- isSigner: false,
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketBaseVault",
- isMut: true,
- isSigner: false,
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketQuoteVault",
- isMut: true,
- isSigner: false,
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap",
- isMut: true,
- isSigner: false,
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "userBaseAccount",
- isMut: true,
- isSigner: false,
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "userQuoteAccount",
- isMut: true,
- isSigner: false,
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
+ }
+ ],
+ "args": []
+ },
+ {
+ "name": "closeMarket",
+ "accounts": [
+ {
+ "name": "closeMarketRentReceiver",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
+ "name": "twapMarket",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram",
- isMut: false,
- isSigner: false,
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "systemProgram",
- isMut: false,
- isSigner: false,
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
- ],
- args: [
{
- name: "args",
- type: {
- defined: "PlaceTakeOrderArgs",
- },
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
+ {
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
+ "args": []
},
{
- name: "cancelAndPlaceOrders",
- accounts: [
+ "name": "placeTakeOrder",
+ "accounts": [
{
- name: "signer",
- isMut: false,
- isSigner: true,
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "twapMarket",
- isMut: true,
- isSigner: false,
+ "name": "signer",
+ "isMut": true,
+ "isSigner": true
},
{
- name: "openOrdersAccount",
- isMut: true,
- isSigner: false,
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "userQuoteAccount",
- isMut: true,
- isSigner: false,
+ "name": "marketAuthority",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "userBaseAccount",
- isMut: true,
- isSigner: false,
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "market",
- isMut: true,
- isSigner: false,
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "bids",
- isMut: true,
- isSigner: false,
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "asks",
- isMut: true,
- isSigner: false,
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "eventHeap",
- isMut: true,
- isSigner: false,
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketQuoteVault",
- isMut: true,
- isSigner: false,
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "marketBaseVault",
- isMut: true,
- isSigner: false,
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
},
{
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "openbookProgram",
- isMut: false,
- isSigner: false,
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
},
+ {
+ "name": "systemProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
- args: [
+ "args": [
{
- name: "cancelClientOrdersIds",
- type: {
- vec: "u64",
- },
+ "name": "args",
+ "type": {
+ "defined": "PlaceTakeOrderArgs"
+ }
+ }
+ ]
+ },
+ {
+ "name": "cancelAndPlaceOrders",
+ "accounts": [
+ {
+ "name": "signer",
+ "isMut": false,
+ "isSigner": true
},
{
- name: "placeOrders",
- type: {
- vec: {
- defined: "PlaceOrderArgs",
- },
- },
+ "name": "twapMarket",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "openOrdersAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "userQuoteAccount",
+ "isMut": true,
+ "isSigner": false
},
+ {
+ "name": "userBaseAccount",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "market",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "bids",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "asks",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "eventHeap",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "marketQuoteVault",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "marketBaseVault",
+ "isMut": true,
+ "isSigner": false
+ },
+ {
+ "name": "tokenProgram",
+ "isMut": false,
+ "isSigner": false
+ },
+ {
+ "name": "openbookProgram",
+ "isMut": false,
+ "isSigner": false
+ }
],
- returns: {
- vec: {
- option: "u128",
+ "args": [
+ {
+ "name": "cancelClientOrdersIds",
+ "type": {
+ "vec": "u64"
+ }
},
- },
+ {
+ "name": "placeOrders",
+ "type": {
+ "vec": {
+ "defined": "PlaceOrderArgs"
+ }
+ }
+ }
+ ],
+ "returns": {
+ "vec": {
+ "option": "u128"
+ }
+ }
},
{
- name: "getBestBidAndAsk",
- accounts: [
+ "name": "getBestBidAndAsk",
+ "accounts": [
{
- name: "market",
- isMut: false,
- isSigner: false,
+ "name": "market",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "bids",
- isMut: false,
- isSigner: false,
+ "name": "bids",
+ "isMut": false,
+ "isSigner": false
},
{
- name: "asks",
- isMut: false,
- isSigner: false,
- },
+ "name": "asks",
+ "isMut": false,
+ "isSigner": false
+ }
],
- args: [],
- returns: {
- vec: "u64",
- },
- },
+ "args": [],
+ "returns": {
+ "vec": "u64"
+ }
+ }
],
- accounts: [
+ "accounts": [
{
- name: "twapMarket",
- type: {
- kind: "struct",
- fields: [
+ "name": "twapMarket",
+ "type": {
+ "kind": "struct",
+ "fields": [
{
- name: "market",
- type: "publicKey",
+ "name": "market",
+ "type": "publicKey"
},
{
- name: "pdaBump",
- type: "u8",
+ "name": "pdaBump",
+ "type": "u8"
},
{
- name: "twapOracle",
- type: {
- defined: "TWAPOracle",
- },
+ "name": "twapOracle",
+ "type": {
+ "defined": "TWAPOracle"
+ }
},
- ],
- },
- },
+ {
+ "name": "closeMarketRentReceiver",
+ "type": "publicKey"
+ }
+ ]
+ }
+ }
],
- types: [
+ "types": [
{
- name: "TWAPOracle",
- type: {
- kind: "struct",
- fields: [
+ "name": "TWAPOracle",
+ "type": {
+ "kind": "struct",
+ "fields": [
{
- name: "expectedValue",
- type: "u64",
+ "name": "expectedValue",
+ "type": "u64"
},
{
- name: "initialSlot",
- type: "u64",
+ "name": "initialSlot",
+ "type": "u64"
},
{
- name: "lastUpdatedSlot",
- type: "u64",
+ "name": "lastUpdatedSlot",
+ "type": "u64"
},
{
- name: "lastObservedSlot",
- type: "u64",
+ "name": "lastObservedSlot",
+ "type": "u64"
},
{
- name: "lastObservation",
- type: "u64",
+ "name": "lastObservation",
+ "type": "u64"
},
{
- name: "observationAggregator",
- type: "u128",
+ "name": "observationAggregator",
+ "type": "u128"
},
- ],
- },
+ {
+ "name": "maxObservationChangePerUpdateLots",
+ "type": "u64"
+ }
+ ]
+ }
},
{
- name: "PlaceOrderArgs",
- type: {
- kind: "struct",
- fields: [
- {
- name: "side",
- type: {
- defined: "Side",
- },
- },
+ "name": "PlaceOrderArgs",
+ "type": {
+ "kind": "struct",
+ "fields": [
{
- name: "priceLots",
- type: "i64",
+ "name": "side",
+ "type": {
+ "defined": "Side"
+ }
},
{
- name: "maxBaseLots",
- type: "i64",
+ "name": "priceLots",
+ "type": "i64"
},
{
- name: "maxQuoteLotsIncludingFees",
- type: "i64",
+ "name": "maxBaseLots",
+ "type": "i64"
},
{
- name: "clientOrderId",
- type: "u64",
+ "name": "maxQuoteLotsIncludingFees",
+ "type": "i64"
},
{
- name: "orderType",
- type: {
- defined: "PlaceOrderType",
- },
+ "name": "clientOrderId",
+ "type": "u64"
},
{
- name: "expiryTimestamp",
- type: "u64",
+ "name": "orderType",
+ "type": {
+ "defined": "PlaceOrderType"
+ }
},
{
- name: "selfTradeBehavior",
- type: {
- defined: "SelfTradeBehavior",
- },
+ "name": "expiryTimestamp",
+ "type": "u64"
},
{
- name: "limit",
- type: "u8",
+ "name": "selfTradeBehavior",
+ "type": {
+ "defined": "SelfTradeBehavior"
+ }
},
- ],
- },
+ {
+ "name": "limit",
+ "type": "u8"
+ }
+ ]
+ }
},
{
- name: "PlaceTakeOrderArgs",
- type: {
- kind: "struct",
- fields: [
- {
- name: "side",
- type: {
- defined: "Side",
- },
- },
+ "name": "PlaceTakeOrderArgs",
+ "type": {
+ "kind": "struct",
+ "fields": [
{
- name: "priceLots",
- type: "i64",
+ "name": "side",
+ "type": {
+ "defined": "Side"
+ }
},
{
- name: "maxBaseLots",
- type: "i64",
+ "name": "priceLots",
+ "type": "i64"
},
{
- name: "maxQuoteLotsIncludingFees",
- type: "i64",
+ "name": "maxBaseLots",
+ "type": "i64"
},
{
- name: "orderType",
- type: {
- defined: "PlaceOrderType",
- },
+ "name": "maxQuoteLotsIncludingFees",
+ "type": "i64"
},
{
- name: "limit",
- type: "u8",
+ "name": "orderType",
+ "type": {
+ "defined": "PlaceOrderType"
+ }
},
- ],
- },
+ {
+ "name": "limit",
+ "type": "u8"
+ }
+ ]
+ }
},
{
- name: "SelfTradeBehavior",
- type: {
- kind: "enum",
- variants: [
+ "name": "SelfTradeBehavior",
+ "type": {
+ "kind": "enum",
+ "variants": [
{
- name: "DecrementTake",
+ "name": "DecrementTake"
},
{
- name: "CancelProvide",
+ "name": "CancelProvide"
},
{
- name: "AbortTransaction",
- },
- ],
- },
+ "name": "AbortTransaction"
+ }
+ ]
+ }
},
{
- name: "PlaceOrderType",
- type: {
- kind: "enum",
- variants: [
+ "name": "PlaceOrderType",
+ "type": {
+ "kind": "enum",
+ "variants": [
{
- name: "Limit",
+ "name": "Limit"
},
{
- name: "ImmediateOrCancel",
+ "name": "ImmediateOrCancel"
},
{
- name: "PostOnly",
+ "name": "PostOnly"
},
{
- name: "Market",
+ "name": "Market"
},
{
- name: "PostOnlySlide",
- },
- ],
- },
+ "name": "PostOnlySlide"
+ }
+ ]
+ }
},
{
- name: "Side",
- type: {
- kind: "enum",
- variants: [
+ "name": "Side",
+ "type": {
+ "kind": "enum",
+ "variants": [
{
- name: "Bid",
+ "name": "Bid"
},
{
- name: "Ask",
- },
- ],
- },
- },
+ "name": "Ask"
+ }
+ ]
+ }
+ }
],
- errors: [
- {
- code: 6000,
- name: "InvalidOpenOrdersAdmin",
- msg: "The `open_orders_admin` of the underlying market must be equal to the `TWAPMarket` PDA",
- },
+ "errors": [
{
- code: 6001,
- name: "InvalidCloseMarketAdmin",
- msg: "The `close_market_admin` of the underlying market must be equal to the `TWAPMarket` PDA",
+ "code": 6000,
+ "name": "InvalidOpenOrdersAdmin",
+ "msg": "The `open_orders_admin` of the underlying market must be equal to the `TWAPMarket` PDA"
},
{
- code: 6002,
- name: "NonZeroExpiry",
- msg: "Market must not expire (have `time_expiry` == 0)",
+ "code": 6001,
+ "name": "InvalidCloseMarketAdmin",
+ "msg": "The `close_market_admin` of the underlying market must be equal to the `TWAPMarket` PDA"
},
{
- code: 6003,
- name: "NoOracles",
- msg: "Oracle-pegged trades mess up the TWAP so oracles and oracle-pegged trades aren't allowed",
+ "code": 6002,
+ "name": "NoOracles",
+ "msg": "Oracle-pegged trades mess up the TWAP so oracles and oracle-pegged trades aren't allowed"
},
{
- code: 6004,
- name: "InvalidMakerFee",
- msg: "Maker fee must be zero",
+ "code": 6003,
+ "name": "InvalidMakerFee",
+ "msg": "Maker fee must be zero"
},
{
- code: 6005,
- name: "InvalidTakerFee",
- msg: "Taker fee must be zero",
+ "code": 6004,
+ "name": "InvalidTakerFee",
+ "msg": "Taker fee must be zero"
},
{
- code: 6006,
- name: "InvalidSeqNum",
- msg: "Seq num must be zero",
+ "code": 6005,
+ "name": "InvalidSeqNum",
+ "msg": "Seq num must be zero"
},
{
- code: 6007,
- name: "InvalidConsumeEventsAdmin",
- msg: "Consume events admin must be None",
- },
- ],
+ "code": 6006,
+ "name": "InvalidConsumeEventsAdmin",
+ "msg": "Consume events admin must be None"
+ }
+ ]
};
diff --git a/tests/migrator.ts b/tests/migrator.ts
index a3a442e9..d1d14a08 100644
--- a/tests/migrator.ts
+++ b/tests/migrator.ts
@@ -3,14 +3,14 @@ import { BN, Program } from "@coral-xyz/anchor";
import * as token from "@solana/spl-token";
import { BankrunProvider } from "anchor-bankrun";
-const { PublicKey, Keypair } = anchor.web3;
+const { PublicKey, Keypair, SystemProgram } = anchor.web3;
import { assert } from "chai";
import { startAnchor } from "solana-bankrun";
const AUTOCRAT_MIGRATOR_PROGRAM_ID = new PublicKey(
- "migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3"
+ "MigRDW6uxyNMDBD8fX2njCRyJC4YZk2Rx9pDUZiAESt"
);
import { AutocratMigrator } from "../target/types/autocrat_migrator";
@@ -28,7 +28,7 @@ import {
} from "spl-token-bankrun";
describe("autocrat_migrator", async function () {
- let provider, connection, migrator, payer, context, banksClient, META, USDC;
+ let provider, connection, migrator, payer, context, banksClient, META, USDC, MNDE, BOL;
before(async function () {
context = await startAnchor("./", [], []);
@@ -59,17 +59,34 @@ describe("autocrat_migrator", async function () {
payer.publicKey,
6
);
+
+ MNDE = await createMint(
+ banksClient,
+ payer,
+ payer.publicKey,
+ payer.publicKey,
+ 9
+ );
+
+ BOL = await createMint(
+ banksClient,
+ payer,
+ payer.publicKey,
+ payer.publicKey,
+ 6
+ );
});
- describe("#multi_transfer", async function () {
+ describe("#multi_transfer2", async function () {
it("does transfer", async function () {
+ let sender = Keypair.generate();
let receiver = Keypair.generate();
let from0 = await createAccount(
banksClient,
payer,
META,
- payer.publicKey
+ sender.publicKey
);
let to0 = await createAccount(
banksClient,
@@ -82,7 +99,7 @@ describe("autocrat_migrator", async function () {
banksClient,
payer,
USDC,
- payer.publicKey
+ sender.publicKey
);
let to1 = await createAccount(
banksClient,
@@ -97,13 +114,21 @@ describe("autocrat_migrator", async function () {
await migrator.methods
.multiTransfer2()
.accounts({
- authority: payer.publicKey,
+ authority: sender.publicKey,
from0,
to0,
from1,
to1,
lamportReceiver: receiver.publicKey,
})
+ .preInstructions([
+ SystemProgram.transfer({
+ fromPubkey: payer.publicKey,
+ toPubkey: sender.publicKey,
+ lamports: 1_000_000_000n,
+ }),
+ ])
+ .signers([sender])
.rpc();
assert((await getAccount(banksClient, from0)).amount == 0n);
@@ -111,6 +136,81 @@ describe("autocrat_migrator", async function () {
assert((await getAccount(banksClient, to0)).amount == 1_000_000n);
assert((await getAccount(banksClient, to1)).amount == 10_000n);
+
+ assert(
+ (await banksClient.getAccount(receiver.publicKey)).lamports >
+ 1_000_000_000 * 0.999
+ );
+ });
+ });
+
+ describe("#multi_transfer4", async function () {
+ it("does transfer", async function () {
+ let sender = Keypair.generate();
+ let receiver = Keypair.generate();
+
+ const tokens = [META, USDC, BOL, MNDE];
+ const accounts = [];
+
+ for (const token of tokens) {
+ let from = await createAccount(
+ banksClient,
+ payer,
+ token,
+ sender.publicKey
+ );
+ let to = await createAccount(
+ banksClient,
+ payer,
+ token,
+ receiver.publicKey
+ );
+
+ accounts.push([from, to]);
+ }
+
+ await mintTo(banksClient, payer, META, accounts[0][0], payer, 1_000_000);
+ await mintTo(banksClient, payer, USDC, accounts[1][0], payer, 10_000);
+ await mintTo(banksClient, payer, BOL, accounts[2][0], payer, 5_000_000_000_000);
+ await mintTo(banksClient, payer, MNDE, accounts[3][0], payer, 10_000_000_000_000);
+
+ await migrator.methods
+ .multiTransfer4()
+ .accounts({
+ authority: sender.publicKey,
+ from0: accounts[0][0],
+ to0: accounts[0][1],
+ from1: accounts[1][0],
+ to1: accounts[1][1],
+ from2: accounts[2][0],
+ to2: accounts[2][1],
+ from3: accounts[3][0],
+ to3: accounts[3][1],
+ lamportReceiver: receiver.publicKey,
+ })
+ .preInstructions([
+ SystemProgram.transfer({
+ fromPubkey: payer.publicKey,
+ toPubkey: sender.publicKey,
+ lamports: 1_000_000_000n,
+ }),
+ ])
+ .signers([sender])
+ .rpc();
+
+ for (const tokenAccounts of accounts) {
+ assert((await getAccount(banksClient, tokenAccounts[0])).amount == 0n);
+ }
+
+ assert((await getAccount(banksClient, accounts[0][1])).amount == 1_000_000n);
+ assert((await getAccount(banksClient, accounts[1][1])).amount == 10_000n);
+ assert((await getAccount(banksClient, accounts[2][1])).amount == 5_000_000_000_000n);
+ assert((await getAccount(banksClient, accounts[3][1])).amount == 10_000_000_000_000n);
+
+ assert(
+ (await banksClient.getAccount(receiver.publicKey)).lamports >
+ 1_000_000_000 * 0.999
+ );
});
});
});
diff --git a/tsconfig.json b/tsconfig.json
index 194ad8bb..ce468706 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -13,6 +13,11 @@
"module": "commonjs",
"target": "ES2020",
"esModuleInterop": true,
- "resolveJsonModule": true
+ "resolveJsonModule": true,
+ "paths": {
+ "@solana/spl-token": [
+ "./node_modules/@solana/spl-token"
+ ]
+ }
}
}
\ No newline at end of file
diff --git a/verifiable-builds/autocrat_migrator.so b/verifiable-builds/autocrat_migrator.so
new file mode 100755
index 00000000..7a63e291
Binary files /dev/null and b/verifiable-builds/autocrat_migrator.so differ
diff --git a/verifiable-builds/autocrat_v0.so b/verifiable-builds/autocrat_v0.so
new file mode 100755
index 00000000..645a750a
Binary files /dev/null and b/verifiable-builds/autocrat_v0.so differ
diff --git a/verifiable-builds/conditional_vault.so b/verifiable-builds/conditional_vault.so
new file mode 100755
index 00000000..da0e8f7d
Binary files /dev/null and b/verifiable-builds/conditional_vault.so differ
diff --git a/yarn.lock b/yarn.lock
index 61e28071..6e141b77 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,28 +2,83 @@
# yarn lockfile v1
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2":
- version "7.19.0"
- resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz"
- integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
- dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/runtime@^7.22.6", "@babel/runtime@^7.23.2":
- version "7.23.2"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
- integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
+"@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.23.4":
+ version "7.24.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e"
+ integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==
dependencies:
regenerator-runtime "^0.14.0"
-"@coral-xyz/anchor@0.28.1-beta.2":
- version "0.28.1-beta.2"
- resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.28.1-beta.2.tgz#4ddd4b2b66af04407be47cf9524147793ec514a0"
- integrity sha512-xreUcOFF8+IQKWOBUrDKJbIw2ftpRVybFlEPVrbSlOBCbreCWrQ5754Gt9cHIcuBDAzearCDiBqzsGQdNgPJiw==
+"@blockworks-foundation/mango-client@^3.4.7":
+ version "3.6.20"
+ resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-client/-/mango-client-3.6.20.tgz#66ed0ae4545959fdc31ca1918de0f931de579d41"
+ integrity sha512-Te0i52KUyp5e8jQQZlIMsTy9fKIfefPHvkA8+NRGIH80kQcnJKKfzw3T1NxaDsc3KFMZwpuN3m4afDNpKTuF0g==
dependencies:
- "@coral-xyz/borsh" "^0.28.0"
+ "@project-serum/anchor" "^0.21.0"
+ "@project-serum/serum" "^0.13.65"
+ "@project-serum/sol-wallet-adapter" "^0.2.0"
+ "@solana/spl-token" "^0.1.6"
+ "@solana/web3.js" "^1.43.5"
+ big.js "^6.1.1"
+ bn.js "^5.1.0"
+ buffer-layout "^1.2.1"
+ cross-fetch "^3.1.5"
+ dotenv "^10.0.0"
+ toformat "^2.0.0"
+ yargs "^17.0.1"
+
+"@bundlr-network/client@^0.8.8":
+ version "0.8.9"
+ resolved "https://registry.yarnpkg.com/@bundlr-network/client/-/client-0.8.9.tgz#58e969a5d80f8d25d212d46bb7a060730a3c1736"
+ integrity sha512-SJ7BAt/KhONeFQ0+nbqrw2DUWrsev6y6cmlXt+3x7fPCkw7OJwudtxV/h2nBteZd65NXjqw8yzkmLiLfZ7CCRA==
+ dependencies:
+ "@solana/wallet-adapter-base" "^0.9.2"
+ "@solana/web3.js" "^1.36.0"
+ "@supercharge/promise-pool" "^2.1.0"
+ algosdk "^1.13.1"
+ arbundles "^0.6.21"
+ arweave "^1.11.4"
+ async-retry "^1.3.3"
+ axios "^0.25.0"
+ base64url "^3.0.1"
+ bignumber.js "^9.0.1"
+ bs58 "^4.0.1"
+ commander "^8.2.0"
+ csv "^6.0.5"
+ ethers "^5.5.1"
+ inquirer "^8.2.0"
+ js-sha256 "^0.9.0"
+ mime-types "^2.1.34"
+ near-api-js "^0.44.2"
+ near-seed-phrase "^0.2.0"
+
+"@coral-xyz/anchor@0.29.0", "@coral-xyz/anchor@^0.29.0":
+ version "0.29.0"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.29.0.tgz#bd0be95bedfb30a381c3e676e5926124c310ff12"
+ integrity sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==
+ dependencies:
+ "@coral-xyz/borsh" "^0.29.0"
"@noble/hashes" "^1.3.1"
"@solana/web3.js" "^1.68.0"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^6.3.0"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ superstruct "^0.15.4"
+ toml "^3.0.0"
+
+"@coral-xyz/anchor@^0.26.0":
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.26.0.tgz#c8e4f7177e93441afd030f22d777d54d0194d7d1"
+ integrity sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==
+ dependencies:
+ "@coral-xyz/borsh" "^0.26.0"
+ "@solana/web3.js" "^1.68.0"
base64-js "^1.5.1"
bn.js "^5.1.2"
bs58 "^4.0.1"
@@ -32,6 +87,7 @@
cross-fetch "^3.1.5"
crypto-hash "^1.3.0"
eventemitter3 "^4.0.7"
+ js-sha256 "^0.9.0"
pako "^2.0.3"
snake-case "^3.0.4"
superstruct "^0.15.4"
@@ -39,7 +95,7 @@
"@coral-xyz/anchor@^0.28.0":
version "0.28.0"
- resolved "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.28.0.tgz"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.28.0.tgz#8345c3c9186a91f095f704d7b90cd256f7e8b2dc"
integrity sha512-kQ02Hv2ZqxtWP30WN1d4xxT4QqlOXYDxmEd3k/bbneqhV3X5QMO4LAtoUFs7otxyivOgoqam5Il5qx81FuI4vw==
dependencies:
"@coral-xyz/borsh" "^0.28.0"
@@ -58,15 +114,693 @@
superstruct "^0.15.4"
toml "^3.0.0"
+"@coral-xyz/anchor@^0.28.1-beta.2":
+ version "0.28.1-beta.2"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.28.1-beta.2.tgz#4ddd4b2b66af04407be47cf9524147793ec514a0"
+ integrity sha512-xreUcOFF8+IQKWOBUrDKJbIw2ftpRVybFlEPVrbSlOBCbreCWrQ5754Gt9cHIcuBDAzearCDiBqzsGQdNgPJiw==
+ dependencies:
+ "@coral-xyz/borsh" "^0.28.0"
+ "@noble/hashes" "^1.3.1"
+ "@solana/web3.js" "^1.68.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^6.3.0"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ superstruct "^0.15.4"
+ toml "^3.0.0"
+
+"@coral-xyz/borsh@^0.26.0":
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.26.0.tgz#d054f64536d824634969e74138f9f7c52bbbc0d5"
+ integrity sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==
+ dependencies:
+ bn.js "^5.1.2"
+ buffer-layout "^1.2.0"
+
"@coral-xyz/borsh@^0.28.0":
version "0.28.0"
- resolved "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.28.0.tgz"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.28.0.tgz#fa368a2f2475bbf6f828f4657f40a52102e02b6d"
integrity sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==
dependencies:
bn.js "^5.1.2"
buffer-layout "^1.2.0"
-"@metaplex-foundation/beet-solana@^0.4.0":
+"@coral-xyz/borsh@^0.29.0":
+ version "0.29.0"
+ resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.29.0.tgz#79f7045df2ef66da8006d47f5399c7190363e71f"
+ integrity sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==
+ dependencies:
+ bn.js "^5.1.2"
+ buffer-layout "^1.2.0"
+
+"@esbuild/aix-ppc64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f"
+ integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==
+
+"@esbuild/android-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4"
+ integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==
+
+"@esbuild/android-arm@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824"
+ integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==
+
+"@esbuild/android-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d"
+ integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==
+
+"@esbuild/darwin-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e"
+ integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==
+
+"@esbuild/darwin-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd"
+ integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==
+
+"@esbuild/freebsd-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487"
+ integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==
+
+"@esbuild/freebsd-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c"
+ integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==
+
+"@esbuild/linux-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b"
+ integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==
+
+"@esbuild/linux-arm@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef"
+ integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==
+
+"@esbuild/linux-ia32@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601"
+ integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==
+
+"@esbuild/linux-loong64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299"
+ integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==
+
+"@esbuild/linux-mips64el@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec"
+ integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==
+
+"@esbuild/linux-ppc64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8"
+ integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==
+
+"@esbuild/linux-riscv64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf"
+ integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==
+
+"@esbuild/linux-s390x@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8"
+ integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==
+
+"@esbuild/linux-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78"
+ integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==
+
+"@esbuild/netbsd-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b"
+ integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==
+
+"@esbuild/openbsd-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0"
+ integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==
+
+"@esbuild/sunos-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30"
+ integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==
+
+"@esbuild/win32-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae"
+ integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==
+
+"@esbuild/win32-ia32@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67"
+ integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==
+
+"@esbuild/win32-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae"
+ integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==
+
+"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449"
+ integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==
+ dependencies:
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef"
+ integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/networks" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/web" "^5.7.0"
+
+"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2"
+ integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+
+"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37"
+ integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+
+"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c"
+ integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+
+"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b"
+ integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+
+"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2"
+ integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ bn.js "^5.2.1"
+
+"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d"
+ integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e"
+ integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+
+"@ethersproject/contracts@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e"
+ integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==
+ dependencies:
+ "@ethersproject/abi" "^5.7.0"
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+
+"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7"
+ integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf"
+ integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/basex" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/pbkdf2" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/wordlists" "^5.7.0"
+
+"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360"
+ integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/hdnode" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/pbkdf2" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/random" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ aes-js "3.0.0"
+ scrypt-js "3.0.1"
+
+"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a"
+ integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ js-sha3 "0.8.0"
+
+"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892"
+ integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==
+
+"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6"
+ integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102"
+ integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+
+"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30"
+ integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/providers@5.7.2":
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb"
+ integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/basex" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/networks" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/random" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/web" "^5.7.0"
+ bech32 "1.1.4"
+ ws "7.4.6"
+
+"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c"
+ integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304"
+ integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb"
+ integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ hash.js "1.1.7"
+
+"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3"
+ integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ bn.js "^5.2.1"
+ elliptic "6.5.4"
+ hash.js "1.1.7"
+
+"@ethersproject/solidity@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8"
+ integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2"
+ integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b"
+ integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==
+ dependencies:
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+
+"@ethersproject/units@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1"
+ integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/wallet@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d"
+ integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/hdnode" "^5.7.0"
+ "@ethersproject/json-wallets" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/random" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/wordlists" "^5.7.0"
+
+"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae"
+ integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==
+ dependencies:
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5"
+ integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0":
+ version "9.3.0"
+ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
+ integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==
+
+"@hapi/topo@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
+ integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
+"@mercurial-finance/apricot-sdk@0.17.6":
+ version "0.17.6"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/apricot-sdk/-/apricot-sdk-0.17.6.tgz#e5e2266dbf3d454a09d745561f486aaa351d625a"
+ integrity sha512-/x/nMksG2h3uB7G4bPVXk0YjvsGVUniSikRmCf/VFFly9BqcRcBtSk4aMdSvIjYsJrpSzWVrHXUYeOtUF1ObDA==
+ dependencies:
+ "@solana/spl-token" "0.1.8"
+ "@solana/web3.js" "^1.37.0"
+ decimal.js "^10.3.1"
+ tiny-invariant "^1.1.0"
+
+"@mercurial-finance/cypher-client@^4.1.4":
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/cypher-client/-/cypher-client-4.1.4.tgz#17b4d76b9f53d2919e6aee4be2fa22432188c52f"
+ integrity sha512-W5zy+weni9LPPCL6ImGMjb/Ykg8x09kRVSsVg+OaXZ7qrA+/lwEvv32aEn8kKuha0drvuvTNdXHPUuC60UEnsg==
+ dependencies:
+ "@project-serum/anchor" "^0.26.0"
+ "@solana/web3.js" "~1.72.0"
+
+"@mercurial-finance/drift-sdk@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/drift-sdk/-/drift-sdk-1.0.3.tgz#c9426fd7c019aa973914841ca1f6c9397de444ca"
+ integrity sha512-I+K95ZK7FpSY67UcZ1JW0M2jOnEVoK5k3TMLzqbrv30m0IGBJYZ1zmrdPlIsNdd4N83KMsYbCjiGltL7h0/bYQ==
+ dependencies:
+ "@project-serum/anchor" "0.25.0-beta.1"
+ "@project-serum/serum" "^0.13.38"
+ "@pythnetwork/client" "2.5.3"
+ "@solana/spl-token" "^0.1.6"
+ "@solana/web3.js" "1.66.2"
+ "@switchboard-xyz/switchboard-v2" "^0.0.67"
+ bs58 "^5.0.0"
+ strict-event-emitter-types "^2.0.0"
+ uuid "^8.3.2"
+
+"@mercurial-finance/dynamic-amm-sdk@^0.4.19":
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/dynamic-amm-sdk/-/dynamic-amm-sdk-0.4.19.tgz#30a45199472b745cf536d5be5f30cdd8752c3adb"
+ integrity sha512-mN3EubUvwXnoY60RANsu67YhEfUIA3gyR25VsM9lHNAsOtwSPOc0gUl5u63TuDNZdcCVsLScklMJytUPuJ/AHg==
+ dependencies:
+ "@mercurial-finance/vault-sdk" "0.5.3"
+ "@project-serum/anchor" "0.24.2"
+ "@project-serum/borsh" "^0.2.5"
+ "@saberhq/anchor-contrib" "1.13.32"
+ "@saberhq/stableswap-sdk" "1.13.32"
+ "@saberhq/token-utils" "1.13.32"
+ "@solana/spl-token" "0.1.8"
+ "@solana/spl-token-registry" "0.2.1105"
+ "@solana/web3.js" "^1.42.0"
+ bn-sqrt "^1.0.0"
+ bn.js "5.2.1"
+ decimal.js "^10.4.1"
+ dotenv "^16.0.1"
+ invariant "^2.2.4"
+ jsbi "^4.3.0"
+
+"@mercurial-finance/frakt-sdk@0.0.2":
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/frakt-sdk/-/frakt-sdk-0.0.2.tgz#0a0f39aef240c1c7f092156c643f1eb27adfa566"
+ integrity sha512-x/3W7BMyUzMigkeJMLXNCnZunGw6JFSaG5hx4oaioDy9qT3MxT05OhaoKLs9zMl3RPLjy/xm1Y79eoDdz8qxEQ==
+ dependencies:
+ "@project-serum/anchor" "0.24.2"
+ axios "^1.2.1"
+
+"@mercurial-finance/francium-sdk@1.4.3":
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/francium-sdk/-/francium-sdk-1.4.3.tgz#aa6c43da1a923a700bec0b0e425fe72a76d8dd68"
+ integrity sha512-beFsxFx9WsHsImCSZAPXlitE4kQMugHczATishmJdxXGEHvBfJ3hrncjaWf+znwlMTknx8zYgPFfeP9JzbHHgw==
+
+"@mercurial-finance/mango-v4@0.5.4":
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/mango-v4/-/mango-v4-0.5.4.tgz#9df78a7f146c59c8a645877b6587ab44c51e7303"
+ integrity sha512-KD0xdmU5+05F/Or7YYtzyhFGwAXqDD+LmN9fJIp/KJfieQcKq/GnLnFdGA8iTLMydyqcO0ymgSxu5Uky2IpyaA==
+ dependencies:
+ "@project-serum/anchor" "^0.25.0"
+ "@project-serum/serum" "^0.13.65"
+ "@pythnetwork/client" "~2.14.0"
+ "@solana/spl-token" "0.3.7"
+ "@solana/web3.js" "^1.63.1"
+ "@switchboard-xyz/sbv2-lite" "^0.1.6"
+ big.js "^6.1.1"
+ binance-api-node "^0.12.0"
+ bs58 "^5.0.0"
+ cross-fetch "^3.1.5"
+ dotenv "^16.0.3"
+ node-kraken-api "^2.2.2"
+
+"@mercurial-finance/marginfi-client-v2@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/marginfi-client-v2/-/marginfi-client-v2-1.0.2.tgz#685dc3b235081741c97ae0cfd5a63ee2241159c0"
+ integrity sha512-Bmd6yJhVZLdiHMkJvNmEP+MxT0QCNXDGwwKEgIQxtTsIhAYtnlgBQegXz1t8aad5qEmimWRjyYQWu8jjaZ7UcQ==
+ dependencies:
+ "@coral-xyz/anchor" "^0.26.0"
+ "@mrgnlabs/mrgn-common" "*"
+ "@project-serum/anchor" "^0.26.0"
+ "@pythnetwork/client" "^2.9.0"
+ "@solana/wallet-adapter-base" "^0.9.20"
+ "@solana/web3.js" "^1.71.0"
+ "@switchboard-xyz/solana.js" "^2.1.10"
+ bignumber.js "^9.1.1"
+ decimal.js "^10.4.3"
+ superstruct "^1.0.3"
+
+"@mercurial-finance/optimist@^0.1.4":
+ version "0.1.9"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/optimist/-/optimist-0.1.9.tgz#82b612fc6d602c1010cada4fb396d92b7fcae03a"
+ integrity sha512-cOJan58djQdg2iHKV/jPFgD1bNm2hffa5S0FXREKSNfzZRfsYLZOnRNJ24X0o+VJ9kC5BY0HYwduT/+dAyZ0AQ==
+ dependencies:
+ promise-retry "2.0.1"
+
+"@mercurial-finance/port-sdk@0.2.69":
+ version "0.2.69"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/port-sdk/-/port-sdk-0.2.69.tgz#79978c4be9175afb3640e18e16f21e439f203ef2"
+ integrity sha512-DDZBLkoIQVhLQRy+t7dVuiHNw0nAmWD7xqwMekHT71bBLU5ajQglRvQ9b8d2RQQn1WJsXhbGbc7eTUGWdZqWoQ==
+ dependencies:
+ "@solana/buffer-layout" "^3.0.0"
+ "@solana/spl-token" "0.1.8"
+ "@solana/spl-token-registry" "^0.2.1107"
+ "@solana/web3.js" "^1.32.0"
+ big.js "^6.1.1"
+ bn.js "^5.2.1"
+ buffer-layout "1.2.2"
+
+"@mercurial-finance/solend-sdk@0.6.5":
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/solend-sdk/-/solend-sdk-0.6.5.tgz#54b2fe6fb28356ba8e749e8c42fb9193cec4f258"
+ integrity sha512-544KqvD1IkpnyTUDOCt0yVlTcayt9rv+CTXHTFQDinWQQkA8uWBoiNbI0g49bJVE//Np3SbJSOgJmq5KlxgvWQ==
+ dependencies:
+ "@solana/web3.js" "^1.52.0"
+ bn.js "^5.2.0"
+ buffer "^6.0.3"
+ buffer-layout "^1.2.0"
+
+"@mercurial-finance/tulip-platform-sdk@2.0.30":
+ version "2.0.30"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/tulip-platform-sdk/-/tulip-platform-sdk-2.0.30.tgz#c528ca8efd96e4667d8d905274065d6435438ad6"
+ integrity sha512-ySPxAtFLtati9Vv7g3czrcNEiT9HBZboRDNnfEDmCFJqsub87Y2ZF125dpspaZzKUlolOrBIqBy1FZYIreMgfg==
+ dependencies:
+ "@project-serum/anchor" "^0.25.0"
+ "@project-serum/associated-token" "^0.1.1"
+ "@project-serum/borsh" "^0.2.5"
+ "@solana/web3.js" "^1.66.2"
+ lodash "^4.17.21"
+
+"@mercurial-finance/vault-sdk@0.5.3":
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/@mercurial-finance/vault-sdk/-/vault-sdk-0.5.3.tgz#4a6ef72474a6c81f86d1219c57cbbbd1978879fe"
+ integrity sha512-JnG5moumWHg15utCMVD/G+1xLveGXSTUAkTQUSiITs7Du1Nw47GtHlpJEa9+z+0uhcy6/eKNiNLkDUrq0z3zSg==
+ dependencies:
+ "@blockworks-foundation/mango-client" "^3.4.7"
+ "@mercurial-finance/apricot-sdk" "0.17.6"
+ "@mercurial-finance/cypher-client" "^4.1.4"
+ "@mercurial-finance/drift-sdk" "1.0.3"
+ "@mercurial-finance/frakt-sdk" "0.0.2"
+ "@mercurial-finance/francium-sdk" "1.4.3"
+ "@mercurial-finance/mango-v4" "0.5.4"
+ "@mercurial-finance/marginfi-client-v2" "1.0.2"
+ "@mercurial-finance/optimist" "^0.1.4"
+ "@mercurial-finance/port-sdk" "0.2.69"
+ "@mercurial-finance/solend-sdk" "0.6.5"
+ "@mercurial-finance/tulip-platform-sdk" "2.0.30"
+ "@mithraic-labs/psylend-utils" "0.0.3-rc39"
+ "@project-serum/anchor" "0.25.0"
+ "@quarryprotocol/quarry-sdk" "5.0.2"
+ "@saberhq/anchor-contrib" "1.13.32"
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/spl-token" "0.1.8"
+ "@solana/spl-token-registry" "0.2.1105"
+ "@solana/web3.js" "~1.72.0"
+ bn.js "5.2.1"
+ cross-fetch "^3.1.5"
+ decimal.js "10.3.1"
+ jsbi "4.3.0"
+
+"@metaplex-foundation/beet-solana@0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.4.0.tgz#52891e78674aaa54e0031f1bca5bfbc40de12e8d"
integrity sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==
@@ -76,7 +810,17 @@
bs58 "^5.0.0"
debug "^4.3.4"
-"@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1":
+"@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.7.1":
version "0.7.1"
resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.1.tgz#0975314211643f87b5f6f3e584fa31abcf4c612c"
integrity sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==
@@ -85,75 +829,657 @@
bn.js "^5.2.0"
debug "^4.3.3"
+"@metaplex-foundation/beet@>=0.1.0":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.2.tgz#fa4726e4cfd4fb6fed6cddc9b5213c1c2a2d0b77"
+ integrity sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==
+ dependencies:
+ ansicolors "^0.3.2"
+ assert "^2.1.0"
+ 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/cusper@^0.0.2":
version "0.0.2"
resolved "https://registry.yarnpkg.com/@metaplex-foundation/cusper/-/cusper-0.0.2.tgz#dc2032a452d6c269e25f016aa4dd63600e2af975"
integrity sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==
-"@metaplex-foundation/mpl-token-metadata@^2.5.2":
- version "2.13.0"
- resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz#ea498190ad4ed1d4c0b8218a72d03bd17a883d11"
- integrity sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==
+"@metaplex-foundation/mpl-token-metadata@2.2.4":
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.2.4.tgz#d934cf20d6e22f7923fc96b80c7534595780eda6"
+ integrity sha512-cayIZ7w/XUKkUygNyWyx5l5Q8PO5qzIemk6c/7dxKhdHLlaVPwKjRhbg6kIuzZ8tvYP5afUmJKln9rWnI8tQCA==
dependencies:
- "@metaplex-foundation/beet" "^0.7.1"
- "@metaplex-foundation/beet-solana" "^0.4.0"
+ "@metaplex-foundation/beet" "^0.4.0"
+ "@metaplex-foundation/beet-solana" "^0.3.0"
"@metaplex-foundation/cusper" "^0.0.2"
- "@solana/spl-token" "^0.3.6"
- "@solana/web3.js" "^1.66.2"
+ "@solana/spl-token" "^0.2.0"
+ "@solana/web3.js" "^1.35.1"
bn.js "^5.2.0"
- debug "^4.3.4"
+ debug "^4.3.3"
-"@noble/curves@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35"
- integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
+"@metaplex-foundation/mpl-token-metadata@^3.2.0":
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.2.1.tgz#d424e378a1ee441a6431d2641d66873118d6dc67"
+ integrity sha512-26W1NhQwDWmLOg/pBRYut7x/vEs/5kFS2sWVEY5/X0f2jJOLhnd4NaZQcq+5u+XZsXvm1jq2AtrRGPNK43oqWQ==
dependencies:
- "@noble/hashes" "1.3.2"
+ "@metaplex-foundation/mpl-toolbox" "^0.9.4"
-"@noble/ed25519@^1.7.0":
- version "1.7.1"
- resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz"
- integrity sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==
+"@metaplex-foundation/mpl-toolbox@^0.9.4":
+ version "0.9.4"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz#2211b2f726b1e5745c03908d26fd8ee580838b6f"
+ integrity sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==
+
+"@metaplex-foundation/umi-bundle-defaults@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.1.tgz#2c43134e7ddaf25fdbcbb518d75136c6260bac82"
+ integrity sha512-QBaCLrb2D5uhY6pbWdxGPdD3LNKOAZ/Wfp7gEzhAipWmEV75KO7ya3AzaU4JZPHaf9juwdU4wO50WEPRb7YyQg==
+ dependencies:
+ "@metaplex-foundation/umi-downloader-http" "^0.9.1"
+ "@metaplex-foundation/umi-eddsa-web3js" "^0.9.1"
+ "@metaplex-foundation/umi-http-fetch" "^0.9.1"
+ "@metaplex-foundation/umi-program-repository" "^0.9.1"
+ "@metaplex-foundation/umi-rpc-chunk-get-accounts" "^0.9.1"
+ "@metaplex-foundation/umi-rpc-web3js" "^0.9.1"
+ "@metaplex-foundation/umi-serializer-data-view" "^0.9.1"
+ "@metaplex-foundation/umi-transaction-factory-web3js" "^0.9.1"
+
+"@metaplex-foundation/umi-downloader-http@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.1.tgz#fa516b0ef0bbfbd52657708b226db3e00b58469d"
+ integrity sha512-T/t9YtkDxovIz5hG0SEBolzet0nTd77hZJSSGCNfrhhgJJtNeIHz+/0K+o7U+ubLddFmtPNxF4KBfmh1jCYCQQ==
+
+"@metaplex-foundation/umi-eddsa-web3js@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.1.tgz#eccbf4fa544ceec8f6cdebf239eb8d915c980c1c"
+ integrity sha512-D+ZP8jOEzfr1ncF18zRdxfE820xjTf6AIBZd926TRj8dlOFIDfu1J0FGS7pC+52CAC9BRNrRvYQyc1TPORkfTQ==
+ dependencies:
+ "@metaplex-foundation/umi-web3js-adapters" "^0.9.1"
+ "@noble/curves" "^1.0.0"
+
+"@metaplex-foundation/umi-http-fetch@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.1.tgz#7b6c68b51d6cc5f17742b97a639cd98b3dfc72b6"
+ integrity sha512-Flh5wSbiYmeDg4V6IE9BNX1BH3eewcIzHxZ1RT1sagU0PlDwy37dm0gcU+svYM/usDvnbk4hwOMGcZkhQLN1QQ==
+ dependencies:
+ node-fetch "^2.6.7"
+
+"@metaplex-foundation/umi-options@^0.8.9":
+ version "0.8.9"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz#9c9e269d9eee7d055ad6831dcb30a30127dcb0c5"
+ integrity sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==
+
+"@metaplex-foundation/umi-program-repository@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.1.tgz#575ec3ed452615d5f3d1bce9a105ed639a91de44"
+ integrity sha512-6SawFMO4IZdk4y+D/+o8CyYnfmy8kcOqhQsX3fUMqIXSzz0vzMT2/dDTMfLsuTVyULnaW/VYm26cmYBjVqZTlw==
+
+"@metaplex-foundation/umi-public-keys@^0.8.9":
+ version "0.8.9"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz#ca7a927c924ed8e28d0f8bb3dc0f2adc1f9011ec"
+ integrity sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==
+ dependencies:
+ "@metaplex-foundation/umi-serializers-encodings" "^0.8.9"
+
+"@metaplex-foundation/umi-rpc-chunk-get-accounts@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.1.tgz#ad4c4dda9b336d27e6dd9afcbaa91bd931874182"
+ integrity sha512-WxF4DxSBJXzrGfmJ+X4DjF4rk9as/0EnkpGo0DdtHTZNqIfRY9mqi8OPRe/JhSjYzWFCC0ngjanqShhcEetB4A==
+
+"@metaplex-foundation/umi-rpc-web3js@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.1.tgz#fdafb5f03d4d252ebde3025ed78a3e9a868d4e04"
+ integrity sha512-kOJEc9IWMX+H7dI5zZZimww1w0A6yd2V/fsQHKB/kHddja7JoPK4Au68n45Pi0vb3HY7riCQN9XMqOOPD5tcxA==
+ dependencies:
+ "@metaplex-foundation/umi-web3js-adapters" "^0.9.1"
+
+"@metaplex-foundation/umi-serializer-data-view@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.1.tgz#5366f9c31d27ea2f6a884a78df1cf5a14158412b"
+ integrity sha512-teilMc3abBrdLtgQ0PqnNXvmdsjNFPk4sVbM/flxoh9edyRQCAJmyK7DEA7cXCYfhBVX0jwSJIEcqTDa+r+jdw==
+
+"@metaplex-foundation/umi-serializers-core@^0.8.9":
+ version "0.8.9"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz#cd5ae763a59e54dd01f1284f4a6bf4e78e4aab9c"
+ integrity sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==
+
+"@metaplex-foundation/umi-serializers-encodings@^0.8.9":
+ version "0.8.9"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz#0f02605ee3e6fbeac1abc4fb267a7cc96ecb4410"
+ integrity sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==
+ dependencies:
+ "@metaplex-foundation/umi-serializers-core" "^0.8.9"
+
+"@metaplex-foundation/umi-serializers-numbers@^0.8.9":
+ version "0.8.9"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz#28c10367f6aebac0276ec1bce81d0d8db54b05de"
+ integrity sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==
+ dependencies:
+ "@metaplex-foundation/umi-serializers-core" "^0.8.9"
+
+"@metaplex-foundation/umi-serializers@^0.9.0":
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz#af6d03a3bf821bf73b7b3450bb8df0407f2f69d6"
+ integrity sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==
+ dependencies:
+ "@metaplex-foundation/umi-options" "^0.8.9"
+ "@metaplex-foundation/umi-public-keys" "^0.8.9"
+ "@metaplex-foundation/umi-serializers-core" "^0.8.9"
+ "@metaplex-foundation/umi-serializers-encodings" "^0.8.9"
+ "@metaplex-foundation/umi-serializers-numbers" "^0.8.9"
+
+"@metaplex-foundation/umi-transaction-factory-web3js@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.1.tgz#fb891cd1229ace5187930c2329c18c0af29ea553"
+ integrity sha512-DBBvaMpR6pR3ZpyaRD/0QSTjS+3lxHIUZYAqZi0JYsTyYqNTNsdKVbeu6uLjbeyoJbmqgKVZ0nZgcokEKx49eg==
+ dependencies:
+ "@metaplex-foundation/umi-web3js-adapters" "^0.9.1"
+
+"@metaplex-foundation/umi-uploader-bundlr@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-uploader-bundlr/-/umi-uploader-bundlr-0.9.1.tgz#43eb5e3022bbef2d5f8bd170d775a4dc1718e8e4"
+ integrity sha512-R2apPj0lWSem1zI0Tqk1MAi+nPK3JVcnppwzvczoUs2n+vuQdk6cQSLE+sbHiba7Gq1bx/Y7DwLLayhLwY8GcA==
+ dependencies:
+ "@bundlr-network/client" "^0.8.8"
+ "@metaplex-foundation/umi-web3js-adapters" "^0.9.1"
+ bignumber.js "^9.0.2"
+ buffer "^6.0.3"
+
+"@metaplex-foundation/umi-web3js-adapters@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.1.tgz#e37cee0b835608044558785c8bf69a5ca92cf341"
+ integrity sha512-O6lQGJFebRM8P67ajvUpuctJ/J39Lylp4wyg8E1tHmFxUsdBC7M9qBixi/WmCiNKgSfVrq6MmiYaba3OSrtqwg==
+ dependencies:
+ buffer "^6.0.3"
+
+"@metaplex-foundation/umi@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi/-/umi-0.9.1.tgz#1eb581163f87f800bfa32fb58ce5cbe719d9d5b5"
+ integrity sha512-IhHoOvp4vfO/++YL+78+iVuLM53+FDwUOZDYgH6lx0jYXyQ27BeaieeR5i+q3A9dz4KxQo5Nzc5aCA1109QGCQ==
+ dependencies:
+ "@metaplex-foundation/umi-options" "^0.8.9"
+ "@metaplex-foundation/umi-public-keys" "^0.8.9"
+ "@metaplex-foundation/umi-serializers" "^0.9.0"
+
+"@mithraic-labs/psylend-utils@0.0.3-rc39":
+ version "0.0.3-rc39"
+ resolved "https://registry.yarnpkg.com/@mithraic-labs/psylend-utils/-/psylend-utils-0.0.3-rc39.tgz#05b0d2733f5ad8ea0868e20b3e78922808d4a1f3"
+ integrity sha512-7bfGwg9brPF+mxDck8m9GNWUI23YV7eeWA21WKM51aPnz8IJXR6XBTbi3TrQPSA96B77Qx1cP3uE43CsI29tcA==
+ dependencies:
+ "@project-serum/anchor" "0.25.0"
+ "@project-serum/serum" "^0.13.65"
+ "@pythnetwork/client" "2.7.3"
+ "@solana/web3.js" "^1.30.2"
+ chai "^4.3.7"
+ psyfi-euros-test "0.0.2-rc.5"
+ spl2 "npm:@solana/spl-token@^0.2.0"
+
+"@mrgnlabs/mrgn-common@*":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@mrgnlabs/mrgn-common/-/mrgn-common-1.3.1.tgz#1651923ceda82517acd5c121a38e54dd3b48105f"
+ integrity sha512-AN+OEqNXGOAjgzbYWayBKCpWs8fXK8XyvOpNtrl/9C3rOAGddQgOCQEx050/5Uudxr7P/ZSTD7RaCV/+bKjLkg==
+ dependencies:
+ "@coral-xyz/anchor" "^0.28.1-beta.2"
+ "@solana/buffer-layout-utils" "^0.2.0"
+ "@solana/wallet-adapter-base" "^0.9.20"
+ "@solana/web3.js" "^1.87.6"
+ bignumber.js "^9.1.1"
+ bs58 "^5.0.0"
+ decimal.js "^10.4.3"
+ numeral "^2.0.6"
+ superstruct "^1.0.3"
+
+"@noble/curves@^1.0.0", "@noble/curves@^1.2.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e"
+ integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==
+ dependencies:
+ "@noble/hashes" "1.3.3"
+
+"@noble/ed25519@^1.6.1", "@noble/ed25519@^1.7.0":
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123"
+ integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==
"@noble/ed25519@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-2.0.0.tgz#5964c8190a4b4b804985717ca566113b93379e43"
integrity sha512-/extjhkwFupyopDrt80OMWKdLgP429qLZj+z6sYJz90rF2Iz0gjZh2ArMKPImUl13Kx+0EXI2hN9T/KJV0/Zng==
-"@noble/hashes@1.3.2", "@noble/hashes@^1.3.1":
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39"
- integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==
-
-"@noble/hashes@^1.1.2":
- version "1.1.2"
- resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz"
- integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==
+"@noble/hashes@1.3.3", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699"
+ integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==
"@noble/secp256k1@^1.6.3":
- version "1.7.0"
- resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz"
- integrity sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c"
+ integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==
"@noble/secp256k1@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-2.0.0.tgz#c214269d45e0233ad6a8ae5104655453636e253d"
integrity sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==
-"@openbook-dex/openbook-v2@=0.0.12":
- version "0.0.12"
- resolved "https://registry.yarnpkg.com/@openbook-dex/openbook-v2/-/openbook-v2-0.0.12.tgz#abb8cd2b51b573854656eb7605463a0153cf2ca1"
- integrity sha512-SxYEslImHB3Qd2KH2ueXCEZC+Tu00p5R+MWPsGHeSt8M+p5kL811mAymanKEUrxY99gd8/F/oV64vJyXZAIf2g==
+"@openbook-dex/openbook-v2@0.1.7":
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/@openbook-dex/openbook-v2/-/openbook-v2-0.1.7.tgz#55ae6a1bbc76faa84023cd59b6dfc759a886539b"
+ integrity sha512-dyL/q01BTmI+KtxjYfaHOat+JDppCIbqGiNQYFIFMqcawHlyXFaK/y4m3lR0A82iAOvr7+27z5FPtbAMWpyHHw==
dependencies:
- "@coral-xyz/anchor" "^0.28.0"
+ "@coral-xyz/anchor" "^0.28.1-beta.2"
"@solana/spl-token" "0.3.8"
"@solana/web3.js" "^1.77.3"
- eslint-config-prettier "^8.10.0"
- fs "^0.0.1-security"
+ big.js "^6.2.1"
+
+"@project-serum/anchor@0.23.0", "@project-serum/anchor@^0.23.0":
+ version "0.23.0"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.23.0.tgz#2b2eb6b51601b073e8db26663aa2d6c2f2841771"
+ integrity sha512-LV2/ifZOJVFTZ4GbEloXln3iVfCvO1YM8i7BBCrUm4tehP7irMx4nr4/IabHWOzrQcQElsxSP/lb1tBp+2ff8A==
+ dependencies:
+ "@project-serum/borsh" "^0.2.5"
+ "@solana/web3.js" "^1.36.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^5.3.1"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ find "^0.3.0"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@0.24.2", "@project-serum/anchor@^0.24.2":
+ version "0.24.2"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.24.2.tgz#a3c52a99605c80735f446ca9b3a4885034731004"
+ integrity sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA==
+ dependencies:
+ "@project-serum/borsh" "^0.2.5"
+ "@solana/web3.js" "^1.36.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^5.3.1"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@0.25.0", "@project-serum/anchor@^0.25.0":
+ version "0.25.0"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.25.0.tgz#88ee4843336005cf5a64c80636ce626f0996f503"
+ integrity sha512-E6A5Y/ijqpfMJ5psJvbw0kVTzLZFUcOFgs6eSM2M2iWE1lVRF18T6hWZVNl6zqZsoz98jgnNHtVGJMs+ds9A7A==
+ dependencies:
+ "@project-serum/borsh" "^0.2.5"
+ "@solana/web3.js" "^1.36.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^5.3.1"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ superstruct "^0.15.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@0.25.0-beta.1":
+ version "0.25.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.25.0-beta.1.tgz#7b113fb6604483d6740c8da9c6d86e9a5d5f6cf7"
+ integrity sha512-edesFlclgQzIluD2mC0xrGPnABBllKvbGd6MOtNZMCauUnx1Xbu073um8O6mrCeuZrz4PG9AhwAp1y5cOl3R4A==
+ dependencies:
+ "@project-serum/borsh" "^0.2.5"
+ "@solana/web3.js" "^1.36.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^5.3.1"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ superstruct "^0.15.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@^0.11.1":
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.11.1.tgz#155bff2c70652eafdcfd5559c81a83bb19cec9ff"
+ integrity sha512-oIdm4vTJkUy6GmE6JgqDAuQPKI7XM4TPJkjtoIzp69RZe0iAD9JP2XHx7lV1jLdYXeYHqDXfBt3zcq7W91K6PA==
+ dependencies:
+ "@project-serum/borsh" "^0.2.2"
+ "@solana/web3.js" "^1.17.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.0"
+ camelcase "^5.3.1"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ find "^0.3.0"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@^0.21.0":
+ version "0.21.0"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.21.0.tgz#ad5fb33744991ec1900cdb2fd22707c908b12b5f"
+ integrity sha512-flRuW/F+iC8mitNokx82LOXyND7Dyk6n5UUPJpQv/+NfySFrNFlzuQZaBZJ4CG5g9s8HS/uaaIz1nVkDR8V/QA==
+ dependencies:
+ "@project-serum/borsh" "^0.2.4"
+ "@solana/web3.js" "^1.17.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^5.3.1"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ find "^0.3.0"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@^0.22.0":
+ version "0.22.1"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.22.1.tgz#698a9620f94691de0a12bbc650a5c8380e2f0e8a"
+ integrity sha512-5pHeyvQhzLahIQ8aZymmDMZJAJFklN0joZdI+YIqFkK2uU/mlKr6rBLQjxysf/j1mLLiNG00tdyLfUtTAdQz7w==
+ dependencies:
+ "@project-serum/borsh" "^0.2.5"
+ "@solana/web3.js" "^1.17.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^5.3.1"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ find "^0.3.0"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ toml "^3.0.0"
+
+"@project-serum/anchor@^0.26.0":
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.26.0.tgz#99e15a3923a5d10514f8185b2d3909e5699d60d5"
+ integrity sha512-Nq+COIjE1135T7qfnOHEn7E0q39bQTgXLFk837/rgFe6Hkew9WML7eHsS+lSYD2p3OJaTiUOHTAq1lHy36oIqQ==
+ dependencies:
+ "@coral-xyz/borsh" "^0.26.0"
+ "@solana/web3.js" "^1.68.0"
+ base64-js "^1.5.1"
+ bn.js "^5.1.2"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.2"
+ camelcase "^6.3.0"
+ cross-fetch "^3.1.5"
+ crypto-hash "^1.3.0"
+ eventemitter3 "^4.0.7"
+ js-sha256 "^0.9.0"
+ pako "^2.0.3"
+ snake-case "^3.0.4"
+ superstruct "^0.15.4"
+ toml "^3.0.0"
+
+"@project-serum/associated-token@^0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@project-serum/associated-token/-/associated-token-0.1.1.tgz#9acf745e84dad21e2ea26e06694704b9d698e532"
+ integrity sha512-Zc1wdqragbDiyBVagzIbIsMe37P7fgkArWZPIj+jJjDIoznlmYMK6ASU5mtdDZrPJ7sNABF/lzZ3+jvCCcU+oA==
+
+"@project-serum/borsh@^0.2.2", "@project-serum/borsh@^0.2.4", "@project-serum/borsh@^0.2.5":
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.5.tgz#6059287aa624ecebbfc0edd35e4c28ff987d8663"
+ integrity sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q==
+ dependencies:
+ bn.js "^5.1.2"
+ buffer-layout "^1.2.0"
+
+"@project-serum/common@^0.0.1-beta.3":
+ version "0.0.1-beta.3"
+ resolved "https://registry.yarnpkg.com/@project-serum/common/-/common-0.0.1-beta.3.tgz#53586eaff9d9fd7e8938b1e12080c935b8b6ad07"
+ integrity sha512-gnQE/eUydTtto5okCgLWj1M97R9RRPJqnhKklikYI7jP/pnNhDmngSXC/dmfzED2GXSJEIKNIlxVw1k+E2Aw3w==
+ dependencies:
+ "@project-serum/serum" "^0.13.21"
+ bn.js "^5.1.2"
+ superstruct "0.8.3"
+
+"@project-serum/serum@^0.13.21", "@project-serum/serum@^0.13.38", "@project-serum/serum@^0.13.61", "@project-serum/serum@^0.13.65":
+ version "0.13.65"
+ resolved "https://registry.yarnpkg.com/@project-serum/serum/-/serum-0.13.65.tgz#6d3cf07912f13985765237f053cca716fe84b0b0"
+ integrity sha512-BHRqsTqPSfFB5p+MgI2pjvMBAQtO8ibTK2fYY96boIFkCI3TTwXDt2gUmspeChKO2pqHr5aKevmexzAcXxrSRA==
+ dependencies:
+ "@project-serum/anchor" "^0.11.1"
+ "@solana/spl-token" "^0.1.6"
+ "@solana/web3.js" "^1.21.0"
+ bn.js "^5.1.2"
+ buffer-layout "^1.2.0"
+
+"@project-serum/sol-wallet-adapter@^0.2.0":
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.6.tgz#b4cd25a566294354427c97c26d716112b91a0107"
+ integrity sha512-cpIb13aWPW8y4KzkZAPDgw+Kb+DXjCC6rZoH74MGm3I/6e/zKyGnfAuW5olb2zxonFqsYgnv7ev8MQnvSgJ3/g==
+ dependencies:
+ bs58 "^4.0.1"
+ eventemitter3 "^4.0.7"
+
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
+
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+
+"@pythnetwork/client@2.5.3":
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.5.3.tgz#86c9f92d01d8f282fdd8b5b11039da654e263988"
+ integrity sha512-NBLxPnA6A3tZb/DYUooD4SO63UJ70s9DzzFPGXcQNBR9itcycp7aaV+UA5oUPloD/4UHL9soo2fRuDVur0gmhA==
+ dependencies:
+ "@solana/web3.js" "^1.30.2"
+ assert "^2.0.0"
+ buffer "^6.0.1"
+
+"@pythnetwork/client@2.7.3":
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.7.3.tgz#6075a16dc394d1734e76b04e907a680490a61536"
+ integrity sha512-+2k5JXxv/yUA6WMESSppJlg4T/AP+nZZfBnHmeG3RPCIJx+bargxFLCK4B2KgpQYdeTWb+2z8yRCNF7tHooCFQ==
+ dependencies:
+ buffer "^6.0.1"
+
+"@pythnetwork/client@^2.9.0":
+ version "2.21.0"
+ resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.21.0.tgz#01506bcdf2b62878fbe1368656bfe1c7581c72d7"
+ integrity sha512-jqUuPLuVKRNUsZfwLuvK/MwnJ3LIrIxBNoz43xt0fjvVuH5QyTlz51ek76CkeKfCbomGKe41Vq7bvn8aqWVOGA==
+ dependencies:
+ "@coral-xyz/anchor" "^0.29.0"
+ "@coral-xyz/borsh" "^0.28.0"
+ buffer "^6.0.1"
+
+"@pythnetwork/client@~2.14.0":
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.14.0.tgz#0c12a7e1bcc66ff198fdb64c003b8d4a24431efc"
+ integrity sha512-tFLGnuIBjlzDa8TrJULzJIdykketGXDJZtO+8+i4XO9l2uOKXzxt+pjt05ng5B9iY63FzJqgAkawT/O3V0NAdQ==
+ dependencies:
+ "@coral-xyz/anchor" "^0.26.0"
+ buffer "^6.0.1"
+
+"@quarryprotocol/quarry-sdk@5.0.2":
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/@quarryprotocol/quarry-sdk/-/quarry-sdk-5.0.2.tgz#f306ef4c0446a2ae7432e6e0593bc3dcb75812ee"
+ integrity sha512-wczlmNfb8fk6WCZsLLR7ysSjgxl6ZdEJ7cNDhgvFpU9E1YMSN1f2l2NK9yw+VksuLxWCightFsBrHSqqIftDzQ==
+ dependencies:
+ superstruct "^0.15.4"
+ tiny-invariant "^1.2.0"
+ tslib "^2.3.1"
+
+"@randlabs/communication-bridge@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@randlabs/communication-bridge/-/communication-bridge-1.0.1.tgz#d1ecfc29157afcbb0ca2d73122d67905eecb5bf3"
+ integrity sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg==
+
+"@randlabs/myalgo-connect@^1.1.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@randlabs/myalgo-connect/-/myalgo-connect-1.4.2.tgz#ce3ad97b3889ea21da75852187511d3f6be0fa05"
+ integrity sha512-K9hEyUi7G8tqOp7kWIALJLVbGCByhilcy6123WfcorxWwiE1sbQupPyIU5f3YdQK6wMjBsyTWiLW52ZBMp7sXA==
+ dependencies:
+ "@randlabs/communication-bridge" "1.0.1"
+
+"@saberhq/anchor-contrib@1.13.32":
+ version "1.13.32"
+ resolved "https://registry.yarnpkg.com/@saberhq/anchor-contrib/-/anchor-contrib-1.13.32.tgz#99c7da5030c92a073a6b934dd11cee3c2893bc9d"
+ integrity sha512-coU3mFuwJCM5hdNkMSxse+WyJskDer6OzAAXCE5bxe8Lm2bQFN1P3uohrBmV6r+eQlK+im+oozne7CyCSmR1lw==
+ dependencies:
+ "@saberhq/solana-contrib" "^1.13.32"
+ eventemitter3 "^4.0.7"
+ lodash.camelcase "^4.3.0"
+ lodash.mapvalues "^4.6.0"
+ tslib "^2.4.0"
+
+"@saberhq/option-utils@^1.15.0":
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/@saberhq/option-utils/-/option-utils-1.15.0.tgz#6415e2ecacac060ef8e00a5f1b32fb113856c1ac"
+ integrity sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==
+ dependencies:
+ tslib "^2.6.2"
+
+"@saberhq/solana-contrib@^1.13.32", "@saberhq/solana-contrib@^1.15.0":
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/@saberhq/solana-contrib/-/solana-contrib-1.15.0.tgz#5b9059fd3bd73eda640a50c9fa89fcd030befe69"
+ integrity sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==
+ dependencies:
+ "@saberhq/option-utils" "^1.15.0"
+ "@solana/buffer-layout" "^4.0.0"
+ "@types/promise-retry" "^1.1.6"
+ "@types/retry" "^0.12.5"
+ promise-retry "^2.0.1"
+ retry "^0.13.1"
+ tiny-invariant "^1.3.1"
+ tslib "^2.6.2"
+
+"@saberhq/stableswap-sdk@1.13.32":
+ version "1.13.32"
+ resolved "https://registry.yarnpkg.com/@saberhq/stableswap-sdk/-/stableswap-sdk-1.13.32.tgz#eb439f7ed08102c971571821e38980c4d0841223"
+ integrity sha512-dE9P6EeXCkH0ay+L0a41SmqQfD/YkSRP+z3p9LCADH4gnKpoSgObEB7LKm7Xp06kq+DQiClJV/ycKd9LRJjCVA==
+ dependencies:
+ "@saberhq/solana-contrib" "^1.13.32"
+ "@saberhq/token-utils" "^1.13.32"
+ "@solana/buffer-layout" "^4.0.0"
+ tiny-invariant "^1.2.0"
+ tslib "^2.4.0"
+
+"@saberhq/token-utils@1.13.32":
+ version "1.13.32"
+ resolved "https://registry.yarnpkg.com/@saberhq/token-utils/-/token-utils-1.13.32.tgz#2acc98bd4d3732b826396a70b958198e0d20dee8"
+ integrity sha512-n5ECiw82IQJwyq9bTkcrbNWVi+lAQoQlJlTmIye8odUQATBsqOWN+clqfrFkn/UMmezO60bo34bUaM0Oir7Pew==
+ dependencies:
+ "@saberhq/solana-contrib" "^1.13.32"
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/spl-token" "^0.1.8"
+ "@ubeswap/token-math" "^5.1.6"
+ tiny-invariant "^1.2.0"
+ tslib "^2.4.0"
+
+"@saberhq/token-utils@^1.13.32":
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/@saberhq/token-utils/-/token-utils-1.15.0.tgz#7f7a222110276ce53332183de00bae5f59eb284d"
+ integrity sha512-XydjtT08Qq6hdJXnfk1NtIZeyOhNyb0YXrVtM6K3OoaH88HjF36niIRv6kMMcWAGm+Hkp1111NyYFhk55PNfOA==
+ dependencies:
+ "@saberhq/solana-contrib" "^1.15.0"
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/spl-token" "^0.1.8"
+ "@ubeswap/token-math" "^5.2.1"
+ tiny-invariant "^1.3.1"
+ tslib "^2.6.2"
+
+"@sideway/address@^4.1.5":
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5"
+ integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
+"@sideway/formula@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f"
+ integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
+
+"@sideway/pinpoint@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
+ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
"@solana/buffer-layout-utils@^0.2.0":
version "0.2.0"
- resolved "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca"
integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==
dependencies:
"@solana/buffer-layout" "^4.0.0"
@@ -161,14 +1487,111 @@
bigint-buffer "^1.1.5"
bignumber.js "^9.0.1"
-"@solana/buffer-layout@^4.0.0":
- version "4.0.0"
- resolved "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz"
- integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==
+"@solana/buffer-layout@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-3.0.0.tgz#b9353caeb9a1589cb77a1b145bcb1a9a93114326"
+ integrity sha512-MVdgAKKL39tEs0l8je0hKaXLQFb7Rdfb0Xg2LjFZd8Lfdazkg6xiS98uAZrEKvaoF3i4M95ei9RydkGIDMeo3w==
dependencies:
buffer "~6.0.3"
-"@solana/spl-token@0.3.8", "@solana/spl-token@^0.3.0", "@solana/spl-token@^0.3.6", "@solana/spl-token@^0.3.8":
+"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15"
+ integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==
+ dependencies:
+ buffer "~6.0.3"
+
+"@solana/codecs-core@2.0.0-experimental.8618508":
+ version "2.0.0-experimental.8618508"
+ resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-experimental.8618508.tgz#4f6709dd50e671267f3bea7d09209bc6471b7ad0"
+ integrity sha512-JCz7mKjVKtfZxkuDtwMAUgA7YvJcA2BwpZaA1NOLcted4OMC4Prwa3DUe3f3181ixPYaRyptbF0Ikq2MbDkYEA==
+
+"@solana/codecs-data-structures@2.0.0-experimental.8618508":
+ version "2.0.0-experimental.8618508"
+ resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-experimental.8618508.tgz#c16a704ac0f743a2e0bf73ada42d830b3402d848"
+ integrity sha512-sLpjL9sqzaDdkloBPV61Rht1tgaKq98BCtIKRuyscIrmVPu3wu0Bavk2n/QekmUzaTsj7K1pVSniM0YqCdnEBw==
+ dependencies:
+ "@solana/codecs-core" "2.0.0-experimental.8618508"
+ "@solana/codecs-numbers" "2.0.0-experimental.8618508"
+
+"@solana/codecs-numbers@2.0.0-experimental.8618508":
+ version "2.0.0-experimental.8618508"
+ resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-experimental.8618508.tgz#d84f9ed0521b22e19125eefc7d51e217fcaeb3e4"
+ integrity sha512-EXQKfzFr3CkKKNzKSZPOOOzchXsFe90TVONWsSnVkonO9z+nGKALE0/L9uBmIFGgdzhhU9QQVFvxBMclIDJo2Q==
+ dependencies:
+ "@solana/codecs-core" "2.0.0-experimental.8618508"
+
+"@solana/codecs-strings@2.0.0-experimental.8618508":
+ version "2.0.0-experimental.8618508"
+ resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-experimental.8618508.tgz#72457b884d9be80b59b263bcce73892b081e9402"
+ integrity sha512-b2yhinr1+oe+JDmnnsV0641KQqqDG8AQ16Z/x7GVWO+AWHMpRlHWVXOq8U1yhPMA4VXxl7i+D+C6ql0VGFp0GA==
+ dependencies:
+ "@solana/codecs-core" "2.0.0-experimental.8618508"
+ "@solana/codecs-numbers" "2.0.0-experimental.8618508"
+
+"@solana/options@2.0.0-experimental.8618508":
+ version "2.0.0-experimental.8618508"
+ resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-experimental.8618508.tgz#95385340e85f9e8a81b2bfba089404a61c8e9520"
+ integrity sha512-fy/nIRAMC3QHvnKi63KEd86Xr/zFBVxNW4nEpVEU2OT0gCEKwHY4Z55YHf7XujhyuM3PNpiBKg/YYw5QlRU4vg==
+ dependencies:
+ "@solana/codecs-core" "2.0.0-experimental.8618508"
+ "@solana/codecs-numbers" "2.0.0-experimental.8618508"
+
+"@solana/spl-memo@^0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@solana/spl-memo/-/spl-memo-0.2.3.tgz#594a28c37b40c0e22143f38f71b4f56d1f5b24fd"
+ integrity sha512-CNsKSsl85ebuVoeGq1LDYi5M/PMs1Pxv2/UsyTgS6b30qrYqZOXha5ouZzgGKtJtZ3C3dxfOAEw6caJPN1N63w==
+ dependencies:
+ buffer "^6.0.3"
+
+"@solana/spl-token-metadata@^0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.2.tgz#876e13432bd2960bd3cac16b9b0af63e69e37719"
+ integrity sha512-hJYnAJNkDrtkE2Q41YZhCpeOGU/0JgRFXbtrtOuGGeKc3pkEUHB9DDoxZAxx+XRno13GozUleyBi0qypz4c3bw==
+ dependencies:
+ "@solana/codecs-core" "2.0.0-experimental.8618508"
+ "@solana/codecs-data-structures" "2.0.0-experimental.8618508"
+ "@solana/codecs-numbers" "2.0.0-experimental.8618508"
+ "@solana/codecs-strings" "2.0.0-experimental.8618508"
+ "@solana/options" "2.0.0-experimental.8618508"
+ "@solana/spl-type-length-value" "0.1.0"
+
+"@solana/spl-token-registry@0.2.1105":
+ version "0.2.1105"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token-registry/-/spl-token-registry-0.2.1105.tgz#460fc363096aa59c5150f67736cddc1d5a810e8a"
+ integrity sha512-s9MIUoTAtqYsg1RaXIHXq7DhsUVS9VckvrwYuJBFn68YCZNSMUEquqaimbaHi88OVduFsApVAbKRmsGnJ9abIw==
+ dependencies:
+ cross-fetch "3.0.6"
+
+"@solana/spl-token-registry@^0.2.1107", "@solana/spl-token-registry@^0.2.4574":
+ version "0.2.4574"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token-registry/-/spl-token-registry-0.2.4574.tgz#13f4636b7bec90d2bb43bbbb83512cd90d2ce257"
+ integrity sha512-JzlfZmke8Rxug20VT/VpI2XsXlsqMlcORIUivF+Yucj7tFi7A0dXG7h+2UnD0WaZJw8BrUz2ABNkUnv89vbv1A==
+ dependencies:
+ cross-fetch "3.0.6"
+
+"@solana/spl-token@0.1.8", "@solana/spl-token@^0.1.6", "@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/spl-token@0.3.7":
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.7.tgz#6f027f9ad8e841f792c32e50920d9d2e714fc8da"
+ integrity sha512-bKGxWTtIw6VDdCBngjtsGlKGLSmiu/8ghSt/IOYJV24BsymRbgq7r12GToeetpxmPaZYLddKwAz7+EwprLfkfg==
+ dependencies:
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/buffer-layout-utils" "^0.2.0"
+ buffer "^6.0.3"
+
+"@solana/spl-token@0.3.8":
version "0.3.8"
resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.8.tgz#8e9515ea876e40a4cc1040af865f61fc51d27edf"
integrity sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==
@@ -177,10 +1600,56 @@
"@solana/buffer-layout-utils" "^0.2.0"
buffer "^6.0.3"
-"@solana/web3.js@^1.32.0":
- version "1.62.0"
- resolved "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.62.0.tgz"
- integrity sha512-rHnqJR5ECooUp8egurP9Qi1SKI1Q3pbF2ZkaHbEmFsSjBsyEe+Qqxa5h+7ueylqApYyk0zawnxz83y4kdrlNIA==
+"@solana/spl-token@^0.2.0", "spl2@npm:@solana/spl-token@^0.2.0":
+ name spl2
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.2.0.tgz#329bb6babb5de0f9c40035ddb1657f01a8347acd"
+ integrity sha512-RWcn31OXtdqIxmkzQfB2R+WpsJOVS6rKuvpxJFjvik2LyODd+WN58ZP3Rpjpro03fscGAkzlFuP3r42doRJgyQ==
+ dependencies:
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/buffer-layout-utils" "^0.2.0"
+ "@solana/web3.js" "^1.32.0"
+ start-server-and-test "^1.14.0"
+
+"@solana/spl-token@^0.3.6", "@solana/spl-token@^0.3.7", "@solana/spl-token@^0.3.8":
+ version "0.3.11"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a"
+ integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==
+ dependencies:
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/buffer-layout-utils" "^0.2.0"
+ "@solana/spl-token-metadata" "^0.1.2"
+ buffer "^6.0.3"
+
+"@solana/spl-type-length-value@0.1.0":
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b"
+ integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==
+ dependencies:
+ buffer "^6.0.3"
+
+"@solana/wallet-adapter-base@^0.9.2", "@solana/wallet-adapter-base@^0.9.20":
+ version "0.9.23"
+ resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.23.tgz#3b17c28afd44e173f44f658bf9700fd637e12a11"
+ integrity sha512-apqMuYwFp1jFi55NxDfvXUX2x1T0Zh07MxhZ/nCCTGys5raSfYUh82zen2BLv8BSDj/JxZ2P/s7jrQZGrX8uAw==
+ dependencies:
+ "@solana/wallet-standard-features" "^1.1.0"
+ "@wallet-standard/base" "^1.0.1"
+ "@wallet-standard/features" "^1.0.3"
+ eventemitter3 "^4.0.7"
+
+"@solana/wallet-standard-features@^1.1.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@solana/wallet-standard-features/-/wallet-standard-features-1.2.0.tgz#be8b3824abf5ebcfeaa7298445bf53f76a27c935"
+ integrity sha512-tUd9srDLkRpe1BYg7we+c4UhRQkq+XQWswsr/L1xfGmoRDF47BPSXf4zE7ZU2GRBGvxtGt7lwJVAufQyQYhxTQ==
+ dependencies:
+ "@wallet-standard/base" "^1.0.1"
+ "@wallet-standard/features" "^1.0.3"
+
+"@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"
@@ -198,16 +1667,16 @@
rpc-websockets "^7.5.0"
superstruct "^0.14.2"
-"@solana/web3.js@^1.56.2", "@solana/web3.js@^1.66.2":
- version "1.87.5"
- resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.87.5.tgz#74df3f19ef65e3a419bd1810f500f8e51f4ab63b"
- integrity sha512-hy5RVGVw8eXq//g41mIFhk5Jx4QH1CwbkPiQn/3MmHp6VD2HBRVMMZUSGUhYZxbK7NoIjQUsiv4MOlnl3VaUag==
+"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.33.0", "@solana/web3.js@^1.35.1", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.37.0", "@solana/web3.js@^1.42.0", "@solana/web3.js@^1.43.5", "@solana/web3.js@^1.52.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.63.1", "@solana/web3.js@^1.66.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.70.3", "@solana/web3.js@^1.71.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.78.3", "@solana/web3.js@^1.87.6", "@solana/web3.js@^1.90.0":
+ version "1.91.0"
+ resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.91.0.tgz#a763b0fcca0fa005adce3d02f3a4b6d1b84eccb7"
+ integrity sha512-iqOL9RjNra0TM9BbQWxBRUcZUiNmCJJO+vXLp0GiELUJhbNAoE/K6OV6s+gNEsC13dslvKtfA4mmzRnZNWXtIQ==
dependencies:
- "@babel/runtime" "^7.23.2"
+ "@babel/runtime" "^7.23.4"
"@noble/curves" "^1.2.0"
- "@noble/hashes" "^1.3.1"
- "@solana/buffer-layout" "^4.0.0"
- agentkeepalive "^4.3.0"
+ "@noble/hashes" "^1.3.3"
+ "@solana/buffer-layout" "^4.0.1"
+ agentkeepalive "^4.5.0"
bigint-buffer "^1.1.5"
bn.js "^5.2.1"
borsh "^0.7.0"
@@ -215,14 +1684,14 @@
buffer "6.0.3"
fast-stable-stringify "^1.0.0"
jayson "^4.1.0"
- node-fetch "^2.6.12"
+ node-fetch "^2.7.0"
rpc-websockets "^7.5.1"
superstruct "^0.14.2"
-"@solana/web3.js@^1.68.0":
- version "1.73.2"
- resolved "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.73.2.tgz"
- integrity sha512-9WACF8W4Nstj7xiDw3Oom22QmrhBh0VyZyZ7JvvG3gOxLWLlX3hvm5nPVJOGcCE/9fFavBbCUb5A6CIuvMGdoA==
+"@solana/web3.js@~1.72.0":
+ version "1.72.0"
+ resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.72.0.tgz#8d54de6887bc885c78a4a2bebe891c349fbb029e"
+ integrity sha512-xMoCk0y/GpiQhHbRjMcrd5NpmkwhAA0c01id7lrr6nhNdz6Uc/CywPdBeZw3Qz6BVZ/qlUoerpKPWeiXqMUjwA==
dependencies:
"@babel/runtime" "^7.12.5"
"@noble/ed25519" "^1.7.0"
@@ -241,107 +1710,249 @@
rpc-websockets "^7.5.0"
superstruct "^0.14.2"
-"@solana/web3.js@^1.77.3":
- version "1.87.2"
- resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.87.2.tgz#d83484ab576f421342138ca1e0b98d2b9cfc6a00"
- integrity sha512-TZNhS+tvJbYjm0LAvIkUy/3Aqgt2l6/3X6XsVUpvj5MGOl2Q6Ch8hYSxcUUtMbAFNN3sUXmV8NhhMLNJEvI6TA==
+"@sqds/multisig@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@sqds/multisig/-/multisig-2.0.0.tgz#ac9c842c47b828dc2994813e3f7858efb317b886"
+ integrity sha512-tiZB1cOi/6Xzolqq/xBAtjoXnmto9tH3qGkbTL9j1SsRFVkIdIZaP2qkzh2ocgH3vYb8e1xsfA4hHjiVJVHLXA==
dependencies:
- "@babel/runtime" "^7.22.6"
- "@noble/curves" "^1.2.0"
- "@noble/hashes" "^1.3.1"
- "@solana/buffer-layout" "^4.0.0"
- agentkeepalive "^4.3.0"
- bigint-buffer "^1.1.5"
+ "@metaplex-foundation/beet" "0.7.1"
+ "@metaplex-foundation/beet-solana" "0.4.0"
+ "@metaplex-foundation/cusper" "^0.0.2"
+ "@solana/spl-token" "^0.3.6"
+ "@solana/web3.js" "^1.70.3"
+ "@types/bn.js" "^5.1.1"
+ assert "^2.0.0"
bn.js "^5.2.1"
- borsh "^0.7.0"
- bs58 "^4.0.1"
buffer "6.0.3"
- fast-stable-stringify "^1.0.0"
- jayson "^4.1.0"
- node-fetch "^2.6.12"
- rpc-websockets "^7.5.1"
- superstruct "^0.14.2"
+ invariant "2.2.4"
-"@types/bn.js@^5.1.0":
- version "5.1.1"
- resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz"
- integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==
+"@supercharge/promise-pool@^2.1.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@supercharge/promise-pool/-/promise-pool-2.4.0.tgz#6050eea8c2d7f92ddd4ddc582ee328b15c034ad3"
+ integrity sha512-O9CMipBlq5OObdt1uKJGIzm9cdjpPWfj+a+Zw9EgWKxaMNHKC7EU7X9taj3H0EGQNLOSq2jAcOa3EzxlfHsD6w==
+
+"@switchboard-xyz/common@^2.3.6":
+ version "2.3.17"
+ resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-2.3.17.tgz#4da631540cf189909df394cb3aa54ca32241d9ba"
+ integrity sha512-gg3nLz1Esb1pMt1mhhEkAYNFsvlYEpH+n3mNyguaGPIUF7AFnpzj9xU3aKPQqT2MeJWg+EmU32WFOdLwTK7X7A==
+ dependencies:
+ big.js "^6.2.1"
+ bn.js "^5.2.1"
+ bs58 "^5.0.0"
+ cron-validator "^1.3.1"
+ decimal.js "^10.4.3"
+ lodash "^4.17.21"
+ protobufjs "^7.2.4"
+ yaml "^2.2.1"
+
+"@switchboard-xyz/sbv2-lite@^0.1.6":
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@switchboard-xyz/sbv2-lite/-/sbv2-lite-0.1.6.tgz#dc3fbb5b3b028dbd3c688b991bcc48a670131ddb"
+ integrity sha512-yNNBBPpqefrf6QaUw7pKj1MYOtITaH5lqpGKdSMOqzGmtTOCBPI9P9Hz/ZfQEzbuRIUws1aNEazxYzitBo1q7Q==
+ dependencies:
+ "@project-serum/anchor" "^0.24.2"
+ big.js "^6.1.1"
+
+"@switchboard-xyz/solana.js@^2.1.10":
+ version "2.8.4"
+ resolved "https://registry.yarnpkg.com/@switchboard-xyz/solana.js/-/solana.js-2.8.4.tgz#383ee63d17040199acf36a88802a65df512ed9c3"
+ integrity sha512-kiFLAXKfNdAEUWZSdXuCCgs2ISKRJL8dayweKq5KIvQfxOmNEqENuaWwEaWP+7MiVUZotbF3oNG1xQNlKDcXLg==
+ dependencies:
+ "@coral-xyz/anchor" "^0.28.0"
+ "@coral-xyz/borsh" "^0.28.0"
+ "@solana/spl-token" "^0.3.8"
+ "@solana/web3.js" "^1.78.3"
+ "@switchboard-xyz/common" "^2.3.6"
+ cron-validator "^1.3.1"
+ dotenv "^16.3.1"
+ lodash "^4.17.21"
+
+"@switchboard-xyz/switchboard-api@^0.2.150":
+ version "0.2.201"
+ resolved "https://registry.yarnpkg.com/@switchboard-xyz/switchboard-api/-/switchboard-api-0.2.201.tgz#d082206d521d24dbcdeb06a77e6637a56ab883eb"
+ integrity sha512-hlxgeYmO6dbOEcmQzT1SqRxdiCFyVOMpyW4HFPgmPKT0+wSVkjsLc+BKkMGYPDaO0sWMLTJrj0FGhhTsrqd8Mg==
+ dependencies:
+ "@solana/web3.js" "^1.17.0"
+ form-data "^4.0.0"
+ protobufjs "^6.10.2"
+ rpc-websockets "^7.4.12"
+ typedoc "^0.22.15"
+ ws "^7.4.6"
+
+"@switchboard-xyz/switchboard-v2@^0.0.67":
+ version "0.0.67"
+ resolved "https://registry.yarnpkg.com/@switchboard-xyz/switchboard-v2/-/switchboard-v2-0.0.67.tgz#2fb1f2f18266f6963cca3ff31da1196dc3172c8d"
+ integrity sha512-6yFFCSrc7MGLEu2bfRt4dzcYfWyBF8JoA2N/hTZUDqAw9xaEgSSR7laTvHAjVy4m4MVwu7DLadpCivLy/QEPLA==
+ dependencies:
+ "@project-serum/anchor" "^0.22.0"
+ "@solana/spl-token" "^0.1.8"
+ "@solana/web3.js" "^1.33.0"
+ "@switchboard-xyz/switchboard-api" "^0.2.150"
+ assert "^2.0.0"
+ big.js "^6.1.1"
+ bs58 "^4.0.1"
+ buffer-layout "^1.2.0"
+ chan "^0.6.1"
+ crypto-js "^4.0.0"
+ long "^4.0.0"
+ protobufjs "^6.10.2"
+ ts-proto "^1.79.0"
+ typescript "^4.2.4"
+
+"@types/big.js@^6.1.6":
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3"
+ integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==
+
+"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1":
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0"
+ integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==
dependencies:
"@types/node" "*"
"@types/chai@^4.3.0":
- version "4.3.3"
- resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz"
- integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==
+ version "4.3.12"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.12.tgz#b192fe1c553b54f45d20543adc2ab88455a07d5e"
+ integrity sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==
"@types/connect@^3.4.33":
- version "3.4.35"
- resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz"
- integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
+ version "3.4.38"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858"
+ integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==
dependencies:
"@types/node" "*"
"@types/json5@^0.0.29":
version "0.0.29"
- resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
+"@types/long@^4.0.1":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
+ integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
+
"@types/mocha@^9.0.0":
version "9.1.1"
- resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
-"@types/node@*", "@types/node@^20.8.6":
- version "20.8.6"
- resolved "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz"
- integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==
+"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.8.6":
+ version "20.11.25"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.25.tgz#0f50d62f274e54dd7a49f7704cc16bfbcccaf49f"
+ integrity sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==
dependencies:
- undici-types "~5.25.1"
+ undici-types "~5.26.4"
+
+"@types/node@11.11.6":
+ version "11.11.6"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a"
+ integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==
"@types/node@^12.12.54":
version "12.20.55"
- resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240"
integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==
+"@types/promise-retry@^1.1.6":
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/@types/promise-retry/-/promise-retry-1.1.6.tgz#3c48826d8a27f68f9d4900fc7448f08a1532db44"
+ integrity sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==
+ dependencies:
+ "@types/retry" "*"
+
+"@types/retry@*", "@types/retry@^0.12.5":
+ version "0.12.5"
+ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e"
+ integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==
+
"@types/ws@^7.4.4":
version "7.4.7"
- resolved "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz"
+ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==
dependencies:
"@types/node" "*"
+"@ubeswap/token-math@^5.1.6", "@ubeswap/token-math@^5.2.1":
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/@ubeswap/token-math/-/token-math-5.2.1.tgz#66e70ba8d65b5fdb1b7459332fbdad4ddec32a64"
+ integrity sha512-wkIKDKIl6rml4CVK3fvjjLVk55Z8qEYTgjxZx7MnrTwECazyhiDuekb9WAaDPXcW5QNffCu8uv4Ba8wE96CJsg==
+ dependencies:
+ "@types/big.js" "^6.1.6"
+ big.js "^6.2.1"
+ decimal.js-light "^2.5.1"
+ tiny-invariant "^1.2.0"
+ tslib "^2.4.0"
+
"@ungap/promise-all-settled@1.1.2":
version "1.1.2"
- resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz"
+ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
+"@wallet-standard/base@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@wallet-standard/base/-/base-1.0.1.tgz#860dd94d47c9e3c5c43b79d91c6afdbd7a36264e"
+ integrity sha512-1To3ekMfzhYxe0Yhkpri+Fedq0SYcfrOfJi3vbLjMwF2qiKPjTGLwZkf2C9ftdQmxES+hmxhBzTwF4KgcOwf8w==
+
+"@wallet-standard/features@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@wallet-standard/features/-/features-1.0.3.tgz#c992876c5e4f7a0672f8869c4146c87e0dfe48c8"
+ integrity sha512-m8475I6W5LTatTZuUz5JJNK42wFRgkJTB0I9tkruMwfqBF2UN2eomkYNVf9RbrsROelCRzSFmugqjKZBFaubsA==
+ dependencies:
+ "@wallet-standard/base" "^1.0.1"
+
JSONStream@^1.3.5:
version "1.3.5"
- resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
+ 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"
-agentkeepalive@^4.2.1:
- version "4.2.1"
- resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz"
- integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==
+aes-js@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
+ integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
- debug "^4.1.0"
- depd "^1.1.2"
- humanize-ms "^1.2.1"
+ debug "4"
-agentkeepalive@^4.3.0:
+agentkeepalive@^4.2.1, agentkeepalive@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923"
integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==
dependencies:
humanize-ms "^1.2.1"
+algo-msgpack-with-bigint@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/algo-msgpack-with-bigint/-/algo-msgpack-with-bigint-2.1.1.tgz#38bb717220525b3ff42232eefdcd9efb9ad405d6"
+ integrity sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==
+
+algosdk@^1.13.1:
+ version "1.24.1"
+ resolved "https://registry.yarnpkg.com/algosdk/-/algosdk-1.24.1.tgz#afc4102457ae0c38a32de6b84f4d713aedfc9e89"
+ integrity sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==
+ dependencies:
+ algo-msgpack-with-bigint "^2.1.1"
+ buffer "^6.0.2"
+ cross-fetch "^3.1.5"
+ hi-base32 "^0.5.1"
+ js-sha256 "^0.9.0"
+ js-sha3 "^0.8.0"
+ js-sha512 "^0.8.0"
+ json-bigint "^1.0.0"
+ tweetnacl "^1.0.3"
+ vlq "^2.0.4"
+
anchor-bankrun@^0.2.0:
version "0.2.0"
- resolved "https://registry.npmjs.org/anchor-bankrun/-/anchor-bankrun-0.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/anchor-bankrun/-/anchor-bankrun-0.2.0.tgz#c40f18b2b666eadb6de52588073f761abb581c32"
integrity sha512-k/GIiYjkFzj10iluAXPjLjDInZtNNZ2FTcCTrtqgxwm5wofLbD8T0sy13LU9IfQSirj8/6eaTawDo+IvI03KRQ==
dependencies:
"@coral-xyz/anchor" "^0.28.0"
@@ -349,17 +1960,24 @@ anchor-bankrun@^0.2.0:
ansi-colors@4.1.1:
version "4.1.1"
- resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+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.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
- resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
@@ -370,13 +1988,35 @@ ansicolors@^0.3.2:
integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
anymatch@~3.1.2:
- version "3.1.2"
- resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz"
- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+arbundles@^0.6.21:
+ version "0.6.23"
+ resolved "https://registry.yarnpkg.com/arbundles/-/arbundles-0.6.23.tgz#c00cda953df67fa65d4297486237cc8e0c072c47"
+ integrity sha512-+gr93F3fivN+6dhiImT6BQNaXz4oECPn2GYjCZjS2yEoq7hM78FRvVp6kQyjEdhnuBFQr/q4oS/nkjnQlHdj9Q==
+ dependencies:
+ "@noble/ed25519" "^1.6.1"
+ "@randlabs/myalgo-connect" "^1.1.2"
+ "@solana/wallet-adapter-base" "^0.9.2"
+ algosdk "^1.13.1"
+ arweave "^1.11.4"
+ arweave-stream-tx "^1.1.0"
+ avsc "https://github.com/Irys-xyz/avsc#csp-fixes"
+ axios "^0.21.3"
+ base64url "^3.0.1"
+ bs58 "^4.0.1"
+ ethers "^5.5.1"
+ keccak "^3.0.2"
+ multistream "^4.1.0"
+ process "^0.11.10"
+ secp256k1 "^4.0.2"
+ tmp-promise "^3.0.2"
+
arconnect@^0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/arconnect/-/arconnect-0.4.2.tgz#83de7638fb46183e82d7ec7efb5594c5f7cdc806"
@@ -384,17 +2024,29 @@ arconnect@^0.4.2:
dependencies:
arweave "^1.10.13"
+arg@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
+ integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
+
argparse@^2.0.1:
version "2.0.1"
- resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
arrify@^1.0.0:
version "1.0.1"
- resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==
-arweave@^1.10.13, arweave@^1.14.4:
+arweave-stream-tx@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/arweave-stream-tx/-/arweave-stream-tx-1.2.2.tgz#2d5c66554301baacd02586a152fbb198b422112f"
+ integrity sha512-bNt9rj0hbAEzoUZEF2s6WJbIz8nasZlZpxIw03Xm8fzb9gRiiZlZGW3lxQLjfc9Z0VRUWDzwtqoYeEoB/JDToQ==
+ dependencies:
+ exponential-backoff "^3.1.0"
+
+arweave@^1.10.13, arweave@^1.11.4, arweave@^1.14.4:
version "1.14.4"
resolved "https://registry.yarnpkg.com/arweave/-/arweave-1.14.4.tgz#5ba22136aa0e7fd9495258a3931fb770c9d6bf21"
integrity sha512-tmqU9fug8XAmFETYwgUhLaD3WKav5DaM4p1vgJpEj/Px2ORPPMikwnSySlFymmL2qgRh2ZBcZsg11+RXPPGLsA==
@@ -414,19 +2066,84 @@ asn1.js@^5.4.1:
minimalistic-assert "^1.0.0"
safer-buffer "^2.1.0"
+assert@^2.0.0, assert@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd"
+ integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==
+ dependencies:
+ call-bind "^1.0.2"
+ is-nan "^1.3.2"
+ object-is "^1.1.5"
+ object.assign "^4.1.4"
+ util "^0.12.5"
+
assertion-error@^1.1.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
+async-retry@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280"
+ integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==
+ dependencies:
+ retry "0.13.1"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+available-typed-arrays@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
+
+"avsc@https://github.com/Irys-xyz/avsc#csp-fixes":
+ version "5.4.7"
+ resolved "https://github.com/Irys-xyz/avsc#a730cc8018b79e114b6a3381bbb57760a24c6cef"
+
+axios@^0.21.3:
+ version "0.21.4"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+ integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+ dependencies:
+ follow-redirects "^1.14.0"
+
+axios@^0.25.0:
+ version "0.25.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a"
+ integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==
+ dependencies:
+ follow-redirects "^1.14.7"
+
+axios@^0.27.2:
+ version "0.27.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
+ integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
+ dependencies:
+ follow-redirects "^1.14.9"
+ form-data "^4.0.0"
+
+axios@^1.2.1:
+ version "1.6.7"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7"
+ integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==
+ dependencies:
+ follow-redirects "^1.15.4"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
balanced-match@^1.0.0:
version "1.0.2"
- resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+ 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.npmjs.org/base-x/-/base-x-3.0.9.tgz"
+ 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"
@@ -438,51 +2155,127 @@ base-x@^4.0.0:
base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
- resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+base64url@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d"
+ integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==
+
+bech32@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
+ integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
+
+big.js@^6.1.1, big.js@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f"
+ integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==
+
bigint-buffer@^1.1.5:
version "1.1.5"
- resolved "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz"
+ 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"
-bignumber.js@^9.0.1:
- version "9.1.0"
- resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz"
- integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==
-
-bignumber.js@^9.0.2:
+bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.0.2, bignumber.js@^9.1.1:
version "9.1.2"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c"
integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==
+binance-api-node@^0.12.0:
+ version "0.12.7"
+ resolved "https://registry.yarnpkg.com/binance-api-node/-/binance-api-node-0.12.7.tgz#bce64742d5dc5a9398df3cbd861c486b4d4df075"
+ integrity sha512-hEIPaZg1YwZClOznAJo5Zb1JyxsqdYjT8twG48rhOwhbNVrLJRxkeGj+PTa881wFXOtyOtyrXsDytsEcI2EUHA==
+ dependencies:
+ https-proxy-agent "^5.0.0"
+ isomorphic-fetch "^3.0.0"
+ isomorphic-ws "^4.0.1"
+ json-bigint "^1.0.0"
+ lodash.zipobject "^4.1.3"
+ reconnecting-websocket "^4.2.0"
+ ws "^7.2.0"
+
binary-extensions@^2.0.0:
version "2.2.0"
- resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
bindings@^1.3.0:
version "1.5.0"
- resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz"
+ 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@^4.0.0:
+bip39-light@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/bip39-light/-/bip39-light-1.0.7.tgz#06a72f251b89389a136d3f177f29b03342adc5ba"
+ integrity sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q==
+ dependencies:
+ create-hash "^1.1.0"
+ pbkdf2 "^3.0.9"
+
+bip39@3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32"
+ integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==
+ dependencies:
+ "@types/node" "11.11.6"
+ create-hash "^1.1.0"
+ pbkdf2 "^3.0.9"
+ randombytes "^2.0.1"
+
+bl@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
+ dependencies:
+ buffer "^5.5.0"
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+
+bluebird@3.7.2:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn-sqrt@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bn-sqrt/-/bn-sqrt-1.0.0.tgz#aac3fcb56a359850d8339d3925213ac27c22b782"
+ integrity sha512-XdCMQ7tfEF/f7nrQgnrJ+DLQBwQzSQyPOKIXdUOTcGEvsRKBcIsdfORp7B5H8DWo8FOzZ4+a2TjSZzaqKgzicg==
+ dependencies:
+ bn.js "^5.2.0"
+
+bn.js@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
+ integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
+
+bn.js@5.2.1, bn.js@^5.0.0, bn.js@^5.1.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1:
+ 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==
+
+bn.js@^4.0.0, bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1:
- version "5.2.1"
- resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz"
- integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+borsh@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.6.0.tgz#a7c9eeca6a31ca9e0607cb49f329cb659eb791e1"
+ integrity sha512-sl5k89ViqsThXQpYa9XDtz1sBl3l1lI313cFUY1HKr+wvMILnb+58xpkqTNrYbelh99dY7K8usxoCusQmqix9Q==
+ dependencies:
+ bn.js "^5.2.0"
+ bs58 "^4.0.0"
+ text-encoding-utf-8 "^1.0.2"
borsh@^0.7.0:
version "0.7.0"
- resolved "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz"
+ resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a"
integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==
dependencies:
bn.js "^5.2.0"
@@ -491,27 +2284,39 @@ borsh@^0.7.0:
brace-expansion@^1.1.7:
version "1.1.11"
- resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ 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"
+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.npmjs.org/braces/-/braces-3.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
+brorand@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
+
browser-stdout@1.3.1:
version "1.3.1"
- resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz"
+ resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
bs58@^4.0.0, bs58@^4.0.1:
version "4.0.1"
- resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a"
integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==
dependencies:
base-x "^3.0.2"
@@ -525,71 +2330,122 @@ bs58@^5.0.0:
buffer-from@^1.0.0, buffer-from@^1.1.0:
version "1.1.2"
- resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
+ 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, buffer-layout@^1.2.2:
+buffer-layout@1.2.2, buffer-layout@^1.2.0, buffer-layout@^1.2.1, buffer-layout@^1.2.2:
version "1.2.2"
- resolved "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz"
+ 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.npmjs.org/buffer/-/buffer-6.0.1.tgz"
+ 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, buffer@~6.0.3:
+buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.2, buffer@^6.0.3, buffer@~6.0.3:
version "6.0.3"
- resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz"
+ 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.6"
- resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz"
- integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==
+buffer@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+bufferutil@^4.0.1, bufferutil@^4.0.6:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea"
+ integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==
dependencies:
node-gyp-build "^4.3.0"
+call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
+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.0.0, camelcase@^6.3.0:
version "6.3.0"
- resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-chai@^4.3.4:
- version "4.3.6"
- resolved "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz"
- integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==
+capability@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801"
+ integrity sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==
+
+case-anything@^2.1.13:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9"
+ integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==
+
+chai@^4.3.4, chai@^4.3.7:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1"
+ integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
dependencies:
assertion-error "^1.1.0"
- check-error "^1.0.2"
- deep-eql "^3.0.1"
- get-func-name "^2.0.0"
- loupe "^2.3.1"
+ check-error "^1.0.3"
+ deep-eql "^4.1.3"
+ get-func-name "^2.0.2"
+ loupe "^2.3.6"
pathval "^1.1.1"
- type-detect "^4.0.5"
+ type-detect "^4.0.8"
-chalk@^4.1.0:
+chalk@^4.1.0, chalk@^4.1.1:
version "4.1.2"
- resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ 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"
-check-error@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz"
- integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
+chan@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/chan/-/chan-0.6.1.tgz#ec0ad132e5bc62c27ef10ccbfc4d8dcd8ca00640"
+ integrity sha512-/TdBP2UhbBmw7qnqkzo9Mk4rzvwRv4dlNPXFerqWy90T8oBspKagJNZxrDbExKHhx9uXXHjo3f9mHgs9iKO3nQ==
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-error@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
+ integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
+ dependencies:
+ get-func-name "^2.0.2"
+
+check-more-types@2.24.0:
+ version "2.24.0"
+ resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
+ integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
chokidar@3.5.3:
version "3.5.3"
- resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
dependencies:
anymatch "~3.1.2"
@@ -602,210 +2458,639 @@ chokidar@3.5.3:
optionalDependencies:
fsevents "~2.3.2"
+cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-spinners@^2.5.0:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
+ integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
+
+cli-width@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
+ integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
cliui@^7.0.2:
version "7.0.4"
- resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
+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"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
color-convert@^2.0.1:
version "2.0.1"
- resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
+ 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.4:
version "1.1.4"
- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
commander@^2.20.3:
version "2.20.3"
- resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^8.2.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
+ integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
concat-map@0.0.1:
version "0.0.1"
- resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+crc@^4.1.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/crc/-/crc-4.3.2.tgz#49b7821cbf2cf61dfd079ed93863bbebd5469b9a"
+ integrity sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@1.1.7, create-hmac@^1.1.4:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cron-validator@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.3.1.tgz#8f2fe430f92140df77f91178ae31fc1e3a48a20e"
+ integrity sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==
+
+cross-fetch@3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c"
+ integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==
+ dependencies:
+ node-fetch "2.6.1"
+
cross-fetch@^3.1.5:
- version "3.1.5"
- resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz"
- integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==
+ version "3.1.8"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82"
+ integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==
+ dependencies:
+ node-fetch "^2.6.12"
+
+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:
- node-fetch "2.6.7"
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
crypto-hash@^1.3.0:
version "1.3.0"
- resolved "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz"
+ resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247"
integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==
-debug@4.3.3:
- version "4.3.3"
- resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz"
- integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+crypto-js@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
+ integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
+
+csv-generate@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-4.4.0.tgz#007575d825e537d9690e687f82fdf4a745e8c226"
+ integrity sha512-geM01acNPZ0wr4/9sKev5fCzFG/tsc/NbuFWrhLc47M1zQyUdEJH65+cxTLIVafEwhBjIYwQ7fdOL9roBqVltQ==
+
+csv-parse@^5.5.5:
+ version "5.5.5"
+ resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.5.5.tgz#68a271a9092877b830541805e14c8a80e6a22517"
+ integrity sha512-erCk7tyU3yLWAhk6wvKxnyPtftuy/6Ak622gOO7BCJ05+TYffnPCJF905wmOQm+BpkX54OdAl8pveJwUdpnCXQ==
+
+csv-stringify@^6.4.6:
+ version "6.4.6"
+ resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-6.4.6.tgz#9ccf87cb8b017c96673a9fa061768c8ba83e8b98"
+ integrity sha512-h2V2XZ3uOTLilF5dPIptgUfN/o2ia/80Ie0Lly18LAnw5s8Eb7kt8rfxSUy24AztJZas9f6DPZpVlzDUtFt/ag==
+
+csv@^6.0.5:
+ version "6.3.8"
+ resolved "https://registry.yarnpkg.com/csv/-/csv-6.3.8.tgz#c38ad67093622b9fcbce0afaeaab29d1bddeeceb"
+ integrity sha512-gRh3yiT9bHBA5ka2yOpyFqAVu/ZpwWzajMUR/es0ljevAE88WyHBuMUy7jzd2o5j6LYQesEO/AyhbQ9BhbDXUA==
dependencies:
- ms "2.1.2"
+ csv-generate "^4.4.0"
+ csv-parse "^5.5.5"
+ csv-stringify "^6.4.6"
+ stream-transform "^3.3.1"
-debug@^4.1.0, debug@^4.3.3, debug@^4.3.4:
+debug@4, debug@4.3.4, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
- resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
+debug@4.3.3:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ dependencies:
+ ms "2.1.2"
+
decamelize@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
-deep-eql@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz"
- integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
+decimal.js-light@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934"
+ integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==
+
+decimal.js@10.3.1:
+ version "10.3.1"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783"
+ integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==
+
+decimal.js@^10.3.1, decimal.js@^10.4.1, decimal.js@^10.4.3:
+ version "10.4.3"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
+ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
+
+deep-eql@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
+ integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
dependencies:
type-detect "^4.0.0"
+defaults@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
+ integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
+ dependencies:
+ clone "^1.0.2"
+
+define-data-property@^1.0.1, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
+define-properties@^1.1.3, define-properties@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
+ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
+ dependencies:
+ define-data-property "^1.0.1"
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
delay@^5.0.0:
version "5.0.0"
- resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
-depd@^1.1.2:
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+depd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+depd@~1.1.2:
version "1.1.2"
- resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
+detect-libc@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+
diff@5.0.0:
version "5.0.0"
- resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
diff@^3.1.0:
version "3.5.0"
- resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
dot-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
+ 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, dotenv@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
+ integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
+
+dotenv@^16.0.1, dotenv@^16.0.3, dotenv@^16.3.1:
+ version "16.4.5"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
+ integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+
+dprint-node@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/dprint-node/-/dprint-node-1.0.8.tgz#a02470722d8208a7d7eb3704328afda1d6758625"
+ integrity sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==
+ dependencies:
+ detect-libc "^1.0.3"
+
+duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+elliptic@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+elliptic@^6.5.4:
+ version "6.5.5"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded"
+ integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
emoji-regex@^8.0.0:
version "8.0.0"
- resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+err-code@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
+ integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+
+error-polyfill@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/error-polyfill/-/error-polyfill-0.1.3.tgz#df848b61ad8834f7a5db69a70b9913df86721d15"
+ integrity sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==
+ dependencies:
+ capability "^0.2.5"
+ o3 "^1.0.3"
+ u3 "^0.1.1"
+
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
es6-promise@^4.0.3:
version "4.2.8"
- resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz"
+ 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.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz"
+ 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"
+esbuild@~0.19.10:
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04"
+ integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.19.12"
+ "@esbuild/android-arm" "0.19.12"
+ "@esbuild/android-arm64" "0.19.12"
+ "@esbuild/android-x64" "0.19.12"
+ "@esbuild/darwin-arm64" "0.19.12"
+ "@esbuild/darwin-x64" "0.19.12"
+ "@esbuild/freebsd-arm64" "0.19.12"
+ "@esbuild/freebsd-x64" "0.19.12"
+ "@esbuild/linux-arm" "0.19.12"
+ "@esbuild/linux-arm64" "0.19.12"
+ "@esbuild/linux-ia32" "0.19.12"
+ "@esbuild/linux-loong64" "0.19.12"
+ "@esbuild/linux-mips64el" "0.19.12"
+ "@esbuild/linux-ppc64" "0.19.12"
+ "@esbuild/linux-riscv64" "0.19.12"
+ "@esbuild/linux-s390x" "0.19.12"
+ "@esbuild/linux-x64" "0.19.12"
+ "@esbuild/netbsd-x64" "0.19.12"
+ "@esbuild/openbsd-x64" "0.19.12"
+ "@esbuild/sunos-x64" "0.19.12"
+ "@esbuild/win32-arm64" "0.19.12"
+ "@esbuild/win32-ia32" "0.19.12"
+ "@esbuild/win32-x64" "0.19.12"
+
escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
+ integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
escape-string-regexp@4.0.0:
version "4.0.0"
- resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-config-prettier@^8.10.0:
- version "8.10.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11"
- integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==
+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==
+
+ethers@^5.5.1:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e"
+ integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==
+ dependencies:
+ "@ethersproject/abi" "5.7.0"
+ "@ethersproject/abstract-provider" "5.7.0"
+ "@ethersproject/abstract-signer" "5.7.0"
+ "@ethersproject/address" "5.7.0"
+ "@ethersproject/base64" "5.7.0"
+ "@ethersproject/basex" "5.7.0"
+ "@ethersproject/bignumber" "5.7.0"
+ "@ethersproject/bytes" "5.7.0"
+ "@ethersproject/constants" "5.7.0"
+ "@ethersproject/contracts" "5.7.0"
+ "@ethersproject/hash" "5.7.0"
+ "@ethersproject/hdnode" "5.7.0"
+ "@ethersproject/json-wallets" "5.7.0"
+ "@ethersproject/keccak256" "5.7.0"
+ "@ethersproject/logger" "5.7.0"
+ "@ethersproject/networks" "5.7.1"
+ "@ethersproject/pbkdf2" "5.7.0"
+ "@ethersproject/properties" "5.7.0"
+ "@ethersproject/providers" "5.7.2"
+ "@ethersproject/random" "5.7.0"
+ "@ethersproject/rlp" "5.7.0"
+ "@ethersproject/sha2" "5.7.0"
+ "@ethersproject/signing-key" "5.7.0"
+ "@ethersproject/solidity" "5.7.0"
+ "@ethersproject/strings" "5.7.0"
+ "@ethersproject/transactions" "5.7.0"
+ "@ethersproject/units" "5.7.0"
+ "@ethersproject/wallet" "5.7.0"
+ "@ethersproject/web" "5.7.1"
+ "@ethersproject/wordlists" "5.7.0"
+
+event-stream@=3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==
+ dependencies:
+ duplexer "~0.1.1"
+ from "~0"
+ map-stream "~0.1.0"
+ pause-stream "0.0.11"
+ split "0.3"
+ stream-combiner "~0.0.4"
+ through "~2.3.1"
eventemitter3@^4.0.7:
version "4.0.7"
- resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+execa@5.1.1:
+ 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"
+
+exponential-backoff@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6"
+ integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
eyes@^0.1.8:
version "0.1.8"
- resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
+ resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==
fast-stable-stringify@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313"
integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==
+figures@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
file-uri-to-path@1.0.0:
version "1.0.0"
- resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
+ 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.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
+ 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@5.0.0:
version "5.0.0"
- resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
dependencies:
locate-path "^6.0.0"
path-exists "^4.0.0"
+find@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8"
+ integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==
+ dependencies:
+ traverse-chain "~0.1.0"
+
flat@^5.0.2:
version "5.0.2"
- resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
+follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.14.9, follow-redirects@^1.15.4:
+ version "1.15.5"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020"
+ integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==
+
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+from@~0:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
+ integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==
+
fs.realpath@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fs@^0.0.1-security:
- version "0.0.1-security"
- resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4"
- integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==
-
-fsevents@~2.3.2:
+fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
get-caller-file@^2.0.5:
version "2.0.5"
- resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-func-name@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz"
- integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
+get-func-name@^2.0.1, get-func-name@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
+ integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+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==
+
+get-tsconfig@^4.7.2:
+ version "4.7.3"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.3.tgz#0498163d98f7b58484dd4906999c0c9d5f103f83"
+ integrity sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==
+ dependencies:
+ resolve-pkg-maps "^1.0.0"
glob-parent@~5.1.2:
version "5.1.2"
- resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@7.2.0:
version "7.2.0"
- resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
dependencies:
fs.realpath "^1.0.0"
@@ -815,98 +3100,290 @@ glob@7.2.0:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^8.0.3:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
+ integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^5.0.1"
+ once "^1.3.0"
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
growl@1.10.5:
version "1.10.5"
- resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz"
+ resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
has-flag@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-proto@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
+ integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
+
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
+ dependencies:
+ has-symbols "^1.0.3"
+
+hash-base@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hasown@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa"
+ integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==
+ dependencies:
+ function-bind "^1.1.2"
+
he@1.2.0:
version "1.2.0"
- resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+hi-base32@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e"
+ integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==
+
+hmac-drbg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+http-errors@^1.7.2:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.1"
+
+https-proxy-agent@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+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==
+
humanize-ms@^1.2.1:
version "1.2.1"
- resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
dependencies:
ms "^2.0.0"
-ieee754@^1.2.1:
+iconv-lite@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@^1.1.13, ieee754@^1.2.1:
version "1.2.1"
- resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
inflight@^1.0.4:
version "1.0.6"
- resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+ 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, inherits@^2.0.1:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4:
version "2.0.4"
- resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+inquirer@^8.2.0:
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562"
+ integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.1"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.21"
+ mute-stream "0.0.8"
+ ora "^5.4.1"
+ run-async "^2.4.0"
+ rxjs "^7.5.5"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+ wrap-ansi "^6.0.1"
+
+invariant@2.2.4, invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arguments@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
is-binary-path@~2.1.0:
version "2.1.0"
- resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
+is-callable@^1.1.3:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
is-extglob@^2.1.1:
version "2.1.1"
- resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+ 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-function@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
- resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
- is-extglob "^2.1.1"
+ is-extglob "^2.1.1"
+
+is-interactive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
+ integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
+
+is-nan@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
+ integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
is-number@^7.0.0:
version "7.0.0"
- resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-plain-obj@^2.1.0:
version "2.1.0"
- resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+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==
+
+is-typed-array@^1.1.3:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
+ integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
+ dependencies:
+ which-typed-array "^1.1.14"
+
is-unicode-supported@^0.1.0:
version "0.1.0"
- resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
isexe@^2.0.0:
version "2.0.0"
- resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+isomorphic-fetch@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4"
+ integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==
+ dependencies:
+ node-fetch "^2.6.1"
+ whatwg-fetch "^3.4.1"
+
isomorphic-ws@^4.0.1:
version "4.0.1"
- resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
jayson@^3.4.4:
version "3.7.0"
- resolved "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz"
+ 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"
@@ -941,108 +3418,260 @@ jayson@^4.1.0:
uuid "^8.3.2"
ws "^7.4.5"
+joi@^17.7.0:
+ version "17.12.2"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521"
+ integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==
+ dependencies:
+ "@hapi/hoek" "^9.3.0"
+ "@hapi/topo" "^5.1.0"
+ "@sideway/address" "^4.1.5"
+ "@sideway/formula" "^3.0.1"
+ "@sideway/pinpoint" "^2.0.0"
+
js-sha256@^0.9.0:
version "0.9.0"
- resolved "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz"
+ resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"
integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==
+js-sha3@0.8.0, js-sha3@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840"
+ integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==
+
+js-sha512@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/js-sha512/-/js-sha512-0.8.0.tgz#dd22db8d02756faccf19f218e3ed61ec8249f7d4"
+ integrity sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==
+
+"js-tokens@^3.0.0 || ^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@4.1.0:
version "4.1.0"
- resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
+jsbi@4.3.0, jsbi@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-4.3.0.tgz#b54ee074fb6fcbc00619559305c8f7e912b04741"
+ integrity sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==
+
+json-bigint@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
+ integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
+ dependencies:
+ bignumber.js "^9.0.0"
+
json-stringify-safe@^5.0.1:
version "5.0.1"
- resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
-json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+json5@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
dependencies:
minimist "^1.2.0"
+jsonc-parser@^3.0.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a"
+ integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==
+
jsonparse@^1.2.0:
version "1.3.1"
- resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
+keccak@^3.0.2:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d"
+ integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==
+ dependencies:
+ node-addon-api "^2.0.0"
+ node-gyp-build "^4.2.0"
+ readable-stream "^3.6.0"
+
+kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+lazy-ass@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
+ integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==
+
locate-path@^6.0.0:
version "6.0.0"
- resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
dependencies:
p-locate "^5.0.0"
-lodash@^4.17.20:
+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.mapvalues@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
+ integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==
+
+lodash.zipobject@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/lodash.zipobject/-/lodash.zipobject-4.1.3.tgz#b399f5aba8ff62a746f6979bf20b214f964dbef8"
+ integrity sha512-A9SzX4hMKWS25MyalwcOnNoplyHbkNVsjidhTp8ru0Sj23wY9GWBKS8gAIGDSAqeWjIjvE4KBEl24XXAs+v4wQ==
+
+lodash@^4.17.20, lodash@^4.17.21:
version "4.17.21"
- resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-log-symbols@4.1.0:
+log-symbols@4.1.0, log-symbols@^4.1.0:
version "4.1.0"
- resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
dependencies:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
-loupe@^2.3.1:
- version "2.3.4"
- resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz"
- integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+long@^5.0.0, long@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
+ integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+
+loose-envify@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+loupe@^2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697"
+ integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
dependencies:
- get-func-name "^2.0.0"
+ get-func-name "^2.0.1"
lower-case@^2.0.2:
version "2.0.2"
- resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
dependencies:
tslib "^2.0.3"
+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-error@^1.1.1:
version "1.3.6"
- resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
-minimalistic-assert@^1.0.0:
+map-stream@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+ integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==
+
+marked@^4.0.16:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3"
+ integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+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==
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@^2.1.34:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+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==
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
+
minimatch@4.2.1:
version "4.2.1"
- resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4"
integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==
dependencies:
brace-expansion "^1.1.7"
minimatch@^3.0.4:
version "3.1.2"
- resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.2.0, minimist@^1.2.6:
- version "1.2.6"
- resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz"
- integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+minimatch@^5.0.1, minimatch@^5.1.0:
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+ integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
mkdirp@^0.5.1:
version "0.5.6"
- resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
mocha@^9.0.3:
version "9.2.2"
- resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9"
integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==
dependencies:
"@ungap/promise-all-settled" "1.1.2"
@@ -1072,148 +3701,427 @@ mocha@^9.0.3:
ms@2.1.2:
version "2.1.2"
- resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.1.3, ms@^2.0.0:
version "2.1.3"
- resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+multistream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8"
+ integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==
+ dependencies:
+ once "^1.4.0"
+ readable-stream "^3.6.0"
+
+mustache@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64"
+ integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
nanoid@3.3.1:
version "3.3.1"
- resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+near-api-js@^0.44.2:
+ version "0.44.2"
+ resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.44.2.tgz#e451f68f2c56bd885c7b918db5818a3e6e9423d0"
+ integrity sha512-eMnc4V+geggapEUa3nU2p8HSHn/njtloI4P2mceHQWO8vDE1NGpnAw8FuTBrLmXSgIv9m6oocgFc9t3VNf5zwg==
+ dependencies:
+ bn.js "5.2.0"
+ borsh "^0.6.0"
+ bs58 "^4.0.0"
+ depd "^2.0.0"
+ error-polyfill "^0.1.3"
+ http-errors "^1.7.2"
+ js-sha256 "^0.9.0"
+ mustache "^4.0.0"
+ node-fetch "^2.6.1"
+ text-encoding-utf-8 "^1.0.2"
+ tweetnacl "^1.0.1"
+
+near-hd-key@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/near-hd-key/-/near-hd-key-1.2.1.tgz#f508ff15436cf8a439b543220f3cc72188a46756"
+ integrity sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg==
+ dependencies:
+ bip39 "3.0.2"
+ create-hmac "1.1.7"
+ tweetnacl "1.0.3"
+
+near-seed-phrase@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/near-seed-phrase/-/near-seed-phrase-0.2.0.tgz#fb7cf89682112b1160ab68abb50dc821f49be18a"
+ integrity sha512-NpmrnejpY1AdlRpDZ0schJQJtfBaoUheRfiYtQpcq9TkwPgqKZCRULV5L3hHmLc0ep7KRtikbPQ9R2ztN/3cyQ==
+ dependencies:
+ bip39-light "^1.0.7"
+ bs58 "^4.0.1"
+ near-hd-key "^1.2.1"
+ tweetnacl "^1.0.2"
+
no-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
+ 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, node-fetch@2.6.7:
- version "2.6.7"
- resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz"
- integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
- dependencies:
- whatwg-url "^5.0.0"
+node-addon-api@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32"
+ integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==
-node-fetch@^2.6.12:
+node-fetch@2, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
dependencies:
whatwg-url "^5.0.0"
-node-gyp-build@^4.3.0:
- version "4.5.0"
- resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz"
- integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==
+node-fetch@2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
+node-gyp-build@^4.2.0, node-gyp-build@^4.3.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd"
+ integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==
+
+node-kraken-api@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/node-kraken-api/-/node-kraken-api-2.2.2.tgz#28bf56eec1f0ffe7e784b2ffa29b360ed98b0e4c"
+ integrity sha512-f+BZpgT1gD9705hlsRDDGj9m96Psb0Gxu3Td/P2fs0/gFy58YQONrTPiqfYzOBxvpmYnuAMxCRuRmdmkw04eRw==
+ dependencies:
+ crc "^4.1.0"
+ ts-ev "^0.4.0"
+ ws "^8.5.0"
+ optionalDependencies:
+ bufferutil "^4.0.6"
+ utf-8-validate "^5.0.9"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
- resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-once@^1.3.0:
+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"
+
+numeral@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506"
+ integrity sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==
+
+o3@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/o3/-/o3-1.0.3.tgz#192ce877a882dfa6751f0412a865fafb2da1dac0"
+ integrity sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==
+ dependencies:
+ capability "^0.2.5"
+
+object-is@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
+ integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+
+object-keys@^1.1.1:
+ version "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:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
+ integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+once@^1.3.0, once@^1.4.0:
version "1.4.0"
- resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+ 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.0, 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"
+
+ora@^5.4.1:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
+ integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
+ dependencies:
+ bl "^4.1.0"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-spinners "^2.5.0"
+ is-interactive "^1.0.0"
+ is-unicode-supported "^0.1.0"
+ log-symbols "^4.1.0"
+ strip-ansi "^6.0.0"
+ wcwidth "^1.0.1"
+
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+
p-limit@^3.0.2:
version "3.1.0"
- resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
+ 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@^5.0.0:
version "5.0.0"
- resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
dependencies:
p-limit "^3.0.2"
pako@^2.0.3:
- version "2.0.4"
- resolved "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz"
- integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
+ integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==
path-exists@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
+ 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.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ 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==
+
pathval@^1.1.1:
version "1.1.1"
- resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+pause-stream@0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
+ integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
+ dependencies:
+ through "~2.3"
+
+pbkdf2@^3.0.9:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
+ integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.3.1"
- resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
prettier@^2.6.2:
- version "2.7.1"
- resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz"
- integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
+ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
+promise-retry@2.0.1, promise-retry@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
+ integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
+ dependencies:
+ err-code "^2.0.2"
+ retry "^0.12.0"
+
+protobufjs@^6.10.2:
+ version "6.11.4"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa"
+ integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" ">=13.7.0"
+ long "^4.0.0"
+
+protobufjs@^7.2.4:
+ version "7.2.6"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215"
+ integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/node" ">=13.7.0"
+ long "^5.0.0"
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-randombytes@^2.1.0:
+ps-tree@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
+ integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
+ dependencies:
+ event-stream "=3.3.4"
+
+psyfi-euros-test@0.0.2-rc.5:
+ version "0.0.2-rc.5"
+ resolved "https://registry.yarnpkg.com/psyfi-euros-test/-/psyfi-euros-test-0.0.2-rc.5.tgz#7b0db21ecbe7bac490de764f022feb01a9b501d9"
+ integrity sha512-bTeM4wrS9x6+9Z69uN9wWELTc7MyM3KpNdntp9T3uUkQwnN9Pygwjd/a+Mf/x7PbmAHKMabY7tLbSVxpifVt4g==
+ dependencies:
+ "@metaplex-foundation/mpl-token-metadata" "2.2.4"
+ "@project-serum/anchor" "0.23.0"
+ "@project-serum/common" "^0.0.1-beta.3"
+ "@project-serum/serum" "^0.13.61"
+ "@solana/spl-token" "0.1.8"
+ "@solana/web3.js" "^1.35.1"
+ psystake-test "0.0.1-rc.8"
+
+psystake-test@0.0.1-rc.8:
+ version "0.0.1-rc.8"
+ resolved "https://registry.yarnpkg.com/psystake-test/-/psystake-test-0.0.1-rc.8.tgz#67ce3c7546c47ac44bd213997fadcee346efe440"
+ integrity sha512-wng85jJDM8SwVeH/6fUMKBxHiVPl6SwFm6Y1j3fNmhqEINwu1L+kShO3YCIhPN7oK2tox7Fb7tUrXdbk5HQ54g==
+ dependencies:
+ "@project-serum/anchor" "^0.23.0"
+ "@project-serum/common" "^0.0.1-beta.3"
+ "@project-serum/serum" "^0.13.61"
+ "@solana/spl-token" "^0.1.8"
+ "@solana/web3.js" "^1.35.1"
+
+randombytes@^2.0.1, randombytes@^2.1.0:
version "2.1.0"
- resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
+readable-stream@^3.4.0, readable-stream@^3.6.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
readdirp@~3.6.0:
version "3.6.0"
- resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
-regenerator-runtime@^0.13.4:
- version "0.13.9"
- resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
- integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+reconnecting-websocket@^4.2.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz#3b0e5b96ef119e78a03135865b8bb0af1b948783"
+ integrity sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==
regenerator-runtime@^0.14.0:
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
- integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
require-directory@^2.1.1:
version "2.1.1"
- resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
-rpc-websockets@^7.5.0:
- version "7.5.0"
- resolved "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz"
- integrity sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==
+resolve-pkg-maps@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
+ integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
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"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+retry@0.13.1, retry@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
+ integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
-rpc-websockets@^7.5.1:
- version "7.6.1"
- resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.6.1.tgz#7d1dd00e5ad3e17bbe1d88ba6e66f4cb579cb66b"
- integrity sha512-MmRGaJJvxTHSRxYPjJJqcj2zWnCetw7YbYbKlD0Yc7qVw6PsZhRJg1MI3mpWlpBs+4zO+urlNfLl9zLsdOD/gA==
+rpc-websockets@^7.4.12, rpc-websockets@^7.5.0, rpc-websockets@^7.5.1:
+ version "7.9.0"
+ resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.9.0.tgz#a3938e16d6f134a3999fdfac422a503731bf8973"
+ integrity sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==
dependencies:
"@babel/runtime" "^7.17.2"
eventemitter3 "^4.0.7"
@@ -1223,26 +4131,103 @@ rpc-websockets@^7.5.1:
bufferutil "^4.0.1"
utf-8-validate "^5.0.2"
-safe-buffer@^5.0.1, safe-buffer@^5.1.0:
+run-async@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+rxjs@^7.5.5, rxjs@^7.8.0:
+ version "7.8.1"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
+ integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
+ dependencies:
+ tslib "^2.1.0"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
version "5.2.1"
- resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safer-buffer@^2.1.0:
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+scrypt-js@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312"
+ integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==
+
+secp256k1@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303"
+ integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==
+ dependencies:
+ elliptic "^6.5.4"
+ node-addon-api "^2.0.0"
+ node-gyp-build "^4.2.0"
+
serialize-javascript@6.0.0:
version "6.0.0"
- resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
dependencies:
randombytes "^2.1.0"
+set-function-length@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+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==
+
+shiki@^0.10.1:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.1.tgz#6f9a16205a823b56c072d0f1a0bcd0f2646bef14"
+ integrity sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==
+ dependencies:
+ jsonc-parser "^3.0.0"
+ vscode-oniguruma "^1.6.1"
+ vscode-textmate "5.2.0"
+
+signal-exit@^3.0.2, signal-exit@^3.0.3:
+ 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==
+
snake-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz"
+ 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"
@@ -1265,17 +4250,17 @@ solana-bankrun-darwin-x64@0.2.0:
solana-bankrun-linux-x64-gnu@0.2.0:
version "0.2.0"
- resolved "https://registry.npmjs.org/solana-bankrun-linux-x64-gnu/-/solana-bankrun-linux-x64-gnu-0.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-gnu/-/solana-bankrun-linux-x64-gnu-0.2.0.tgz#eb133902e78afc5271ba034bd5353ad5f4005c10"
integrity sha512-WnqQjfBBdcI0ZLysjvRStI8gX7vm1c3CI6CC03lgkUztH+Chcq9C4LI9m2M8mXza8Xkn9ryeKAmX36Bx/yoVzg==
solana-bankrun-linux-x64-musl@0.2.0:
version "0.2.0"
- resolved "https://registry.npmjs.org/solana-bankrun-linux-x64-musl/-/solana-bankrun-linux-x64-musl-0.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-musl/-/solana-bankrun-linux-x64-musl-0.2.0.tgz#a99c5187f34ab5979c708281da74093c64baab4a"
integrity sha512-8mtf14ZBoah30+MIJBUwb5BlGLRZyK5cZhCkYnC/ROqaIDN8RxMM44NL63gTUIaNHsFwWGA9xR0KSeljeh3PKQ==
solana-bankrun@^0.2.0:
version "0.2.0"
- resolved "https://registry.npmjs.org/solana-bankrun/-/solana-bankrun-0.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/solana-bankrun/-/solana-bankrun-0.2.0.tgz#e1df2126ee887b9eae17962f09db18aaa25d736f"
integrity sha512-TS6vYoO/9YJZng7oiLOVyuz8V7yLow5Hp4SLYWW71XM3702v+z9f1fvUBKudRfa4dfpta4tRNufApSiBIALxJQ==
dependencies:
"@solana/web3.js" "^1.68.0"
@@ -1289,7 +4274,7 @@ solana-bankrun@^0.2.0:
source-map-support@^0.5.6:
version "0.5.21"
- resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
dependencies:
buffer-from "^1.0.0"
@@ -1297,7 +4282,7 @@ source-map-support@^0.5.6:
source-map@^0.6.0:
version "0.6.1"
- resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
spl-token-bankrun@0.2.3:
@@ -1308,86 +4293,198 @@ spl-token-bankrun@0.2.3:
"@solana/spl-token" "^0.3.8"
solana-bankrun "^0.2.0"
-string-width@^4.1.0, string-width@^4.2.0:
+split@0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==
+ dependencies:
+ through "2"
+
+start-server-and-test@^1.14.0:
+ version "1.15.5"
+ resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-1.15.5.tgz#5c9103bd87c06678fc62658fbe97d09501714011"
+ integrity sha512-o3EmkX0++GV+qsvIJ/OKWm3w91fD8uS/bPQVPrh/7loaxkpXSuAIHdnmN/P/regQK9eNAK76aBJcHt+OSTk+nA==
+ dependencies:
+ arg "^5.0.2"
+ bluebird "3.7.2"
+ check-more-types "2.24.0"
+ debug "4.3.4"
+ execa "5.1.1"
+ lazy-ass "1.6.0"
+ ps-tree "1.2.0"
+ wait-on "7.0.1"
+
+"statuses@>= 1.5.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
+stream-combiner@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
+ integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==
+ dependencies:
+ duplexer "~0.1.1"
+
+stream-transform@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-3.3.1.tgz#f8bb6a811e505056b6a215c466e4c2760347189f"
+ integrity sha512-BL8pv9QL8Ikd11oZwlRDp1qYMhGR0i50zI9ltoijKGc4ubQWal/Rc4p6SYJp1TBOGpE0uAGchwbxOZ1ycwTuqQ==
+
+strict-event-emitter-types@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz#05e15549cb4da1694478a53543e4e2f4abcf277f"
+ integrity sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
- resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ 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"
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
- resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ 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@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
+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.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+superstruct@0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.8.3.tgz#fb4d8901aca3bf9f79afab1bbab7a7f335cc4ef2"
+ integrity sha512-LbtbFpktW1FcwxVIJlxdk7bCyBq/GzOx2FSFLRLTUhWIA1gHkYPIl3aXRG5mBdGZtnPNT6t+4eEcLDCMOuBHww==
+ dependencies:
+ kind-of "^6.0.2"
+ tiny-invariant "^1.0.6"
+
superstruct@^0.14.2:
version "0.14.2"
- resolved "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b"
integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==
superstruct@^0.15.4:
version "0.15.5"
- resolved "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab"
integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==
+superstruct@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.3.tgz#de626a5b49c6641ff4d37da3c7598e7a87697046"
+ integrity sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==
+
supports-color@8.1.1:
version "8.1.1"
- resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
+ 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-color@^7.1.0:
version "7.2.0"
- resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+ 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"
text-encoding-utf-8@^1.0.2:
version "1.0.2"
- resolved "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13"
integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==
-"through@>=2.2.7 <3":
+through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1:
version "2.3.8"
- resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+tiny-invariant@^1.0.6, tiny-invariant@^1.1.0, tiny-invariant@^1.2.0, tiny-invariant@^1.3.1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
+ integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
+
+tmp-promise@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
+ integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==
+ dependencies:
+ tmp "^0.2.0"
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+tmp@^0.2.0:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae"
+ integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==
+
to-regex-range@^5.0.1:
version "5.0.1"
- resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ 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"
+toformat@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/toformat/-/toformat-2.0.0.tgz#7a043fd2dfbe9021a4e36e508835ba32056739d8"
+ integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
toml@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz"
+ 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.npmjs.org/tr46/-/tr46-0.0.3.tgz"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+traverse-chain@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1"
+ integrity sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==
+
+ts-ev@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/ts-ev/-/ts-ev-0.4.0.tgz#b30bbab35bd57516efba7ab89b6417424a1ebf0e"
+ integrity sha512-rLX6QdkC1/jA9sS4y9/DxHABTcOussp33J90h+TxHmya9CWvbGc9uLqdM4c/N4pNRmSdtq9zqhz7sB9KcN1NFQ==
+
ts-mocha@^10.0.0:
version "10.0.0"
- resolved "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9"
integrity sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==
dependencies:
ts-node "7.0.1"
@@ -1396,7 +4493,7 @@ ts-mocha@^10.0.0:
ts-node@7.0.1:
version "7.0.1"
- resolved "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf"
integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==
dependencies:
arrify "^1.0.0"
@@ -1408,76 +4505,211 @@ ts-node@7.0.1:
source-map-support "^0.5.6"
yn "^2.0.0"
+ts-poet@^6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/ts-poet/-/ts-poet-6.7.0.tgz#6b2ff3b7b0c70ea650d6d570dfe6899f73fb3c38"
+ integrity sha512-A0wvFtpkTCWPw7ftTIwbEH+L+7ul4CU0x3jXKQ+kCnmEQIAOwhpUaBmcAYKxZCxHae9/MUl4LbyTqw25BpzW5Q==
+ dependencies:
+ dprint-node "^1.0.8"
+
+ts-proto-descriptors@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/ts-proto-descriptors/-/ts-proto-descriptors-1.15.0.tgz#e859e3a2887da2d954c552524719b80bdb6ee355"
+ integrity sha512-TYyJ7+H+7Jsqawdv+mfsEpZPTIj9siDHS6EMCzG/z3b/PZiphsX+mWtqFfFVe5/N0Th6V3elK9lQqjnrgTOfrg==
+ dependencies:
+ long "^5.2.3"
+ protobufjs "^7.2.4"
+
+ts-proto@^1.79.0:
+ version "1.168.0"
+ resolved "https://registry.yarnpkg.com/ts-proto/-/ts-proto-1.168.0.tgz#049895ec546bf729dd5d927866aa967e1fb96257"
+ integrity sha512-3ae1eXY3VCmhIvM/8Q/q4/3bJrdftmtY+5GwrSkhZh+UnHpI1l5rYu0mm1V75qiQJcdAXRc5m7gfnYbdnuQl5g==
+ dependencies:
+ case-anything "^2.1.13"
+ protobufjs "^7.2.4"
+ ts-poet "^6.7.0"
+ ts-proto-descriptors "1.15.0"
+
tsconfig-paths@^3.5.0:
- version "3.14.1"
- resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz"
- integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
+ version "3.15.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
+ integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==
dependencies:
"@types/json5" "^0.0.29"
- json5 "^1.0.1"
+ json5 "^1.0.2"
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@^2.0.3:
- version "2.4.0"
- resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz"
- integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
+tsx@^4.7.1:
+ version "4.7.1"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.7.1.tgz#27af6cbf4e1cdfcb9b5425b1c61bb7e668eb5e84"
+ integrity sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==
+ dependencies:
+ esbuild "~0.19.10"
+ get-tsconfig "^4.7.2"
+ optionalDependencies:
+ fsevents "~2.3.3"
-type-detect@^4.0.0, type-detect@^4.0.5:
+tweetnacl@1.0.3, tweetnacl@^1.0.1, tweetnacl@^1.0.2, tweetnacl@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
+ integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
+
+type-detect@^4.0.0, type-detect@^4.0.8:
version "4.0.8"
- resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-typescript@^4.3.5:
- version "4.8.3"
- resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz"
- integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==
-
-undici-types@~5.25.1:
- version "5.25.3"
- resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz"
- integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==
+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==
-utf-8-validate@^5.0.2:
- version "5.0.9"
- resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz"
- integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==
+typedoc@^0.22.15:
+ version "0.22.18"
+ resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.18.tgz#1d000c33b66b88fd8cdfea14a26113a83b7e6591"
+ integrity sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==
+ dependencies:
+ glob "^8.0.3"
+ lunr "^2.3.9"
+ marked "^4.0.16"
+ minimatch "^5.1.0"
+ shiki "^0.10.1"
+
+typescript@^4.2.4, typescript@^4.3.5:
+ version "4.9.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
+ integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+
+u3@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/u3/-/u3-0.1.1.tgz#5f52044f42ee76cd8de33148829e14528494b73b"
+ integrity sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==
+
+undici-types@~5.26.4:
+ version "5.26.5"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
+ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
+utf-8-validate@^5.0.2, utf-8-validate@^5.0.9:
+ 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"
+util-deprecate@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+util@^0.12.5:
+ version "0.12.5"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
+ integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==
+ dependencies:
+ inherits "^2.0.3"
+ is-arguments "^1.0.4"
+ is-generator-function "^1.0.7"
+ is-typed-array "^1.1.3"
+ which-typed-array "^1.1.2"
+
uuid@^8.3.2:
version "8.3.2"
- resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+vlq@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/vlq/-/vlq-2.0.4.tgz#6057b85729245b9829e3cc7755f95b228d4fe041"
+ integrity sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==
+
+vscode-oniguruma@^1.6.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b"
+ integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==
+
+vscode-textmate@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e"
+ integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==
+
+wait-on@7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.0.1.tgz#5cff9f8427e94f4deacbc2762e6b0a489b19eae9"
+ integrity sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==
+ dependencies:
+ axios "^0.27.2"
+ joi "^17.7.0"
+ lodash "^4.17.21"
+ minimist "^1.2.7"
+ rxjs "^7.8.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+ dependencies:
+ defaults "^1.0.3"
+
webidl-conversions@^3.0.0:
version "3.0.1"
- resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+whatwg-fetch@^3.4.1:
+ version "3.6.20"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70"
+ integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==
+
whatwg-url@^5.0.0:
version "5.0.0"
- resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"
+ 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.2:
+which-typed-array@^1.1.14, which-typed-array@^1.1.2:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06"
+ integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==
+ dependencies:
+ available-typed-arrays "^1.0.6"
+ call-bind "^1.0.5"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.1"
+
+which@2.0.2, which@^2.0.1:
version "2.0.2"
- resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
workerpool@6.2.0:
version "6.2.0"
- resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b"
integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==
+wrap-ansi@^6.0.1:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^7.0.0:
version "7.0.0"
- resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ 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"
@@ -1486,37 +4718,52 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
- resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-ws@^7.4.5:
+ws@7.4.6:
+ version "7.4.6"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
+ integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
+
+ws@^7.2.0, ws@^7.4.5, ws@^7.4.6:
version "7.5.9"
- resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
ws@^8.5.0:
- version "8.8.1"
- resolved "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz"
- integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
+ version "8.16.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4"
+ integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==
y18n@^5.0.5:
version "5.0.8"
- resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+yaml@^2.2.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed"
+ integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==
+
yargs-parser@20.2.4:
version "20.2.4"
- resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
yargs-parser@^20.2.2:
version "20.2.9"
- resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+yargs-parser@^21.1.1:
+ 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-unparser@2.0.0:
version "2.0.0"
- resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
dependencies:
camelcase "^6.0.0"
@@ -1526,7 +4773,7 @@ yargs-unparser@2.0.0:
yargs@16.2.0:
version "16.2.0"
- resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
dependencies:
cliui "^7.0.2"
@@ -1537,12 +4784,25 @@ yargs@16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@^17.0.1:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ 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.1.1"
+
yn@^2.0.0:
version "2.0.0"
- resolved "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==
yocto-queue@^0.1.0:
version "0.1.0"
- resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==