diff --git a/apps/marginfi-v2-docs/src/app/faqs/page.mdx b/apps/marginfi-v2-docs/src/app/faqs/page.mdx
index a26dbf001a..cf0420d5cc 100644
--- a/apps/marginfi-v2-docs/src/app/faqs/page.mdx
+++ b/apps/marginfi-v2-docs/src/app/faqs/page.mdx
@@ -12,9 +12,19 @@ In this guide, we will answer commonly asked questions regarding the marginfi pr
If you do not see an answer to your question on this page, please contact marginfi support by joining
- our [Discord server](https://discord.gg/pJ3U7gHJFe).
+ at .
+## Why can't I borrow the full amount shown as my maximum borrowing capacity? {{ tag: '', label: '' }}
+
+The actual borrowing limit is slightly lower than the theoretical maximum to account for price fluctuations. We use an Exponential Moving Average (EMA) price rather than the spot price when calculating initial borrowing limits. This creates a small safety buffer that helps protect your position from immediate liquidation due to minor price movements. When prices have been stable for a period, you may be able to borrow closer to the theoretical maximum.
+
+## How are interest rates calculated? {{ tag: '', label: '' }}
+
+Interest rates are calculated based on market demand for borrowing and lending. For lenders, the interest rate increases with higher market utilization (more borrowing). For borrowers, the rate consists of a base rate plus additional fees. We currently use a simple interest model where interest accrues linearly over time, rather than compounding.
+
+For a more detailed explanation of how interest rates are calculated, please refer to the .
+
## Is my native stake still earning rewards when I deposit it into marginfi? {{ tag: '', label: '' }}
Yes. When you collateralize yur native stake account using marginfi's Staked Collateral feature, your native stake is still earning your staked validator's APY. **There is no lending yield on your native stake account**, just staking yield.
diff --git a/apps/marginfi-v2-docs/src/app/rust-sdk/page.mdx b/apps/marginfi-v2-docs/src/app/rust-sdk/page.mdx
index d3f15b8410..5f0f96b025 100644
--- a/apps/marginfi-v2-docs/src/app/rust-sdk/page.mdx
+++ b/apps/marginfi-v2-docs/src/app/rust-sdk/page.mdx
@@ -1,7 +1,7 @@
export const metadata = {
- title: 'Rust (CLI) SDK',
+ title: '(Rust) CLI',
description:
- 'On this page, we’ll learn how to get started with the marginfi Rust CLI.',
+ 'On this page, we’ll learn how to get started with the marginfi CLI.',
}
# The marginfi Rust CLI
@@ -9,13 +9,17 @@ export const metadata = {
With the marginfi , you can interact with the marginfi protocol directly from your terminal, taking advantage of its borrowing and lending services. Built in Rust, this command-line interface simplifies the process of managing your marginfi activities. Whether you want to create a new bank, make deposits to existing banks, or perform other operations, the marginfi CLI provides a streamlined experience. {{ className: 'lead' }}
- Access the Rust (CLI) SDK source code using .
+ Access the (Rust) CLI source code using .
---
## Installation {{ tag: '', label: '' }}
+
+ If you are not using a Mac or Linux machine, we recommend installing everything via .
+
+
To get started, install the latest stable Rust toolchain and set it to default:
```bash
diff --git a/apps/marginfi-v2-docs/src/app/staked-collateral/page.mdx b/apps/marginfi-v2-docs/src/app/staked-collateral/page.mdx
index c4454c6c54..d72a1fa75e 100644
--- a/apps/marginfi-v2-docs/src/app/staked-collateral/page.mdx
+++ b/apps/marginfi-v2-docs/src/app/staked-collateral/page.mdx
@@ -79,6 +79,14 @@ New pools require one epoch (2-3 days) before lending can begin, with stake pool
This architecture particularly benefits institutional users who prefer native staking over liquid staking tokens for tax considerations. The immutable pool settings and absence of controlling entities provide additional security assurances for all participants.
+## Earning Yield on Your Stake {{ tag: '', label: '' }}
+
+Users staking SOL as collateral through marginfi currently receive base staking rewards, but MEV/Jito rewards integration varies by validator. When staking, users receive vouchers (similar to LSTs) representing their share of the stake pool. While these voucher amounts remain constant, their underlying value increases as the pool earns staking rewards.
+
+MEV rewards that require manual claiming (like Jito's) aren't currently supported for all validators since the stake account is program-owned, but this functionality is being added progressively over time.
+
+Despite not capturing all MEV rewards yet, calculations show that even max-borrowed positions with 7% APY versus 10% borrow rate would take over 2 years to reach critical health levels.
+
## Using Native Stake: Step by Step {{ tag: '', label: '' }}
To post your native stake as collateral on marginfi, simply navigate to and click "Select token" on the dropdown menu. Make sure the "Lend" tab is selected in the action box.
diff --git a/apps/marginfi-v2-docs/src/components/Navigation.tsx b/apps/marginfi-v2-docs/src/components/Navigation.tsx
index 960522a74c..56b3fdb34f 100644
--- a/apps/marginfi-v2-docs/src/components/Navigation.tsx
+++ b/apps/marginfi-v2-docs/src/components/Navigation.tsx
@@ -266,12 +266,12 @@ export const navigation: Array = [
{ title: 'Progressive Web App', href: '/pwa' },
],
},
- {
- title: 'White Papers',
- links: [
- { title: '$YBX', href: '/ybx' },
- ],
- },
+ // {
+ // title: 'White Papers',
+ // links: [
+ // { title: '$YBX', href: '/ybx' },
+ // ],
+ // },
]
export function Navigation(props: React.ComponentPropsWithoutRef<'nav'>) {
diff --git a/packages/marginfi-v2-ui-state/src/lib/mrgnlend/utils/staked-collateral.utils.ts b/packages/marginfi-v2-ui-state/src/lib/mrgnlend/utils/staked-collateral.utils.ts
index c15c583564..2a1dd26edc 100644
--- a/packages/marginfi-v2-ui-state/src/lib/mrgnlend/utils/staked-collateral.utils.ts
+++ b/packages/marginfi-v2-ui-state/src/lib/mrgnlend/utils/staked-collateral.utils.ts
@@ -3,7 +3,12 @@ import { Connection, LAMPORTS_PER_SOL, ParsedAccountData, PublicKey, StakeProgra
import { MAX_U64 } from "@mrgnlabs/mrgn-common";
import { vendor } from "@mrgnlabs/marginfi-client-v2";
import { ExtendedBankInfo, ValidatorStakeGroup } from "../types";
-import { findPoolAddress, findPoolMintAddress, findPoolStakeAddress } from "@mrgnlabs/marginfi-client-v2/dist/vendor";
+import {
+ findPoolAddress,
+ findPoolMintAddress,
+ findPoolStakeAddress,
+ getStakeAccount,
+} from "@mrgnlabs/marginfi-client-v2/dist/vendor";
/**
* Fetches stake accounts for a given public key from API
@@ -188,30 +193,45 @@ const getStakePoolActiveStates = async (
const currentEpoch = await connection.getEpochInfo();
const activeStates = new Map();
- await Promise.all(
- validatorVoteAccounts.map(async (validatorVoteAccount) => {
- const poolAddress = findPoolAddress(validatorVoteAccount);
- const poolStakeAddress = findPoolStakeAddress(poolAddress);
- const poolMintAddress = findPoolMintAddress(poolAddress);
-
- const stakePoolAccount = await connection.getParsedAccountInfo(poolStakeAddress);
- if (!stakePoolAccount.value) {
- activeStates.set(poolMintAddress.toBase58(), false);
- return;
- }
-
- const parsedData = (stakePoolAccount.value.data as any).parsed;
- if (!parsedData?.info?.stake?.delegation) {
- activeStates.set(poolMintAddress.toBase58(), false);
- return;
- }
-
- const activationEpoch = parsedData.info.stake.delegation.activationEpoch;
- const isActive = currentEpoch.epoch > Number(activationEpoch);
- activeStates.set(poolMintAddress.toBase58(), isActive);
- })
+ const poolMintAddressRecord: Record = {};
+ const poolStakeAddressRecord: Record = {};
+
+ validatorVoteAccounts.forEach((validatorVoteAccount) => {
+ const poolAddress = findPoolAddress(validatorVoteAccount);
+ const poolStakeAddress = findPoolStakeAddress(poolAddress);
+ const poolMintAddress = findPoolMintAddress(poolAddress);
+
+ poolMintAddressRecord[validatorVoteAccount.toBase58()] = poolMintAddress;
+ poolStakeAddressRecord[poolStakeAddress.toBase58()] = validatorVoteAccount;
+ });
+
+ const poolStakeAddressKeys = Object.keys(poolStakeAddressRecord);
+
+ const poolStakeAccounts = Object.fromEntries(
+ (await connection.getMultipleAccountsInfo(poolStakeAddressKeys.map((key) => new PublicKey(key)))).map(
+ (ai, index) => [poolStakeAddressRecord[poolStakeAddressKeys[index]], ai?.data ? getStakeAccount(ai.data) : null]
+ )
);
+ validatorVoteAccounts.map(async (validatorVoteAccount) => {
+ const stakeAccount = poolStakeAccounts[validatorVoteAccount.toBase58()];
+ const poolMintAddress = poolMintAddressRecord[validatorVoteAccount.toBase58()];
+
+ if (!stakeAccount) {
+ activeStates.set(poolMintAddress.toBase58(), false);
+ return;
+ }
+
+ if (!stakeAccount.stake?.delegation) {
+ activeStates.set(poolMintAddress.toBase58(), false);
+ return;
+ }
+
+ const activationEpoch = stakeAccount.stake.delegation.activationEpoch;
+ const isActive = currentEpoch.epoch > Number(activationEpoch);
+ activeStates.set(poolMintAddress.toBase58(), isActive);
+ });
+
return activeStates;
};
diff --git a/packages/mrgn-ui/src/components/action-box-v2/actions/loop-box/utils/loop-action.utils.ts b/packages/mrgn-ui/src/components/action-box-v2/actions/loop-box/utils/loop-action.utils.ts
index 83b214d7c4..f5b82facf1 100644
--- a/packages/mrgn-ui/src/components/action-box-v2/actions/loop-box/utils/loop-action.utils.ts
+++ b/packages/mrgn-ui/src/components/action-box-v2/actions/loop-box/utils/loop-action.utils.ts
@@ -63,7 +63,12 @@ export async function calculateLooping(props: CalculateLoopingProps): Promise=13.7.0"
long "^5.0.0"
-protobufjs@7.4.0, protobufjs@^7.4.0:
- version "7.4.0"
- resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a"
- integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==
+protobufjs@7.2.5:
+ version "7.2.5"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.5.tgz#45d5c57387a6d29a17aab6846dcc283f9b8e7f2d"
+ integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
@@ -25784,6 +25636,24 @@ protobufjs@^7.0.0, protobufjs@^7.2.4, protobufjs@^7.2.5:
"@types/node" ">=13.7.0"
long "^5.0.0"
+protobufjs@^7.4.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a"
+ integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==
+ 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-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
@@ -27501,7 +27371,7 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
-serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
+serialize-javascript@^6.0.0, serialize-javascript@^6.0.1, serialize-javascript@^6.0.2:
version "6.0.2"
resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
@@ -27857,19 +27727,19 @@ sockjs@^0.3.24:
uuid "^8.3.2"
websocket-driver "^0.7.4"
-socks-proxy-agent@8.0.4:
- version "8.0.4"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c"
- integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==
+socks-proxy-agent@6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87"
+ integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==
dependencies:
- agent-base "^7.1.1"
- debug "^4.3.4"
- socks "^2.8.3"
+ agent-base "^6.0.2"
+ debug "^4.3.1"
+ socks "^2.6.1"
-socks@^2.8.3:
- version "2.8.3"
- resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5"
- integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
+socks@^2.6.1:
+ version "2.8.4"
+ resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc"
+ integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==
dependencies:
ip-address "^9.0.5"
smart-buffer "^4.2.0"
@@ -27929,7 +27799,7 @@ source-map-support@0.5.13:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map-support@^0.5.16, source-map-support@~0.5.20:
+source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -28567,7 +28437,7 @@ supports-color@^7.0.0, supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-supports-color@^8.0.0:
+supports-color@^8.0.0, supports-color@^8.1.1:
version "8.1.1"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
@@ -29123,10 +28993,28 @@ ts-loader@^9.4.4:
semver "^7.3.4"
source-map "^0.7.4"
-ts-mixer@^6.0.3:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.4.tgz#1da39ceabc09d947a82140d9f09db0f84919ca28"
- integrity sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==
+ts-mocha@^10.0.0:
+ version "10.0.0"
+ 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"
+ optionalDependencies:
+ tsconfig-paths "^3.5.0"
+
+ts-node@7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf"
+ integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==
+ dependencies:
+ arrify "^1.0.0"
+ buffer-from "^1.1.0"
+ diff "^3.1.0"
+ make-error "^1.1.1"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.5.6"
+ yn "^2.0.0"
ts-node@^10.9.1, ts-node@^10.9.2:
version "10.9.2"
@@ -29183,7 +29071,7 @@ tsc-watch@~4.5.0:
string-argv "^0.1.1"
strip-ansi "^6.0.0"
-tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0:
+tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0, tsconfig-paths@^3.5.0:
version "3.15.0"
resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz"
integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==
@@ -29215,6 +29103,16 @@ tsutils@^3.21.0:
dependencies:
tslib "^1.8.1"
+tsx@^4.19.2:
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c"
+ integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==
+ dependencies:
+ esbuild "~0.23.0"
+ get-tsconfig "^4.7.5"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
tty-browserify@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz"
@@ -29335,6 +29233,11 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8:
resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+type-detect@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c"
+ integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==
+
type-fest@^0.12.0:
version "0.12.0"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz"
@@ -29491,7 +29394,7 @@ typescript@5, typescript@^5, typescript@^5.1.6, typescript@^5.3.3, typescript@^5
resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz"
integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==
-typescript@^4.2.4, typescript@^4.5.2, typescript@^4.6.2, typescript@^4.7.4, typescript@^4.8.2:
+typescript@^4.2.4, typescript@^4.3.5, typescript@^4.5.2, typescript@^4.6.2, typescript@^4.7.4, typescript@^4.8.2:
version "4.9.5"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
@@ -29529,11 +29432,6 @@ uglify-js@^3.7.7:
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz"
integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==
-uint8array-tools@^0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/uint8array-tools/-/uint8array-tools-0.0.8.tgz#712bab001f8347bd782f45bc47c76ffff32d1e0b"
- integrity sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==
-
uint8arrays@3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz"
@@ -29576,11 +29474,6 @@ underscore@~1.13.2:
resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz"
integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
-undici-types@^6.20.0:
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
- integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
-
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
@@ -29908,7 +29801,7 @@ url@^0.11.0:
punycode "^1.4.1"
qs "^6.11.2"
-usb@^2.14.0:
+usb@^2.11.0:
version "2.14.0"
resolved "https://registry.yarnpkg.com/usb/-/usb-2.14.0.tgz#501f18c11b00c248d607ab6b05a8c7b50eb2f21a"
integrity sha512-I3lzVOH21BsO6qPYvx1C7Ji08lbuM0qmsEtNGAphqlhNME5cz/vExY+jIXZl+HQIRybI/sTxdyLab5tALsL69w==
@@ -30087,12 +29980,12 @@ valtio@1.11.2:
proxy-compare "2.5.1"
use-sync-external-store "1.2.0"
-varuint-bitcoin@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz#59a53845a87ad18c42f184a3d325074465341523"
- integrity sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==
+varuint-bitcoin@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92"
+ integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==
dependencies:
- uint8array-tools "^0.0.8"
+ safe-buffer "^5.1.1"
vary@~1.1.2:
version "1.1.2"
@@ -30544,12 +30437,12 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
-wif@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/wif/-/wif-5.0.0.tgz#445e44b8f62e155144d1c970c01ca2ba3979cc3f"
- integrity sha512-iFzrC/9ne740qFbNjTZ2FciSRJlHIXoxqk/Y5EnE08QOXu1WjJyCCswwDTYbohAOEnlCtLaAAQBhyaLRFh2hMA==
+wif@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/wif/-/wif-4.0.0.tgz#598d4659f361b1d2a8aed13214783fa374b4b146"
+ integrity sha512-kADznC+4AFJNXpT8rLhbsfI7EmAcorc5nWvAdKUchGmwXEBD3n55q0/GZ3DBmc6auAvuTSsr/utiKizuXdNYOQ==
dependencies:
- bs58check "^4.0.0"
+ bs58check "^3.0.1"
winston-transport@^4.7.0:
version "4.7.0"
@@ -30761,6 +30654,11 @@ workbox-window@6.6.1, workbox-window@^6.5.4:
"@types/trusted-types" "^2.0.2"
workbox-core "6.6.1"
+workerpool@^6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544"
+ integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==
+
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
@@ -30824,6 +30722,11 @@ ws@7.4.6:
resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz"
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
+ws@7.5.9:
+ version "7.5.9"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
+ integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
+
ws@8.13.0:
version "8.13.0"
resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz"
@@ -30846,11 +30749,6 @@ ws@^7, ws@^7.2.0, ws@^7.3.1, ws@^7.4.5, ws@^7.4.6, ws@^7.5.1, ws@^7.5.10:
resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz"
integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
-ws@^8.18.0:
- version "8.18.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
- integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
-
xcode@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz"
@@ -30975,11 +30873,26 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3:
camelcase "^5.0.0"
decamelize "^1.2.0"
+yargs-parser@^20.2.2, yargs-parser@^20.2.9:
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
yargs-parser@^21.0.1, yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+yargs-unparser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
+ integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
+ dependencies:
+ camelcase "^6.0.0"
+ decamelize "^4.0.0"
+ flat "^5.0.2"
+ is-plain-obj "^2.1.0"
+
yargs@^13.2.4:
version "13.3.2"
resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz"
@@ -31013,6 +30926,19 @@ yargs@^15.1.0, yargs@^15.3.1:
y18n "^4.0.0"
yargs-parser "^18.1.2"
+yargs@^16.2.0:
+ version "16.2.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
yargs@^17.0.1, yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2, yargs@^17.7.1, yargs@^17.7.2:
version "17.7.2"
resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
@@ -31039,6 +30965,11 @@ yn@3.1.1:
resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+yn@^2.0.0:
+ version "2.0.0"
+ 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"