diff --git a/.github/workflows/ci-pre-commit.yml b/.github/workflows/ci-pre-commit.yml index 061c6350b4..06b0df05d2 100644 --- a/.github/workflows/ci-pre-commit.yml +++ b/.github/workflows/ci-pre-commit.yml @@ -39,9 +39,6 @@ jobs: with: path: ~/.cache/pypoetry key: poetry-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}-${{ env.POETRY_VERSION }} - - name: Install poetry dependencies - run: poetry -C express_relay/sdk/python/express_relay install - shell: sh - uses: pre-commit/action@v3.0.0 if: ${{ github.event_name == 'pull_request' }} with: diff --git a/.github/workflows/pypi-express-relay-utils.yml b/.github/workflows/pypi-express-relay-utils.yml deleted file mode 100644 index 0968c3bf09..0000000000 --- a/.github/workflows/pypi-express-relay-utils.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Upload express-relay Python Package to PyPI - -on: - push: - tags: - - "python-v*" - -env: - PYTHON_VERSION: "3.11" - -jobs: - deploy: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: Install dependencies - run: | - python3 -m pip install --upgrade poetry - poetry install - working-directory: "express_relay/sdk/python/express_relay" - - name: Build and publish - run: | - poetry build - poetry publish --username __token__ --password ${{ secrets.PYPI_TOKEN }} - working-directory: "express_relay/sdk/python/express_relay" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6cf9138762..96b33444d8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -126,30 +126,6 @@ repos: entry: cargo +1.73.0 clippy --manifest-path ./target_chains/solana/Cargo.toml --tests -- --deny warnings pass_filenames: false files: target_chains/solana - # For express relay python files - - id: poetry-install - name: poetry install - entry: poetry -C express_relay/sdk/python/express_relay install - pass_filenames: false - files: express_relay/sdk/python/express_relay - language: "system" - - id: black - name: black - entry: poetry -C express_relay/sdk/python/express_relay run black - files: express_relay/sdk/python/express_relay - language: "system" - - id: pyflakes - name: pyflakes - entry: poetry -C express_relay/sdk/python/express_relay run pyflakes - files: express_relay/sdk/python/express_relay - exclude: express_relay/sdk/python/express_relay/svm/generated/ - language: "system" - - id: mypy - name: mypy - entry: poetry -C express_relay/sdk/python/express_relay run mypy - files: express_relay/sdk/python/express_relay - exclude: express_relay/sdk/python/express_relay/svm/generated/ - language: "system" # For Lazer - id: cargo-fmt-lazer name: Cargo format for Lazer diff --git a/express_relay/examples/easy_lend/.eslintrc.js b/express_relay/examples/easy_lend/.eslintrc.js deleted file mode 100644 index fca472f38b..0000000000 --- a/express_relay/examples/easy_lend/.eslintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - root: true, - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], -}; diff --git a/express_relay/examples/easy_lend/.gitignore b/express_relay/examples/easy_lend/.gitignore deleted file mode 100644 index fae5b382b9..0000000000 --- a/express_relay/examples/easy_lend/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -lib/* -out -cache -tslib -!lib/README.md diff --git a/express_relay/examples/easy_lend/README.md b/express_relay/examples/easy_lend/README.md deleted file mode 100644 index 47cb5ba901..0000000000 --- a/express_relay/examples/easy_lend/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# EasyLend Protocol - -EasyLend is a simplified lending protocol that uses Express Relay for avoiding value leakage on liquidations. -It uses Pyth price feeds to calculate the asset values and the liquidation thresholds. - -This project illustrates how to use the Express Relay SDK for contract integration and publishing opportunities. - -## Contracts - -The contracts are located in the `contracts` directory. The `EasyLend.sol` file contains the main contract logic. -The protocol can allow creation of undercollateralized vaults that are liquidatable upon creation. This is solely -for ease of testing and demonstration purposes. - -## Monitoring script - -The script in `src/monitor.ts` is used to monitor the vaults health and publish the liquidation opportunities: - -- It subscribes to Pyth price feeds to get the latest prices for the assets used in the protocol. -- It periodically checks for new vaults using the chain rpc. -- Upon finding a vault that is below the liquidation threshold, it publishes a liquidation opportunity using the Express Relay SDK. diff --git a/express_relay/examples/easy_lend/contracts/EasyLend.sol b/express_relay/examples/easy_lend/contracts/EasyLend.sol deleted file mode 100644 index 413e1c961d..0000000000 --- a/express_relay/examples/easy_lend/contracts/EasyLend.sol +++ /dev/null @@ -1,358 +0,0 @@ -// SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.13; - -import "./EasyLendStructs.sol"; -import "./EasyLendErrors.sol"; -import "forge-std/StdMath.sol"; - -import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; - -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/express-relay-sdk-solidity/IExpressRelayFeeReceiver.sol"; -import "@pythnetwork/express-relay-sdk-solidity/IExpressRelay.sol"; - -contract EasyLend is IExpressRelayFeeReceiver { - using SafeERC20 for IERC20; - - event VaultReceivedETH(address sender, uint256 amount, bytes permissionKey); - - uint256 _nVaults; - address public immutable expressRelay; - mapping(uint256 => Vault) _vaults; - address _oracle; - bool _allowUndercollateralized; - - /** - * @notice EasyLend constructor - Initializes a new token vault contract with given parameters - * - * @param expressRelayAddress: address of the express relay - * @param oracleAddress: address of the oracle contract - * @param allowUndercollateralized: boolean to allow undercollateralized vaults to be created and updated. Can be set to true for testing. - */ - constructor( - address expressRelayAddress, - address oracleAddress, - bool allowUndercollateralized - ) { - _nVaults = 0; - expressRelay = expressRelayAddress; - _oracle = oracleAddress; - _allowUndercollateralized = allowUndercollateralized; - } - - /** - * @notice getLastVaultId function - getter function to get the id of the next vault to be created - * Ids are sequential and start from 0 - */ - function getLastVaultId() public view returns (uint256) { - return _nVaults; - } - - /** - * @notice convertToUint function - converts a Pyth price struct to a uint256 representing the price of an asset - * - * @param price: Pyth price struct to be converted - * @param targetDecimals: target number of decimals for the output - */ - function convertToUint( - PythStructs.Price memory price, - uint8 targetDecimals - ) private pure returns (uint256) { - if (price.price < 0 || price.expo > 0 || price.expo < -255) { - revert InvalidPriceExponent(); - } - - uint8 priceDecimals = uint8(uint32(-1 * price.expo)); - - if (targetDecimals >= priceDecimals) { - return - uint(uint64(price.price)) * - 10 ** uint32(targetDecimals - priceDecimals); - } else { - return - uint(uint64(price.price)) / - 10 ** uint32(priceDecimals - targetDecimals); - } - } - - /** - * @notice getPrice function - retrieves price of a given token from the oracle - * - * @param id: price feed Id of the token - */ - function _getPrice(bytes32 id) internal view returns (uint256) { - IPyth oracle = IPyth(payable(_oracle)); - return convertToUint(oracle.getPriceNoOlderThan(id, 60), 18); - } - - function getAllowUndercollateralized() public view returns (bool) { - return _allowUndercollateralized; - } - - function getOracle() public view returns (address) { - return _oracle; - } - - /** - * @notice getVaultHealth function - calculates vault collateral/debt ratio - * - * @param vaultId: Id of the vault for which to calculate health - */ - function getVaultHealth(uint256 vaultId) public view returns (uint256) { - Vault memory vault = _vaults[vaultId]; - return _getVaultHealth(vault); - } - - /** - * @notice _getVaultHealth function - calculates vault collateral/debt ratio using the on-chain price feeds. - * In a real world scenario, caller should ensure that the price feeds are up to date before calling this function. - * - * @param vault: vault struct containing vault parameters - */ - function _getVaultHealth( - Vault memory vault - ) internal view returns (uint256) { - uint256 priceCollateral = _getPrice(vault.tokenPriceFeedIdCollateral); - uint256 priceDebt = _getPrice(vault.tokenPriceFeedIdDebt); - - if (priceCollateral < 0) { - revert NegativePrice(); - } - if (priceDebt < 0) { - revert NegativePrice(); - } - - uint256 valueCollateral = priceCollateral * vault.amountCollateral; - uint256 valueDebt = priceDebt * vault.amountDebt; - - return (valueCollateral * 1_000_000_000_000_000_000) / valueDebt; - } - - /** - * @notice createVault function - creates a vault - * - * @param tokenCollateral: address of the collateral token of the vault - * @param tokenDebt: address of the debt token of the vault - * @param amountCollateral: amount of collateral tokens in the vault - * @param amountDebt: amount of debt tokens in the vault - * @param minHealthRatio: minimum health ratio of the vault, 10**18 is 100% - * @param minPermissionlessHealthRatio: minimum health ratio of the vault before permissionless liquidations are allowed. This should be less than minHealthRatio - * @param tokenPriceFeedIdCollateral: price feed Id of the collateral token - * @param tokenPriceFeedIdDebt: price feed Id of the debt token - * @param updateData: data to update price feeds with - */ - function createVault( - address tokenCollateral, - address tokenDebt, - uint256 amountCollateral, - uint256 amountDebt, - uint256 minHealthRatio, - uint256 minPermissionlessHealthRatio, - bytes32 tokenPriceFeedIdCollateral, - bytes32 tokenPriceFeedIdDebt, - bytes[] calldata updateData - ) public payable returns (uint256) { - _updatePriceFeeds(updateData); - Vault memory vault = Vault( - tokenCollateral, - tokenDebt, - amountCollateral, - amountDebt, - minHealthRatio, - minPermissionlessHealthRatio, - tokenPriceFeedIdCollateral, - tokenPriceFeedIdDebt - ); - if (minPermissionlessHealthRatio > minHealthRatio) { - revert InvalidHealthRatios(); - } - if ( - !_allowUndercollateralized && - _getVaultHealth(vault) < vault.minHealthRatio - ) { - revert UncollateralizedVaultCreation(); - } - - IERC20(vault.tokenCollateral).safeTransferFrom( - msg.sender, - address(this), - vault.amountCollateral - ); - IERC20(vault.tokenDebt).safeTransfer(msg.sender, vault.amountDebt); - - _vaults[_nVaults] = vault; - _nVaults += 1; - - return _nVaults; - } - - /** - * @notice updateVault function - updates a vault's collateral and debt amounts - * - * @param vaultId: Id of the vault to be updated - * @param deltaCollateral: delta change to collateral amount (+ means adding collateral tokens, - means removing collateral tokens) - * @param deltaDebt: delta change to debt amount (+ means withdrawing debt tokens from protocol, - means resending debt tokens to protocol) - */ - function updateVault( - uint256 vaultId, - int256 deltaCollateral, - int256 deltaDebt - ) public { - Vault memory vault = _vaults[vaultId]; - - uint256 qCollateral = stdMath.abs(deltaCollateral); - uint256 qDebt = stdMath.abs(deltaDebt); - - bool withdrawExcessiveCollateral = (deltaCollateral < 0) && - (qCollateral > vault.amountCollateral); - - if (withdrawExcessiveCollateral) { - revert InvalidVaultUpdate(); - } - - uint256 futureCollateral = (deltaCollateral >= 0) - ? (vault.amountCollateral + qCollateral) - : (vault.amountCollateral - qCollateral); - uint256 futureDebt = (deltaDebt >= 0) - ? (vault.amountDebt + qDebt) - : (vault.amountDebt - qDebt); - - vault.amountCollateral = futureCollateral; - vault.amountDebt = futureDebt; - - if ( - !_allowUndercollateralized && - _getVaultHealth(vault) < vault.minHealthRatio - ) { - revert InvalidVaultUpdate(); - } - - // update collateral position - if (deltaCollateral >= 0) { - // sender adds more collateral to their vault - IERC20(vault.tokenCollateral).safeTransferFrom( - msg.sender, - address(this), - qCollateral - ); - _vaults[vaultId].amountCollateral += qCollateral; - } else { - // sender takes back collateral from their vault - IERC20(vault.tokenCollateral).safeTransfer(msg.sender, qCollateral); - _vaults[vaultId].amountCollateral -= qCollateral; - } - - // update debt position - if (deltaDebt >= 0) { - // sender takes out more debt position - IERC20(vault.tokenDebt).safeTransfer(msg.sender, qDebt); - _vaults[vaultId].amountDebt += qDebt; - } else { - // sender sends back debt tokens - IERC20(vault.tokenDebt).safeTransferFrom( - msg.sender, - address(this), - qDebt - ); - _vaults[vaultId].amountDebt -= qDebt; - } - } - - /** - * @notice getVault function - getter function to get a vault's parameters - * - * @param vaultId: Id of the vault - */ - function getVault(uint256 vaultId) public view returns (Vault memory) { - return _vaults[vaultId]; - } - - /** - * @notice _updatePriceFeeds function - updates the specified price feeds with given data - * - * @param updateData: data to update price feeds with - */ - function _updatePriceFeeds(bytes[] calldata updateData) internal { - if (updateData.length == 0) { - return; - } - IPyth oracle = IPyth(payable(_oracle)); - oracle.updatePriceFeeds{value: msg.value}(updateData); - } - - /** - * @notice liquidate function - liquidates a vault - * This function calculates the health of the vault and based on the vault parameters one of the following actions is taken: - * 1. If health >= minHealthRatio, don't liquidate - * 2. If minHealthRatio > health >= minPermissionlessHealthRatio, only liquidate if the vault is permissioned via express relay - * 3. If minPermissionlessHealthRatio > health, liquidate no matter what - * - * @param vaultId: Id of the vault to be liquidated - */ - function liquidate(uint256 vaultId) public { - Vault memory vault = _vaults[vaultId]; - uint256 vaultHealth = _getVaultHealth(vault); - - // if vault health is above the minimum health ratio, don't liquidate - if (vaultHealth >= vault.minHealthRatio) { - revert InvalidLiquidation(); - } - - if (vaultHealth >= vault.minPermissionlessHealthRatio) { - // if vault health is below the minimum health ratio but above the minimum permissionless health ratio, - // only liquidate if permissioned - if ( - !IExpressRelay(expressRelay).isPermissioned( - address(this), // protocol fee receiver - abi.encode(vaultId) // vault id uniquely represents the opportunity and can be used as permission id - ) - ) { - revert InvalidLiquidation(); - } - } - - IERC20(vault.tokenDebt).transferFrom( - msg.sender, - address(this), - vault.amountDebt - ); - IERC20(vault.tokenCollateral).transfer( - msg.sender, - vault.amountCollateral - ); - - _vaults[vaultId].amountCollateral = 0; - _vaults[vaultId].amountDebt = 0; - } - - /** - * @notice liquidateWithPriceUpdate function - liquidates a vault after updating the specified price feeds with given data - * - * @param vaultId: Id of the vault to be liquidated - * @param updateData: data to update price feeds with - */ - function liquidateWithPriceUpdate( - uint256 vaultId, - bytes[] calldata updateData - ) external payable { - _updatePriceFeeds(updateData); - liquidate(vaultId); - } - - /** - * @notice receiveAuctionProceedings function - receives native token from the express relay - * You can use permission key to distribute the received funds to users who got liquidated, LPs, etc... - * - * @param permissionKey: permission key that was used for the auction - */ - function receiveAuctionProceedings( - bytes calldata permissionKey - ) external payable { - emit VaultReceivedETH(msg.sender, msg.value, permissionKey); - } - - receive() external payable {} -} diff --git a/express_relay/examples/easy_lend/contracts/EasyLendErrors.sol b/express_relay/examples/easy_lend/contracts/EasyLendErrors.sol deleted file mode 100644 index fcd54501c8..0000000000 --- a/express_relay/examples/easy_lend/contracts/EasyLendErrors.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.13; - -// Signature: 0xe922edfd -error UncollateralizedVaultCreation(); - -// Signature: 0xdcb430ee -error InvalidVaultUpdate(); - -// Signature: 0x9cd7b1c6 -error InvalidPriceExponent(); - -// Signature: 0x85914873 -error InvalidLiquidation(); - -// Signature: 0x61ca76d2 -error NegativePrice(); - -// Signature: 0x4a7a3163 -error InvalidHealthRatios(); diff --git a/express_relay/examples/easy_lend/contracts/EasyLendStructs.sol b/express_relay/examples/easy_lend/contracts/EasyLendStructs.sol deleted file mode 100644 index bec10f6d95..0000000000 --- a/express_relay/examples/easy_lend/contracts/EasyLendStructs.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.13; - -struct Vault { - address tokenCollateral; - address tokenDebt; - uint256 amountCollateral; - uint256 amountDebt; - uint256 minHealthRatio; // 10**18 is 100% - uint256 minPermissionlessHealthRatio; - bytes32 tokenPriceFeedIdCollateral; - bytes32 tokenPriceFeedIdDebt; -} diff --git a/express_relay/examples/easy_lend/foundry.toml b/express_relay/examples/easy_lend/foundry.toml deleted file mode 100644 index 1697e3bd81..0000000000 --- a/express_relay/examples/easy_lend/foundry.toml +++ /dev/null @@ -1,10 +0,0 @@ -[profile.default] -src = "contracts" -out = "out" -libs = [ - 'lib', - '../../../node_modules', - '../../../target_chains/ethereum/sdk/solidity' -] - -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/express_relay/examples/easy_lend/lib/README.md b/express_relay/examples/easy_lend/lib/README.md deleted file mode 100644 index 41b1cdfa62..0000000000 --- a/express_relay/examples/easy_lend/lib/README.md +++ /dev/null @@ -1 +0,0 @@ -Forge installs the dependencies in this folder. They are .gitignored diff --git a/express_relay/examples/easy_lend/package.json b/express_relay/examples/easy_lend/package.json deleted file mode 100644 index 39cf597960..0000000000 --- a/express_relay/examples/easy_lend/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "easylend", - "version": "0.1.0", - "description": "Example lending protocol with express relay integration", - "private": true, - "files": [ - "tslib/**/*" - ], - "scripts": { - "build": "tsc", - "test:lint": "eslint src/", - "format": "prettier --write \"src/**/*.ts\"", - "monitor": "pnpm run build && node tslib/monitor.js", - "install-forge-deps": "forge install foundry-rs/forge-std@v1.7.6 --no-git --no-commit" - }, - "author": "", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "git+https://github.com/pyth-network/pyth-crosschain.git" - }, - "dependencies": { - "@openzeppelin/contracts": "^4.5.0", - "@pythnetwork/express-relay-js": "workspace:*", - "@pythnetwork/express-relay-sdk-solidity": "workspace:*", - "@pythnetwork/price-service-client": "workspace:^", - "@pythnetwork/pyth-evm-js": "workspace:*", - "@pythnetwork/pyth-sdk-solidity": "workspace:*", - "ts-node": "^10.9.1", - "typescript": "^5.3.3", - "viem": "^2.7.6" - }, - "devDependencies": { - "@types/yargs": "^17.0.10", - "eslint": "^8.56.0", - "prettier": "^2.6.2", - "typedoc": "^0.25.7", - "typescript": "^5.1", - "yargs": "^17.4.1" - } -} diff --git a/express_relay/examples/easy_lend/remappings.txt b/express_relay/examples/easy_lend/remappings.txt deleted file mode 100644 index 0ea07581de..0000000000 --- a/express_relay/examples/easy_lend/remappings.txt +++ /dev/null @@ -1,3 +0,0 @@ -forge-std/=lib/forge-std/src/ -@openzeppelin/=../../../node_modules/@openzeppelin/ -@pythnetwork/=../../../node_modules/@pythnetwork/ diff --git a/express_relay/examples/easy_lend/src/abi.ts b/express_relay/examples/easy_lend/src/abi.ts deleted file mode 100644 index 1619bef997..0000000000 --- a/express_relay/examples/easy_lend/src/abi.ts +++ /dev/null @@ -1,163 +0,0 @@ -// This is only a subset of the generated abi necessary for the monitor script -export const abi = [ - { - type: "function", - name: "getLastVaultId", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "getVault", - inputs: [ - { - name: "vaultId", - type: "uint256", - internalType: "uint256", - }, - ], - outputs: [ - { - name: "", - type: "tuple", - internalType: "struct Vault", - components: [ - { - name: "tokenCollateral", - type: "address", - internalType: "address", - }, - { - name: "tokenDebt", - type: "address", - internalType: "address", - }, - { - name: "amountCollateral", - type: "uint256", - internalType: "uint256", - }, - { - name: "amountDebt", - type: "uint256", - internalType: "uint256", - }, - { - name: "minHealthRatio", - type: "uint256", - internalType: "uint256", - }, - { - name: "minPermissionLessHealthRatio", - type: "uint256", - internalType: "uint256", - }, - { - name: "tokenIdCollateral", - type: "bytes32", - internalType: "bytes32", - }, - { - name: "tokenIdDebt", - type: "bytes32", - internalType: "bytes32", - }, - ], - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "liquidate", - inputs: [ - { - name: "vaultId", - type: "uint256", - internalType: "uint256", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "liquidateWithPriceUpdate", - inputs: [ - { - name: "vaultId", - type: "uint256", - internalType: "uint256", - }, - { - name: "updateData", - type: "bytes[]", - internalType: "bytes[]", - }, - ], - outputs: [], - stateMutability: "payable", - }, - { - type: "event", - name: "VaultReceivedETH", - inputs: [ - { - name: "sender", - type: "address", - indexed: false, - internalType: "address", - }, - { - name: "amount", - type: "uint256", - indexed: false, - internalType: "uint256", - }, - { - name: "permissionKey", - type: "bytes", - indexed: false, - internalType: "bytes", - }, - ], - anonymous: false, - }, - { - type: "error", - name: "InvalidHealthRatios", - inputs: [], - }, - { - type: "error", - name: "InvalidLiquidation", - inputs: [], - }, - { - type: "error", - name: "InvalidPriceExponent", - inputs: [], - }, - { - type: "error", - name: "InvalidVaultUpdate", - inputs: [], - }, - { - type: "error", - name: "NegativePrice", - inputs: [], - }, - { - type: "error", - name: "UncollateralizedVaultCreation", - inputs: [], - }, -] as const; diff --git a/express_relay/examples/easy_lend/src/monitor.ts b/express_relay/examples/easy_lend/src/monitor.ts deleted file mode 100644 index bc12dfbb31..0000000000 --- a/express_relay/examples/easy_lend/src/monitor.ts +++ /dev/null @@ -1,237 +0,0 @@ -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; -import { - checkAddress, - Client, - OpportunityCreate, -} from "@pythnetwork/express-relay-js"; -import type { ContractFunctionReturnType } from "viem"; -import { - Address, - createPublicClient, - encodeAbiParameters, - encodeFunctionData, - getContract, - Hex, - http, -} from "viem"; -import { optimismSepolia } from "viem/chains"; -import { abi } from "./abi"; -import { - PriceFeed, - PriceServiceConnection, -} from "@pythnetwork/price-service-client"; - -type VaultWithId = ContractFunctionReturnType< - typeof abi, - "view", - "getVault" -> & { id: bigint }; -class ProtocolMonitor { - private client: Client; - private subscribedIds: Set = new Set(); - private prices: Record = {}; - private priceConnection: PriceServiceConnection; - - constructor( - expressRelayEndpoint: string, - pythEndpoint: string, - private chainId: string, - private wethContract: Address, - private vaultContract: Address, - private onlyRecent: number | undefined - ) { - this.client = new Client({ baseUrl: expressRelayEndpoint }); - this.priceConnection = new PriceServiceConnection(pythEndpoint, { - priceFeedRequestConfig: { binary: true }, - }); - } - - updatePrice(feed: PriceFeed) { - this.prices[`0x${feed.id}`] = feed; - } - - async subscribeToPriceFeed(tokenId: string) { - if (!this.subscribedIds.has(tokenId)) { - await this.priceConnection.subscribePriceFeedUpdates( - [tokenId], - this.updatePrice.bind(this) - ); - this.subscribedIds.add(tokenId); - } - } - - async checkVaults() { - const rpcClient = createPublicClient({ - chain: optimismSepolia, - transport: http(), - }); - const contract = getContract({ - address: this.vaultContract, - abi, - client: rpcClient, - }); - const lastVaultId = await contract.read.getLastVaultId(); - const vaults: VaultWithId[] = []; - let startVaultId = 0n; - if (this.onlyRecent && lastVaultId > BigInt(this.onlyRecent)) { - startVaultId = lastVaultId - BigInt(this.onlyRecent); - } - for (let vaultId = startVaultId; vaultId < lastVaultId; vaultId++) { - const vault = await contract.read.getVault([vaultId]); - // Already liquidated vault - if (vault.amountCollateral == 0n && vault.amountDebt == 0n) { - continue; - } - vaults.push({ id: vaultId, ...vault }); - await this.subscribeToPriceFeed(vault.tokenIdCollateral); - await this.subscribeToPriceFeed(vault.tokenIdDebt); - } - - for (const vault of vaults) { - if (this.isLiquidatable(vault)) { - const opportunity = this.createOpportunity(vault); - await this.client.submitOpportunity(opportunity); - } - } - } - - async start() { - // eslint-disable-next-line no-constant-condition - while (true) { - await this.checkVaults(); - await new Promise((resolve) => setTimeout(resolve, 10000)); - } - } - - private createOpportunity(vault: VaultWithId) { - const priceUpdates = [ - this.prices[vault.tokenIdCollateral].getVAA()!, - this.prices[vault.tokenIdDebt].getVAA()!, - ]; - const vaas: Hex[] = priceUpdates.map( - (vaa): Hex => `0x${Buffer.from(vaa, "base64").toString("hex")}` - ); - const calldata = encodeFunctionData({ - abi, - functionName: "liquidateWithPriceUpdate", - args: [vault.id, vaas], - }); - const permission = this.createPermission(vault.id); - const targetCallValue = BigInt(priceUpdates.length); - let sellTokens; - if (targetCallValue > 0 && vault.tokenDebt == this.wethContract) { - sellTokens = [ - { - token: this.wethContract, - amount: targetCallValue + vault.amountDebt, - }, - ]; - } else { - sellTokens = [ - { token: vault.tokenDebt, amount: vault.amountDebt }, - { token: this.wethContract, amount: targetCallValue }, - ]; - } - const opportunity: OpportunityCreate = { - chainId: this.chainId, - targetContract: this.vaultContract, - targetCalldata: calldata, - permissionKey: permission, - targetCallValue: targetCallValue, - buyTokens: [ - { token: vault.tokenCollateral, amount: vault.amountCollateral }, - ], - sellTokens: sellTokens, - }; - return opportunity; - } - - private isLiquidatable(vault: VaultWithId): boolean { - if ( - !this.prices[vault.tokenIdCollateral] || - !this.prices[vault.tokenIdDebt] - ) { - return false; - } - const priceCollateral = BigInt( - this.prices[vault.tokenIdCollateral].getPriceUnchecked().price - ); - const priceDebt = BigInt( - this.prices[vault.tokenIdDebt].getPriceUnchecked().price - ); - const valueCollateral = priceCollateral * vault.amountCollateral; - const valueDebt = priceDebt * vault.amountDebt; - if (valueDebt * vault.minHealthRatio > valueCollateral * 10n ** 18n) { - const health = Number(valueCollateral) / Number(valueDebt); - console.log(`Vault ${vault.id} is undercollateralized health: ${health}`); - return true; - } - return false; - } - - private createPermission(vaultId: bigint) { - const permissionPayload = encodeAbiParameters( - [{ type: "uint256", name: "vaultId" }], - [vaultId] - ); - const permission = encodeAbiParameters( - [ - { type: "address", name: "contract" }, - { type: "bytes", name: "vaultId" }, - ], - [this.vaultContract, permissionPayload] - ); - return permission; - } -} - -const argv = yargs(hideBin(process.argv)) - .option("express-relay-endpoint", { - description: - "Express relay endpoint. e.g: https://per-staging.dourolabs.app/", - type: "string", - default: "https://per-staging.dourolabs.app/", - }) - .option("pyth-endpoint", { - description: "Pyth endpoint to use for fetching prices", - type: "string", - default: "https://hermes.pyth.network", - }) - .option("chain-id", { - description: "Chain id to send opportunities for. e.g: sepolia", - type: "string", - demandOption: true, - }) - .option("weth-contract", { - description: "wrapped eth contract address", - type: "string", - demandOption: true, - }) - .option("vault-contract", { - description: "Dummy token vault contract address", - type: "string", - demandOption: true, - }) - .option("only-recent", { - description: - "Instead of checking all vaults, only check recent ones. Specify the number of recent vaults to check", - type: "number", - }) - .help() - .alias("help", "h") - .parseSync(); - -async function run() { - const monitor = new ProtocolMonitor( - argv.expressRelayEndpoint, - argv.pythEndpoint, - argv.chainId, - checkAddress(argv.wethContract), - checkAddress(argv.vaultContract), - argv.onlyRecent - ); - await monitor.start(); -} - -run(); diff --git a/express_relay/examples/easy_lend/tsconfig.json b/express_relay/examples/easy_lend/tsconfig.json deleted file mode 100644 index 8ba49e32b8..0000000000 --- a/express_relay/examples/easy_lend/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "declaration": true, - "rootDir": "src/", - "outDir": "./tslib", - "strict": true, - "esModuleInterop": true, - "resolveJsonModule": true - }, - "include": ["src"], - "exclude": ["node_modules", "**/__tests__/*"] -} diff --git a/express_relay/sdk/js/.eslintrc.js b/express_relay/sdk/js/.eslintrc.js deleted file mode 100644 index fca472f38b..0000000000 --- a/express_relay/sdk/js/.eslintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - root: true, - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], -}; diff --git a/express_relay/sdk/js/.gitignore b/express_relay/sdk/js/.gitignore deleted file mode 100644 index c3af857904..0000000000 --- a/express_relay/sdk/js/.gitignore +++ /dev/null @@ -1 +0,0 @@ -lib/ diff --git a/express_relay/sdk/js/README.md b/express_relay/sdk/js/README.md deleted file mode 100644 index b0f3df95e7..0000000000 --- a/express_relay/sdk/js/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Pyth Express Relay JS SDK - -Utility library for interacting with the Pyth Express Relay API. - -## Installation - -### npm - -``` -$ npm install --save @pythnetwork/express-relay-js -``` - -### Yarn - -``` -$ yarn add @pythnetwork/express-relay-js -``` - -## Development - -To generate the latest type declarations from the server openapi schema, run: - -```bash -npm run generate-api-types -``` - -You can generate the SVM Typescript declaration files from the IDLs via: - -```bash -npm run generate-anchor-types -``` - -## Quickstart - -```typescript -import { - Client, - OpportunityParams, - BidParams, -} from "@pythnetwork/express-relay-js"; - -function calculateOpportunityBid(opportunity: Opportunity): BidParams | null { - // searcher implementation here - // if the opportunity is not suitable for the searcher, return null -} - -async function bidStatusCallback(bidStatus: BidStatusUpdate) { - console.log(`Bid status for bid ${bidStatus.id}: ${bidStatus.status.status}`); -} - -async function opportunityCallback(opportunity: Opportunity) { - const bidParams = calculateOpportunityBid(opportunity); - if (bidParams === null) return; - const opportunityBid = await client.signOpportunityBid( - opportunity, - bidParams, - privateKey // searcher private key with appropriate permissions and assets - ); - await client.submitOpportunityBid(opportunityBid); -} - -const client = new Client( - { baseUrl: "https://per-staging.dourolabs.app/" }, - bidStatusCallback, - opportunityCallback -); - -await client.subscribeChains([chain_id]); // chain id you want to subscribe to -``` - -### Example - -There is an example searcher in [examples](./src/examples/) directory. - -#### SimpleSearcher - -[This example](./src/examples/simpleSearcherEvm.ts) fetches `OpportunityParams` from the specified endpoint, -creates a fixed bid on each opportunity and signs them with the provided private key, and finally submits them back to the server. You can run it with -`npm run simple-searcher`. A full command looks like this: - -```bash -npm run simple-searcher-evm -- \ - --endpoint https://per-staging.dourolabs.app/ \ - --chain-id op_sepolia \ - --private-key -``` - -#### SimpleSearcherSvm - -The SimpleSearcherSvm example submits a dummy SVM transaction to the auction server after appending the appropriate `SubmitBid` instruction that permissions the transaction. You can run it with `npm run simple-searcher-svm`, and the full command looks like: - -```bash -npm run simple-searcher-svm -- \ - --endpoint-express-relay https://per-staging.dourolabs.app/ \ - --chain-id development-solana \ - --private-key \ - --endpoint-svm "https://api.mainnet-beta.solana.com" -``` - -Note that if you are using a localhost server at `http://127.0.0.1`, you should specify `--endpoint http://127.0.0.1:{PORT}` rather than `http://localhost:{PORT}`, as Typescript maps `localhost` to `::1` in line with IPv6 rather than to `127.0.0.1` as with IPv4. diff --git a/express_relay/sdk/js/package.json b/express_relay/sdk/js/package.json deleted file mode 100644 index fd08cea6d8..0000000000 --- a/express_relay/sdk/js/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@pythnetwork/express-relay-js", - "version": "0.12.2", - "description": "Utilities for interacting with the express relay protocol", - "homepage": "https://github.com/pyth-network/pyth-crosschain/tree/main/express_relay/sdk/js", - "author": "Douro Labs", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "files": [ - "lib/**/*" - ], - "publishConfig": { - "access": "public" - }, - "scripts": { - "build": "tsc", - "simple-searcher-evm": "pnpm run build && node lib/examples/simpleSearcherEvm.js", - "simple-searcher-svm": "pnpm run build && node lib/examples/simpleSearcherSvm.js", - "simple-searcher-limo": "pnpm run build && node lib/examples/simpleSearcherLimo.js", - "generate-api-types": "openapi-typescript http://127.0.0.1:9000/docs/openapi.json --output src/serverTypes.d.ts", - "generate-anchor-types": "anchor idl type src/idl/idlExpressRelay.json --out src/expressRelayTypes.d.ts && anchor idl type src/examples/idl/idlDummy.json --out src/examples/dummyTypes.d.ts", - "format": "prettier --write \"src/**/*.ts\"", - "test:lint": "eslint src", - "prepublishOnly": "pnpm run build && pnpm test:lint", - "preversion": "pnpm run test:lint", - "version": "pnpm run format && git add -A src" - }, - "keywords": [ - "pyth", - "oracle", - "relay" - ], - "repository": { - "type": "git", - "url": "https://github.com/pyth-network/pyth-crosschain", - "directory": "express_relay/sdk/js" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.30.1", - "@kamino-finance/limo-sdk": "^0.3.0", - "@solana/web3.js": "^1.95.3", - "decimal.js": "^10.4.3", - "isomorphic-ws": "^5.0.0", - "openapi-client-axios": "^7.5.5", - "openapi-fetch": "^0.8.2", - "viem": "^2.16.2", - "ws": "^8.17.1" - }, - "devDependencies": { - "@pythnetwork/pyth-evm-js": "workspace:*", - "@types/node": "^20.14.9", - "@types/yargs": "^17.0.32", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.57.0", - "jest": "^27.5.1", - "openapi-typescript": "6.5.5", - "prettier": "^2.8.8", - "typescript": "^5.5.2", - "yargs": "^17.7.2" - }, - "license": "Apache-2.0" -} diff --git a/express_relay/sdk/js/src/abi.ts b/express_relay/sdk/js/src/abi.ts deleted file mode 100644 index 0b572ac3cd..0000000000 --- a/express_relay/sdk/js/src/abi.ts +++ /dev/null @@ -1,103 +0,0 @@ -export const executeOpportunityAbi = { - type: "function", - name: "executeOpportunity", - inputs: [ - { - name: "params", - type: "tuple", - internalType: "struct ExecutionParams", - components: [ - { - name: "permit", - type: "tuple", - internalType: "struct ISignatureTransfer.PermitBatchTransferFrom", - components: [ - { - name: "permitted", - type: "tuple[]", - internalType: "struct ISignatureTransfer.TokenPermissions[]", - components: [ - { - name: "token", - type: "address", - internalType: "address", - }, - { - name: "amount", - type: "uint256", - internalType: "uint256", - }, - ], - }, - { - name: "nonce", - type: "uint256", - internalType: "uint256", - }, - { - name: "deadline", - type: "uint256", - internalType: "uint256", - }, - ], - }, - { - name: "witness", - type: "tuple", - internalType: "struct ExecutionWitness", - components: [ - { - name: "buyTokens", - type: "tuple[]", - internalType: "struct TokenAmount[]", - components: [ - { - name: "token", - type: "address", - internalType: "address", - }, - { - name: "amount", - type: "uint256", - internalType: "uint256", - }, - ], - }, - { - name: "executor", - type: "address", - internalType: "address", - }, - { - name: "targetContract", - type: "address", - internalType: "address", - }, - { - name: "targetCalldata", - type: "bytes", - internalType: "bytes", - }, - { - name: "targetCallValue", - type: "uint256", - internalType: "uint256", - }, - { - name: "bidAmount", - type: "uint256", - internalType: "uint256", - }, - ], - }, - ], - }, - { - name: "signature", - type: "bytes", - internalType: "bytes", - }, - ], - outputs: [], - stateMutability: "payable", -}; diff --git a/express_relay/sdk/js/src/const.ts b/express_relay/sdk/js/src/const.ts deleted file mode 100644 index ec31296d25..0000000000 --- a/express_relay/sdk/js/src/const.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { OpportunityAdapterConfig, SvmConstantsConfig } from "./types"; - -export const OPPORTUNITY_ADAPTER_CONFIGS: Record< - string, - OpportunityAdapterConfig -> = { - op_sepolia: { - chain_id: 11155420, - opportunity_adapter_factory: "0xfA119693864b2F185742A409c66f04865c787754", - opportunity_adapter_init_bytecode_hash: - "0x3d71516d94b96a8fdca4e3a5825a6b41c9268a8e94610367e69a8462cc543533", - permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3", - weth: "0x74A4A85C611679B73F402B36c0F84A7D2CcdFDa3", - }, - mode: { - chain_id: 34443, - opportunity_adapter_factory: "0x59F78DE21a0b05d96Ae00c547BA951a3B905602f", - opportunity_adapter_init_bytecode_hash: - "0xd53b8e32ab2ecba07c3e3a17c3c5e492c62e2f7051b89e5154f52e6bfeb0e38f", - permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3", - weth: "0x4200000000000000000000000000000000000006", - }, -}; - -export const SVM_CONSTANTS: Record = { - "development-solana": { - expressRelayProgram: new PublicKey( - "PytERJFhAKuNNuaiXkApLfWzwNwSNDACpigT3LwQfou" - ), - }, -}; diff --git a/express_relay/sdk/js/src/evm.ts b/express_relay/sdk/js/src/evm.ts deleted file mode 100644 index aec2d0aa90..0000000000 --- a/express_relay/sdk/js/src/evm.ts +++ /dev/null @@ -1,212 +0,0 @@ -import { - Bid, - BidParams, - OpportunityBid, - OpportunityEvm, - TokenAmount, - TokenPermissions, -} from "./types"; -import { Address, encodeFunctionData, getContractAddress, Hex } from "viem"; -import { privateKeyToAccount, signTypedData } from "viem/accounts"; -import { checkAddress, ClientError } from "./index"; -import { OPPORTUNITY_ADAPTER_CONFIGS } from "./const"; -import { executeOpportunityAbi } from "./abi"; - -/** - * Converts sellTokens, bidAmount, and callValue to permitted tokens - * @param tokens List of sellTokens - * @param bidAmount - * @param callValue - * @param weth - * @returns List of permitted tokens - */ -function getPermittedTokens( - tokens: TokenAmount[], - bidAmount: bigint, - callValue: bigint, - weth: Address -): TokenPermissions[] { - const permitted: TokenPermissions[] = tokens.map(({ token, amount }) => ({ - token, - amount, - })); - const wethIndex = permitted.findIndex(({ token }) => token === weth); - const extraWethNeeded = bidAmount + callValue; - if (wethIndex !== -1) { - permitted[wethIndex].amount += extraWethNeeded; - return permitted; - } - if (extraWethNeeded > 0) { - permitted.push({ token: weth, amount: extraWethNeeded }); - } - return permitted; -} - -function getOpportunityConfig(chainId: string) { - const opportunityAdapterConfig = OPPORTUNITY_ADAPTER_CONFIGS[chainId]; - if (!opportunityAdapterConfig) { - throw new ClientError( - `Opportunity adapter config not found for chain id: ${chainId}` - ); - } - return opportunityAdapterConfig; -} - -export async function signBid( - opportunity: OpportunityEvm, - bidParams: BidParams, - privateKey: Hex -): Promise { - const opportunityAdapterConfig = getOpportunityConfig(opportunity.chainId); - const executor = privateKeyToAccount(privateKey).address; - const permitted = getPermittedTokens( - opportunity.sellTokens, - bidParams.amount, - opportunity.targetCallValue, - checkAddress(opportunityAdapterConfig.weth) - ); - const signature = await getSignature(opportunity, bidParams, privateKey); - - const calldata = makeAdapterCalldata( - opportunity, - permitted, - executor, - bidParams, - signature - ); - - return { - amount: bidParams.amount, - targetCalldata: calldata, - chainId: opportunity.chainId, - targetContract: opportunityAdapterConfig.opportunity_adapter_factory, - permissionKey: opportunity.permissionKey, - env: "evm", - }; -} - -/** - * Constructs the calldata for the opportunity adapter contract. - * @param opportunity Opportunity to bid on - * @param permitted Permitted tokens - * @param executor Address of the searcher's wallet - * @param bidParams Bid amount, nonce, and deadline timestamp - * @param signature Searcher's signature for opportunity params and bidParams - * @returns Calldata for the opportunity adapter contract - */ -function makeAdapterCalldata( - opportunity: OpportunityEvm, - permitted: TokenPermissions[], - executor: Address, - bidParams: BidParams, - signature: Hex -): Hex { - return encodeFunctionData({ - abi: [executeOpportunityAbi], - args: [ - [ - [permitted, bidParams.nonce, bidParams.deadline], - [ - opportunity.buyTokens, - executor, - opportunity.targetContract, - opportunity.targetCalldata, - opportunity.targetCallValue, - bidParams.amount, - ], - ], - signature, - ], - }); -} - -export async function getSignature( - opportunity: OpportunityEvm, - bidParams: BidParams, - privateKey: Hex -): Promise<`0x${string}`> { - const types = { - PermitBatchWitnessTransferFrom: [ - { name: "permitted", type: "TokenPermissions[]" }, - { name: "spender", type: "address" }, - { name: "nonce", type: "uint256" }, - { name: "deadline", type: "uint256" }, - { name: "witness", type: "OpportunityWitness" }, - ], - OpportunityWitness: [ - { name: "buyTokens", type: "TokenAmount[]" }, - { name: "executor", type: "address" }, - { name: "targetContract", type: "address" }, - { name: "targetCalldata", type: "bytes" }, - { name: "targetCallValue", type: "uint256" }, - { name: "bidAmount", type: "uint256" }, - ], - TokenAmount: [ - { name: "token", type: "address" }, - { name: "amount", type: "uint256" }, - ], - TokenPermissions: [ - { name: "token", type: "address" }, - { name: "amount", type: "uint256" }, - ], - }; - - const account = privateKeyToAccount(privateKey); - const executor = account.address; - const opportunityAdapterConfig = getOpportunityConfig(opportunity.chainId); - const permitted = getPermittedTokens( - opportunity.sellTokens, - bidParams.amount, - opportunity.targetCallValue, - checkAddress(opportunityAdapterConfig.weth) - ); - const create2Address = getContractAddress({ - bytecodeHash: - opportunityAdapterConfig.opportunity_adapter_init_bytecode_hash, - from: opportunityAdapterConfig.opportunity_adapter_factory, - opcode: "CREATE2", - salt: `0x${executor.replace("0x", "").padStart(64, "0")}`, - }); - - return signTypedData({ - privateKey, - domain: { - name: "Permit2", - verifyingContract: checkAddress(opportunityAdapterConfig.permit2), - chainId: opportunityAdapterConfig.chain_id, - }, - types, - primaryType: "PermitBatchWitnessTransferFrom", - message: { - permitted, - spender: create2Address, - nonce: bidParams.nonce, - deadline: bidParams.deadline, - witness: { - buyTokens: opportunity.buyTokens, - executor, - targetContract: opportunity.targetContract, - targetCalldata: opportunity.targetCalldata, - targetCallValue: opportunity.targetCallValue, - bidAmount: bidParams.amount, - }, - }, - }); -} - -export async function signOpportunityBid( - opportunity: OpportunityEvm, - bidParams: BidParams, - privateKey: Hex -): Promise { - const account = privateKeyToAccount(privateKey); - const signature = await getSignature(opportunity, bidParams, privateKey); - - return { - permissionKey: opportunity.permissionKey, - bid: bidParams, - executor: account.address, - signature, - opportunityId: opportunity.opportunityId, - }; -} diff --git a/express_relay/sdk/js/src/examples/dummyTypes.d.ts b/express_relay/sdk/js/src/examples/dummyTypes.d.ts deleted file mode 100644 index 7e16b2a59a..0000000000 --- a/express_relay/sdk/js/src/examples/dummyTypes.d.ts +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Program IDL in camelCase format in order to be used in JS/TS. - * - * Note that this is only a type helper and is not the actual IDL. The original - * IDL can be found at `target/idl/dummy.json`. - */ -export type Dummy = { - address: "HYCgALnu6CM2gkQVopa1HGaNf8Vzbs9bomWRiKP267P3"; - metadata: { - name: "dummy"; - version: "0.2.0"; - spec: "0.1.0"; - description: "Created with Anchor"; - }; - instructions: [ - { - name: "doNothing"; - discriminator: [112, 130, 224, 161, 71, 149, 192, 187]; - accounts: [ - { - name: "payer"; - writable: true; - signer: true; - }, - { - name: "expressRelay"; - address: "GwEtasTAxdS9neVE4GPUpcwR7DB7AizntQSPcG36ubZM"; - }, - { - name: "expressRelayMetadata"; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - program: { - kind: "account"; - path: "expressRelay"; - }; - }; - }, - { - name: "sysvarInstructions"; - address: "Sysvar1nstructions1111111111111111111111111"; - }, - { - name: "permission"; - }, - { - name: "router"; - }, - { - name: "configRouter"; - pda: { - seeds: [ - { - kind: "const"; - value: [ - 99, - 111, - 110, - 102, - 105, - 103, - 95, - 114, - 111, - 117, - 116, - 101, - 114 - ]; - }, - { - kind: "account"; - path: "router"; - } - ]; - program: { - kind: "account"; - path: "expressRelay"; - }; - }; - }, - { - name: "accounting"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [97, 99, 99, 111, 117, 110, 116, 105, 110, 103]; - } - ]; - }; - }, - { - name: "systemProgram"; - address: "11111111111111111111111111111111"; - } - ]; - args: []; - } - ]; - accounts: [ - { - name: "accounting"; - discriminator: [1, 249, 15, 214, 81, 88, 40, 108]; - }, - { - name: "expressRelayMetadata"; - discriminator: [204, 75, 133, 7, 175, 241, 130, 11]; - } - ]; - types: [ - { - name: "accounting"; - type: { - kind: "struct"; - fields: [ - { - name: "totalFees"; - type: "u64"; - } - ]; - }; - }, - { - name: "expressRelayMetadata"; - type: { - kind: "struct"; - fields: [ - { - name: "admin"; - type: "pubkey"; - }, - { - name: "relayerSigner"; - type: "pubkey"; - }, - { - name: "feeReceiverRelayer"; - type: "pubkey"; - }, - { - name: "splitRouterDefault"; - type: "u64"; - }, - { - name: "splitRelayer"; - type: "u64"; - } - ]; - }; - } - ]; -}; diff --git a/express_relay/sdk/js/src/examples/idl/idlDummy.json b/express_relay/sdk/js/src/examples/idl/idlDummy.json deleted file mode 100644 index 6199c59463..0000000000 --- a/express_relay/sdk/js/src/examples/idl/idlDummy.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "address": "HYCgALnu6CM2gkQVopa1HGaNf8Vzbs9bomWRiKP267P3", - "metadata": { - "name": "dummy", - "version": "0.2.0", - "spec": "0.1.0", - "description": "Created with Anchor" - }, - "instructions": [ - { - "name": "do_nothing", - "discriminator": [112, 130, 224, 161, 71, 149, 192, 187], - "accounts": [ - { - "name": "payer", - "writable": true, - "signer": true - }, - { - "name": "express_relay", - "address": "GwEtasTAxdS9neVE4GPUpcwR7DB7AizntQSPcG36ubZM" - }, - { - "name": "express_relay_metadata", - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ], - "program": { - "kind": "account", - "path": "express_relay" - } - } - }, - { - "name": "sysvar_instructions", - "address": "Sysvar1nstructions1111111111111111111111111" - }, - { - "name": "permission" - }, - { - "name": "router" - }, - { - "name": "config_router", - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 99, 111, 110, 102, 105, 103, 95, 114, 111, 117, 116, 101, 114 - ] - }, - { - "kind": "account", - "path": "router" - } - ], - "program": { - "kind": "account", - "path": "express_relay" - } - } - }, - { - "name": "accounting", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [97, 99, 99, 111, 117, 110, 116, 105, 110, 103] - } - ] - } - }, - { - "name": "system_program", - "address": "11111111111111111111111111111111" - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "Accounting", - "discriminator": [1, 249, 15, 214, 81, 88, 40, 108] - }, - { - "name": "ExpressRelayMetadata", - "discriminator": [204, 75, 133, 7, 175, 241, 130, 11] - } - ], - "types": [ - { - "name": "Accounting", - "type": { - "kind": "struct", - "fields": [ - { - "name": "total_fees", - "type": "u64" - } - ] - } - }, - { - "name": "ExpressRelayMetadata", - "type": { - "kind": "struct", - "fields": [ - { - "name": "admin", - "type": "pubkey" - }, - { - "name": "relayer_signer", - "type": "pubkey" - }, - { - "name": "fee_receiver_relayer", - "type": "pubkey" - }, - { - "name": "split_router_default", - "type": "u64" - }, - { - "name": "split_relayer", - "type": "u64" - } - ] - } - } - ] -} diff --git a/express_relay/sdk/js/src/examples/simpleSearcherEvm.ts b/express_relay/sdk/js/src/examples/simpleSearcherEvm.ts deleted file mode 100644 index 743f5e6c5f..0000000000 --- a/express_relay/sdk/js/src/examples/simpleSearcherEvm.ts +++ /dev/null @@ -1,144 +0,0 @@ -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; -import { BidStatusUpdateEvm, checkHex, Client } from "../index"; -import { privateKeyToAccount } from "viem/accounts"; -import { isHex } from "viem"; -import { BidStatusUpdate, Opportunity } from "../types"; -import { OPPORTUNITY_ADAPTER_CONFIGS } from "../const"; - -const DAY_IN_SECONDS = 60 * 60 * 24; - -class SimpleSearcherEvm { - private client: Client; - constructor( - public endpoint: string, - public chainId: string, - public privateKey: string, - public apiKey?: string - ) { - this.client = new Client( - { - baseUrl: endpoint, - apiKey, - }, - undefined, - this.opportunityHandler.bind(this), - this.bidStatusHandler.bind(this) - ); - } - - async bidStatusHandler(_bidStatus: BidStatusUpdate) { - const bidStatus = _bidStatus as BidStatusUpdateEvm; - let resultDetails = ""; - if (bidStatus.type == "submitted" || bidStatus.type == "won") { - resultDetails = `, transaction ${bidStatus.result}, index ${bidStatus.index} of multicall`; - } else if (bidStatus.type == "lost") { - if (bidStatus.result) { - resultDetails = `, transaction ${bidStatus.result}`; - } - if (bidStatus.index) { - resultDetails += `, index ${bidStatus.index} of multicall`; - } - } - console.log( - `Bid status for bid ${bidStatus.id}: ${bidStatus.type}${resultDetails}` - ); - } - - async opportunityHandler(opportunity: Opportunity) { - if (!("targetContract" in opportunity)) - throw new Error("Not a valid EVM opportunity"); - const bidAmount = BigInt(argv.bid); - // Bid info should be generated by evaluating the opportunity - // here for simplicity we are using a constant bid and 24 hours of validity - // TODO: generate nonce more intelligently, to reduce gas costs - const nonce = BigInt(Math.floor(Math.random() * 2 ** 50)); - const bidParams = { - amount: bidAmount, - nonce: nonce, - deadline: BigInt(Math.round(Date.now() / 1000 + DAY_IN_SECONDS)), - }; - const bid = await this.client.signBid( - opportunity, - bidParams, - checkHex(argv.privateKey) - ); - try { - const bidId = await this.client.submitBid(bid); - console.log( - `Successful bid. Opportunity id ${opportunity.opportunityId} Bid id ${bidId}` - ); - } catch (error) { - console.error( - `Failed to bid on opportunity ${opportunity.opportunityId}: ${error}` - ); - } - } - - async start() { - try { - await this.client.subscribeChains([argv.chainId]); - console.log( - `Subscribed to chain ${argv.chainId}. Waiting for opportunities...` - ); - } catch (error) { - console.error(error); - this.client.websocket?.close(); - } - } -} - -const argv = yargs(hideBin(process.argv)) - .option("endpoint", { - description: - "Express relay endpoint. e.g: https://per-staging.dourolabs.app/", - type: "string", - demandOption: true, - }) - .option("chain-id", { - description: "Chain id to fetch opportunities for. e.g: sepolia", - type: "string", - demandOption: true, - }) - .option("bid", { - description: "Bid amount in wei", - type: "string", - default: "10000000000000000", - }) - .option("private-key", { - description: - "Private key to sign the bid with in hex format with 0x prefix. e.g: 0xdeadbeef...", - type: "string", - demandOption: true, - }) - .option("api-key", { - description: - "The API key of the searcher to authenticate with the server for fetching and submitting bids", - type: "string", - demandOption: false, - }) - .help() - .alias("help", "h") - .parseSync(); -async function run() { - if (isHex(argv.privateKey)) { - const account = privateKeyToAccount(argv.privateKey); - console.log(`Using account: ${account.address}`); - } else { - throw new Error(`Invalid private key: ${argv.privateKey}`); - } - const searcher = new SimpleSearcherEvm( - argv.endpoint, - argv.chainId, - argv.privateKey, - argv.apiKey - ); - if (OPPORTUNITY_ADAPTER_CONFIGS[argv.chainId] === undefined) { - throw new Error( - `Opportunity adapter config not found for chain ${argv.chainId}` - ); - } - await searcher.start(); -} - -run(); diff --git a/express_relay/sdk/js/src/examples/simpleSearcherLimo.ts b/express_relay/sdk/js/src/examples/simpleSearcherLimo.ts deleted file mode 100644 index 51f0999a45..0000000000 --- a/express_relay/sdk/js/src/examples/simpleSearcherLimo.ts +++ /dev/null @@ -1,268 +0,0 @@ -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; -import { - Client, - ExpressRelaySvmConfig, - Opportunity, - OpportunitySvm, -} from "../index"; -import { BidStatusUpdate } from "../types"; -import { SVM_CONSTANTS } from "../const"; - -import * as anchor from "@coral-xyz/anchor"; -import { Keypair, PublicKey, Connection } from "@solana/web3.js"; - -import * as limo from "@kamino-finance/limo-sdk"; -import { Decimal } from "decimal.js"; -import { - getMintDecimals, - getPdaAuthority, -} from "@kamino-finance/limo-sdk/dist/utils"; - -const DAY_IN_SECONDS = 60 * 60 * 24; - -class SimpleSearcherLimo { - private client: Client; - private readonly connectionSvm: Connection; - private mintDecimals: Record = {}; - private expressRelayConfig: ExpressRelaySvmConfig | undefined; - constructor( - public endpointExpressRelay: string, - public chainId: string, - private searcher: Keypair, - public endpointSvm: string, - public fillRate: number, - public apiKey?: string - ) { - this.client = new Client( - { - baseUrl: endpointExpressRelay, - apiKey, - }, - undefined, - this.opportunityHandler.bind(this), - this.bidStatusHandler.bind(this) - ); - this.connectionSvm = new Connection(endpointSvm, "confirmed"); - } - - async bidStatusHandler(bidStatus: BidStatusUpdate) { - let resultDetails = ""; - if (bidStatus.type == "submitted" || bidStatus.type == "won") { - resultDetails = `, transaction ${bidStatus.result}`; - } else if (bidStatus.type == "lost") { - if (bidStatus.result) { - resultDetails = `, transaction ${bidStatus.result}`; - } - } - console.log( - `Bid status for bid ${bidStatus.id}: ${bidStatus.type}${resultDetails}` - ); - } - - async getMintDecimalsCached(mint: PublicKey): Promise { - const mintAddress = mint.toBase58(); - if (this.mintDecimals[mintAddress]) { - return this.mintDecimals[mintAddress]; - } - const decimals = await getMintDecimals(this.connectionSvm, mint); - this.mintDecimals[mintAddress] = decimals; - return decimals; - } - - async generateBid(opportunity: OpportunitySvm) { - const order = opportunity.order; - const limoClient = new limo.LimoClient( - this.connectionSvm, - order.state.globalConfig - ); - const inputMintDecimals = await this.getMintDecimalsCached( - order.state.inputMint - ); - const outputMintDecimals = await this.getMintDecimalsCached( - order.state.outputMint - ); - const effectiveFillRate = Math.min( - this.fillRate, - (100 * order.state.remainingInputAmount.toNumber()) / - order.state.initialInputAmount.toNumber() - ); - const inputAmountDecimals = new Decimal( - order.state.initialInputAmount.toNumber() - ) - .div(new Decimal(10).pow(inputMintDecimals)) - .mul(effectiveFillRate) - .div(100); - - const outputAmountDecimals = new Decimal( - order.state.expectedOutputAmount.toNumber() - ) - .div(new Decimal(10).pow(outputMintDecimals)) - .mul(effectiveFillRate) - .div(100); - - console.log("Order address", order.address.toBase58()); - console.log("Fill rate", effectiveFillRate); - console.log( - "Sell token", - order.state.inputMint.toBase58(), - "amount:", - inputAmountDecimals.toString() - ); - console.log( - "Buy token", - order.state.outputMint.toBase58(), - "amount:", - outputAmountDecimals.toString() - ); - - const ixsTakeOrder = await limoClient.takeOrderIx( - this.searcher.publicKey, - order, - inputAmountDecimals, - outputAmountDecimals, - SVM_CONSTANTS[this.chainId].expressRelayProgram, - inputMintDecimals, - outputMintDecimals - ); - const txRaw = new anchor.web3.Transaction().add(...ixsTakeOrder); - - const router = getPdaAuthority( - limoClient.getProgramID(), - order.state.globalConfig - ); - const bidAmount = new anchor.BN(argv.bid); - if (!this.expressRelayConfig) { - this.expressRelayConfig = await this.client.getExpressRelaySvmConfig( - this.chainId, - this.connectionSvm - ); - } - - const bid = await this.client.constructSvmBid( - txRaw, - this.searcher.publicKey, - router, - order.address, - bidAmount, - new anchor.BN(Math.round(Date.now() / 1000 + DAY_IN_SECONDS)), - this.chainId, - this.expressRelayConfig.relayerSigner, - this.expressRelayConfig.feeReceiverRelayer - ); - - bid.transaction.recentBlockhash = opportunity.blockHash; - bid.transaction.sign(this.searcher); - return bid; - } - - async opportunityHandler(opportunity: Opportunity) { - const bid = await this.generateBid(opportunity as OpportunitySvm); - try { - const bidId = await this.client.submitBid(bid); - console.log( - `Successful bid. Opportunity id ${opportunity.opportunityId} Bid id ${bidId}` - ); - } catch (error) { - console.error( - `Failed to bid on opportunity ${opportunity.opportunityId}: ${error}` - ); - } - } - - async start() { - try { - await this.client.subscribeChains([argv.chainId]); - console.log( - `Subscribed to chain ${argv.chainId}. Waiting for opportunities...` - ); - } catch (error) { - console.error(error); - this.client.websocket?.close(); - } - } -} - -const argv = yargs(hideBin(process.argv)) - .option("endpoint-express-relay", { - description: - "Express relay endpoint. e.g: https://per-staging.dourolabs.app/", - type: "string", - demandOption: true, - }) - .option("chain-id", { - description: "Chain id to bid on Limo opportunities for. e.g: solana", - type: "string", - demandOption: true, - }) - .option("bid", { - description: "Bid amount in lamports", - type: "string", - default: "100", - }) - .option("private-key", { - description: "Private key of the searcher in base58 format", - type: "string", - conflicts: "private-key-json-file", - }) - .option("private-key-json-file", { - description: - "Path to a json file containing the private key of the searcher in array of bytes format", - type: "string", - conflicts: "private-key", - }) - .option("api-key", { - description: - "The API key of the searcher to authenticate with the server for fetching and submitting bids", - type: "string", - demandOption: false, - }) - .option("endpoint-svm", { - description: "SVM RPC endpoint", - type: "string", - demandOption: true, - }) - .option("fill-rate", { - description: - "How much of the initial order size to fill in percentage. Default is 100%", - type: "number", - default: 100, - }) - .help() - .alias("help", "h") - .parseSync(); -async function run() { - if (!SVM_CONSTANTS[argv.chainId]) { - throw new Error(`SVM constants not found for chain ${argv.chainId}`); - } - let searcherKeyPair; - - if (argv.privateKey) { - const secretKey = anchor.utils.bytes.bs58.decode(argv.privateKey); - searcherKeyPair = Keypair.fromSecretKey(secretKey); - } else if (argv.privateKeyJsonFile) { - searcherKeyPair = Keypair.fromSecretKey( - Buffer.from( - // eslint-disable-next-line @typescript-eslint/no-var-requires - JSON.parse(require("fs").readFileSync(argv.privateKeyJsonFile)) - ) - ); - } else { - throw new Error( - "Either private-key or private-key-json-file must be provided" - ); - } - console.log(`Using searcher pubkey: ${searcherKeyPair.publicKey.toBase58()}`); - - const simpleSearcher = new SimpleSearcherLimo( - argv.endpointExpressRelay, - argv.chainId, - searcherKeyPair, - argv.endpointSvm, - argv.fillRate, - argv.apiKey - ); - await simpleSearcher.start(); -} - -run(); diff --git a/express_relay/sdk/js/src/examples/simpleSearcherSvm.ts b/express_relay/sdk/js/src/examples/simpleSearcherSvm.ts deleted file mode 100644 index 9f9c995cb0..0000000000 --- a/express_relay/sdk/js/src/examples/simpleSearcherSvm.ts +++ /dev/null @@ -1,195 +0,0 @@ -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; -import { Client } from "../index"; -import { BidStatusUpdate } from "../types"; -import { SVM_CONSTANTS } from "../const"; - -import * as anchor from "@coral-xyz/anchor"; -import { Program, AnchorProvider } from "@coral-xyz/anchor"; -import { Keypair, PublicKey, Connection } from "@solana/web3.js"; -import dummyIdl from "./idl/idlDummy.json"; -import { Dummy } from "./dummyTypes"; -import { getConfigRouterPda, getExpressRelayMetadataPda } from "../svm"; - -const DAY_IN_SECONDS = 60 * 60 * 24; -const DUMMY_PIDS: Record = { - "development-solana": new PublicKey( - "HYCgALnu6CM2gkQVopa1HGaNf8Vzbs9bomWRiKP267P3" - ), -}; - -class SimpleSearcherSvm { - private client: Client; - private connectionSvm: Connection; - constructor( - public endpointExpressRelay: string, - public chainId: string, - public privateKey: string, - public endpointSvm: string, - public apiKey?: string - ) { - this.client = new Client( - { - baseUrl: endpointExpressRelay, - apiKey, - }, - undefined, - () => { - return Promise.resolve(); - }, - this.bidStatusHandler.bind(this) - ); - this.connectionSvm = new Connection(endpointSvm, "confirmed"); - } - - async bidStatusHandler(bidStatus: BidStatusUpdate) { - let resultDetails = ""; - if (bidStatus.type == "submitted" || bidStatus.type == "won") { - resultDetails = `, transaction ${bidStatus.result}`; - } else if (bidStatus.type == "lost") { - if (bidStatus.result) { - resultDetails = `, transaction ${bidStatus.result}`; - } - } - console.log( - `Bid status for bid ${bidStatus.id}: ${bidStatus.type}${resultDetails}` - ); - } - - async dummyBid() { - const secretKey = anchor.utils.bytes.bs58.decode(this.privateKey); - const searcher = Keypair.fromSecretKey(secretKey); - - const provider = new AnchorProvider( - this.connectionSvm, - new anchor.Wallet(searcher), - {} - ); - const dummy = new Program(dummyIdl as Dummy, provider); - - const permission = PublicKey.default; - const router = Keypair.generate().publicKey; - - const svmConstants = SVM_CONSTANTS[this.chainId]; - if (!(this.chainId in DUMMY_PIDS)) { - throw new Error(`Dummy program id not found for chain ${this.chainId}`); - } - const dummyPid = DUMMY_PIDS[this.chainId]; - - const configRouter = getConfigRouterPda(this.chainId, router); - const expressRelayMetadata = getExpressRelayMetadataPda(this.chainId); - const accounting = PublicKey.findProgramAddressSync( - [anchor.utils.bytes.utf8.encode("accounting")], - dummyPid - )[0]; - - const bidAmount = new anchor.BN(argv.bid); - - const ixDummy = await dummy.methods - .doNothing() - .accountsStrict({ - payer: searcher.publicKey, - expressRelay: svmConstants.expressRelayProgram, - expressRelayMetadata, - sysvarInstructions: anchor.web3.SYSVAR_INSTRUCTIONS_PUBKEY, - permission, - router, - configRouter, - accounting, - systemProgram: anchor.web3.SystemProgram.programId, - }) - .instruction(); - ixDummy.programId = dummyPid; - - const txRaw = new anchor.web3.Transaction().add(ixDummy); - const expressRelayConfig = await this.client.getExpressRelaySvmConfig( - this.chainId, - this.connectionSvm - ); - const bid = await this.client.constructSvmBid( - txRaw, - searcher.publicKey, - router, - permission, - bidAmount, - new anchor.BN(Math.round(Date.now() / 1000 + DAY_IN_SECONDS)), - this.chainId, - expressRelayConfig.relayerSigner, - expressRelayConfig.feeReceiverRelayer - ); - - try { - const { blockhash } = await this.connectionSvm.getLatestBlockhash(); - bid.transaction.recentBlockhash = blockhash; - bid.transaction.sign(Keypair.fromSecretKey(secretKey)); - const bidId = await this.client.submitBid(bid); - console.log(`Successful bid. Bid id ${bidId}`); - } catch (error) { - console.error(`Failed to bid: ${error}`); - } - } - - async start() { - for (;;) { - await this.dummyBid(); - await new Promise((resolve) => setTimeout(resolve, 2000)); - } - } -} - -const argv = yargs(hideBin(process.argv)) - .option("endpoint-express-relay", { - description: - "Express relay endpoint. e.g: https://per-staging.dourolabs.app/", - type: "string", - demandOption: true, - }) - .option("chain-id", { - description: "Chain id to fetch opportunities for. e.g: solana", - type: "string", - demandOption: true, - }) - .option("bid", { - description: "Bid amount in lamports", - type: "string", - default: "100", - }) - .option("private-key", { - description: "Private key to sign the bid with. In 64-byte base58 format", - type: "string", - demandOption: true, - }) - .option("api-key", { - description: - "The API key of the searcher to authenticate with the server for fetching and submitting bids", - type: "string", - demandOption: false, - }) - .option("endpoint-svm", { - description: "SVM RPC endpoint", - type: "string", - demandOption: true, - }) - .help() - .alias("help", "h") - .parseSync(); -async function run() { - if (SVM_CONSTANTS[argv.chainId] === undefined) { - throw new Error(`SVM constants not found for chain ${argv.chainId}`); - } - const searcherSvm = Keypair.fromSecretKey( - anchor.utils.bytes.bs58.decode(argv.privateKey) - ); - console.log(`Using searcher pubkey: ${searcherSvm.publicKey.toBase58()}`); - - const simpleSearcher = new SimpleSearcherSvm( - argv.endpointExpressRelay, - argv.chainId, - argv.privateKey, - argv.endpointSvm, - argv.apiKey - ); - await simpleSearcher.start(); -} - -run(); diff --git a/express_relay/sdk/js/src/expressRelayTypes.d.ts b/express_relay/sdk/js/src/expressRelayTypes.d.ts deleted file mode 100644 index c85e495408..0000000000 --- a/express_relay/sdk/js/src/expressRelayTypes.d.ts +++ /dev/null @@ -1,567 +0,0 @@ -/** - * Program IDL in camelCase format in order to be used in JS/TS. - * - * Note that this is only a type helper and is not the actual IDL. The original - * IDL can be found at `target/idl/express_relay.json`. - */ -export type ExpressRelay = { - address: "GwEtasTAxdS9neVE4GPUpcwR7DB7AizntQSPcG36ubZM"; - metadata: { - name: "expressRelay"; - version: "0.2.0"; - spec: "0.1.0"; - description: "Pyth Express Relay program for handling permissioning and bid distribution"; - repository: "https://github.com/pyth-network/per"; - }; - instructions: [ - { - name: "checkPermission"; - docs: [ - "Checks if permissioning exists for a particular (permission, router) pair within the same transaction", - "Permissioning takes the form of a SubmitBid instruction with matching permission and router accounts", - "Returns the fees paid to the router in the matching instructions" - ]; - discriminator: [154, 199, 232, 242, 96, 72, 197, 236]; - accounts: [ - { - name: "sysvarInstructions"; - address: "Sysvar1nstructions1111111111111111111111111"; - }, - { - name: "permission"; - }, - { - name: "router"; - }, - { - name: "configRouter"; - pda: { - seeds: [ - { - kind: "const"; - value: [ - 99, - 111, - 110, - 102, - 105, - 103, - 95, - 114, - 111, - 117, - 116, - 101, - 114 - ]; - }, - { - kind: "account"; - path: "router"; - } - ]; - }; - }, - { - name: "expressRelayMetadata"; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - } - ]; - args: []; - returns: "u64"; - }, - { - name: "initialize"; - discriminator: [175, 175, 109, 31, 13, 152, 155, 237]; - accounts: [ - { - name: "payer"; - writable: true; - signer: true; - }, - { - name: "expressRelayMetadata"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - }, - { - name: "admin"; - }, - { - name: "relayerSigner"; - }, - { - name: "feeReceiverRelayer"; - }, - { - name: "systemProgram"; - address: "11111111111111111111111111111111"; - } - ]; - args: [ - { - name: "data"; - type: { - defined: { - name: "initializeArgs"; - }; - }; - } - ]; - }, - { - name: "setAdmin"; - discriminator: [251, 163, 0, 52, 91, 194, 187, 92]; - accounts: [ - { - name: "admin"; - writable: true; - signer: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "expressRelayMetadata"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - }, - { - name: "adminNew"; - } - ]; - args: []; - }, - { - name: "setRelayer"; - discriminator: [23, 243, 33, 88, 110, 84, 196, 37]; - accounts: [ - { - name: "admin"; - writable: true; - signer: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "expressRelayMetadata"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - }, - { - name: "relayerSigner"; - }, - { - name: "feeReceiverRelayer"; - } - ]; - args: []; - }, - { - name: "setRouterSplit"; - discriminator: [16, 150, 106, 13, 27, 191, 104, 8]; - accounts: [ - { - name: "admin"; - writable: true; - signer: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "configRouter"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [ - 99, - 111, - 110, - 102, - 105, - 103, - 95, - 114, - 111, - 117, - 116, - 101, - 114 - ]; - }, - { - kind: "account"; - path: "router"; - } - ]; - }; - }, - { - name: "expressRelayMetadata"; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - }, - { - name: "router"; - }, - { - name: "systemProgram"; - address: "11111111111111111111111111111111"; - } - ]; - args: [ - { - name: "data"; - type: { - defined: { - name: "setRouterSplitArgs"; - }; - }; - } - ]; - }, - { - name: "setSplits"; - discriminator: [175, 2, 86, 49, 225, 202, 232, 189]; - accounts: [ - { - name: "admin"; - writable: true; - signer: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "expressRelayMetadata"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - } - ]; - args: [ - { - name: "data"; - type: { - defined: { - name: "setSplitsArgs"; - }; - }; - } - ]; - }, - { - name: "submitBid"; - docs: [ - "Submits a bid for a particular (permission, router) pair and distributes bids according to splits" - ]; - discriminator: [19, 164, 237, 254, 64, 139, 237, 93]; - accounts: [ - { - name: "searcher"; - writable: true; - signer: true; - }, - { - name: "relayerSigner"; - signer: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "permission"; - }, - { - name: "router"; - writable: true; - }, - { - name: "configRouter"; - pda: { - seeds: [ - { - kind: "const"; - value: [ - 99, - 111, - 110, - 102, - 105, - 103, - 95, - 114, - 111, - 117, - 116, - 101, - 114 - ]; - }, - { - kind: "account"; - path: "router"; - } - ]; - }; - }, - { - name: "expressRelayMetadata"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - }, - { - name: "feeReceiverRelayer"; - writable: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "systemProgram"; - address: "11111111111111111111111111111111"; - }, - { - name: "sysvarInstructions"; - address: "Sysvar1nstructions1111111111111111111111111"; - } - ]; - args: [ - { - name: "data"; - type: { - defined: { - name: "submitBidArgs"; - }; - }; - } - ]; - }, - { - name: "withdrawFees"; - discriminator: [198, 212, 171, 109, 144, 215, 174, 89]; - accounts: [ - { - name: "admin"; - writable: true; - signer: true; - relations: ["expressRelayMetadata"]; - }, - { - name: "feeReceiverAdmin"; - writable: true; - }, - { - name: "expressRelayMetadata"; - writable: true; - pda: { - seeds: [ - { - kind: "const"; - value: [109, 101, 116, 97, 100, 97, 116, 97]; - } - ]; - }; - } - ]; - args: []; - } - ]; - accounts: [ - { - name: "configRouter"; - discriminator: [135, 66, 240, 166, 94, 198, 187, 36]; - }, - { - name: "expressRelayMetadata"; - discriminator: [204, 75, 133, 7, 175, 241, 130, 11]; - } - ]; - errors: [ - { - code: 6000; - name: "feeSplitLargerThanPrecision"; - msg: "Fee split(s) larger than fee precision"; - }, - { - code: 6001; - name: "feesHigherThanBid"; - msg: "Fees higher than bid"; - }, - { - code: 6002; - name: "deadlinePassed"; - msg: "Deadline passed"; - }, - { - code: 6003; - name: "invalidCpiSubmitBid"; - msg: "Invalid CPI into submit bid instruction"; - }, - { - code: 6004; - name: "missingPermission"; - msg: "Missing permission"; - }, - { - code: 6005; - name: "multiplePermissions"; - msg: "Multiple permissions"; - }, - { - code: 6006; - name: "insufficientSearcherFunds"; - msg: "Insufficient Searcher Funds"; - }, - { - code: 6007; - name: "insufficientRent"; - msg: "Insufficient funds for rent"; - } - ]; - types: [ - { - name: "configRouter"; - type: { - kind: "struct"; - fields: [ - { - name: "router"; - type: "pubkey"; - }, - { - name: "split"; - type: "u64"; - } - ]; - }; - }, - { - name: "expressRelayMetadata"; - type: { - kind: "struct"; - fields: [ - { - name: "admin"; - type: "pubkey"; - }, - { - name: "relayerSigner"; - type: "pubkey"; - }, - { - name: "feeReceiverRelayer"; - type: "pubkey"; - }, - { - name: "splitRouterDefault"; - type: "u64"; - }, - { - name: "splitRelayer"; - type: "u64"; - } - ]; - }; - }, - { - name: "initializeArgs"; - type: { - kind: "struct"; - fields: [ - { - name: "splitRouterDefault"; - type: "u64"; - }, - { - name: "splitRelayer"; - type: "u64"; - } - ]; - }; - }, - { - name: "setRouterSplitArgs"; - type: { - kind: "struct"; - fields: [ - { - name: "splitRouter"; - type: "u64"; - } - ]; - }; - }, - { - name: "setSplitsArgs"; - type: { - kind: "struct"; - fields: [ - { - name: "splitRouterDefault"; - type: "u64"; - }, - { - name: "splitRelayer"; - type: "u64"; - } - ]; - }; - }, - { - name: "submitBidArgs"; - type: { - kind: "struct"; - fields: [ - { - name: "deadline"; - type: "i64"; - }, - { - name: "bidAmount"; - type: "u64"; - } - ]; - }; - } - ]; -}; diff --git a/express_relay/sdk/js/src/idl/idlExpressRelay.json b/express_relay/sdk/js/src/idl/idlExpressRelay.json deleted file mode 100644 index a185fdfcac..0000000000 --- a/express_relay/sdk/js/src/idl/idlExpressRelay.json +++ /dev/null @@ -1,525 +0,0 @@ -{ - "address": "GwEtasTAxdS9neVE4GPUpcwR7DB7AizntQSPcG36ubZM", - "metadata": { - "name": "express_relay", - "version": "0.2.0", - "spec": "0.1.0", - "description": "Pyth Express Relay program for handling permissioning and bid distribution", - "repository": "https://github.com/pyth-network/per" - }, - "instructions": [ - { - "name": "check_permission", - "docs": [ - "Checks if permissioning exists for a particular (permission, router) pair within the same transaction", - "Permissioning takes the form of a SubmitBid instruction with matching permission and router accounts", - "Returns the fees paid to the router in the matching instructions" - ], - "discriminator": [154, 199, 232, 242, 96, 72, 197, 236], - "accounts": [ - { - "name": "sysvar_instructions", - "address": "Sysvar1nstructions1111111111111111111111111" - }, - { - "name": "permission" - }, - { - "name": "router" - }, - { - "name": "config_router", - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 99, 111, 110, 102, 105, 103, 95, 114, 111, 117, 116, 101, 114 - ] - }, - { - "kind": "account", - "path": "router" - } - ] - } - }, - { - "name": "express_relay_metadata", - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - } - ], - "args": [], - "returns": "u64" - }, - { - "name": "initialize", - "discriminator": [175, 175, 109, 31, 13, 152, 155, 237], - "accounts": [ - { - "name": "payer", - "writable": true, - "signer": true - }, - { - "name": "express_relay_metadata", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - }, - { - "name": "admin" - }, - { - "name": "relayer_signer" - }, - { - "name": "fee_receiver_relayer" - }, - { - "name": "system_program", - "address": "11111111111111111111111111111111" - } - ], - "args": [ - { - "name": "data", - "type": { - "defined": { - "name": "InitializeArgs" - } - } - } - ] - }, - { - "name": "set_admin", - "discriminator": [251, 163, 0, 52, 91, 194, 187, 92], - "accounts": [ - { - "name": "admin", - "writable": true, - "signer": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "express_relay_metadata", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - }, - { - "name": "admin_new" - } - ], - "args": [] - }, - { - "name": "set_relayer", - "discriminator": [23, 243, 33, 88, 110, 84, 196, 37], - "accounts": [ - { - "name": "admin", - "writable": true, - "signer": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "express_relay_metadata", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - }, - { - "name": "relayer_signer" - }, - { - "name": "fee_receiver_relayer" - } - ], - "args": [] - }, - { - "name": "set_router_split", - "discriminator": [16, 150, 106, 13, 27, 191, 104, 8], - "accounts": [ - { - "name": "admin", - "writable": true, - "signer": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "config_router", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 99, 111, 110, 102, 105, 103, 95, 114, 111, 117, 116, 101, 114 - ] - }, - { - "kind": "account", - "path": "router" - } - ] - } - }, - { - "name": "express_relay_metadata", - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - }, - { - "name": "router" - }, - { - "name": "system_program", - "address": "11111111111111111111111111111111" - } - ], - "args": [ - { - "name": "data", - "type": { - "defined": { - "name": "SetRouterSplitArgs" - } - } - } - ] - }, - { - "name": "set_splits", - "discriminator": [175, 2, 86, 49, 225, 202, 232, 189], - "accounts": [ - { - "name": "admin", - "writable": true, - "signer": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "express_relay_metadata", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - } - ], - "args": [ - { - "name": "data", - "type": { - "defined": { - "name": "SetSplitsArgs" - } - } - } - ] - }, - { - "name": "submit_bid", - "docs": [ - "Submits a bid for a particular (permission, router) pair and distributes bids according to splits" - ], - "discriminator": [19, 164, 237, 254, 64, 139, 237, 93], - "accounts": [ - { - "name": "searcher", - "writable": true, - "signer": true - }, - { - "name": "relayer_signer", - "signer": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "permission" - }, - { - "name": "router", - "writable": true - }, - { - "name": "config_router", - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 99, 111, 110, 102, 105, 103, 95, 114, 111, 117, 116, 101, 114 - ] - }, - { - "kind": "account", - "path": "router" - } - ] - } - }, - { - "name": "express_relay_metadata", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - }, - { - "name": "fee_receiver_relayer", - "writable": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "system_program", - "address": "11111111111111111111111111111111" - }, - { - "name": "sysvar_instructions", - "address": "Sysvar1nstructions1111111111111111111111111" - } - ], - "args": [ - { - "name": "data", - "type": { - "defined": { - "name": "SubmitBidArgs" - } - } - } - ] - }, - { - "name": "withdraw_fees", - "discriminator": [198, 212, 171, 109, 144, 215, 174, 89], - "accounts": [ - { - "name": "admin", - "writable": true, - "signer": true, - "relations": ["express_relay_metadata"] - }, - { - "name": "fee_receiver_admin", - "writable": true - }, - { - "name": "express_relay_metadata", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [109, 101, 116, 97, 100, 97, 116, 97] - } - ] - } - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "ConfigRouter", - "discriminator": [135, 66, 240, 166, 94, 198, 187, 36] - }, - { - "name": "ExpressRelayMetadata", - "discriminator": [204, 75, 133, 7, 175, 241, 130, 11] - } - ], - "errors": [ - { - "code": 6000, - "name": "FeeSplitLargerThanPrecision", - "msg": "Fee split(s) larger than fee precision" - }, - { - "code": 6001, - "name": "FeesHigherThanBid", - "msg": "Fees higher than bid" - }, - { - "code": 6002, - "name": "DeadlinePassed", - "msg": "Deadline passed" - }, - { - "code": 6003, - "name": "InvalidCPISubmitBid", - "msg": "Invalid CPI into submit bid instruction" - }, - { - "code": 6004, - "name": "MissingPermission", - "msg": "Missing permission" - }, - { - "code": 6005, - "name": "MultiplePermissions", - "msg": "Multiple permissions" - }, - { - "code": 6006, - "name": "InsufficientSearcherFunds", - "msg": "Insufficient Searcher Funds" - }, - { - "code": 6007, - "name": "InsufficientRent", - "msg": "Insufficient funds for rent" - } - ], - "types": [ - { - "name": "ConfigRouter", - "type": { - "kind": "struct", - "fields": [ - { - "name": "router", - "type": "pubkey" - }, - { - "name": "split", - "type": "u64" - } - ] - } - }, - { - "name": "ExpressRelayMetadata", - "type": { - "kind": "struct", - "fields": [ - { - "name": "admin", - "type": "pubkey" - }, - { - "name": "relayer_signer", - "type": "pubkey" - }, - { - "name": "fee_receiver_relayer", - "type": "pubkey" - }, - { - "name": "split_router_default", - "type": "u64" - }, - { - "name": "split_relayer", - "type": "u64" - } - ] - } - }, - { - "name": "InitializeArgs", - "type": { - "kind": "struct", - "fields": [ - { - "name": "split_router_default", - "type": "u64" - }, - { - "name": "split_relayer", - "type": "u64" - } - ] - } - }, - { - "name": "SetRouterSplitArgs", - "type": { - "kind": "struct", - "fields": [ - { - "name": "split_router", - "type": "u64" - } - ] - } - }, - { - "name": "SetSplitsArgs", - "type": { - "kind": "struct", - "fields": [ - { - "name": "split_router_default", - "type": "u64" - }, - { - "name": "split_relayer", - "type": "u64" - } - ] - } - }, - { - "name": "SubmitBidArgs", - "type": { - "kind": "struct", - "fields": [ - { - "name": "deadline", - "type": "i64" - }, - { - "name": "bid_amount", - "type": "u64" - } - ] - } - } - ] -} diff --git a/express_relay/sdk/js/src/index.ts b/express_relay/sdk/js/src/index.ts deleted file mode 100644 index e50dfb56f3..0000000000 --- a/express_relay/sdk/js/src/index.ts +++ /dev/null @@ -1,570 +0,0 @@ -import type { components, paths } from "./serverTypes"; -import createClient, { - ClientOptions as FetchClientOptions, -} from "openapi-fetch"; -import { Address, Hex, isAddress, isHex } from "viem"; -import WebSocket from "isomorphic-ws"; -import { - Bid, - BidId, - BidParams, - BidsResponse, - BidStatusUpdate, - BidSvm, - ExpressRelaySvmConfig, - Opportunity, - OpportunityBid, - OpportunityEvm, - OpportunityCreate, - TokenAmount, -} from "./types"; -import { - Connection, - PublicKey, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; -import * as anchor from "@coral-xyz/anchor"; -import { limoId, Order } from "@kamino-finance/limo-sdk"; -import { getPdaAuthority } from "@kamino-finance/limo-sdk/dist/utils"; -import * as evm from "./evm"; -import * as svm from "./svm"; - -export * from "./types"; -export * from "./const"; - -export class ClientError extends Error {} - -type ClientOptions = FetchClientOptions & { - baseUrl: string; - apiKey?: string; -}; - -export interface WsOptions { - /** - * Max time to wait for a response from the server in milliseconds - */ - response_timeout: number; -} - -const DEFAULT_WS_OPTIONS: WsOptions = { - response_timeout: 10000, -}; - -export function checkHex(hex: string): Hex { - if (isHex(hex)) { - return hex; - } - throw new ClientError(`Invalid hex: ${hex}`); -} - -export function checkAddress(address: string): Address { - if (isAddress(address)) { - return address; - } - throw new ClientError(`Invalid address: ${address}`); -} - -export function checkTokenQty(token: { - token: string; - amount: string; -}): TokenAmount { - return { - token: checkAddress(token.token), - amount: BigInt(token.amount), - }; -} - -export class Client { - public clientOptions: ClientOptions; - public wsOptions: WsOptions; - public websocket?: WebSocket; - public idCounter = 0; - public callbackRouter: Record< - string, - (response: components["schemas"]["ServerResultMessage"]) => void - > = {}; - private websocketOpportunityCallback?: ( - opportunity: Opportunity - ) => Promise; - - private websocketBidStatusCallback?: ( - statusUpdate: BidStatusUpdate - ) => Promise; - - private getAuthorization() { - return this.clientOptions.apiKey - ? { - Authorization: `Bearer ${this.clientOptions.apiKey}`, - } - : {}; - } - - constructor( - clientOptions: ClientOptions, - wsOptions?: WsOptions, - opportunityCallback?: (opportunity: Opportunity) => Promise, - bidStatusCallback?: (statusUpdate: BidStatusUpdate) => Promise - ) { - this.clientOptions = clientOptions; - this.clientOptions.headers = { - ...(this.clientOptions.headers ?? {}), - ...this.getAuthorization(), - }; - this.wsOptions = { ...DEFAULT_WS_OPTIONS, ...wsOptions }; - this.websocketOpportunityCallback = opportunityCallback; - this.websocketBidStatusCallback = bidStatusCallback; - } - - private connectWebsocket() { - const websocketEndpoint = new URL(this.clientOptions.baseUrl); - websocketEndpoint.protocol = - websocketEndpoint.protocol === "https:" ? "wss:" : "ws:"; - websocketEndpoint.pathname = "/v1/ws"; - - this.websocket = new WebSocket(websocketEndpoint.toString(), { - headers: this.getAuthorization(), - }); - this.websocket.on("message", async (data: string) => { - const message: - | components["schemas"]["ServerResultResponse"] - | components["schemas"]["ServerUpdateResponse"] = JSON.parse( - data.toString() - ); - if ("type" in message && message.type === "new_opportunity") { - if (this.websocketOpportunityCallback !== undefined) { - const convertedOpportunity = this.convertOpportunity( - message.opportunity - ); - if (convertedOpportunity !== undefined) { - await this.websocketOpportunityCallback(convertedOpportunity); - } - } - } else if ("type" in message && message.type === "bid_status_update") { - if (this.websocketBidStatusCallback !== undefined) { - await this.websocketBidStatusCallback({ - id: message.status.id, - ...message.status.bid_status, - }); - } - } else if ("id" in message && message.id) { - // Response to a request sent earlier via the websocket with the same id - const callback = this.callbackRouter[message.id]; - if (callback !== undefined) { - callback(message); - delete this.callbackRouter[message.id]; - } - } else if ("error" in message) { - // Can not route error messages to the callback router as they don't have an id - console.error(message.error); - } - }); - } - - /** - * Subscribes to the specified chains - * - * The opportunity handler will be called for opportunities on the specified chains - * If the opportunity handler is not set, an error will be thrown - * @param chains - */ - async subscribeChains(chains: string[]): Promise { - if (this.websocketOpportunityCallback === undefined) { - throw new ClientError("Opportunity handler not set"); - } - await this.requestViaWebsocket({ - method: "subscribe", - params: { - chain_ids: chains, - }, - }); - } - - /** - * Unsubscribes from the specified chains - * - * The opportunity handler will no longer be called for opportunities on the specified chains - * @param chains - */ - async unsubscribeChains(chains: string[]): Promise { - await this.requestViaWebsocket({ - method: "unsubscribe", - params: { - chain_ids: chains, - }, - }); - } - - async requestViaWebsocket( - msg: components["schemas"]["ClientMessage"] - ): Promise { - const msg_with_id: components["schemas"]["ClientRequest"] = { - ...msg, - id: (this.idCounter++).toString(), - }; - return new Promise((resolve, reject) => { - this.callbackRouter[msg_with_id.id] = (response) => { - if (response.status === "success") { - resolve(response.result); - } else { - reject(response.result); - } - }; - if (this.websocket === undefined) { - this.connectWebsocket(); - } - if (this.websocket !== undefined) { - if (this.websocket.readyState === WebSocket.CONNECTING) { - this.websocket.on("open", () => { - this.websocket?.send(JSON.stringify(msg_with_id)); - }); - } else if (this.websocket.readyState === WebSocket.OPEN) { - this.websocket.send(JSON.stringify(msg_with_id)); - } else { - reject("Websocket connection closing or already closed"); - } - } - setTimeout(() => { - delete this.callbackRouter[msg_with_id.id]; - reject("Websocket response timeout"); - }, this.wsOptions.response_timeout); - }); - } - - /** - * Fetches opportunities - * @param chainId Chain id to fetch opportunities for. e.g: sepolia - * @returns List of opportunities - */ - async getOpportunities(chainId?: string): Promise { - const client = createClient(this.clientOptions); - const opportunities = await client.GET("/v1/opportunities", { - params: { query: { chain_id: chainId } }, - }); - if (opportunities.data === undefined) { - throw new ClientError("No opportunities found"); - } - return opportunities.data.flatMap((opportunity) => { - const convertedOpportunity = this.convertOpportunity(opportunity); - if (convertedOpportunity === undefined) { - return []; - } - return convertedOpportunity; - }); - } - - /** - * Submits an opportunity to be exposed to searchers - * @param opportunity Opportunity to submit - */ - async submitOpportunity(opportunity: OpportunityCreate) { - const client = createClient(this.clientOptions); - let body; - if ("order" in opportunity) { - const encoded_order = Buffer.alloc( - Order.discriminator.length + Order.layout.span - ); - Order.discriminator.copy(encoded_order); - Order.layout.encode( - opportunity.order.state, - encoded_order, - Order.discriminator.length - ); - body = { - chain_id: opportunity.chainId, - version: "v1" as const, - program: opportunity.program, - - order: encoded_order.toString("base64"), - slot: opportunity.slot, - block_hash: opportunity.blockHash, - order_address: opportunity.order.address.toBase58(), - buy_tokens: [ - { - token: opportunity.order.state.inputMint.toBase58(), - amount: opportunity.order.state.remainingInputAmount.toNumber(), - }, - ], - sell_tokens: [ - { - token: opportunity.order.state.outputMint.toBase58(), - amount: opportunity.order.state.expectedOutputAmount.toNumber(), - }, - ], - permission_account: opportunity.order.address.toBase58(), - router: getPdaAuthority( - limoId, - opportunity.order.state.globalConfig - ).toBase58(), - }; - } else { - body = { - chain_id: opportunity.chainId, - version: "v1" as const, - permission_key: opportunity.permissionKey, - target_contract: opportunity.targetContract, - target_calldata: opportunity.targetCalldata, - target_call_value: opportunity.targetCallValue.toString(), - sell_tokens: opportunity.sellTokens.map(({ token, amount }) => ({ - token, - amount: amount.toString(), - })), - buy_tokens: opportunity.buyTokens.map(({ token, amount }) => ({ - token, - amount: amount.toString(), - })), - }; - } - const response = await client.POST("/v1/opportunities", { - body: body, - }); - if (response.error) { - throw new ClientError(response.error.error); - } - } - - /** - * Submits a raw bid for a permission key - * @param bid - * @param subscribeToUpdates If true, the client will subscribe to bid status updates via websocket and will call the bid status callback if set - * @returns The id of the submitted bid, you can use this id to track the status of the bid - */ - async submitBid(bid: Bid, subscribeToUpdates = true): Promise { - const serverBid = this.toServerBid(bid); - if (subscribeToUpdates) { - const result = await this.requestViaWebsocket({ - method: "post_bid", - params: { - bid: serverBid, - }, - }); - if (result === null) { - throw new ClientError("Empty response in websocket for bid submission"); - } - return result.id; - } else { - const client = createClient(this.clientOptions); - const response = await client.POST("/v1/bids", { - body: serverBid, - }); - if (response.error) { - throw new ClientError(response.error.error); - } else if (response.data === undefined) { - throw new ClientError("No data returned"); - } else { - return response.data.id; - } - } - } - - /** - * Get bids for an api key - * @param fromTime The datetime to fetch bids from. If undefined or null, fetches from the beginning of time. - * @returns The paginated bids response - */ - async getBids(fromTime?: Date): Promise { - const client = createClient(this.clientOptions); - const response = await client.GET("/v1/bids", { - params: { query: { from_time: fromTime?.toISOString() } }, - }); - if (response.error) { - throw new ClientError(response.error.error); - } else if (response.data === undefined) { - throw new ClientError("No data returned"); - } else { - return response.data; - } - } - - private toServerBid(bid: Bid): components["schemas"]["Bid"] { - if (bid.env === "evm") { - return { - amount: bid.amount.toString(), - target_calldata: bid.targetCalldata, - chain_id: bid.chainId, - target_contract: bid.targetContract, - permission_key: bid.permissionKey, - }; - } - - return { - chain_id: bid.chainId, - transaction: bid.transaction - .serialize({ requireAllSignatures: false }) - .toString("base64"), - }; - } - - /** - * Converts an opportunity from the server to the client format - * Returns undefined if the opportunity version is not supported - * @param opportunity - * @returns Opportunity in the converted client format - */ - public convertOpportunity( - opportunity: components["schemas"]["Opportunity"] - ): Opportunity | undefined { - if (opportunity.version !== "v1") { - console.warn( - `Can not handle opportunity version: ${opportunity.version}. Please upgrade your client.` - ); - return undefined; - } - if ("target_calldata" in opportunity) { - return { - chainId: opportunity.chain_id, - opportunityId: opportunity.opportunity_id, - permissionKey: checkHex(opportunity.permission_key), - targetContract: checkAddress(opportunity.target_contract), - targetCalldata: checkHex(opportunity.target_calldata), - targetCallValue: BigInt(opportunity.target_call_value), - sellTokens: opportunity.sell_tokens.map(checkTokenQty), - buyTokens: opportunity.buy_tokens.map(checkTokenQty), - }; - } - const order = Order.decode(Buffer.from(opportunity.order, "base64")); - return { - chainId: opportunity.chain_id, - slot: opportunity.slot, - blockHash: opportunity.block_hash, - opportunityId: opportunity.opportunity_id, - order: { - state: order, - address: new PublicKey(opportunity.order_address), - }, - program: "limo", - }; - } - - // EVM specific functions - - /** - * Creates a signed opportunity bid for an opportunity - * @param opportunity EVM Opportunity to bid on - * @param bidParams Bid amount and valid until timestamp - * @param privateKey Private key to sign the bid with - * @returns Signed opportunity bid - */ - async signOpportunityBid( - opportunity: OpportunityEvm, - bidParams: BidParams, - privateKey: Hex - ): Promise { - return evm.signOpportunityBid(opportunity, bidParams, privateKey); - } - - /** - * Creates a signed bid for an EVM opportunity - * @param opportunity EVM Opportunity to bid on - * @param bidParams Bid amount, nonce, and deadline timestamp - * @param privateKey Private key to sign the bid with - * @returns Signed bid - */ - async signBid( - opportunity: OpportunityEvm, - bidParams: BidParams, - privateKey: Hex - ): Promise { - return evm.signBid(opportunity, bidParams, privateKey); - } - - /** - * Creates a signature for the bid and opportunity - * @param opportunity EVM Opportunity to bid on - * @param bidParams Bid amount, nonce, and deadline timestamp - * @param privateKey Private key to sign the bid with - * @returns Signature for the bid and opportunity - */ - async getSignature( - opportunity: OpportunityEvm, - bidParams: BidParams, - privateKey: Hex - ): Promise<`0x${string}`> { - return evm.getSignature(opportunity, bidParams, privateKey); - } - - // SVM specific functions - - /** - * Fetches the Express Relay SVM config necessary for bidding - * @param chainId The id for the chain you want to fetch the config for - * @param connection The connection to use for fetching the config - */ - async getExpressRelaySvmConfig( - chainId: string, - connection: Connection - ): Promise { - return svm.getExpressRelaySvmConfig(chainId, connection); - } - - /** - * Constructs a SubmitBid instruction, which can be added to a transaction to permission it on the given permission key - * @param searcher The address of the searcher that is submitting the bid - * @param router The identifying address of the router that the permission key is for - * @param permissionKey The 32-byte permission key as an SVM PublicKey - * @param bidAmount The amount of the bid in lamports - * @param deadline The deadline for the bid in seconds since Unix epoch - * @param chainId The chain ID as a string, e.g. "solana" - * @param relayerSigner The address of the relayer that is submitting the bid - * @param feeReceiverRelayer The fee collection address of the relayer - * @returns The SubmitBid instruction - */ - async constructSubmitBidInstruction( - searcher: PublicKey, - router: PublicKey, - permissionKey: PublicKey, - bidAmount: anchor.BN, - deadline: anchor.BN, - chainId: string, - relayerSigner: PublicKey, - feeReceiverRelayer: PublicKey - ): Promise { - return svm.constructSubmitBidInstruction( - searcher, - router, - permissionKey, - bidAmount, - deadline, - chainId, - relayerSigner, - feeReceiverRelayer - ); - } - - /** - * Constructs an SVM bid, by adding a SubmitBid instruction to a transaction - * @param tx The transaction to add a SubmitBid instruction to. This transaction should already check for the appropriate permissions. - * @param searcher The address of the searcher that is submitting the bid - * @param router The identifying address of the router that the permission key is for - * @param permissionKey The 32-byte permission key as an SVM PublicKey - * @param bidAmount The amount of the bid in lamports - * @param deadline The deadline for the bid in seconds since Unix epoch - * @param chainId The chain ID as a string, e.g. "solana" - * @param relayerSigner The address of the relayer that is submitting the bid - * @param feeReceiverRelayer The fee collection address of the relayer - * @returns The constructed SVM bid - */ - async constructSvmBid( - tx: Transaction, - searcher: PublicKey, - router: PublicKey, - permissionKey: PublicKey, - bidAmount: anchor.BN, - deadline: anchor.BN, - chainId: string, - relayerSigner: PublicKey, - feeReceiverRelayer: PublicKey - ): Promise { - return svm.constructSvmBid( - tx, - searcher, - router, - permissionKey, - bidAmount, - deadline, - chainId, - relayerSigner, - feeReceiverRelayer - ); - } -} diff --git a/express_relay/sdk/js/src/serverTypes.d.ts b/express_relay/sdk/js/src/serverTypes.d.ts deleted file mode 100644 index d2918d123d..0000000000 --- a/express_relay/sdk/js/src/serverTypes.d.ts +++ /dev/null @@ -1,823 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -export interface paths { - "/v1/bids": { - /** - * Returns at most 20 bids which were submitted after a specific time. - * @description If no time is provided, the server will return the first bids. - */ - get: operations["get_bids_by_time"]; - /** - * Bid on a specific permission key for a specific chain. - * @description Your bid will be verified by the server. Depending on the outcome of the auction, a transaction - * containing your bid will be sent to the blockchain expecting the bid amount to be paid in the transaction. - */ - post: operations["bid"]; - }; - "/v1/bids/{bid_id}": { - /** Query the status of a specific bid. */ - get: operations["bid_status"]; - }; - "/v1/opportunities": { - /** - * Fetch opportunities ready for execution or historical opportunities - * @description depending on the mode. You need to provide `chain_id` for historical mode. - * Opportunities are sorted by creation time in ascending order in historical mode. - * Total number of opportunities returned is limited by 20. - */ - get: operations["get_opportunities"]; - /** - * Submit an opportunity ready to be executed. - * @description The opportunity will be verified by the server. If the opportunity is valid, it will be stored in the database - * and will be available for bidding. - */ - post: operations["post_opportunity"]; - }; - "/v1/opportunities/{opportunity_id}/bids": { - /** Bid on opportunity */ - post: operations["opportunity_bid"]; - }; - "/v1/profiles/access_tokens": { - /** - * Revoke the authenticated profile access token. - * @description Returns empty response. - */ - delete: operations["delete_profile_access_token"]; - }; -} - -export type webhooks = Record; - -export interface components { - schemas: { - APIResponse: components["schemas"]["BidResult"]; - Bid: components["schemas"]["BidEvm"] | components["schemas"]["BidSvm"]; - BidEvm: { - /** - * @description Amount of bid in wei. - * @example 10 - */ - amount: string; - /** - * @description The chain id to bid on. - * @example op_sepolia - */ - chain_id: string; - /** - * @description The permission key to bid on. - * @example 0xdeadbeef - */ - permission_key: string; - /** - * @description Calldata for the contract call. - * @example 0xdeadbeef - */ - target_calldata: string; - /** - * @description The contract address to call. - * @example 0xcA11bde05977b3631167028862bE2a173976CA11 - */ - target_contract: string; - }; - BidResult: { - /** - * @description The unique id created to identify the bid. This id can be used to query the status of the bid. - * @example beedbeed-58cc-4372-a567-0e02b2c3d479 - */ - id: string; - /** - * @description The status of the request. If the bid was placed successfully, the status will be "OK". - * @example OK - */ - status: string; - }; - BidStatus: - | components["schemas"]["BidStatusEvm"] - | components["schemas"]["BidStatusSvm"]; - BidStatusEvm: - | { - /** @enum {string} */ - type: "pending"; - } - | { - /** - * Format: int32 - * @example 1 - */ - index: number; - /** @example 0x103d4fbd777a36311b5161f2062490f761f25b67406badb2bace62bb170aa4e3 */ - result: string; - /** @enum {string} */ - type: "submitted"; - } - | { - /** - * Format: int32 - * @example 1 - */ - index?: number | null; - /** @example 0x103d4fbd777a36311b5161f2062490f761f25b67406badb2bace62bb170aa4e3 */ - result?: string | null; - /** @enum {string} */ - type: "lost"; - } - | { - /** - * Format: int32 - * @example 1 - */ - index: number; - /** @example 0x103d4fbd777a36311b5161f2062490f761f25b67406badb2bace62bb170aa4e3 */ - result: string; - /** @enum {string} */ - type: "won"; - }; - BidStatusSvm: - | { - /** @enum {string} */ - type: "pending"; - } - | { - /** @example Jb2urXPyEh4xiBgzYvwEFe4q1iMxG1DNxWGGQg94AmKgqFTwLAiTiHrYiYxwHUB4DV8u5ahNEVtMMDm3sNSRdTg */ - result: string; - /** @enum {string} */ - type: "submitted"; - } - | { - /** @example Jb2urXPyEh4xiBgzYvwEFe4q1iMxG1DNxWGGQg94AmKgqFTwLAiTiHrYiYxwHUB4DV8u5ahNEVtMMDm3sNSRdTg */ - result?: string | null; - /** @enum {string} */ - type: "lost"; - } - | { - /** @example Jb2urXPyEh4xiBgzYvwEFe4q1iMxG1DNxWGGQg94AmKgqFTwLAiTiHrYiYxwHUB4DV8u5ahNEVtMMDm3sNSRdTg */ - result: string; - /** @enum {string} */ - type: "won"; - }; - BidStatusWithId: { - bid_status: components["schemas"]["BidStatus"]; - id: string; - }; - BidSvm: { - /** - * @description The chain id to bid on. - * @example solana - */ - chain_id: string; - /** - * @description The transaction for bid. - * @example SGVsbG8sIFdvcmxkIQ== - */ - transaction: string; - }; - ClientMessage: - | { - /** @enum {string} */ - method: "subscribe"; - params: { - chain_ids: string[]; - }; - } - | { - /** @enum {string} */ - method: "unsubscribe"; - params: { - chain_ids: string[]; - }; - } - | { - /** @enum {string} */ - method: "post_bid"; - params: { - bid: components["schemas"]["Bid"]; - }; - } - | { - /** @enum {string} */ - method: "post_opportunity_bid"; - params: { - opportunity_bid: components["schemas"]["OpportunityBidEvm"]; - opportunity_id: string; - }; - }; - ClientRequest: components["schemas"]["ClientMessage"] & { - id: string; - }; - ErrorBodyResponse: { - error: string; - }; - Opportunity: - | components["schemas"]["OpportunityEvm"] - | components["schemas"]["OpportunitySvm"]; - OpportunityBidEvm: { - /** - * @description The bid amount in wei. - * @example 1000000000000000000 - */ - amount: string; - /** - * @description The latest unix timestamp in seconds until which the bid is valid - * @example 1000000000000000000 - */ - deadline: string; - /** - * @description Executor address - * @example 0x5FbDB2315678afecb367f032d93F642f64180aa2 - */ - executor: string; - /** - * @description The nonce of the bid permit signature - * @example 123 - */ - nonce: string; - /** - * @description The opportunity permission key - * @example 0xdeadbeefcafe - */ - permission_key: string; - /** @example 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12 */ - signature: string; - }; - OpportunityBidResult: { - /** - * @description The unique id created to identify the bid. This id can be used to query the status of the bid. - * @example beedbeed-58cc-4372-a567-0e02b2c3d479 - */ - id: string; - /** @example OK */ - status: string; - }; - /** @description The input type for creating a new opportunity */ - OpportunityCreate: - | components["schemas"]["OpportunityCreateEvm"] - | components["schemas"]["OpportunityCreateSvm"]; - OpportunityCreateEvm: components["schemas"]["OpportunityCreateV1Evm"] & { - /** @enum {string} */ - version: "v1"; - }; - /** @description Program specific parameters for the opportunity */ - OpportunityCreateProgramParamsV1Svm: { - /** - * @description The Limo order to be executed, encoded in base64 - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - order: string; - /** - * @description Address of the order account - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - order_address: string; - /** @enum {string} */ - program: "limo"; - }; - OpportunityCreateSvm: components["schemas"]["OpportunityCreateV1Svm"] & { - /** @enum {string} */ - version: "v1"; - }; - /** - * @description Opportunity parameters needed for on-chain execution - * If a searcher signs the opportunity and have approved enough tokens to opportunity adapter, - * by calling this target contract with the given target calldata and structures, they will - * send the tokens specified in the sell_tokens field and receive the tokens specified in the buy_tokens field. - */ - OpportunityCreateV1Evm: { - buy_tokens: components["schemas"]["TokenAmountEvm"][]; - /** - * @description The chain id where the opportunity will be executed. - * @example op_sepolia - */ - chain_id: string; - /** - * @description The permission key required for successful execution of the opportunity. - * @example 0xdeadbeefcafe - */ - permission_key: string; - sell_tokens: components["schemas"]["TokenAmountEvm"][]; - /** - * @description The value to send with the contract call. - * @example 1 - */ - target_call_value: string; - /** - * @description Calldata for the target contract call. - * @example 0xdeadbeef - */ - target_calldata: string; - /** - * @description The contract address to call for execution of the opportunity. - * @example 0xcA11bde05977b3631167028862bE2a173976CA11 - */ - target_contract: string; - }; - /** - * @description Opportunity parameters needed for on-chain execution. - * Parameters may differ for each program - */ - OpportunityCreateV1Svm: { - /** - * @description The Limo order to be executed, encoded in base64 - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - order: string; - /** - * @description Address of the order account - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - order_address: string; - /** @enum {string} */ - program: "limo"; - } & { - /** - * @description The block hash to be used for the opportunity execution - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - block_hash: string; - buy_tokens: components["schemas"]["TokenAmountSvm"][]; - /** - * @description The chain id where the opportunity will be executed. - * @example solana - */ - chain_id: string; - /** - * @description The permission account to be permitted by the ER contract for the opportunity execution of the protocol - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - permission_account: string; - /** - * @description The router account to be used for the opportunity execution of the protocol - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - router: string; - sell_tokens: components["schemas"]["TokenAmountSvm"][]; - /** - * Format: int64 - * @description The slot where the program params were fetched from using the RPC - * @example 293106477 - */ - slot: number; - }; - OpportunityEvm: (components["schemas"]["OpportunityParamsV1Evm"] & { - /** @enum {string} */ - version: "v1"; - }) & { - /** - * @description Creation time of the opportunity (in microseconds since the Unix epoch) - * @example 1700000000000000 - */ - creation_time: number; - /** - * @description The opportunity unique id - * @example obo3ee3e-58cc-4372-a567-0e02b2c3d479 - */ - opportunity_id: string; - }; - /** @enum {string} */ - OpportunityMode: "live" | "historical"; - OpportunityParamsEvm: components["schemas"]["OpportunityParamsV1Evm"] & { - /** @enum {string} */ - version: "v1"; - }; - OpportunityParamsSvm: components["schemas"]["OpportunityParamsV1Svm"] & { - /** @enum {string} */ - version: "v1"; - }; - OpportunityParamsV1Evm: components["schemas"]["OpportunityCreateV1Evm"]; - /** - * @description Opportunity parameters needed for on-chain execution. - * Parameters may differ for each program - */ - OpportunityParamsV1Svm: { - /** - * @description The Limo order to be executed, encoded in base64 - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - order: string; - /** - * @description Address of the order account - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - order_address: string; - /** @enum {string} */ - program: "limo"; - } & { - /** @example solana */ - chain_id: string; - }; - OpportunitySvm: (components["schemas"]["OpportunityParamsV1Svm"] & { - /** @enum {string} */ - version: "v1"; - }) & { - /** - * @description The block hash to be used for the opportunity execution - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - block_hash: string; - /** - * @description Creation time of the opportunity (in microseconds since the Unix epoch) - * @example 1700000000000000 - */ - creation_time: number; - /** - * @description The opportunity unique id - * @example obo3ee3e-58cc-4372-a567-0e02b2c3d479 - */ - opportunity_id: string; - /** - * Format: int64 - * @description The slot where the program params were fetched from using the RPC - * @example 293106477 - */ - slot: number; - }; - ServerResultMessage: - | { - result: components["schemas"]["APIResponse"] | null; - /** @enum {string} */ - status: "success"; - } - | { - result: string; - /** @enum {string} */ - status: "error"; - }; - /** - * @description This enum is used to send the result for a specific client request with the same id - * id is only None when the client message is invalid - */ - ServerResultResponse: components["schemas"]["ServerResultMessage"] & { - id?: string | null; - }; - /** @description This enum is used to send an update to the client for any subscriptions made */ - ServerUpdateResponse: - | { - opportunity: components["schemas"]["Opportunity"]; - /** @enum {string} */ - type: "new_opportunity"; - } - | { - status: components["schemas"]["BidStatusWithId"]; - /** @enum {string} */ - type: "bid_status_update"; - }; - SimulatedBid: - | components["schemas"]["SimulatedBidEvm"] - | components["schemas"]["SimulatedBidSvm"]; - /** BidResponseEvm */ - SimulatedBidEvm: { - /** - * @description The chain id for bid. - * @example op_sepolia - */ - chain_id: string; - /** - * @description The unique id for bid. - * @example obo3ee3e-58cc-4372-a567-0e02b2c3d479 - */ - id: string; - /** - * @description The time server received the bid formatted in rfc3339. - * @example 2024-05-23T21:26:57.329954Z - */ - initiation_time: string; - /** - * @description The profile id for the bid owner. - * @example obo3ee3e-58cc-4372-a567-0e02b2c3d479 - */ - profile_id: string; - } & { - /** - * @description Amount of bid in wei. - * @example 10 - */ - bid_amount: string; - /** - * @description The gas limit for the contract call. - * @example 2000000 - */ - gas_limit: string; - /** - * @description The permission key for bid. - * @example 0xdeadbeef - */ - permission_key: string; - status: components["schemas"]["BidStatusEvm"]; - /** - * @description Calldata for the contract call. - * @example 0xdeadbeef - */ - target_calldata: string; - /** - * @description The contract address to call. - * @example 0xcA11bde05977b3631167028862bE2a173976CA11 - */ - target_contract: string; - }; - /** BidResponseSvm */ - SimulatedBidSvm: { - /** - * @description The chain id for bid. - * @example op_sepolia - */ - chain_id: string; - /** - * @description The unique id for bid. - * @example obo3ee3e-58cc-4372-a567-0e02b2c3d479 - */ - id: string; - /** - * @description The time server received the bid formatted in rfc3339. - * @example 2024-05-23T21:26:57.329954Z - */ - initiation_time: string; - /** - * @description The profile id for the bid owner. - * @example obo3ee3e-58cc-4372-a567-0e02b2c3d479 - */ - profile_id: string; - } & { - /** - * Format: int64 - * @description Amount of bid in lamports. - * @example 1000 - */ - bid_amount: number; - /** - * @description The permission key for bid in base64 format. - * This is the concatenation of the permission account and the router account. - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - permission_key: string; - status: components["schemas"]["BidStatusSvm"]; - /** - * @description The transaction of the bid. - * @example SGVsbG8sIFdvcmxkIQ== - */ - transaction: string; - }; - /** BidsResponse */ - SimulatedBids: { - items: components["schemas"]["SimulatedBid"][]; - }; - TokenAmountEvm: { - /** - * @description Token amount - * @example 1000 - */ - amount: string; - /** - * @description Token contract address - * @example 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - */ - token: string; - }; - TokenAmountSvm: { - /** - * Format: int64 - * @description Token amount in lamports - * @example 1000 - */ - amount: number; - /** - * @description Token contract address - * @example DUcTi3rDyS5QEmZ4BNRBejtArmDCWaPYGfN44vBJXKL5 - */ - token: string; - }; - }; - responses: { - BidResult: { - content: { - "application/json": { - /** - * @description The unique id created to identify the bid. This id can be used to query the status of the bid. - * @example beedbeed-58cc-4372-a567-0e02b2c3d479 - */ - id: string; - /** - * @description The status of the request. If the bid was placed successfully, the status will be "OK". - * @example OK - */ - status: string; - }; - }; - }; - /** @description An error occurred processing the request */ - ErrorBodyResponse: { - content: { - "application/json": { - error: string; - }; - }; - }; - Opportunity: { - content: { - "application/json": - | components["schemas"]["OpportunityEvm"] - | components["schemas"]["OpportunitySvm"]; - }; - }; - SimulatedBids: { - content: { - "application/json": { - items: components["schemas"]["SimulatedBid"][]; - }; - }; - }; - }; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -} - -export type $defs = Record; - -export type external = Record; - -export interface operations { - /** - * Returns at most 20 bids which were submitted after a specific time. - * @description If no time is provided, the server will return the first bids. - */ - get_bids_by_time: { - parameters: { - query?: { - /** @example 2024-05-23T21:26:57.329954Z */ - from_time?: string | null; - }; - }; - responses: { - /** @description Paginated list of bids for the specified query */ - 200: { - content: { - "application/json": components["schemas"]["SimulatedBids"]; - }; - }; - 400: components["responses"]["ErrorBodyResponse"]; - }; - }; - /** - * Bid on a specific permission key for a specific chain. - * @description Your bid will be verified by the server. Depending on the outcome of the auction, a transaction - * containing your bid will be sent to the blockchain expecting the bid amount to be paid in the transaction. - */ - bid: { - requestBody: { - content: { - "application/json": components["schemas"]["Bid"]; - }; - }; - responses: { - /** @description Bid was placed successfully */ - 200: { - content: { - "application/json": components["schemas"]["BidResult"]; - }; - }; - 400: components["responses"]["ErrorBodyResponse"]; - /** @description Chain id was not found */ - 404: { - content: { - "application/json": components["schemas"]["ErrorBodyResponse"]; - }; - }; - }; - }; - /** Query the status of a specific bid. */ - bid_status: { - parameters: { - path: { - /** @description Bid id to query for */ - bid_id: string; - }; - }; - responses: { - 200: { - content: { - "application/json": components["schemas"]["BidStatus"]; - }; - }; - 400: components["responses"]["ErrorBodyResponse"]; - /** @description Bid was not found */ - 404: { - content: { - "application/json": components["schemas"]["ErrorBodyResponse"]; - }; - }; - }; - }; - /** - * Fetch opportunities ready for execution or historical opportunities - * @description depending on the mode. You need to provide `chain_id` for historical mode. - * Opportunities are sorted by creation time in ascending order in historical mode. - * Total number of opportunities returned is limited by 20. - */ - get_opportunities: { - parameters: { - query?: { - /** @example op_sepolia */ - chain_id?: string | null; - /** @description Get opportunities in live or historical mode */ - mode?: components["schemas"]["OpportunityMode"]; - /** - * @description The permission key to filter the opportunities by. Used only in historical mode. - * @example 0xdeadbeef - */ - permission_key?: string | null; - /** - * @description The time to get the opportunities from. Used only in historical mode. - * @example 2024-05-23T21:26:57.329954Z - */ - from_time?: string | null; - }; - }; - responses: { - /** @description Array of opportunities ready for bidding */ - 200: { - content: { - "application/json": components["schemas"]["Opportunity"][]; - }; - }; - 400: components["responses"]["ErrorBodyResponse"]; - /** @description Chain id was not found */ - 404: { - content: { - "application/json": components["schemas"]["ErrorBodyResponse"]; - }; - }; - }; - }; - /** - * Submit an opportunity ready to be executed. - * @description The opportunity will be verified by the server. If the opportunity is valid, it will be stored in the database - * and will be available for bidding. - */ - post_opportunity: { - requestBody: { - content: { - "application/json": components["schemas"]["OpportunityCreate"]; - }; - }; - responses: { - /** @description The created opportunity */ - 200: { - content: { - "application/json": components["schemas"]["Opportunity"]; - }; - }; - 400: components["responses"]["ErrorBodyResponse"]; - /** @description Chain id was not found */ - 404: { - content: { - "application/json": components["schemas"]["ErrorBodyResponse"]; - }; - }; - }; - }; - /** Bid on opportunity */ - opportunity_bid: { - parameters: { - path: { - /** @description Opportunity id to bid on */ - opportunity_id: string; - }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["OpportunityBidEvm"]; - }; - }; - responses: { - /** @description Bid Result */ - 200: { - content: { - "application/json": components["schemas"]["OpportunityBidResult"]; - }; - }; - 400: components["responses"]["ErrorBodyResponse"]; - /** @description Opportunity or chain id was not found */ - 404: { - content: { - "application/json": components["schemas"]["ErrorBodyResponse"]; - }; - }; - }; - }; - /** - * Revoke the authenticated profile access token. - * @description Returns empty response. - */ - delete_profile_access_token: { - responses: { - /** @description The token successfully revoked */ - 200: { - content: never; - }; - 400: components["responses"]["ErrorBodyResponse"]; - }; - }; -} diff --git a/express_relay/sdk/js/src/svm.ts b/express_relay/sdk/js/src/svm.ts deleted file mode 100644 index 1eae25288a..0000000000 --- a/express_relay/sdk/js/src/svm.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { - Connection, - Keypair, - PublicKey, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; -import * as anchor from "@coral-xyz/anchor"; -import { BidSvm, ExpressRelaySvmConfig } from "./types"; -import { AnchorProvider, Program } from "@coral-xyz/anchor"; -import { ExpressRelay } from "./expressRelayTypes"; -import expressRelayIdl from "./idl/idlExpressRelay.json"; -import { SVM_CONSTANTS } from "./const"; -import NodeWallet from "@coral-xyz/anchor/dist/cjs/nodewallet"; - -function getExpressRelayProgram(chain: string): PublicKey { - if (!SVM_CONSTANTS[chain]) { - throw new Error(`Chain ${chain} not supported`); - } - return SVM_CONSTANTS[chain].expressRelayProgram; -} - -export function getConfigRouterPda( - chain: string, - router: PublicKey -): PublicKey { - const expressRelayProgram = getExpressRelayProgram(chain); - - return PublicKey.findProgramAddressSync( - [Buffer.from("config_router"), router.toBuffer()], - expressRelayProgram - )[0]; -} - -export function getExpressRelayMetadataPda(chain: string): PublicKey { - const expressRelayProgram = getExpressRelayProgram(chain); - - return PublicKey.findProgramAddressSync( - [Buffer.from("metadata")], - expressRelayProgram - )[0]; -} - -export async function constructSubmitBidInstruction( - searcher: PublicKey, - router: PublicKey, - permissionKey: PublicKey, - bidAmount: anchor.BN, - deadline: anchor.BN, - chainId: string, - relayerSigner: PublicKey, - feeReceiverRelayer: PublicKey -): Promise { - const expressRelay = new Program( - expressRelayIdl as ExpressRelay, - {} as AnchorProvider - ); - - const configRouter = getConfigRouterPda(chainId, router); - const expressRelayMetadata = getExpressRelayMetadataPda(chainId); - const svmConstants = SVM_CONSTANTS[chainId]; - - const ixSubmitBid = await expressRelay.methods - .submitBid({ - deadline, - bidAmount, - }) - .accountsStrict({ - searcher, - relayerSigner, - permission: permissionKey, - router, - configRouter, - expressRelayMetadata, - feeReceiverRelayer, - systemProgram: anchor.web3.SystemProgram.programId, - sysvarInstructions: anchor.web3.SYSVAR_INSTRUCTIONS_PUBKEY, - }) - .instruction(); - ixSubmitBid.programId = svmConstants.expressRelayProgram; - - return ixSubmitBid; -} - -export async function constructSvmBid( - tx: Transaction, - searcher: PublicKey, - router: PublicKey, - permissionKey: PublicKey, - bidAmount: anchor.BN, - deadline: anchor.BN, - chainId: string, - relayerSigner: PublicKey, - feeReceiverRelayer: PublicKey -): Promise { - const ixSubmitBid = await constructSubmitBidInstruction( - searcher, - router, - permissionKey, - bidAmount, - deadline, - chainId, - relayerSigner, - feeReceiverRelayer - ); - - tx.instructions.unshift(ixSubmitBid); - - return { - transaction: tx, - chainId: chainId, - env: "svm", - }; -} - -export async function getExpressRelaySvmConfig( - chainId: string, - connection: Connection -): Promise { - const provider = new AnchorProvider( - connection, - new NodeWallet(new Keypair()) - ); - const expressRelay = new Program( - expressRelayIdl as ExpressRelay, - provider - ); - const metadata = await expressRelay.account.expressRelayMetadata.fetch( - getExpressRelayMetadataPda(chainId) - ); - return { - feeReceiverRelayer: metadata.feeReceiverRelayer, - relayerSigner: metadata.relayerSigner, - }; -} diff --git a/express_relay/sdk/js/src/types.ts b/express_relay/sdk/js/src/types.ts deleted file mode 100644 index a9adea4168..0000000000 --- a/express_relay/sdk/js/src/types.ts +++ /dev/null @@ -1,247 +0,0 @@ -import { Address, Hex } from "viem"; -import type { components } from "./serverTypes"; -import { Blockhash, PublicKey, Transaction } from "@solana/web3.js"; -import { OrderStateAndAddress } from "@kamino-finance/limo-sdk/dist/utils"; - -/** - * ERC20 token with contract address and amount - */ -export type TokenAmount = { - token: Address; - amount: bigint; -}; -/** - * TokenPermissions struct for permit2 - */ -export type TokenPermissions = { - token: Address; - amount: bigint; -}; -export type BidId = string; -export type ChainId = string; -/** - * Bid parameters - */ -export type BidParams = { - /** - * Bid amount in wei - */ - amount: bigint; - /** - * Bid nonce, used to prevent replay of a submitted signature. - * This can be set to a random uint256 when creating a new signature - */ - nonce: bigint; - /** - * Unix timestamp for when the bid is no longer valid in seconds - */ - deadline: bigint; -}; - -export type OpportunityAdapterConfig = { - /** - * The chain id as a u64 - */ - chain_id: number; - /** - * The opportunity factory address - */ - opportunity_adapter_factory: Address; - /** - * The hash of the bytecode used to initialize the opportunity adapter - */ - opportunity_adapter_init_bytecode_hash: Hex; - /** - * The permit2 address - */ - permit2: Address; - /** - * The weth address - */ - weth: Address; -}; -/** - * Represents a valid opportunity ready to be executed - */ -export type OpportunityEvm = { - /** - * The chain id where the opportunity will be executed. - */ - chainId: ChainId; - - /** - * Permission key required for successful execution of the opportunity. - */ - permissionKey: Hex; - /** - * Contract address to call for execution of the opportunity. - */ - targetContract: Address; - /** - * Calldata for the targetContract call. - */ - targetCalldata: Hex; - /** - * Value to send with the targetContract call. - */ - targetCallValue: bigint; - /** - * Tokens required to execute the opportunity - */ - sellTokens: TokenAmount[]; - /** - * Tokens to receive after the opportunity is executed - */ - buyTokens: TokenAmount[]; - /** - * Unique identifier for the opportunity - */ - opportunityId: string; -}; - -export type OpportunitySvm = { - order: OrderStateAndAddress; - program: "limo"; - /** - * The chain id where the opportunity will be executed. - */ - chainId: ChainId; - /** - * Slot where the opportunity was found - */ - slot: number; - /** - * Blockhash that can be used to sign transactions for this opportunity - */ - blockHash: Blockhash; - /** - * Unique identifier for the opportunity - */ - opportunityId: string; -}; - -export type OpportunityCreate = - | Omit - | Omit; - -export type Opportunity = OpportunityEvm | OpportunitySvm; -/** - * Represents a bid for an opportunity - */ -export type OpportunityBid = { - /** - * Opportunity unique identifier in uuid format - */ - opportunityId: string; - /** - * The permission key required for successful execution of the opportunity. - */ - permissionKey: Hex; - /** - * Executor address - */ - executor: Address; - /** - * Signature of the executor - */ - signature: Hex; - - bid: BidParams; -}; -/** - * All the parameters necessary to represent an opportunity - */ - -export type Bid = BidEvm | BidSvm; -/** - * Represents a raw EVM bid on acquiring a permission key - */ -export type BidEvm = { - /** - * The permission key to bid on - * @example 0xc0ffeebabe - * - */ - permissionKey: Hex; - /** - * @description Amount of bid in wei. - * @example 10 - */ - amount: bigint; - /** - * @description Calldata for the targetContract call. - * @example 0xdeadbeef - */ - targetCalldata: Hex; - /** - * @description The chain id to bid on. - * @example sepolia - */ - chainId: ChainId; - /** - * @description The targetContract address to call. - * @example 0xcA11bde05977b3631167028862bE2a173976CA11 - */ - targetContract: Address; - /** - * @description The execution environment for the bid. - */ - env: "evm"; -}; - -/** - * Necessary accounts for submitting a SVM bid. These can be fetched from on-chain program data. - */ -export type ExpressRelaySvmConfig = { - /** - * @description The relayer signer account. All submitted transactions will be signed by this account. - */ - relayerSigner: PublicKey; - /** - * @description The fee collection account for the relayer. - */ - feeReceiverRelayer: PublicKey; -}; - -/** - * Represents a raw SVM bid on acquiring a permission key - */ -export type BidSvm = { - /** - * @description Transaction object. - * @example SGVsbG8sIFdvcmxkIQ - */ - transaction: Transaction; - /** - * @description The chain id to bid on. - * @example solana - */ - chainId: ChainId; - /** - * @description The execution environment for the bid. - */ - env: "svm"; -}; -export type BidStatusUpdate = { - id: BidId; -} & components["schemas"]["BidStatus"]; - -export type BidStatusUpdateSvm = { - id: BidId; -} & components["schemas"]["BidStatusSvm"]; - -export type BidStatusUpdateEvm = { - id: BidId; -} & components["schemas"]["BidStatusEvm"]; - -export type BidResponse = components["schemas"]["SimulatedBid"]; -export type BidResponseSvm = components["schemas"]["SimulatedBidSvm"]; -export type BidResponseEvm = components["schemas"]["SimulatedBidEvm"]; - -export type BidsResponse = { - items: BidResponse[]; -}; - -export type SvmConstantsConfig = { - expressRelayProgram: PublicKey; -}; diff --git a/express_relay/sdk/js/tsconfig.json b/express_relay/sdk/js/tsconfig.json deleted file mode 100644 index 785b553b0c..0000000000 --- a/express_relay/sdk/js/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "declaration": true, - "rootDir": "src/", - "outDir": "./lib", - "strict": true, - "esModuleInterop": true, - "resolveJsonModule": true, - "typeRoots": ["node_modules/@types"] - }, - "include": ["src", "src/**/*.json"], - "exclude": ["node_modules", "**/__tests__/*"] -} diff --git a/express_relay/sdk/python/README.md b/express_relay/sdk/python/README.md deleted file mode 100644 index 93093dcca2..0000000000 --- a/express_relay/sdk/python/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Express Relay Python SDK - -Utility library for searchers and protocols to interact with the Express Relay API. - -The SDK includes searcher-side utilities and protocol-side utilities. The searcher-side utilities include a basic Searcher client for connecting to the Express Relay server as well as an example SimpleSearcher class that provides a simple workflow for assessing and bidding on liquidation opportunities. - -# Searcher - -## Installation - -### poetry - -``` -$ poetry add express-relay -``` - -## Quickstart - -To run the simple searcher script, navigate to `python/` and run the following command: - -### Evm - -``` -$ poetry run python3 -m express_relay.searcher.examples.simple_searcher_evm \ ---private-key \ ---chain-id development \ ---verbose \ ---server-url https://per-staging.dourolabs.app/ -``` - -This simple example runs a searcher that queries the Express Relay liquidation server for available liquidation -opportunities and naively submits a bid on each available opportunity. - -### Svm - -``` -$ poetry run python3 -m express_relay.searcher.examples.simple_searcher_svm \ ---endpoint-express-relay https://per-staging.dourolabs.app/ \ ---chain-id development-solana \ ---private-key-json-file \ ---endpoint-svm https://api.mainnet-beta.solana.com \ ---bid 10000000 # Bid amount in lamports -``` diff --git a/express_relay/sdk/python/express_relay/__init__.py b/express_relay/sdk/python/express_relay/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/express_relay/sdk/python/express_relay/client.py b/express_relay/sdk/python/express_relay/client.py deleted file mode 100644 index cd49d6b489..0000000000 --- a/express_relay/sdk/python/express_relay/client.py +++ /dev/null @@ -1,706 +0,0 @@ -import asyncio -import json -import urllib.parse -import warnings -from asyncio import Task -from collections.abc import Coroutine -from datetime import datetime -from typing import Callable, Any, Union, cast -from uuid import UUID - -import httpx -import web3 -import websockets -from eth_abi.abi import encode -from eth_account.account import Account -from eth_account.datastructures import SignedMessage -from eth_utils import to_checksum_address -from hexbytes import HexBytes -from solders.instruction import Instruction -from solders.pubkey import Pubkey -from solders.sysvar import INSTRUCTIONS -from websockets.client import WebSocketClientProtocol - -from express_relay.constants import ( - OPPORTUNITY_ADAPTER_CONFIGS, - EXECUTION_PARAMS_TYPESTRING, - SVM_CONFIGS, -) -from express_relay.models.evm import ( - Address, - Bytes32, - TokenAmount, - BidEvm, -) -from express_relay.models import ( - Bid, - BidStatusUpdate, - BidResponse, - OpportunityBidParams, - OpportunityBid, - OpportunityParams, - Opportunity, - OpportunityRoot, - ClientMessage, - BidResponseRoot, -) -from express_relay.models.base import UnsupportedOpportunityVersionException -from express_relay.models.evm import OpportunityEvm -from express_relay.svm.generated.express_relay.instructions.submit_bid import submit_bid -from express_relay.svm.generated.express_relay.program_id import ( - PROGRAM_ID as SVM_EXPRESS_RELAY_PROGRAM_ID, -) -from express_relay.svm.generated.express_relay.types.submit_bid_args import ( - SubmitBidArgs, -) -from express_relay.svm.limo_client import LimoClient - - -def _get_permitted_tokens( - sell_tokens: list[TokenAmount], - bid_amount: int, - call_value: int, - weth_address: Address, -) -> list[dict[str, Union[str, int]]]: - """ - Extracts the sell tokens in the permit format. - - Args: - sell_tokens: A list of TokenAmount objects representing the sell tokens. - bid_amount: An integer representing the amount of the bid (in wei). - call_value: An integer representing the call value of the bid (in wei). - weth_address: The address of the WETH token. - Returns: - A list of dictionaries representing the sell tokens in the permit format. - """ - permitted_tokens: list[dict[str, Union[str, int]]] = [ - { - "token": token.token, - "amount": int(token.amount), - } - for token in sell_tokens - ] - - for token in permitted_tokens: - if token["token"] == weth_address: - sell_token_amount = cast(int, token["amount"]) - token["amount"] = sell_token_amount + call_value + bid_amount - return permitted_tokens - - if bid_amount + call_value > 0: - permitted_tokens.append( - { - "token": weth_address, - "amount": bid_amount + call_value, - } - ) - - return permitted_tokens - - -class ExpressRelayClientException(Exception): - pass - - -class ExpressRelayClient: - def __init__( - self, - server_url: str, - api_key: str | None = None, - opportunity_callback: ( - Callable[[Opportunity], Coroutine[Any, Any, Any]] | None - ) = None, - bid_status_callback: ( - Callable[[BidStatusUpdate], Coroutine[Any, Any, Any]] | None - ) = None, - timeout_response_secs: int = 10, - ws_options: dict[str, Any] | None = None, - http_options: dict[str, Any] | None = None, - ): - """ - Args: - server_url: The URL of the auction server. - opportunity_callback: An async function that serves as the callback on a new opportunity. Should take in one external argument of type Opportunity. - bid_status_callback: An async function that serves as the callback on a new bid status update. Should take in one external argument of type BidStatusUpdate. - timeout_response_secs: The number of seconds to wait for a response message from the server. - ws_options: Keyword arguments to pass to the websocket connection. - http_options: Keyword arguments to pass to the HTTP client. - """ - parsed_url = urllib.parse.urlparse(server_url) - if parsed_url.scheme == "https": - ws_scheme = "wss" - elif parsed_url.scheme == "http": - ws_scheme = "ws" - else: - raise ValueError("Invalid server URL") - - self.server_url = server_url - self.api_key = api_key - self.ws_endpoint = parsed_url._replace(scheme=ws_scheme, path="/v1/ws").geturl() - self.ws_msg_counter = 0 - self.ws: WebSocketClientProtocol - self.ws_lock = asyncio.Lock() - self.ws_loop: Task[Any] - self.ws_msg_futures: dict[str, asyncio.Future] = {} - self.timeout_response_secs = timeout_response_secs - if ws_options is None: - ws_options = {} - self.ws_options = ws_options - if http_options is None: - http_options = {} - self.http_options = http_options - self.opportunity_callback = opportunity_callback - self.bid_status_callback = bid_status_callback - if self.api_key: - authorization_header = f"Bearer {self.api_key}" - if "headers" not in self.http_options: - self.http_options["headers"] = {} - self.http_options["headers"]["Authorization"] = authorization_header - if "extra_headers" not in self.ws_options: - self.ws_options["extra_headers"] = {} - self.ws_options["extra_headers"]["Authorization"] = authorization_header - - async def start_ws(self): - """ - Initializes the websocket connection to the server, if not already connected. - """ - async with self.ws_lock: - if not hasattr(self, "ws"): - self.ws = await websockets.connect(self.ws_endpoint, **self.ws_options) - - if not hasattr(self, "ws_loop"): - ws_call = self.ws_handler( - self.opportunity_callback, self.bid_status_callback - ) - self.ws_loop = asyncio.create_task(ws_call) - - async def close_ws(self): - """ - Closes the websocket connection to the server. - """ - async with self.ws_lock: - await self.ws.close() - - async def get_ws_loop(self) -> asyncio.Task: - """ - Returns the websocket handler loop. - """ - await self.start_ws() - - return self.ws_loop - - def convert_client_msg_to_server(self, client_msg: ClientMessage) -> dict: - """ - Converts the params of a ClientMessage model dict to the format expected by the server. - - Args: - client_msg: The message to send to the server. - Returns: - The message as a dict with the params converted to the format expected by the server. - """ - msg = client_msg.model_dump() - method = msg["params"]["method"] - msg["id"] = str(self.ws_msg_counter) - self.ws_msg_counter += 1 - - if method == "post_bid": - msg["params"] = {"bid": msg["params"]} - - msg["method"] = method - - return msg - - async def send_ws_msg(self, client_msg: ClientMessage) -> dict: - """ - Sends a message to the server via websocket. - - Args: - client_msg: The message to send. - Returns: - The result of the response message from the server. - """ - await self.start_ws() - - msg = self.convert_client_msg_to_server(client_msg) - - future = asyncio.get_event_loop().create_future() - self.ws_msg_futures[msg["id"]] = future - - await self.ws.send(json.dumps(msg)) - - # await the response for the sent ws message from the server - msg_response = await asyncio.wait_for( - future, timeout=self.timeout_response_secs - ) - - return self.process_response_msg(msg_response) - - def process_response_msg(self, msg: dict) -> dict: - """ - Processes a response message received from the server via websocket. - - Args: - msg: The message to process. - Returns: - The result field of the message. - """ - if msg.get("status") and msg.get("status") != "success": - raise ExpressRelayClientException( - f"Error in websocket response with message id {msg.get('id')}: {msg.get('result')}" - ) - return msg["result"] - - async def subscribe_chains(self, chain_ids: list[str]): - """ - Subscribes websocket to a list of chain IDs for new opportunities. - - Args: - chain_ids: A list of chain IDs to subscribe to. - """ - params = { - "method": "subscribe", - "chain_ids": chain_ids, - } - client_msg = ClientMessage.model_validate({"params": params}) - await self.send_ws_msg(client_msg) - - async def unsubscribe_chains(self, chain_ids: list[str]): - """ - Unsubscribes websocket from a list of chain IDs for new opportunities. - - Args: - chain_ids: A list of chain IDs to unsubscribe from. - """ - params = { - "method": "unsubscribe", - "chain_ids": chain_ids, - } - client_msg = ClientMessage.model_validate({"params": params}) - await self.send_ws_msg(client_msg) - - async def submit_bid(self, bid: Bid, subscribe_to_updates: bool = True) -> UUID: - """ - Submits a bid to the auction server. - - Args: - bid: An object representing the bid to submit. - subscribe_to_updates: A boolean indicating whether to subscribe to the bid status updates. - Returns: - The ID of the submitted bid. - """ - bid_dict = bid.model_dump() - if subscribe_to_updates: - bid_dict["method"] = "post_bid" - client_msg = ClientMessage.model_validate({"params": bid_dict}) - result = await self.send_ws_msg(client_msg) - bid_id = UUID(result.get("id")) - else: - async with httpx.AsyncClient(**self.http_options) as client: - resp = await client.post( - urllib.parse.urlparse(self.server_url) - ._replace(path="/v1/bids") - .geturl(), - json=bid_dict, - ) - - resp.raise_for_status() - bid_id = UUID(resp.json().get("id")) - - return bid_id - - async def ws_handler( - self, - opportunity_callback: ( - Callable[[Opportunity], Coroutine[Any, Any, Any]] | None - ) = None, - bid_status_callback: ( - Callable[[BidStatusUpdate], Coroutine[Any, Any, Any]] | None - ) = None, - ): - """ - Continually handles new ws messages as they are received from the server via websocket. - - Args: - opportunity_callback: An async function that serves as the callback on a new opportunity. Should take in one external argument of type Opportunity. - bid_status_callback: An async function that serves as the callback on a new bid status update. Should take in one external argument of type BidStatusUpdate. - """ - if not self.ws: - raise ExpressRelayClientException("Websocket not connected") - - async for msg in self.ws: - msg_json = json.loads(msg) - - if msg_json.get("type"): - if msg_json.get("type") == "new_opportunity": - if opportunity_callback is not None: - opportunity = OpportunityRoot.model_validate( - msg_json["opportunity"] - ) - if opportunity: - asyncio.create_task(opportunity_callback(opportunity.root)) - - elif msg_json.get("type") == "bid_status_update": - if bid_status_callback is not None: - bid_status_update = BidStatusUpdate.model_validate( - msg_json["status"] - ) - asyncio.create_task(bid_status_callback(bid_status_update)) - - elif msg_json.get("id"): - future = self.ws_msg_futures.pop(msg_json["id"]) - future.set_result(msg_json) - - async def get_opportunities(self, chain_id: str | None = None) -> list[Opportunity]: - """ - Connects to the server and fetches opportunities. - - Args: - chain_id: The chain ID to fetch opportunities for. If None, fetches opportunities across all chains. - Returns: - A list of opportunities. - """ - params = {} - if chain_id: - params["chain_id"] = chain_id - - async with httpx.AsyncClient(**self.http_options) as client: - resp = await client.get( - urllib.parse.urlparse(self.server_url) - ._replace(path="/v1/opportunities") - .geturl(), - params=params, - ) - - resp.raise_for_status() - - opportunities: list[Opportunity] = [] - for opportunity in resp.json(): - try: - opportunity_processed = OpportunityRoot.model_validate(opportunity) - opportunities.append(opportunity_processed.root) - except UnsupportedOpportunityVersionException as e: - warnings.warn(str(e)) - return opportunities - - async def submit_opportunity(self, opportunity: OpportunityParams) -> UUID: - """ - Submits an opportunity to the server. - - Args: - opportunity: An object representing the opportunity to submit. - Returns: - The ID of the submitted opportunity. - """ - async with httpx.AsyncClient(**self.http_options) as client: - resp = await client.post( - urllib.parse.urlparse(self.server_url) - ._replace(path="/v1/opportunities") - .geturl(), - json=opportunity.params.model_dump(), - ) - resp.raise_for_status() - return UUID(resp.json()["opportunity_id"]) - - async def get_bids(self, from_time: datetime | None = None) -> list[BidResponse]: - """ - Fetches bids for an api key from the server with pagination of 20 bids per page. - - Args: - from_time: The datetime to fetch bids from. If None, fetches from the beginning of time. - Returns: - A list of bids. - """ - async with httpx.AsyncClient(**self.http_options) as client: - resp = await client.get( - urllib.parse.urlparse(self.server_url) - ._replace(path="/v1/bids") - .geturl(), - params=( - {"from_time": from_time.astimezone().isoformat()} - if from_time - else None - ), - ) - - resp.raise_for_status() - - bids = [] - for bid in resp.json()["items"]: - bid_processed = BidResponseRoot.model_validate(bid) - bids.append(bid_processed.root) - - return bids - - @staticmethod - def get_svm_submit_bid_instruction( - searcher: Pubkey, - router: Pubkey, - permission_key: Pubkey, - bid_amount: int, - deadline: int, - chain_id: str, - fee_receiver_relayer: Pubkey, - relayer_signer: Pubkey, - ) -> Instruction: - if chain_id not in SVM_CONFIGS: - raise ValueError(f"Chain ID {chain_id} not supported") - svm_config = SVM_CONFIGS[chain_id] - config_router = LimoClient.get_express_relay_config_router_pda( - SVM_EXPRESS_RELAY_PROGRAM_ID, router - ) - express_relay_metadata = LimoClient.get_express_relay_metadata_pda( - SVM_EXPRESS_RELAY_PROGRAM_ID - ) - submit_bid_ix = submit_bid( - {"data": SubmitBidArgs(deadline=deadline, bid_amount=bid_amount)}, - { - "searcher": searcher, - "relayer_signer": relayer_signer, - "permission": permission_key, - "router": router, - "config_router": config_router, - "express_relay_metadata": express_relay_metadata, - "fee_receiver_relayer": fee_receiver_relayer, - "sysvar_instructions": INSTRUCTIONS, - }, - svm_config["express_relay_program"], - ) - return submit_bid_ix - - -def compute_create2_address( - searcher_address: Address, - opportunity_adapter_factory_address: Address, - opportunity_adapter_init_bytecode_hash: Bytes32, -) -> Address: - """ - Computes the CREATE2 address for the opportunity adapter belonging to the searcher. - - Args: - searcher_address: The address of the searcher's wallet. - opportunity_adapter_factory_address: The address of the opportunity adapter factory. - opportunity_adapter_init_bytecode_hash: The hash of the init code for the opportunity adapter. - Returns: - The computed CREATE2 address for the opportunity adapter. - """ - pre = b"\xff" - opportunity_adapter_factory = bytes.fromhex( - opportunity_adapter_factory_address.replace("0x", "") - ) - wallet = bytes.fromhex(searcher_address.replace("0x", "")) - salt = bytes(12) + wallet - init_code_hash = bytes.fromhex( - opportunity_adapter_init_bytecode_hash.replace("0x", "") - ) - result = web3.Web3.keccak(pre + opportunity_adapter_factory + salt + init_code_hash) - return to_checksum_address(result[12:].hex()) - - -def make_adapter_calldata( - opportunity: OpportunityEvm, - permitted: list[dict[str, Union[str, int]]], - executor: Address, - bid_params: OpportunityBidParams, - signature: HexBytes, -): - """ - Constructs the calldata for the opportunity adapter contract. - - Args: - opportunity: An object representing the opportunity, of type Opportunity. - permitted: A list of dictionaries representing the permitted tokens, in the format outputted by _get_permitted_tokens. - executor: The address of the searcher's wallet. - bid_params: An object representing the bid parameters, of type OpportunityBidParams. - signature: The signature of the searcher's bid, as a HexBytes object. - """ - function_selector = web3.Web3.solidity_keccak( - ["string"], [f"executeOpportunity({EXECUTION_PARAMS_TYPESTRING},bytes)"] - )[:4] - function_args = encode( - [EXECUTION_PARAMS_TYPESTRING, "bytes"], - [ - ( - ( - [(token["token"], token["amount"]) for token in permitted], - bid_params.nonce, - bid_params.deadline, - ), - ( - [(token.token, token.amount) for token in opportunity.buy_tokens], - executor, - opportunity.target_contract, - bytes.fromhex(opportunity.target_calldata.replace("0x", "")), - opportunity.target_call_value, - bid_params.amount, - ), - ), - signature, - ], - ) - calldata = f"0x{(function_selector + function_args).hex().replace('0x', '')}" - return calldata - - -def get_opportunity_adapter_config(chain_id: str): - opportunity_adapter_config = OPPORTUNITY_ADAPTER_CONFIGS.get(chain_id) - if not opportunity_adapter_config: - raise ExpressRelayClientException( - f"Opportunity adapter config not found for chain id {chain_id}" - ) - return opportunity_adapter_config - - -def get_signature( - opportunity: OpportunityEvm, - bid_params: OpportunityBidParams, - private_key: str, -) -> SignedMessage: - """ - Constructs a signature for a searcher's bid and opportunity. - - Args: - opportunity: An object representing the opportunity, of type Opportunity. - bid_params: An object representing the bid parameters, of type OpportunityBidParams. - private_key: A 0x-prefixed hex string representing the searcher's private key. - Returns: - A SignedMessage object, representing the signature of the searcher's bid. - """ - opportunity_adapter_config = get_opportunity_adapter_config(opportunity.chain_id) - domain_data = { - "name": "Permit2", - "chainId": opportunity_adapter_config.chain_id, - "verifyingContract": opportunity_adapter_config.permit2, - } - - executor = Account.from_key(private_key).address - message_types = { - "PermitBatchWitnessTransferFrom": [ - {"name": "permitted", "type": "TokenPermissions[]"}, - {"name": "spender", "type": "address"}, - {"name": "nonce", "type": "uint256"}, - {"name": "deadline", "type": "uint256"}, - {"name": "witness", "type": "OpportunityWitness"}, - ], - "OpportunityWitness": [ - {"name": "buyTokens", "type": "TokenAmount[]"}, - {"name": "executor", "type": "address"}, - {"name": "targetContract", "type": "address"}, - {"name": "targetCalldata", "type": "bytes"}, - {"name": "targetCallValue", "type": "uint256"}, - {"name": "bidAmount", "type": "uint256"}, - ], - "TokenAmount": [ - {"name": "token", "type": "address"}, - {"name": "amount", "type": "uint256"}, - ], - "TokenPermissions": [ - {"name": "token", "type": "address"}, - {"name": "amount", "type": "uint256"}, - ], - } - - permitted = _get_permitted_tokens( - opportunity.sell_tokens, - bid_params.amount, - opportunity.target_call_value, - opportunity_adapter_config.weth, - ) - - # the data to be signed - message_data = { - "permitted": permitted, - "spender": compute_create2_address( - executor, - opportunity_adapter_config.opportunity_adapter_factory, - opportunity_adapter_config.opportunity_adapter_init_bytecode_hash, - ), - "nonce": bid_params.nonce, - "deadline": bid_params.deadline, - "witness": { - "buyTokens": [ - { - "token": token.token, - "amount": int(token.amount), - } - for token in opportunity.buy_tokens - ], - "executor": executor, - "targetContract": opportunity.target_contract, - "targetCalldata": bytes.fromhex( - opportunity.target_calldata.replace("0x", "") - ), - "targetCallValue": opportunity.target_call_value, - "bidAmount": bid_params.amount, - }, - } - - signed_typed_data = Account.sign_typed_data( - private_key, domain_data, message_types, message_data - ) - - return signed_typed_data - - -def sign_opportunity_bid( - opportunity: OpportunityEvm, - bid_params: OpportunityBidParams, - private_key: str, -) -> OpportunityBid: - """ - Constructs a signature for a searcher's bid and returns the OpportunityBid object to be submitted to the server. - - Args: - opportunity: An object representing the opportunity, of type Opportunity. - bid_params: An object representing the bid parameters, of type OpportunityBidParams. - private_key: A 0x-prefixed hex string representing the searcher's private key. - Returns: - A OpportunityBid object, representing the transaction to submit to the server. This object contains the searcher's signature. - """ - executor = Account.from_key(private_key).address - opportunity_bid = OpportunityBid( - opportunity_id=opportunity.opportunity_id, - permission_key=opportunity.permission_key, - amount=bid_params.amount, - deadline=bid_params.deadline, - nonce=bid_params.nonce, - executor=executor, - signature=get_signature(opportunity, bid_params, private_key), - ) - - return opportunity_bid - - -def sign_bid( - opportunity: OpportunityEvm, bid_params: OpportunityBidParams, private_key: str -) -> BidEvm: - """ - Constructs a signature for a searcher's bid and returns the Bid object to be submitted to the server. - - Args: - opportunity: An object representing the opportunity, of type Opportunity. - bid_params: An object representing the bid parameters, of type OpportunityBidParams. - private_key: A 0x-prefixed hex string representing the searcher's private key. - Returns: - A Bid object, representing the transaction to submit to the server. This object contains the searcher's signature. - """ - opportunity_adapter_config = get_opportunity_adapter_config(opportunity.chain_id) - permitted = _get_permitted_tokens( - opportunity.sell_tokens, - bid_params.amount, - opportunity.target_call_value, - opportunity_adapter_config.weth, - ) - executor = Account.from_key(private_key).address - - signature = get_signature(opportunity, bid_params, private_key).signature - calldata = make_adapter_calldata( - opportunity, permitted, executor, bid_params, signature - ) - - return BidEvm( - amount=bid_params.amount, - target_calldata=calldata, - chain_id=opportunity.chain_id, - target_contract=opportunity_adapter_config.opportunity_adapter_factory, - permission_key=opportunity.permission_key, - ) diff --git a/express_relay/sdk/python/express_relay/constants.py b/express_relay/sdk/python/express_relay/constants.py deleted file mode 100644 index 42e88a277b..0000000000 --- a/express_relay/sdk/python/express_relay/constants.py +++ /dev/null @@ -1,43 +0,0 @@ -from typing import Dict, TypedDict - -from solders.pubkey import Pubkey - -from express_relay.models import OpportunityAdapterConfig - -OPPORTUNITY_ADAPTER_CONFIGS = { - "op_sepolia": OpportunityAdapterConfig( - chain_id=11155420, - opportunity_adapter_factory="0xfA119693864b2F185742A409c66f04865c787754", - opportunity_adapter_init_bytecode_hash="0x3d71516d94b96a8fdca4e3a5825a6b41c9268a8e94610367e69a8462cc543533", - permit2="0x000000000022D473030F116dDEE9F6B43aC78BA3", - weth="0x74A4A85C611679B73F402B36c0F84A7D2CcdFDa3", - ), - "mode": OpportunityAdapterConfig( - chain_id=34443, - opportunity_adapter_factory="0x59F78DE21a0b05d96Ae00c547BA951a3B905602f", - opportunity_adapter_init_bytecode_hash="0xd53b8e32ab2ecba07c3e3a17c3c5e492c62e2f7051b89e5154f52e6bfeb0e38f", - permit2="0x000000000022D473030F116dDEE9F6B43aC78BA3", - weth="0x4200000000000000000000000000000000000006", - ), -} - -PERMIT_BATCH_TRANSFER_FROM_TYPESTRING = "((address,uint256)[],uint256,uint256)" -EXECUTION_WITNESS_TYPESTRING = ( - "((address,uint256)[],address,address,bytes,uint256,uint256)" -) -EXECUTION_PARAMS_TYPESTRING = ( - f"({PERMIT_BATCH_TRANSFER_FROM_TYPESTRING},{EXECUTION_WITNESS_TYPESTRING})" -) - - -class SvmProgramConfig(TypedDict): - express_relay_program: Pubkey - - -SVM_CONFIGS: Dict[str, SvmProgramConfig] = { - "development-solana": { - "express_relay_program": Pubkey.from_string( - "PytERJFhAKuNNuaiXkApLfWzwNwSNDACpigT3LwQfou" - ), - } -} diff --git a/express_relay/sdk/python/express_relay/models/__init__.py b/express_relay/sdk/python/express_relay/models/__init__.py deleted file mode 100644 index 2fc0624a65..0000000000 --- a/express_relay/sdk/python/express_relay/models/__init__.py +++ /dev/null @@ -1,247 +0,0 @@ -from typing import Union, Any -from typing_extensions import Literal, Annotated - -from pydantic import BaseModel, Field, RootModel, Tag, Discriminator - -from express_relay.models.base import UUIDString, IntString - -from express_relay.models.evm import ( - BidEvm, - Bytes32, - HexString, - Address, - SignedMessageString, - OpportunityEvm, - TokenAmount, - BidStatusEvm, - BidResponseEvm, -) -from express_relay.models.svm import ( - BidSvm, - OpportunitySvm, - SvmTransaction, - BidStatusSvm, - BidResponseSvm, -) - -Bid = Union[BidEvm, BidSvm] - - -class BidStatusUpdate(BaseModel): - """ - Attributes: - id: The ID of the bid. - bid_status: The current status of the bid. - """ - - id: UUIDString - bid_status: Union[BidStatusEvm, BidStatusSvm] - - -BidResponse = Union[BidResponseEvm, BidResponseSvm] -BidResponseRoot = RootModel[BidResponse] - - -class OpportunityBidParams(BaseModel): - """ - Attributes: - amount: The amount of the bid in wei. - nonce: The nonce of the bid. - deadline: The unix timestamp after which the bid becomes invalid. - """ - - amount: IntString - nonce: IntString - deadline: IntString - - -class OpportunityBid(BaseModel): - """ - Attributes: - opportunity_id: The ID of the opportunity. - amount: The amount of the bid in wei. - executor: The address of the executor. - permission_key: The permission key to bid on. - signature: The signature of the bid. - deadline: The unix timestamp after which the bid becomes invalid. - nonce: The nonce of the bid. - """ - - opportunity_id: UUIDString - amount: IntString - executor: Address - permission_key: HexString - signature: SignedMessageString - deadline: IntString - nonce: IntString - - model_config = { - "arbitrary_types_allowed": True, - } - - -class OpportunityParamsV1(BaseModel): - """ - Attributes: - target_calldata: The calldata for the contract call. - chain_id: The chain ID to bid on. - target_contract: The contract address to call. - permission_key: The permission key to bid on. - buy_tokens: The tokens to receive in the opportunity. - sell_tokens: The tokens to spend in the opportunity. - target_call_value: The value to send with the contract call. - version: The version of the opportunity. - """ - - target_calldata: HexString - chain_id: str - target_contract: Address - permission_key: HexString - buy_tokens: list[TokenAmount] - sell_tokens: list[TokenAmount] - target_call_value: IntString - version: Literal["v1"] - - -class OpportunityParams(BaseModel): - """ - Attributes: - params: The parameters of the opportunity. - """ - - params: Union[OpportunityParamsV1] = Field(..., discriminator="version") - - -Opportunity = Union[OpportunityEvm, OpportunitySvm] -OpportunityRoot = RootModel[Opportunity] - - -class SubscribeMessageParams(BaseModel): - """ - Attributes: - method: A string literal "subscribe". - chain_ids: The chain IDs to subscribe to. - """ - - method: Literal["subscribe"] - chain_ids: list[str] - - -class UnsubscribeMessageParams(BaseModel): - """ - Attributes: - method: A string literal "unsubscribe". - chain_ids: The chain IDs to subscribe to. - """ - - method: Literal["unsubscribe"] - chain_ids: list[str] - - -class PostBidMessageParamsEvm(BaseModel): - """ - Attributes: - method: A string literal "post_bid". - amount: The amount of the bid in wei. - target_calldata: The calldata for the contract call. - chain_id: The chain ID to bid on. - target_contract: The contract address to call. - permission_key: The permission key to bid on. - """ - - method: Literal["post_bid"] - amount: IntString - target_calldata: HexString - chain_id: str - target_contract: Address - permission_key: HexString - - -class PostBidMessageParamsSvm(BaseModel): - """ - Attributes: - method: A string literal "post_bid". - chain_id: The chain ID to bid on. - transaction: The transaction including the bid. - """ - - method: Literal["post_bid"] - chain_id: str - transaction: SvmTransaction - - -def get_discriminator_value(v: Any) -> str: - if isinstance(v, dict): - if "transaction" in v: - return "svm" - return "evm" - if getattr(v, "transaction", None): - return "svm" - return "evm" - - -PostBidMessageParams = Annotated[ - Union[ - Annotated[PostBidMessageParamsEvm, Tag("evm")], - Annotated[PostBidMessageParamsSvm, Tag("svm")], - ], - Discriminator(get_discriminator_value), -] - - -class PostOpportunityBidMessageParams(BaseModel): - """ - Attributes: - method: A string literal "post_opportunity_bid". - opportunity_id: The ID of the opportunity. - amount: The amount of the bid in wei. - executor: The address of the executor. - permission_key: The permission key to bid on. - signature: The signature of the bid. - deadline: The unix timestamp after which the bid becomes invalid. - nonce: The nonce of the bid. - """ - - method: Literal["post_opportunity_bid"] - opportunity_id: UUIDString - amount: IntString - executor: Address - permission_key: HexString - signature: SignedMessageString - deadline: IntString - nonce: IntString - - model_config = { - "arbitrary_types_allowed": True, - } - - -class ClientMessage(BaseModel): - """ - Attributes: - params: The parameters of the message. - """ - - params: Union[ - SubscribeMessageParams, - UnsubscribeMessageParams, - PostBidMessageParams, - PostOpportunityBidMessageParams, - ] = Field(..., discriminator="method") - - -class OpportunityAdapterConfig(BaseModel): - """ - Attributes: - chain_id: The chain ID. - opportunity_adapter_factory: The address of the opportunity adapter factory contract. - opportunity_adapter_init_bytecode_hash: The hash of the init bytecode of the opportunity adapter. - permit2: The address of the permit2 contract. - weth: The address of the WETH contract. - """ - - chain_id: int - opportunity_adapter_factory: Address - opportunity_adapter_init_bytecode_hash: Bytes32 - permit2: Address - weth: Address diff --git a/express_relay/sdk/python/express_relay/models/base.py b/express_relay/sdk/python/express_relay/models/base.py deleted file mode 100644 index 0adc9c734d..0000000000 --- a/express_relay/sdk/python/express_relay/models/base.py +++ /dev/null @@ -1,20 +0,0 @@ -from enum import Enum -from typing import Annotated -from uuid import UUID - -from pydantic import PlainSerializer - - -class UnsupportedOpportunityVersionException(Exception): - pass - - -class BidStatus(Enum): - PENDING = "pending" - SUBMITTED = "submitted" - LOST = "lost" - WON = "won" - - -IntString = Annotated[int, PlainSerializer(lambda x: str(x), return_type=str)] -UUIDString = Annotated[UUID, PlainSerializer(lambda x: str(x), return_type=str)] diff --git a/express_relay/sdk/python/express_relay/models/evm.py b/express_relay/sdk/python/express_relay/models/evm.py deleted file mode 100644 index 758a63c152..0000000000 --- a/express_relay/sdk/python/express_relay/models/evm.py +++ /dev/null @@ -1,199 +0,0 @@ -import string -from datetime import datetime -from typing import ClassVar - -import web3 -from eth_account.datastructures import SignedMessage -from pydantic import BaseModel, model_validator, Field -from pydantic.functional_serializers import PlainSerializer -from pydantic.functional_validators import AfterValidator -from typing_extensions import Annotated - -from express_relay.models.base import ( - IntString, - UUIDString, - UnsupportedOpportunityVersionException, - BidStatus, -) - - -def check_hex_string(s: str): - """ - Validates that a string is a valid hex string. - - Args: - s: The string to validate as a hex string. Can be '0x'-prefixed. - """ - ind = 0 - if s.startswith("0x"): - ind = 2 - - assert all( - c in string.hexdigits for c in s[ind:] - ), "string is not a valid hex string" - - return s - - -def check_bytes32(s: str): - """ - Validates that a string is a valid 32-byte hex string. - - Args: - s: The string to validate as a 32-byte hex string. Can be '0x'-prefixed. - """ - check_hex_string(s) - ind = 0 - if s.startswith("0x"): - ind = 2 - - assert len(s[ind:]) == 64, "hex string is not 32 bytes long" - - return s - - -def check_address(s: str): - """ - Validates that a string is a valid Ethereum address. - - Args: - s: The string to validate as an Ethereum address. Can be '0x'-prefixed. - """ - assert web3.Web3.is_address(s), "string is not a valid Ethereum address" - return s - - -HexString = Annotated[str, AfterValidator(check_hex_string)] -Bytes32 = Annotated[str, AfterValidator(check_bytes32)] -Address = Annotated[str, AfterValidator(check_address)] - -SignedMessageString = Annotated[ - SignedMessage, PlainSerializer(lambda x: bytes(x.signature).hex(), return_type=str) -] - - -class TokenAmount(BaseModel): - """ - Attributes: - token: The address of the token contract. - amount: The amount of the token. - """ - - token: Address - amount: IntString - - -class BidEvm(BaseModel): - """ - Attributes: - amount: The amount of the bid in wei. - target_calldata: The calldata for the contract call. - chain_id: The chain ID to bid on. - target_contract: The contract address to call. - permission_key: The permission key to bid on. - """ - - amount: IntString - target_calldata: HexString - chain_id: str - target_contract: Address - permission_key: HexString - - -class OpportunityEvm(BaseModel): - """ - Attributes: - target_calldata: The calldata for the contract call. - chain_id: The chain ID to bid on. - target_contract: The contract address to call. - permission_key: The permission key to bid on. - buy_tokens: The tokens to receive in the opportunity. - sell_tokens: The tokens to spend in the opportunity. - target_call_value: The value to send with the contract call. - version: The version of the opportunity. - creation_time: The creation time of the opportunity. - opportunity_id: The ID of the opportunity. - """ - - target_calldata: HexString - chain_id: str - target_contract: Address - permission_key: HexString - buy_tokens: list[TokenAmount] - sell_tokens: list[TokenAmount] - target_call_value: IntString - version: str - creation_time: IntString - opportunity_id: UUIDString - - supported_versions: ClassVar[list[str]] = ["v1"] - - @model_validator(mode="before") - @classmethod - def check_version(cls, data): - if data["version"] not in cls.supported_versions: - raise UnsupportedOpportunityVersionException( - f"Cannot handle opportunity version: {data['version']}. Please upgrade your client." - ) - return data - - -class BidStatusEvm(BaseModel): - """ - Attributes: - type: The current status of the bid. - result: The result of the bid: a transaction hash if the status is SUBMITTED or WON. - The LOST status may have a result. - index: The index of the bid in the submitted transaction. - """ - - type: BidStatus - result: Bytes32 | None = Field(default=None) - index: int | None = Field(default=None) - - @model_validator(mode="after") - def check_result(self): - if self.type == BidStatus.PENDING: - assert self.result is None, "result must be None" - elif self.type == BidStatus.LOST: - pass - else: - assert self.result is not None, "result must be a valid 32-byte hash" - return self - - @model_validator(mode="after") - def check_index(self): - if self.type == BidStatus.SUBMITTED or self.type == BidStatus.WON: - assert self.index is not None, "index must be a valid integer" - elif self.type == BidStatus.LOST: - pass - else: - assert self.index is None, "index must be None" - return self - - -class BidResponseEvm(BaseModel): - """ - Attributes: - id: The unique id for bid. - amount: The amount of the bid in wei. - target_calldata: Calldata for the contract call. - chain_id: The chain ID to bid on. - target_contract: The contract address to call. - permission_key: The permission key to bid on. - status: The latest status for bid. - initiation_time: The time server received the bid formatted in rfc3339. - profile_id: The profile id for the bid owner. - gas_limit: The gas limit for the bid. - """ - - id: UUIDString - bid_amount: IntString - target_calldata: HexString - chain_id: str - target_contract: Address - permission_key: HexString - status: BidStatusEvm - initiation_time: datetime - profile_id: str | None = Field(default=None) - gas_limit: IntString diff --git a/express_relay/sdk/python/express_relay/models/svm.py b/express_relay/sdk/python/express_relay/models/svm.py deleted file mode 100644 index 558393f855..0000000000 --- a/express_relay/sdk/python/express_relay/models/svm.py +++ /dev/null @@ -1,317 +0,0 @@ -import base64 -from datetime import datetime -from typing import Any, Annotated, ClassVar - -from pydantic import ( - GetCoreSchemaHandler, - GetJsonSchemaHandler, - BaseModel, - model_validator, - Field, - Base64Bytes, -) -from pydantic.json_schema import JsonSchemaValue -from pydantic_core import core_schema -from solders.hash import Hash as _SvmHash -from solders.pubkey import Pubkey as _SvmAddress -from solders.signature import Signature as _SvmSignature -from solders.transaction import Transaction as _SvmTransaction - -from express_relay.svm.generated.limo.accounts.order import Order -from express_relay.models.base import ( - IntString, - UUIDString, - UnsupportedOpportunityVersionException, - BidStatus, -) - - -class _TransactionPydanticAnnotation: - @classmethod - def __get_pydantic_core_schema__( - cls, - _source_type: Any, - _handler: GetCoreSchemaHandler, - ) -> core_schema.CoreSchema: - def validate_from_str(value: str) -> _SvmTransaction: - return _SvmTransaction.from_bytes(base64.b64decode(value)) - - from_str_schema = core_schema.chain_schema( - [ - core_schema.str_schema(), - core_schema.no_info_plain_validator_function(validate_from_str), - ] - ) - - return core_schema.json_or_python_schema( - json_schema=from_str_schema, - python_schema=core_schema.union_schema( - [ - # check if it's an instance first before doing any further work - core_schema.is_instance_schema(_SvmTransaction), - from_str_schema, - ] - ), - serialization=core_schema.plain_serializer_function_ser_schema( - lambda instance: base64.b64encode(bytes(instance)).decode("utf-8") - ), - ) - - @classmethod - def __get_pydantic_json_schema__( - cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler - ) -> JsonSchemaValue: - # Use the same schema that would be used for `str` - return handler(core_schema.str_schema()) - - -class _SvmAddressPydanticAnnotation: - @classmethod - def __get_pydantic_core_schema__( - cls, - _source_type: Any, - _handler: GetCoreSchemaHandler, - ) -> core_schema.CoreSchema: - def validate_from_str(value: str) -> _SvmAddress: - return _SvmAddress.from_string(value) - - from_str_schema = core_schema.chain_schema( - [ - core_schema.str_schema(), - core_schema.no_info_plain_validator_function(validate_from_str), - ] - ) - - return core_schema.json_or_python_schema( - json_schema=from_str_schema, - python_schema=core_schema.union_schema( - [ - # check if it's an instance first before doing any further work - core_schema.is_instance_schema(_SvmTransaction), - from_str_schema, - ] - ), - serialization=core_schema.plain_serializer_function_ser_schema( - lambda instance: str(instance) - ), - ) - - @classmethod - def __get_pydantic_json_schema__( - cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler - ) -> JsonSchemaValue: - # Use the same schema that would be used for `str` - return handler(core_schema.str_schema()) - - -class _HashPydanticAnnotation: - @classmethod - def __get_pydantic_core_schema__( - cls, - _source_type: Any, - _handler: GetCoreSchemaHandler, - ) -> core_schema.CoreSchema: - def validate_from_str(value: str) -> _SvmHash: - return _SvmHash.from_string(value) - - from_str_schema = core_schema.chain_schema( - [ - core_schema.str_schema(), - core_schema.no_info_plain_validator_function(validate_from_str), - ] - ) - - return core_schema.json_or_python_schema( - json_schema=from_str_schema, - python_schema=core_schema.union_schema( - [ - # check if it's an instance first before doing any further work - core_schema.is_instance_schema(Order), - from_str_schema, - ] - ), - serialization=core_schema.plain_serializer_function_ser_schema(str), - ) - - @classmethod - def __get_pydantic_json_schema__( - cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler - ) -> JsonSchemaValue: - # Use the same schema that would be used for `str` - return handler(core_schema.str_schema()) - - -class _SignaturePydanticAnnotation: - @classmethod - def __get_pydantic_core_schema__( - cls, - _source_type: Any, - _handler: GetCoreSchemaHandler, - ) -> core_schema.CoreSchema: - def validate_from_str(value: str) -> _SvmSignature: - return _SvmSignature.from_string(value) - - from_str_schema = core_schema.chain_schema( - [ - core_schema.str_schema(), - core_schema.no_info_plain_validator_function(validate_from_str), - ] - ) - - return core_schema.json_or_python_schema( - json_schema=from_str_schema, - python_schema=core_schema.union_schema( - [ - # check if it's an instance first before doing any further work - core_schema.is_instance_schema(Order), - from_str_schema, - ] - ), - serialization=core_schema.plain_serializer_function_ser_schema(str), - ) - - @classmethod - def __get_pydantic_json_schema__( - cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler - ) -> JsonSchemaValue: - # Use the same schema that would be used for `str` - return handler(core_schema.str_schema()) - - -SvmTransaction = Annotated[_SvmTransaction, _TransactionPydanticAnnotation] -SvmAddress = Annotated[_SvmAddress, _SvmAddressPydanticAnnotation] -SvmHash = Annotated[_SvmHash, _HashPydanticAnnotation] -SvmSignature = Annotated[_SvmSignature, _SignaturePydanticAnnotation] - - -class BidSvm(BaseModel): - """ - Attributes: - transaction: The transaction including the bid - chain_id: The chain ID to bid on. - """ - - transaction: SvmTransaction - chain_id: str - - -class _OrderPydanticAnnotation: - @classmethod - def __get_pydantic_core_schema__( - cls, - _source_type: Any, - _handler: GetCoreSchemaHandler, - ) -> core_schema.CoreSchema: - def validate_from_str(value: str) -> Order: - return Order.decode(base64.b64decode(value)) - - from_str_schema = core_schema.chain_schema( - [ - core_schema.str_schema(), - core_schema.no_info_plain_validator_function(validate_from_str), - ] - ) - - return core_schema.json_or_python_schema( - json_schema=from_str_schema, - python_schema=core_schema.union_schema( - [ - # check if it's an instance first before doing any further work - core_schema.is_instance_schema(Order), - from_str_schema, - ] - ), - serialization=core_schema.plain_serializer_function_ser_schema( - lambda instance: base64.b64encode(Order.layout.build(instance)).decode( - "utf-8" - ) - ), - ) - - @classmethod - def __get_pydantic_json_schema__( - cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler - ) -> JsonSchemaValue: - # Use the same schema that would be used for `str` - return handler(core_schema.str_schema()) - - -class OpportunitySvm(BaseModel): - """ - Attributes: - chain_id: The chain ID to bid on. - version: The version of the opportunity. - creation_time: The creation time of the opportunity. - opportunity_id: The ID of the opportunity. - block_hash: The block hash to use for execution. - slot: The slot where this order was created or updated - program: The program which handles this opportunity - order: The order to be executed. - order_address: The address of the order. - """ - - chain_id: str - version: str - creation_time: IntString - opportunity_id: UUIDString - - block_hash: SvmHash - slot: int - - program: str - order: Annotated[Order, _OrderPydanticAnnotation] - order_address: SvmAddress - - supported_versions: ClassVar[list[str]] = ["v1"] - supported_programs: ClassVar[list[str]] = ["limo"] - - @model_validator(mode="before") - @classmethod - def check_version(cls, data): - if data["version"] not in cls.supported_versions: - raise UnsupportedOpportunityVersionException( - f"Cannot handle opportunity version: {data['version']}. Please upgrade your client." - ) - return data - - -class BidStatusSvm(BaseModel): - """ - Attributes: - type: The current status of the bid. - result: The result of the bid: a transaction hash if the status is SUBMITTED or WON. - The LOST status may have a result. - """ - - type: BidStatus - result: SvmSignature | None = Field(default=None) - - @model_validator(mode="after") - def check_result(self): - if self.type == BidStatus.WON or self.type == BidStatus.SUBMITTED: - assert ( - self.result is not None - ), "bid result should not be empty when status is won or submitted" - return self - - -class BidResponseSvm(BaseModel): - """ - Attributes: - id: The unique id for bid. - bid_amount: The amount of the bid in lamports. - chain_id: The chain ID to bid on. - permission_key: The permission key to bid on. - status: The latest status for bid. - initiation_time: The time server received the bid formatted in rfc3339. - profile_id: The profile id for the bid owner. - """ - - id: UUIDString - bid_amount: int - chain_id: str - permission_key: Base64Bytes - status: BidStatusSvm - initiation_time: datetime - transaction: SvmTransaction - profile_id: str | None = Field(default=None) diff --git a/express_relay/sdk/python/express_relay/searcher/examples/simple_searcher_evm.py b/express_relay/sdk/python/express_relay/searcher/examples/simple_searcher_evm.py deleted file mode 100644 index b9f4cd5287..0000000000 --- a/express_relay/sdk/python/express_relay/searcher/examples/simple_searcher_evm.py +++ /dev/null @@ -1,167 +0,0 @@ -import argparse -import asyncio -import logging -import typing - -from eth_account.account import Account -from secrets import randbits - -from express_relay.client import ( - ExpressRelayClient, - sign_bid, -) -from express_relay.constants import OPPORTUNITY_ADAPTER_CONFIGS -from express_relay.models.evm import ( - BidEvm, - Bytes32, -) -from express_relay.models import BidStatusUpdate, OpportunityBidParams, Opportunity -from express_relay.models.evm import OpportunityEvm, BidStatusEvm -from express_relay.models.base import BidStatus - -logger = logging.getLogger(__name__) - -NAIVE_BID = int(1e16) -# Set deadline (naively) to max uint256 -DEADLINE_MAX = 2**256 - 1 - - -class SimpleSearcher: - def __init__( - self, server_url: str, private_key: Bytes32, api_key: str | None = None - ): - self.client = ExpressRelayClient( - server_url, - api_key, - self.opportunity_callback, - self.bid_status_callback, - ) - self.private_key = private_key - self.public_key = Account.from_key(private_key).address - - def assess_opportunity( - self, - opp: OpportunityEvm, - ) -> BidEvm | None: - """ - Assesses whether an opportunity is worth executing; if so, returns a Bid object. - Otherwise, returns None. - - This function determines whether the given opportunity is worthwhile to execute. - There are many ways to evaluate this, but the most common way is to check that the value of the tokens the searcher will receive from execution exceeds the value of the tokens spent. - Individual searchers will have their own methods to determine market impact and the profitability of executing an opportunity. This function can use external prices to perform this evaluation. - In this simple searcher, the function (naively) returns a Bid object with a default bid and deadline timestamp. - Args: - opp: An object representing a single opportunity. - Returns: - If the opportunity is deemed worthwhile, this function can return a Bid object, whose contents can be submitted to the auction server. If the opportunity is not deemed worthwhile, this function can return None. - """ - - # TODO: generate nonce more intelligently, to reduce gas costs - bid_params = OpportunityBidParams( - amount=NAIVE_BID, nonce=randbits(64), deadline=DEADLINE_MAX - ) - - bid = sign_bid(opp, bid_params, self.private_key) - - return bid - - async def opportunity_callback(self, opp: Opportunity): - """ - Callback function to run when a new opportunity is found. - - Args: - opp: An object representing a single opportunity. - """ - bid = self.assess_opportunity(typing.cast(OpportunityEvm, opp)) - if bid: - try: - await self.client.submit_bid(bid) - logger.info( - f"Submitted bid amount {bid.amount} for opportunity {str(opp.opportunity_id)}" - ) - except Exception as e: - logger.error( - f"Error submitting bid amount {bid.amount} for opportunity {str(opp.opportunity_id)}: {e}" - ) - - async def bid_status_callback(self, bid_status_update: BidStatusUpdate): - """ - Callback function to run when a bid status is updated. - - Args: - bid_status_update: An object representing an update to the status of a bid. - """ - id = bid_status_update.id - bid_status = typing.cast(BidStatusEvm, bid_status_update.bid_status) - status = bid_status.type - result = bid_status.result - index = bid_status.index - - result_details = "" - if status == BidStatus.SUBMITTED or status == BidStatus.WON: - result_details = f", transaction {result}, index {index} of multicall" - elif status == BidStatus.LOST: - if result: - result_details = f", transaction {result}" - if index: - result_details += f", index {index} of multicall" - logger.info( - f"Bid status for bid {id}: {status.value.replace('_', ' ')}{result_details}" - ) - - -async def main(): - parser = argparse.ArgumentParser() - parser.add_argument("-v", "--verbose", action="count", default=0) - parser.add_argument( - "--private-key", - type=str, - required=True, - help="Private key of the searcher for signing calldata as a hex string", - ) - parser.add_argument( - "--chain-ids", - type=str, - required=True, - nargs="+", - help="Chain ID(s) of the network(s) to monitor for opportunities", - ) - parser.add_argument( - "--server-url", - type=str, - required=True, - help="Server endpoint to use for fetching opportunities and submitting bids", - ) - parser.add_argument( - "--api-key", - type=str, - required=False, - help="The API key of the searcher to authenticate with the server for fetching and submitting bids", - ) - args = parser.parse_args() - - logger.setLevel(logging.INFO if args.verbose == 0 else logging.DEBUG) - log_handler = logging.StreamHandler() - formatter = logging.Formatter( - "%(asctime)s %(levelname)s:%(name)s:%(module)s %(message)s", - datefmt="%Y-%m-%d %H:%M:%S", - ) - log_handler.setFormatter(formatter) - logger.addHandler(log_handler) - - simple_searcher = SimpleSearcher(args.server_url, args.private_key, args.api_key) - logger.info("Searcher address: %s", simple_searcher.public_key) - for chain_id in args.chain_ids: - if chain_id not in OPPORTUNITY_ADAPTER_CONFIGS: - raise ValueError( - f"Opportunity adapter config not found for chain {chain_id}" - ) - await simple_searcher.client.subscribe_chains(args.chain_ids) - - task = await simple_searcher.client.get_ws_loop() - await task - - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/express_relay/sdk/python/express_relay/searcher/examples/simple_searcher_svm.py b/express_relay/sdk/python/express_relay/searcher/examples/simple_searcher_svm.py deleted file mode 100644 index 55d3311194..0000000000 --- a/express_relay/sdk/python/express_relay/searcher/examples/simple_searcher_svm.py +++ /dev/null @@ -1,264 +0,0 @@ -import argparse -import asyncio -import logging -import typing -from decimal import Decimal - -from solana.rpc.async_api import AsyncClient -from solana.rpc.commitment import Finalized -from solders.keypair import Keypair -from solders.pubkey import Pubkey -from solders.transaction import Transaction - -from express_relay.client import ( - ExpressRelayClient, -) -from express_relay.constants import SVM_CONFIGS -from express_relay.models import BidStatusUpdate, Opportunity -from express_relay.models.base import BidStatus -from express_relay.models.svm import BidSvm, OpportunitySvm -from express_relay.svm.generated.express_relay.accounts.express_relay_metadata import ( - ExpressRelayMetadata, -) -from express_relay.svm.generated.express_relay.program_id import ( - PROGRAM_ID as SVM_EXPRESS_RELAY_PROGRAM_ID, -) -from express_relay.svm.limo_client import LimoClient, OrderStateAndAddress - -DEADLINE = 2**62 -logger = logging.getLogger(__name__) - - -class SimpleSearcherSvm: - express_relay_metadata: ExpressRelayMetadata | None - mint_decimals_cache: typing.Dict[str, int] - - def __init__( - self, - server_url: str, - private_key: Keypair, - bid_amount: int, - chain_id: str, - svm_rpc_endpoint: str, - fill_rate: int, - api_key: str | None = None, - ): - self.client = ExpressRelayClient( - server_url, - api_key, - self.opportunity_callback, - self.bid_status_callback, - ) - self.private_key = private_key - self.bid_amount = bid_amount - self.chain_id = chain_id - if self.chain_id not in SVM_CONFIGS: - raise ValueError(f"Chain ID {self.chain_id} not supported") - self.svm_config = SVM_CONFIGS[self.chain_id] - self.rpc_client = AsyncClient(svm_rpc_endpoint) - self.limo_client = LimoClient(self.rpc_client) - self.fill_rate = fill_rate - self.express_relay_metadata = None - self.mint_decimals_cache = {} - - async def opportunity_callback(self, opp: Opportunity): - """ - Callback function to run when a new opportunity is found. - - Args: - opp: An object representing a single opportunity. - """ - bid = await self.assess_opportunity(typing.cast(OpportunitySvm, opp)) - - if bid: - try: - await self.client.submit_bid(bid) - logger.info(f"Submitted bid for opportunity {str(opp.opportunity_id)}") - except Exception as e: - logger.error( - f"Error submitting bid for opportunity {str(opp.opportunity_id)}: {e}" - ) - - async def bid_status_callback(self, bid_status_update: BidStatusUpdate): - """ - Callback function to run when a bid status is updated. - - Args: - bid_status_update: An object representing an update to the status of a bid. - """ - id = bid_status_update.id - status = bid_status_update.bid_status.type - result = bid_status_update.bid_status.result - - result_details = "" - if status == BidStatus.SUBMITTED or status == BidStatus.WON: - result_details = f", transaction {result}" - elif status == BidStatus.LOST: - if result: - result_details = f", transaction {result}" - logger.info(f"Bid status for bid {id}: {status.value}{result_details}") - - async def get_mint_decimals(self, mint: Pubkey) -> int: - if str(mint) not in self.mint_decimals_cache: - self.mint_decimals_cache[ - str(mint) - ] = await self.limo_client.get_mint_decimals(mint) - return self.mint_decimals_cache[str(mint)] - - async def assess_opportunity(self, opp: OpportunitySvm) -> BidSvm: - order: OrderStateAndAddress = {"address": opp.order_address, "state": opp.order} - input_mint_decimals = await self.get_mint_decimals(order["state"].input_mint) - output_mint_decimals = await self.get_mint_decimals(order["state"].output_mint) - effective_fill_rate = min( - self.fill_rate, - 100 - * order["state"].remaining_input_amount - / order["state"].initial_input_amount, - ) - input_amount_decimals = Decimal(order["state"].initial_input_amount) / Decimal( - 10**input_mint_decimals - ) - input_amount_decimals = ( - input_amount_decimals * Decimal(effective_fill_rate) / Decimal(100) - ) - output_amount_decimals = Decimal( - order["state"].expected_output_amount - ) / Decimal(10**output_mint_decimals) - logger.info( - f"Order address {order['address']}\n" - f"Sell token {order['state'].input_mint} amount: {input_amount_decimals}\n" - f"Buy token {order['state'].output_mint} amount: {output_amount_decimals}" - ) - ixs_take_order = await self.limo_client.take_order_ix( - self.private_key.pubkey(), - order, - input_amount_decimals, - output_amount_decimals, - input_mint_decimals, - output_mint_decimals, - self.svm_config["express_relay_program"], - ) - router = self.limo_client.get_pda_authority( - self.limo_client.get_program_id(), order["state"].global_config - ) - - if self.express_relay_metadata is None: - self.express_relay_metadata = await ExpressRelayMetadata.fetch( - self.rpc_client, - self.limo_client.get_express_relay_metadata_pda( - SVM_EXPRESS_RELAY_PROGRAM_ID - ), - commitment=Finalized, - ) - if self.express_relay_metadata is None: - raise ValueError("Express relay metadata account not found") - - submit_bid_ix = self.client.get_svm_submit_bid_instruction( - searcher=self.private_key.pubkey(), - router=router, - permission_key=order["address"], - bid_amount=self.bid_amount, - deadline=DEADLINE, - chain_id=self.chain_id, - fee_receiver_relayer=self.express_relay_metadata.fee_receiver_relayer, - relayer_signer=self.express_relay_metadata.relayer_signer, - ) - transaction = Transaction.new_with_payer( - [submit_bid_ix] + ixs_take_order, self.private_key.pubkey() - ) - - blockhash = (await self.rpc_client.get_latest_blockhash()).value - transaction.partial_sign( - [self.private_key], recent_blockhash=blockhash.blockhash - ) - bid = BidSvm(transaction=transaction, chain_id=self.chain_id) - return bid - - -async def main(): - parser = argparse.ArgumentParser() - parser.add_argument("-v", "--verbose", action="count", default=0) - group = parser.add_mutually_exclusive_group(required=True) - group.add_argument( - "--private-key", - type=str, - help="Private key of the searcher in base58 format", - ) - group.add_argument( - "--private-key-json-file", - type=str, - help="Path to a json file containing the private key of the searcher in array of bytes format", - ) - parser.add_argument( - "--chain-id", - type=str, - required=True, - help="Chain ID of the SVM network to submit bids", - ) - parser.add_argument( - "--endpoint-express-relay", - type=str, - required=True, - help="Server endpoint to use for submitting bids", - ) - parser.add_argument( - "--endpoint-svm", - type=str, - required=True, - help="Server endpoint to use for submitting bids", - ) - parser.add_argument( - "--api-key", - type=str, - required=False, - help="The API key of the searcher to authenticate with the server for fetching and submitting bids", - ) - parser.add_argument( - "--bid", - type=int, - default=100, - help="The amount of bid to submit for each opportunity", - ) - parser.add_argument( - "--fill-rate", - type=int, - default=100, - help="How much of the initial order size to fill in percentage. Default is 100%", - ) - - args = parser.parse_args() - - logger.setLevel(logging.INFO if args.verbose == 0 else logging.DEBUG) - log_handler = logging.StreamHandler() - formatter = logging.Formatter( - "%(asctime)s %(levelname)s:%(name)s:%(module)s %(message)s", - datefmt="%Y-%m-%d %H:%M:%S", - ) - log_handler.setFormatter(formatter) - logger.addHandler(log_handler) - - if args.private_key: - searcher_keypair = Keypair.from_base58_string(args.private_key) - else: - with open(args.private_key_json_file, "r") as f: - searcher_keypair = Keypair.from_json(f.read()) - - logger.info("Using Keypair with pubkey:", searcher_keypair.pubkey()) - searcher = SimpleSearcherSvm( - args.endpoint_express_relay, - searcher_keypair, - args.bid, - args.chain_id, - args.endpoint_svm, - args.fill_rate, - args.api_key, - ) - - await searcher.client.subscribe_chains([args.chain_id]) - - task = await searcher.client.get_ws_loop() - await task - - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/express_relay/sdk/python/express_relay/svm/__init__.py b/express_relay/sdk/python/express_relay/svm/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/express_relay/sdk/python/express_relay/svm/generated/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/__init__.py deleted file mode 100644 index d3ab5cbb28..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .config_router import ConfigRouter, ConfigRouterJSON -from .express_relay_metadata import ExpressRelayMetadata, ExpressRelayMetadataJSON diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/config_router.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/config_router.py deleted file mode 100644 index c02ff78815..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/config_router.py +++ /dev/null @@ -1,85 +0,0 @@ -import typing -from dataclasses import dataclass -from solders.pubkey import Pubkey -from solana.rpc.async_api import AsyncClient -from solana.rpc.commitment import Commitment -import borsh_construct as borsh -from anchorpy.coder.accounts import ACCOUNT_DISCRIMINATOR_SIZE -from anchorpy.error import AccountInvalidDiscriminator -from anchorpy.utils.rpc import get_multiple_accounts -from anchorpy.borsh_extension import BorshPubkey -from ..program_id import PROGRAM_ID - - -class ConfigRouterJSON(typing.TypedDict): - router: str - split: int - - -@dataclass -class ConfigRouter: - discriminator: typing.ClassVar = b"\x87B\xf0\xa6^\xc6\xbb$" - layout: typing.ClassVar = borsh.CStruct("router" / BorshPubkey, "split" / borsh.U64) - router: Pubkey - split: int - - @classmethod - async def fetch( - cls, - conn: AsyncClient, - address: Pubkey, - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.Optional["ConfigRouter"]: - resp = await conn.get_account_info(address, commitment=commitment) - info = resp.value - if info is None: - return None - if info.owner != program_id: - raise ValueError("Account does not belong to this program") - bytes_data = info.data - return cls.decode(bytes_data) - - @classmethod - async def fetch_multiple( - cls, - conn: AsyncClient, - addresses: list[Pubkey], - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.List[typing.Optional["ConfigRouter"]]: - infos = await get_multiple_accounts(conn, addresses, commitment=commitment) - res: typing.List[typing.Optional["ConfigRouter"]] = [] - for info in infos: - if info is None: - res.append(None) - continue - if info.account.owner != program_id: - raise ValueError("Account does not belong to this program") - res.append(cls.decode(info.account.data)) - return res - - @classmethod - def decode(cls, data: bytes) -> "ConfigRouter": - if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator: - raise AccountInvalidDiscriminator( - "The discriminator for this account is invalid" - ) - dec = ConfigRouter.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:]) - return cls( - router=dec.router, - split=dec.split, - ) - - def to_json(self) -> ConfigRouterJSON: - return { - "router": str(self.router), - "split": self.split, - } - - @classmethod - def from_json(cls, obj: ConfigRouterJSON) -> "ConfigRouter": - return cls( - router=Pubkey.from_string(obj["router"]), - split=obj["split"], - ) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/express_relay_metadata.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/express_relay_metadata.py deleted file mode 100644 index 48098ed41d..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/accounts/express_relay_metadata.py +++ /dev/null @@ -1,106 +0,0 @@ -import typing -from dataclasses import dataclass -from solders.pubkey import Pubkey -from solana.rpc.async_api import AsyncClient -from solana.rpc.commitment import Commitment -import borsh_construct as borsh -from anchorpy.coder.accounts import ACCOUNT_DISCRIMINATOR_SIZE -from anchorpy.error import AccountInvalidDiscriminator -from anchorpy.utils.rpc import get_multiple_accounts -from anchorpy.borsh_extension import BorshPubkey -from ..program_id import PROGRAM_ID - - -class ExpressRelayMetadataJSON(typing.TypedDict): - admin: str - relayer_signer: str - fee_receiver_relayer: str - split_router_default: int - split_relayer: int - - -@dataclass -class ExpressRelayMetadata: - discriminator: typing.ClassVar = b"\xccK\x85\x07\xaf\xf1\x82\x0b" - layout: typing.ClassVar = borsh.CStruct( - "admin" / BorshPubkey, - "relayer_signer" / BorshPubkey, - "fee_receiver_relayer" / BorshPubkey, - "split_router_default" / borsh.U64, - "split_relayer" / borsh.U64, - ) - admin: Pubkey - relayer_signer: Pubkey - fee_receiver_relayer: Pubkey - split_router_default: int - split_relayer: int - - @classmethod - async def fetch( - cls, - conn: AsyncClient, - address: Pubkey, - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.Optional["ExpressRelayMetadata"]: - resp = await conn.get_account_info(address, commitment=commitment) - info = resp.value - if info is None: - return None - if info.owner != program_id: - raise ValueError("Account does not belong to this program") - bytes_data = info.data - return cls.decode(bytes_data) - - @classmethod - async def fetch_multiple( - cls, - conn: AsyncClient, - addresses: list[Pubkey], - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.List[typing.Optional["ExpressRelayMetadata"]]: - infos = await get_multiple_accounts(conn, addresses, commitment=commitment) - res: typing.List[typing.Optional["ExpressRelayMetadata"]] = [] - for info in infos: - if info is None: - res.append(None) - continue - if info.account.owner != program_id: - raise ValueError("Account does not belong to this program") - res.append(cls.decode(info.account.data)) - return res - - @classmethod - def decode(cls, data: bytes) -> "ExpressRelayMetadata": - if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator: - raise AccountInvalidDiscriminator( - "The discriminator for this account is invalid" - ) - dec = ExpressRelayMetadata.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:]) - return cls( - admin=dec.admin, - relayer_signer=dec.relayer_signer, - fee_receiver_relayer=dec.fee_receiver_relayer, - split_router_default=dec.split_router_default, - split_relayer=dec.split_relayer, - ) - - def to_json(self) -> ExpressRelayMetadataJSON: - return { - "admin": str(self.admin), - "relayer_signer": str(self.relayer_signer), - "fee_receiver_relayer": str(self.fee_receiver_relayer), - "split_router_default": self.split_router_default, - "split_relayer": self.split_relayer, - } - - @classmethod - def from_json(cls, obj: ExpressRelayMetadataJSON) -> "ExpressRelayMetadata": - return cls( - admin=Pubkey.from_string(obj["admin"]), - relayer_signer=Pubkey.from_string(obj["relayer_signer"]), - fee_receiver_relayer=Pubkey.from_string(obj["fee_receiver_relayer"]), - split_router_default=obj["split_router_default"], - split_relayer=obj["split_relayer"], - ) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/__init__.py deleted file mode 100644 index 421993d0b3..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -import typing -import re -from solders.transaction_status import ( - InstructionErrorCustom, - TransactionErrorInstructionError, -) -from solana.rpc.core import RPCException -from solders.rpc.errors import SendTransactionPreflightFailureMessage -from anchorpy.error import extract_code_and_logs -from ..program_id import PROGRAM_ID -from . import anchor -from . import custom - - -def from_code(code: int) -> typing.Union[custom.CustomError, anchor.AnchorError, None]: - return custom.from_code(code) if code >= 6000 else anchor.from_code(code) - - -error_re = re.compile(r"Program (\w+) failed: custom program error: (\w+)") - - -def from_tx_error( - error: RPCException, -) -> typing.Union[anchor.AnchorError, custom.CustomError, None]: - err_info = error.args[0] - extracted = extract_code_and_logs(err_info, PROGRAM_ID) - if extracted is None: - return None - return from_code(extracted[0]) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/anchor.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/anchor.py deleted file mode 100644 index 3f266ef069..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/anchor.py +++ /dev/null @@ -1,590 +0,0 @@ -import typing -from anchorpy.error import ProgramError - - -class InstructionMissing(ProgramError): - def __init__(self): - super().__init__(100, "8 byte instruction identifier not provided") - - code = 100 - name = "InstructionMissing" - msg = "8 byte instruction identifier not provided" - - -class InstructionFallbackNotFound(ProgramError): - def __init__(self): - super().__init__(101, "Fallback functions are not supported") - - code = 101 - name = "InstructionFallbackNotFound" - msg = "Fallback functions are not supported" - - -class InstructionDidNotDeserialize(ProgramError): - def __init__(self): - super().__init__(102, "The program could not deserialize the given instruction") - - code = 102 - name = "InstructionDidNotDeserialize" - msg = "The program could not deserialize the given instruction" - - -class InstructionDidNotSerialize(ProgramError): - def __init__(self): - super().__init__(103, "The program could not serialize the given instruction") - - code = 103 - name = "InstructionDidNotSerialize" - msg = "The program could not serialize the given instruction" - - -class IdlInstructionStub(ProgramError): - def __init__(self): - super().__init__(1000, "The program was compiled without idl instructions") - - code = 1000 - name = "IdlInstructionStub" - msg = "The program was compiled without idl instructions" - - -class IdlInstructionInvalidProgram(ProgramError): - def __init__(self): - super().__init__( - 1001, "The transaction was given an invalid program for the IDL instruction" - ) - - code = 1001 - name = "IdlInstructionInvalidProgram" - msg = "The transaction was given an invalid program for the IDL instruction" - - -class ConstraintMut(ProgramError): - def __init__(self): - super().__init__(2000, "A mut constraint was violated") - - code = 2000 - name = "ConstraintMut" - msg = "A mut constraint was violated" - - -class ConstraintHasOne(ProgramError): - def __init__(self): - super().__init__(2001, "A has_one constraint was violated") - - code = 2001 - name = "ConstraintHasOne" - msg = "A has_one constraint was violated" - - -class ConstraintSigner(ProgramError): - def __init__(self): - super().__init__(2002, "A signer constraint was violated") - - code = 2002 - name = "ConstraintSigner" - msg = "A signer constraint was violated" - - -class ConstraintRaw(ProgramError): - def __init__(self): - super().__init__(2003, "A raw constraint was violated") - - code = 2003 - name = "ConstraintRaw" - msg = "A raw constraint was violated" - - -class ConstraintOwner(ProgramError): - def __init__(self): - super().__init__(2004, "An owner constraint was violated") - - code = 2004 - name = "ConstraintOwner" - msg = "An owner constraint was violated" - - -class ConstraintRentExempt(ProgramError): - def __init__(self): - super().__init__(2005, "A rent exempt constraint was violated") - - code = 2005 - name = "ConstraintRentExempt" - msg = "A rent exempt constraint was violated" - - -class ConstraintSeeds(ProgramError): - def __init__(self): - super().__init__(2006, "A seeds constraint was violated") - - code = 2006 - name = "ConstraintSeeds" - msg = "A seeds constraint was violated" - - -class ConstraintExecutable(ProgramError): - def __init__(self): - super().__init__(2007, "An executable constraint was violated") - - code = 2007 - name = "ConstraintExecutable" - msg = "An executable constraint was violated" - - -class ConstraintState(ProgramError): - def __init__(self): - super().__init__(2008, "A state constraint was violated") - - code = 2008 - name = "ConstraintState" - msg = "A state constraint was violated" - - -class ConstraintAssociated(ProgramError): - def __init__(self): - super().__init__(2009, "An associated constraint was violated") - - code = 2009 - name = "ConstraintAssociated" - msg = "An associated constraint was violated" - - -class ConstraintAssociatedInit(ProgramError): - def __init__(self): - super().__init__(2010, "An associated init constraint was violated") - - code = 2010 - name = "ConstraintAssociatedInit" - msg = "An associated init constraint was violated" - - -class ConstraintClose(ProgramError): - def __init__(self): - super().__init__(2011, "A close constraint was violated") - - code = 2011 - name = "ConstraintClose" - msg = "A close constraint was violated" - - -class ConstraintAddress(ProgramError): - def __init__(self): - super().__init__(2012, "An address constraint was violated") - - code = 2012 - name = "ConstraintAddress" - msg = "An address constraint was violated" - - -class ConstraintZero(ProgramError): - def __init__(self): - super().__init__(2013, "Expected zero account discriminant") - - code = 2013 - name = "ConstraintZero" - msg = "Expected zero account discriminant" - - -class ConstraintTokenMint(ProgramError): - def __init__(self): - super().__init__(2014, "A token mint constraint was violated") - - code = 2014 - name = "ConstraintTokenMint" - msg = "A token mint constraint was violated" - - -class ConstraintTokenOwner(ProgramError): - def __init__(self): - super().__init__(2015, "A token owner constraint was violated") - - code = 2015 - name = "ConstraintTokenOwner" - msg = "A token owner constraint was violated" - - -class ConstraintMintMintAuthority(ProgramError): - def __init__(self): - super().__init__(2016, "A mint mint authority constraint was violated") - - code = 2016 - name = "ConstraintMintMintAuthority" - msg = "A mint mint authority constraint was violated" - - -class ConstraintMintFreezeAuthority(ProgramError): - def __init__(self): - super().__init__(2017, "A mint freeze authority constraint was violated") - - code = 2017 - name = "ConstraintMintFreezeAuthority" - msg = "A mint freeze authority constraint was violated" - - -class ConstraintMintDecimals(ProgramError): - def __init__(self): - super().__init__(2018, "A mint decimals constraint was violated") - - code = 2018 - name = "ConstraintMintDecimals" - msg = "A mint decimals constraint was violated" - - -class ConstraintSpace(ProgramError): - def __init__(self): - super().__init__(2019, "A space constraint was violated") - - code = 2019 - name = "ConstraintSpace" - msg = "A space constraint was violated" - - -class RequireViolated(ProgramError): - def __init__(self): - super().__init__(2500, "A require expression was violated") - - code = 2500 - name = "RequireViolated" - msg = "A require expression was violated" - - -class RequireEqViolated(ProgramError): - def __init__(self): - super().__init__(2501, "A require_eq expression was violated") - - code = 2501 - name = "RequireEqViolated" - msg = "A require_eq expression was violated" - - -class RequireKeysEqViolated(ProgramError): - def __init__(self): - super().__init__(2502, "A require_keys_eq expression was violated") - - code = 2502 - name = "RequireKeysEqViolated" - msg = "A require_keys_eq expression was violated" - - -class RequireNeqViolated(ProgramError): - def __init__(self): - super().__init__(2503, "A require_neq expression was violated") - - code = 2503 - name = "RequireNeqViolated" - msg = "A require_neq expression was violated" - - -class RequireKeysNeqViolated(ProgramError): - def __init__(self): - super().__init__(2504, "A require_keys_neq expression was violated") - - code = 2504 - name = "RequireKeysNeqViolated" - msg = "A require_keys_neq expression was violated" - - -class RequireGtViolated(ProgramError): - def __init__(self): - super().__init__(2505, "A require_gt expression was violated") - - code = 2505 - name = "RequireGtViolated" - msg = "A require_gt expression was violated" - - -class RequireGteViolated(ProgramError): - def __init__(self): - super().__init__(2506, "A require_gte expression was violated") - - code = 2506 - name = "RequireGteViolated" - msg = "A require_gte expression was violated" - - -class AccountDiscriminatorAlreadySet(ProgramError): - def __init__(self): - super().__init__( - 3000, "The account discriminator was already set on this account" - ) - - code = 3000 - name = "AccountDiscriminatorAlreadySet" - msg = "The account discriminator was already set on this account" - - -class AccountDiscriminatorNotFound(ProgramError): - def __init__(self): - super().__init__(3001, "No 8 byte discriminator was found on the account") - - code = 3001 - name = "AccountDiscriminatorNotFound" - msg = "No 8 byte discriminator was found on the account" - - -class AccountDiscriminatorMismatch(ProgramError): - def __init__(self): - super().__init__(3002, "8 byte discriminator did not match what was expected") - - code = 3002 - name = "AccountDiscriminatorMismatch" - msg = "8 byte discriminator did not match what was expected" - - -class AccountDidNotDeserialize(ProgramError): - def __init__(self): - super().__init__(3003, "Failed to deserialize the account") - - code = 3003 - name = "AccountDidNotDeserialize" - msg = "Failed to deserialize the account" - - -class AccountDidNotSerialize(ProgramError): - def __init__(self): - super().__init__(3004, "Failed to serialize the account") - - code = 3004 - name = "AccountDidNotSerialize" - msg = "Failed to serialize the account" - - -class AccountNotEnoughKeys(ProgramError): - def __init__(self): - super().__init__(3005, "Not enough account keys given to the instruction") - - code = 3005 - name = "AccountNotEnoughKeys" - msg = "Not enough account keys given to the instruction" - - -class AccountNotMutable(ProgramError): - def __init__(self): - super().__init__(3006, "The given account is not mutable") - - code = 3006 - name = "AccountNotMutable" - msg = "The given account is not mutable" - - -class AccountOwnedByWrongProgram(ProgramError): - def __init__(self): - super().__init__( - 3007, "The given account is owned by a different program than expected" - ) - - code = 3007 - name = "AccountOwnedByWrongProgram" - msg = "The given account is owned by a different program than expected" - - -class InvalidProgramId(ProgramError): - def __init__(self): - super().__init__(3008, "Program ID was not as expected") - - code = 3008 - name = "InvalidProgramId" - msg = "Program ID was not as expected" - - -class InvalidProgramExecutable(ProgramError): - def __init__(self): - super().__init__(3009, "Program account is not executable") - - code = 3009 - name = "InvalidProgramExecutable" - msg = "Program account is not executable" - - -class AccountNotSigner(ProgramError): - def __init__(self): - super().__init__(3010, "The given account did not sign") - - code = 3010 - name = "AccountNotSigner" - msg = "The given account did not sign" - - -class AccountNotSystemOwned(ProgramError): - def __init__(self): - super().__init__(3011, "The given account is not owned by the system program") - - code = 3011 - name = "AccountNotSystemOwned" - msg = "The given account is not owned by the system program" - - -class AccountNotInitialized(ProgramError): - def __init__(self): - super().__init__( - 3012, "The program expected this account to be already initialized" - ) - - code = 3012 - name = "AccountNotInitialized" - msg = "The program expected this account to be already initialized" - - -class AccountNotProgramData(ProgramError): - def __init__(self): - super().__init__(3013, "The given account is not a program data account") - - code = 3013 - name = "AccountNotProgramData" - msg = "The given account is not a program data account" - - -class AccountNotAssociatedTokenAccount(ProgramError): - def __init__(self): - super().__init__(3014, "The given account is not the associated token account") - - code = 3014 - name = "AccountNotAssociatedTokenAccount" - msg = "The given account is not the associated token account" - - -class AccountSysvarMismatch(ProgramError): - def __init__(self): - super().__init__( - 3015, "The given public key does not match the required sysvar" - ) - - code = 3015 - name = "AccountSysvarMismatch" - msg = "The given public key does not match the required sysvar" - - -class StateInvalidAddress(ProgramError): - def __init__(self): - super().__init__( - 4000, "The given state account does not have the correct address" - ) - - code = 4000 - name = "StateInvalidAddress" - msg = "The given state account does not have the correct address" - - -class Deprecated(ProgramError): - def __init__(self): - super().__init__( - 5000, "The API being used is deprecated and should no longer be used" - ) - - code = 5000 - name = "Deprecated" - msg = "The API being used is deprecated and should no longer be used" - - -AnchorError = typing.Union[ - InstructionMissing, - InstructionFallbackNotFound, - InstructionDidNotDeserialize, - InstructionDidNotSerialize, - IdlInstructionStub, - IdlInstructionInvalidProgram, - ConstraintMut, - ConstraintHasOne, - ConstraintSigner, - ConstraintRaw, - ConstraintOwner, - ConstraintRentExempt, - ConstraintSeeds, - ConstraintExecutable, - ConstraintState, - ConstraintAssociated, - ConstraintAssociatedInit, - ConstraintClose, - ConstraintAddress, - ConstraintZero, - ConstraintTokenMint, - ConstraintTokenOwner, - ConstraintMintMintAuthority, - ConstraintMintFreezeAuthority, - ConstraintMintDecimals, - ConstraintSpace, - RequireViolated, - RequireEqViolated, - RequireKeysEqViolated, - RequireNeqViolated, - RequireKeysNeqViolated, - RequireGtViolated, - RequireGteViolated, - AccountDiscriminatorAlreadySet, - AccountDiscriminatorNotFound, - AccountDiscriminatorMismatch, - AccountDidNotDeserialize, - AccountDidNotSerialize, - AccountNotEnoughKeys, - AccountNotMutable, - AccountOwnedByWrongProgram, - InvalidProgramId, - InvalidProgramExecutable, - AccountNotSigner, - AccountNotSystemOwned, - AccountNotInitialized, - AccountNotProgramData, - AccountNotAssociatedTokenAccount, - AccountSysvarMismatch, - StateInvalidAddress, - Deprecated, -] -ANCHOR_ERROR_MAP: dict[int, AnchorError] = { - 100: InstructionMissing(), - 101: InstructionFallbackNotFound(), - 102: InstructionDidNotDeserialize(), - 103: InstructionDidNotSerialize(), - 1000: IdlInstructionStub(), - 1001: IdlInstructionInvalidProgram(), - 2000: ConstraintMut(), - 2001: ConstraintHasOne(), - 2002: ConstraintSigner(), - 2003: ConstraintRaw(), - 2004: ConstraintOwner(), - 2005: ConstraintRentExempt(), - 2006: ConstraintSeeds(), - 2007: ConstraintExecutable(), - 2008: ConstraintState(), - 2009: ConstraintAssociated(), - 2010: ConstraintAssociatedInit(), - 2011: ConstraintClose(), - 2012: ConstraintAddress(), - 2013: ConstraintZero(), - 2014: ConstraintTokenMint(), - 2015: ConstraintTokenOwner(), - 2016: ConstraintMintMintAuthority(), - 2017: ConstraintMintFreezeAuthority(), - 2018: ConstraintMintDecimals(), - 2019: ConstraintSpace(), - 2500: RequireViolated(), - 2501: RequireEqViolated(), - 2502: RequireKeysEqViolated(), - 2503: RequireNeqViolated(), - 2504: RequireKeysNeqViolated(), - 2505: RequireGtViolated(), - 2506: RequireGteViolated(), - 3000: AccountDiscriminatorAlreadySet(), - 3001: AccountDiscriminatorNotFound(), - 3002: AccountDiscriminatorMismatch(), - 3003: AccountDidNotDeserialize(), - 3004: AccountDidNotSerialize(), - 3005: AccountNotEnoughKeys(), - 3006: AccountNotMutable(), - 3007: AccountOwnedByWrongProgram(), - 3008: InvalidProgramId(), - 3009: InvalidProgramExecutable(), - 3010: AccountNotSigner(), - 3011: AccountNotSystemOwned(), - 3012: AccountNotInitialized(), - 3013: AccountNotProgramData(), - 3014: AccountNotAssociatedTokenAccount(), - 3015: AccountSysvarMismatch(), - 4000: StateInvalidAddress(), - 5000: Deprecated(), -} - - -def from_code(code: int) -> typing.Optional[AnchorError]: - maybe_err = ANCHOR_ERROR_MAP.get(code) - if maybe_err is None: - return None - return maybe_err diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/custom.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/custom.py deleted file mode 100644 index fc2657191d..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/errors/custom.py +++ /dev/null @@ -1,103 +0,0 @@ -import typing -from anchorpy.error import ProgramError - - -class FeeSplitLargerThanPrecision(ProgramError): - def __init__(self) -> None: - super().__init__(6000, "Fee split(s) larger than fee precision") - - code = 6000 - name = "FeeSplitLargerThanPrecision" - msg = "Fee split(s) larger than fee precision" - - -class FeesHigherThanBid(ProgramError): - def __init__(self) -> None: - super().__init__(6001, "Fees higher than bid") - - code = 6001 - name = "FeesHigherThanBid" - msg = "Fees higher than bid" - - -class DeadlinePassed(ProgramError): - def __init__(self) -> None: - super().__init__(6002, "Deadline passed") - - code = 6002 - name = "DeadlinePassed" - msg = "Deadline passed" - - -class InvalidCPISubmitBid(ProgramError): - def __init__(self) -> None: - super().__init__(6003, "Invalid CPI into submit bid instruction") - - code = 6003 - name = "InvalidCPISubmitBid" - msg = "Invalid CPI into submit bid instruction" - - -class MissingPermission(ProgramError): - def __init__(self) -> None: - super().__init__(6004, "Missing permission") - - code = 6004 - name = "MissingPermission" - msg = "Missing permission" - - -class MultiplePermissions(ProgramError): - def __init__(self) -> None: - super().__init__(6005, "Multiple permissions") - - code = 6005 - name = "MultiplePermissions" - msg = "Multiple permissions" - - -class InsufficientSearcherFunds(ProgramError): - def __init__(self) -> None: - super().__init__(6006, "Insufficient Searcher Funds") - - code = 6006 - name = "InsufficientSearcherFunds" - msg = "Insufficient Searcher Funds" - - -class InsufficientRent(ProgramError): - def __init__(self) -> None: - super().__init__(6007, "Insufficient funds for rent") - - code = 6007 - name = "InsufficientRent" - msg = "Insufficient funds for rent" - - -CustomError = typing.Union[ - FeeSplitLargerThanPrecision, - FeesHigherThanBid, - DeadlinePassed, - InvalidCPISubmitBid, - MissingPermission, - MultiplePermissions, - InsufficientSearcherFunds, - InsufficientRent, -] -CUSTOM_ERROR_MAP: dict[int, CustomError] = { - 6000: FeeSplitLargerThanPrecision(), - 6001: FeesHigherThanBid(), - 6002: DeadlinePassed(), - 6003: InvalidCPISubmitBid(), - 6004: MissingPermission(), - 6005: MultiplePermissions(), - 6006: InsufficientSearcherFunds(), - 6007: InsufficientRent(), -} - - -def from_code(code: int) -> typing.Optional[CustomError]: - maybe_err = CUSTOM_ERROR_MAP.get(code) - if maybe_err is None: - return None - return maybe_err diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/__init__.py deleted file mode 100644 index de5014bdf5..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from .initialize import initialize, InitializeArgs, InitializeAccounts -from .set_admin import set_admin, SetAdminAccounts -from .set_relayer import set_relayer, SetRelayerAccounts -from .set_splits import set_splits, SetSplitsArgs, SetSplitsAccounts -from .set_router_split import ( - set_router_split, - SetRouterSplitArgs, - SetRouterSplitAccounts, -) -from .submit_bid import submit_bid, SubmitBidArgs, SubmitBidAccounts -from .check_permission import check_permission, CheckPermissionAccounts -from .withdraw_fees import withdraw_fees, WithdrawFeesAccounts diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/check_permission.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/check_permission.py deleted file mode 100644 index cefd03c1cb..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/check_permission.py +++ /dev/null @@ -1,41 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class CheckPermissionAccounts(typing.TypedDict): - sysvar_instructions: Pubkey - permission: Pubkey - router: Pubkey - config_router: Pubkey - express_relay_metadata: Pubkey - - -def check_permission( - accounts: CheckPermissionAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta( - pubkey=accounts["sysvar_instructions"], is_signer=False, is_writable=False - ), - AccountMeta(pubkey=accounts["permission"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["router"], is_signer=False, is_writable=False), - AccountMeta( - pubkey=accounts["config_router"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["express_relay_metadata"], - is_signer=False, - is_writable=False, - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\x9a\xc7\xe8\xf2`H\xc5\xec" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/initialize.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/initialize.py deleted file mode 100644 index ff01ffd789..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/initialize.py +++ /dev/null @@ -1,55 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from .. import types -from ..program_id import PROGRAM_ID - - -class InitializeArgs(typing.TypedDict): - data: types.initialize_args.InitializeArgs - - -layout = borsh.CStruct("data" / types.initialize_args.InitializeArgs.layout) - - -class InitializeAccounts(typing.TypedDict): - payer: Pubkey - express_relay_metadata: Pubkey - admin: Pubkey - relayer_signer: Pubkey - fee_receiver_relayer: Pubkey - - -def initialize( - args: InitializeArgs, - accounts: InitializeAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["payer"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["express_relay_metadata"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=accounts["admin"], is_signer=False, is_writable=False), - AccountMeta( - pubkey=accounts["relayer_signer"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["fee_receiver_relayer"], is_signer=False, is_writable=False - ), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xaf\xafm\x1f\r\x98\x9b\xed" - encoded_args = layout.build( - { - "data": args["data"].to_encodable(), - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_admin.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_admin.py deleted file mode 100644 index f5532a332b..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_admin.py +++ /dev/null @@ -1,31 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class SetAdminAccounts(typing.TypedDict): - admin: Pubkey - express_relay_metadata: Pubkey - admin_new: Pubkey - - -def set_admin( - accounts: SetAdminAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["admin"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["express_relay_metadata"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=accounts["admin_new"], is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xfb\xa3\x004[\xc2\xbb\\" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_relayer.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_relayer.py deleted file mode 100644 index 296a7118b7..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_relayer.py +++ /dev/null @@ -1,37 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class SetRelayerAccounts(typing.TypedDict): - admin: Pubkey - express_relay_metadata: Pubkey - relayer_signer: Pubkey - fee_receiver_relayer: Pubkey - - -def set_relayer( - accounts: SetRelayerAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["admin"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["express_relay_metadata"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["relayer_signer"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["fee_receiver_relayer"], is_signer=False, is_writable=False - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\x17\xf3!XnT\xc4%" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_router_split.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_router_split.py deleted file mode 100644 index c7524d9689..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_router_split.py +++ /dev/null @@ -1,53 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from .. import types -from ..program_id import PROGRAM_ID - - -class SetRouterSplitArgs(typing.TypedDict): - data: types.set_router_split_args.SetRouterSplitArgs - - -layout = borsh.CStruct("data" / types.set_router_split_args.SetRouterSplitArgs.layout) - - -class SetRouterSplitAccounts(typing.TypedDict): - admin: Pubkey - config_router: Pubkey - express_relay_metadata: Pubkey - router: Pubkey - - -def set_router_split( - args: SetRouterSplitArgs, - accounts: SetRouterSplitAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["admin"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["config_router"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["express_relay_metadata"], - is_signer=False, - is_writable=False, - ), - AccountMeta(pubkey=accounts["router"], is_signer=False, is_writable=False), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\x10\x96j\r\x1b\xbfh\x08" - encoded_args = layout.build( - { - "data": args["data"].to_encodable(), - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_splits.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_splits.py deleted file mode 100644 index 413f36bdaa..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/set_splits.py +++ /dev/null @@ -1,43 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from .. import types -from ..program_id import PROGRAM_ID - - -class SetSplitsArgs(typing.TypedDict): - data: types.set_splits_args.SetSplitsArgs - - -layout = borsh.CStruct("data" / types.set_splits_args.SetSplitsArgs.layout) - - -class SetSplitsAccounts(typing.TypedDict): - admin: Pubkey - express_relay_metadata: Pubkey - - -def set_splits( - args: SetSplitsArgs, - accounts: SetSplitsAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["admin"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["express_relay_metadata"], is_signer=False, is_writable=True - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xaf\x02V1\xe1\xca\xe8\xbd" - encoded_args = layout.build( - { - "data": args["data"].to_encodable(), - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/submit_bid.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/submit_bid.py deleted file mode 100644 index 1c471429c3..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/submit_bid.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from .. import types -from ..program_id import PROGRAM_ID - - -class SubmitBidArgs(typing.TypedDict): - data: types.submit_bid_args.SubmitBidArgs - - -layout = borsh.CStruct("data" / types.submit_bid_args.SubmitBidArgs.layout) - - -class SubmitBidAccounts(typing.TypedDict): - searcher: Pubkey - relayer_signer: Pubkey - permission: Pubkey - router: Pubkey - config_router: Pubkey - express_relay_metadata: Pubkey - fee_receiver_relayer: Pubkey - sysvar_instructions: Pubkey - - -def submit_bid( - args: SubmitBidArgs, - accounts: SubmitBidAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["searcher"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["relayer_signer"], is_signer=True, is_writable=False - ), - AccountMeta(pubkey=accounts["permission"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["router"], is_signer=False, is_writable=True), - AccountMeta( - pubkey=accounts["config_router"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["express_relay_metadata"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["fee_receiver_relayer"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - AccountMeta( - pubkey=accounts["sysvar_instructions"], is_signer=False, is_writable=False - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\x13\xa4\xed\xfe@\x8b\xed]" - encoded_args = layout.build( - { - "data": args["data"].to_encodable(), - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/withdraw_fees.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/withdraw_fees.py deleted file mode 100644 index c0d79b916c..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/instructions/withdraw_fees.py +++ /dev/null @@ -1,33 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class WithdrawFeesAccounts(typing.TypedDict): - admin: Pubkey - fee_receiver_admin: Pubkey - express_relay_metadata: Pubkey - - -def withdraw_fees( - accounts: WithdrawFeesAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["admin"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["fee_receiver_admin"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["express_relay_metadata"], is_signer=False, is_writable=True - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xc6\xd4\xabm\x90\xd7\xaeY" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/program_id.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/program_id.py deleted file mode 100644 index 87ed591b66..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/program_id.py +++ /dev/null @@ -1,3 +0,0 @@ -from solders.pubkey import Pubkey - -PROGRAM_ID = Pubkey.from_string("PytERJFhAKuNNuaiXkApLfWzwNwSNDACpigT3LwQfou") diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/__init__.py deleted file mode 100644 index bb8835fec9..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -import typing -from . import initialize_args -from .initialize_args import InitializeArgs, InitializeArgsJSON -from . import set_router_split_args -from .set_router_split_args import SetRouterSplitArgs, SetRouterSplitArgsJSON -from . import set_splits_args -from .set_splits_args import SetSplitsArgs, SetSplitsArgsJSON -from . import submit_bid_args -from .submit_bid_args import SubmitBidArgs, SubmitBidArgsJSON diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/initialize_args.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/initialize_args.py deleted file mode 100644 index 3164d8d093..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/initialize_args.py +++ /dev/null @@ -1,45 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from construct import Container -import borsh_construct as borsh - - -class InitializeArgsJSON(typing.TypedDict): - split_router_default: int - split_relayer: int - - -@dataclass -class InitializeArgs: - layout: typing.ClassVar = borsh.CStruct( - "split_router_default" / borsh.U64, "split_relayer" / borsh.U64 - ) - split_router_default: int - split_relayer: int - - @classmethod - def from_decoded(cls, obj: Container) -> "InitializeArgs": - return cls( - split_router_default=obj.split_router_default, - split_relayer=obj.split_relayer, - ) - - def to_encodable(self) -> dict[str, typing.Any]: - return { - "split_router_default": self.split_router_default, - "split_relayer": self.split_relayer, - } - - def to_json(self) -> InitializeArgsJSON: - return { - "split_router_default": self.split_router_default, - "split_relayer": self.split_relayer, - } - - @classmethod - def from_json(cls, obj: InitializeArgsJSON) -> "InitializeArgs": - return cls( - split_router_default=obj["split_router_default"], - split_relayer=obj["split_relayer"], - ) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/set_router_split_args.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/set_router_split_args.py deleted file mode 100644 index 0bb6b13309..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/set_router_split_args.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from construct import Container -import borsh_construct as borsh - - -class SetRouterSplitArgsJSON(typing.TypedDict): - split_router: int - - -@dataclass -class SetRouterSplitArgs: - layout: typing.ClassVar = borsh.CStruct("split_router" / borsh.U64) - split_router: int - - @classmethod - def from_decoded(cls, obj: Container) -> "SetRouterSplitArgs": - return cls(split_router=obj.split_router) - - def to_encodable(self) -> dict[str, typing.Any]: - return {"split_router": self.split_router} - - def to_json(self) -> SetRouterSplitArgsJSON: - return {"split_router": self.split_router} - - @classmethod - def from_json(cls, obj: SetRouterSplitArgsJSON) -> "SetRouterSplitArgs": - return cls(split_router=obj["split_router"]) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/set_splits_args.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/set_splits_args.py deleted file mode 100644 index eedcb5716c..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/set_splits_args.py +++ /dev/null @@ -1,45 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from construct import Container -import borsh_construct as borsh - - -class SetSplitsArgsJSON(typing.TypedDict): - split_router_default: int - split_relayer: int - - -@dataclass -class SetSplitsArgs: - layout: typing.ClassVar = borsh.CStruct( - "split_router_default" / borsh.U64, "split_relayer" / borsh.U64 - ) - split_router_default: int - split_relayer: int - - @classmethod - def from_decoded(cls, obj: Container) -> "SetSplitsArgs": - return cls( - split_router_default=obj.split_router_default, - split_relayer=obj.split_relayer, - ) - - def to_encodable(self) -> dict[str, typing.Any]: - return { - "split_router_default": self.split_router_default, - "split_relayer": self.split_relayer, - } - - def to_json(self) -> SetSplitsArgsJSON: - return { - "split_router_default": self.split_router_default, - "split_relayer": self.split_relayer, - } - - @classmethod - def from_json(cls, obj: SetSplitsArgsJSON) -> "SetSplitsArgs": - return cls( - split_router_default=obj["split_router_default"], - split_relayer=obj["split_relayer"], - ) diff --git a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/submit_bid_args.py b/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/submit_bid_args.py deleted file mode 100644 index 4061cd6cfd..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/express_relay/types/submit_bid_args.py +++ /dev/null @@ -1,33 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from construct import Container -import borsh_construct as borsh - - -class SubmitBidArgsJSON(typing.TypedDict): - deadline: int - bid_amount: int - - -@dataclass -class SubmitBidArgs: - layout: typing.ClassVar = borsh.CStruct( - "deadline" / borsh.I64, "bid_amount" / borsh.U64 - ) - deadline: int - bid_amount: int - - @classmethod - def from_decoded(cls, obj: Container) -> "SubmitBidArgs": - return cls(deadline=obj.deadline, bid_amount=obj.bid_amount) - - def to_encodable(self) -> dict[str, typing.Any]: - return {"deadline": self.deadline, "bid_amount": self.bid_amount} - - def to_json(self) -> SubmitBidArgsJSON: - return {"deadline": self.deadline, "bid_amount": self.bid_amount} - - @classmethod - def from_json(cls, obj: SubmitBidArgsJSON) -> "SubmitBidArgs": - return cls(deadline=obj["deadline"], bid_amount=obj["bid_amount"]) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/limo/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/__init__.py deleted file mode 100644 index 82d61fdc0c..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .order import Order, OrderJSON -from .global_config import GlobalConfig, GlobalConfigJSON diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/global_config.py b/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/global_config.py deleted file mode 100644 index 77c460745d..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/global_config.py +++ /dev/null @@ -1,162 +0,0 @@ -import typing -from dataclasses import dataclass -from solders.pubkey import Pubkey -from solana.rpc.async_api import AsyncClient -from solana.rpc.commitment import Commitment -import borsh_construct as borsh -from anchorpy.coder.accounts import ACCOUNT_DISCRIMINATOR_SIZE -from anchorpy.error import AccountInvalidDiscriminator -from anchorpy.utils.rpc import get_multiple_accounts -from anchorpy.borsh_extension import BorshPubkey -from ..program_id import PROGRAM_ID - - -class GlobalConfigJSON(typing.TypedDict): - emergency_mode: int - local_admins_blocked: int - new_orders_blocked: int - orders_matching_blocked: int - host_fee_bps: int - padding0: list[int] - padding1: list[int] - pda_authority_previous_lamports_balance: int - total_tip_amount: int - host_tip_amount: int - pda_authority: str - pda_authority_bump: int - admin_authority: str - padding2: list[int] - - -@dataclass -class GlobalConfig: - discriminator: typing.ClassVar = b"\x95\x08\x9c\xca\xa0\xfc\xb0\xd9" - layout: typing.ClassVar = borsh.CStruct( - "emergency_mode" / borsh.U8, - "local_admins_blocked" / borsh.U8, - "new_orders_blocked" / borsh.U8, - "orders_matching_blocked" / borsh.U8, - "host_fee_bps" / borsh.U16, - "padding0" / borsh.U8[2], - "padding1" / borsh.U64[10], - "pda_authority_previous_lamports_balance" / borsh.U64, - "total_tip_amount" / borsh.U64, - "host_tip_amount" / borsh.U64, - "pda_authority" / BorshPubkey, - "pda_authority_bump" / borsh.U64, - "admin_authority" / BorshPubkey, - "padding2" / borsh.U64[247], - ) - emergency_mode: int - local_admins_blocked: int - new_orders_blocked: int - orders_matching_blocked: int - host_fee_bps: int - padding0: list[int] - padding1: list[int] - pda_authority_previous_lamports_balance: int - total_tip_amount: int - host_tip_amount: int - pda_authority: Pubkey - pda_authority_bump: int - admin_authority: Pubkey - padding2: list[int] - - @classmethod - async def fetch( - cls, - conn: AsyncClient, - address: Pubkey, - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.Optional["GlobalConfig"]: - resp = await conn.get_account_info(address, commitment=commitment) - info = resp.value - if info is None: - return None - if info.owner != program_id: - raise ValueError("Account does not belong to this program") - bytes_data = info.data - return cls.decode(bytes_data) - - @classmethod - async def fetch_multiple( - cls, - conn: AsyncClient, - addresses: list[Pubkey], - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.List[typing.Optional["GlobalConfig"]]: - infos = await get_multiple_accounts(conn, addresses, commitment=commitment) - res: typing.List[typing.Optional["GlobalConfig"]] = [] - for info in infos: - if info is None: - res.append(None) - continue - if info.account.owner != program_id: - raise ValueError("Account does not belong to this program") - res.append(cls.decode(info.account.data)) - return res - - @classmethod - def decode(cls, data: bytes) -> "GlobalConfig": - if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator: - raise AccountInvalidDiscriminator( - "The discriminator for this account is invalid" - ) - dec = GlobalConfig.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:]) - return cls( - emergency_mode=dec.emergency_mode, - local_admins_blocked=dec.local_admins_blocked, - new_orders_blocked=dec.new_orders_blocked, - orders_matching_blocked=dec.orders_matching_blocked, - host_fee_bps=dec.host_fee_bps, - padding0=dec.padding0, - padding1=dec.padding1, - pda_authority_previous_lamports_balance=dec.pda_authority_previous_lamports_balance, - total_tip_amount=dec.total_tip_amount, - host_tip_amount=dec.host_tip_amount, - pda_authority=dec.pda_authority, - pda_authority_bump=dec.pda_authority_bump, - admin_authority=dec.admin_authority, - padding2=dec.padding2, - ) - - def to_json(self) -> GlobalConfigJSON: - return { - "emergency_mode": self.emergency_mode, - "local_admins_blocked": self.local_admins_blocked, - "new_orders_blocked": self.new_orders_blocked, - "orders_matching_blocked": self.orders_matching_blocked, - "host_fee_bps": self.host_fee_bps, - "padding0": self.padding0, - "padding1": self.padding1, - "pda_authority_previous_lamports_balance": self.pda_authority_previous_lamports_balance, - "total_tip_amount": self.total_tip_amount, - "host_tip_amount": self.host_tip_amount, - "pda_authority": str(self.pda_authority), - "pda_authority_bump": self.pda_authority_bump, - "admin_authority": str(self.admin_authority), - "padding2": self.padding2, - } - - @classmethod - def from_json(cls, obj: GlobalConfigJSON) -> "GlobalConfig": - return cls( - emergency_mode=obj["emergency_mode"], - local_admins_blocked=obj["local_admins_blocked"], - new_orders_blocked=obj["new_orders_blocked"], - orders_matching_blocked=obj["orders_matching_blocked"], - host_fee_bps=obj["host_fee_bps"], - padding0=obj["padding0"], - padding1=obj["padding1"], - pda_authority_previous_lamports_balance=obj[ - "pda_authority_previous_lamports_balance" - ], - total_tip_amount=obj["total_tip_amount"], - host_tip_amount=obj["host_tip_amount"], - pda_authority=Pubkey.from_string(obj["pda_authority"]), - pda_authority_bump=obj["pda_authority_bump"], - admin_authority=Pubkey.from_string(obj["admin_authority"]), - padding2=obj["padding2"], - ) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/order.py b/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/order.py deleted file mode 100644 index 4f3b12ab27..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/accounts/order.py +++ /dev/null @@ -1,178 +0,0 @@ -import typing -from dataclasses import dataclass -from solders.pubkey import Pubkey -from solana.rpc.async_api import AsyncClient -from solana.rpc.commitment import Commitment -import borsh_construct as borsh -from anchorpy.coder.accounts import ACCOUNT_DISCRIMINATOR_SIZE -from anchorpy.error import AccountInvalidDiscriminator -from anchorpy.utils.rpc import get_multiple_accounts -from anchorpy.borsh_extension import BorshPubkey -from ..program_id import PROGRAM_ID - - -class OrderJSON(typing.TypedDict): - global_config: str - maker: str - input_mint: str - input_mint_program_id: str - output_mint: str - output_mint_program_id: str - initial_input_amount: int - expected_output_amount: int - remaining_input_amount: int - filled_output_amount: int - tip_amount: int - number_of_fills: int - order_type: int - status: int - in_vault_bump: int - padding0: list[int] - padding: list[int] - - -@dataclass -class Order: - discriminator: typing.ClassVar = b"\x86\xad\xdf\xb9MV\x1c3" - layout: typing.ClassVar = borsh.CStruct( - "global_config" / BorshPubkey, - "maker" / BorshPubkey, - "input_mint" / BorshPubkey, - "input_mint_program_id" / BorshPubkey, - "output_mint" / BorshPubkey, - "output_mint_program_id" / BorshPubkey, - "initial_input_amount" / borsh.U64, - "expected_output_amount" / borsh.U64, - "remaining_input_amount" / borsh.U64, - "filled_output_amount" / borsh.U64, - "tip_amount" / borsh.U64, - "number_of_fills" / borsh.U64, - "order_type" / borsh.U8, - "status" / borsh.U8, - "in_vault_bump" / borsh.U8, - "padding0" / borsh.U8[5], - "padding" / borsh.U64[21], - ) - global_config: Pubkey - maker: Pubkey - input_mint: Pubkey - input_mint_program_id: Pubkey - output_mint: Pubkey - output_mint_program_id: Pubkey - initial_input_amount: int - expected_output_amount: int - remaining_input_amount: int - filled_output_amount: int - tip_amount: int - number_of_fills: int - order_type: int - status: int - in_vault_bump: int - padding0: list[int] - padding: list[int] - - @classmethod - async def fetch( - cls, - conn: AsyncClient, - address: Pubkey, - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.Optional["Order"]: - resp = await conn.get_account_info(address, commitment=commitment) - info = resp.value - if info is None: - return None - if info.owner != program_id: - raise ValueError("Account does not belong to this program") - bytes_data = info.data - return cls.decode(bytes_data) - - @classmethod - async def fetch_multiple( - cls, - conn: AsyncClient, - addresses: list[Pubkey], - commitment: typing.Optional[Commitment] = None, - program_id: Pubkey = PROGRAM_ID, - ) -> typing.List[typing.Optional["Order"]]: - infos = await get_multiple_accounts(conn, addresses, commitment=commitment) - res: typing.List[typing.Optional["Order"]] = [] - for info in infos: - if info is None: - res.append(None) - continue - if info.account.owner != program_id: - raise ValueError("Account does not belong to this program") - res.append(cls.decode(info.account.data)) - return res - - @classmethod - def decode(cls, data: bytes) -> "Order": - if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator: - raise AccountInvalidDiscriminator( - "The discriminator for this account is invalid" - ) - dec = Order.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:]) - return cls( - global_config=dec.global_config, - maker=dec.maker, - input_mint=dec.input_mint, - input_mint_program_id=dec.input_mint_program_id, - output_mint=dec.output_mint, - output_mint_program_id=dec.output_mint_program_id, - initial_input_amount=dec.initial_input_amount, - expected_output_amount=dec.expected_output_amount, - remaining_input_amount=dec.remaining_input_amount, - filled_output_amount=dec.filled_output_amount, - tip_amount=dec.tip_amount, - number_of_fills=dec.number_of_fills, - order_type=dec.order_type, - status=dec.status, - in_vault_bump=dec.in_vault_bump, - padding0=dec.padding0, - padding=dec.padding, - ) - - def to_json(self) -> OrderJSON: - return { - "global_config": str(self.global_config), - "maker": str(self.maker), - "input_mint": str(self.input_mint), - "input_mint_program_id": str(self.input_mint_program_id), - "output_mint": str(self.output_mint), - "output_mint_program_id": str(self.output_mint_program_id), - "initial_input_amount": self.initial_input_amount, - "expected_output_amount": self.expected_output_amount, - "remaining_input_amount": self.remaining_input_amount, - "filled_output_amount": self.filled_output_amount, - "tip_amount": self.tip_amount, - "number_of_fills": self.number_of_fills, - "order_type": self.order_type, - "status": self.status, - "in_vault_bump": self.in_vault_bump, - "padding0": self.padding0, - "padding": self.padding, - } - - @classmethod - def from_json(cls, obj: OrderJSON) -> "Order": - return cls( - global_config=Pubkey.from_string(obj["global_config"]), - maker=Pubkey.from_string(obj["maker"]), - input_mint=Pubkey.from_string(obj["input_mint"]), - input_mint_program_id=Pubkey.from_string(obj["input_mint_program_id"]), - output_mint=Pubkey.from_string(obj["output_mint"]), - output_mint_program_id=Pubkey.from_string(obj["output_mint_program_id"]), - initial_input_amount=obj["initial_input_amount"], - expected_output_amount=obj["expected_output_amount"], - remaining_input_amount=obj["remaining_input_amount"], - filled_output_amount=obj["filled_output_amount"], - tip_amount=obj["tip_amount"], - number_of_fills=obj["number_of_fills"], - order_type=obj["order_type"], - status=obj["status"], - in_vault_bump=obj["in_vault_bump"], - padding0=obj["padding0"], - padding=obj["padding"], - ) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/errors/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/limo/errors/__init__.py deleted file mode 100644 index 421993d0b3..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/errors/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -import typing -import re -from solders.transaction_status import ( - InstructionErrorCustom, - TransactionErrorInstructionError, -) -from solana.rpc.core import RPCException -from solders.rpc.errors import SendTransactionPreflightFailureMessage -from anchorpy.error import extract_code_and_logs -from ..program_id import PROGRAM_ID -from . import anchor -from . import custom - - -def from_code(code: int) -> typing.Union[custom.CustomError, anchor.AnchorError, None]: - return custom.from_code(code) if code >= 6000 else anchor.from_code(code) - - -error_re = re.compile(r"Program (\w+) failed: custom program error: (\w+)") - - -def from_tx_error( - error: RPCException, -) -> typing.Union[anchor.AnchorError, custom.CustomError, None]: - err_info = error.args[0] - extracted = extract_code_and_logs(err_info, PROGRAM_ID) - if extracted is None: - return None - return from_code(extracted[0]) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/errors/anchor.py b/express_relay/sdk/python/express_relay/svm/generated/limo/errors/anchor.py deleted file mode 100644 index 3f266ef069..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/errors/anchor.py +++ /dev/null @@ -1,590 +0,0 @@ -import typing -from anchorpy.error import ProgramError - - -class InstructionMissing(ProgramError): - def __init__(self): - super().__init__(100, "8 byte instruction identifier not provided") - - code = 100 - name = "InstructionMissing" - msg = "8 byte instruction identifier not provided" - - -class InstructionFallbackNotFound(ProgramError): - def __init__(self): - super().__init__(101, "Fallback functions are not supported") - - code = 101 - name = "InstructionFallbackNotFound" - msg = "Fallback functions are not supported" - - -class InstructionDidNotDeserialize(ProgramError): - def __init__(self): - super().__init__(102, "The program could not deserialize the given instruction") - - code = 102 - name = "InstructionDidNotDeserialize" - msg = "The program could not deserialize the given instruction" - - -class InstructionDidNotSerialize(ProgramError): - def __init__(self): - super().__init__(103, "The program could not serialize the given instruction") - - code = 103 - name = "InstructionDidNotSerialize" - msg = "The program could not serialize the given instruction" - - -class IdlInstructionStub(ProgramError): - def __init__(self): - super().__init__(1000, "The program was compiled without idl instructions") - - code = 1000 - name = "IdlInstructionStub" - msg = "The program was compiled without idl instructions" - - -class IdlInstructionInvalidProgram(ProgramError): - def __init__(self): - super().__init__( - 1001, "The transaction was given an invalid program for the IDL instruction" - ) - - code = 1001 - name = "IdlInstructionInvalidProgram" - msg = "The transaction was given an invalid program for the IDL instruction" - - -class ConstraintMut(ProgramError): - def __init__(self): - super().__init__(2000, "A mut constraint was violated") - - code = 2000 - name = "ConstraintMut" - msg = "A mut constraint was violated" - - -class ConstraintHasOne(ProgramError): - def __init__(self): - super().__init__(2001, "A has_one constraint was violated") - - code = 2001 - name = "ConstraintHasOne" - msg = "A has_one constraint was violated" - - -class ConstraintSigner(ProgramError): - def __init__(self): - super().__init__(2002, "A signer constraint was violated") - - code = 2002 - name = "ConstraintSigner" - msg = "A signer constraint was violated" - - -class ConstraintRaw(ProgramError): - def __init__(self): - super().__init__(2003, "A raw constraint was violated") - - code = 2003 - name = "ConstraintRaw" - msg = "A raw constraint was violated" - - -class ConstraintOwner(ProgramError): - def __init__(self): - super().__init__(2004, "An owner constraint was violated") - - code = 2004 - name = "ConstraintOwner" - msg = "An owner constraint was violated" - - -class ConstraintRentExempt(ProgramError): - def __init__(self): - super().__init__(2005, "A rent exempt constraint was violated") - - code = 2005 - name = "ConstraintRentExempt" - msg = "A rent exempt constraint was violated" - - -class ConstraintSeeds(ProgramError): - def __init__(self): - super().__init__(2006, "A seeds constraint was violated") - - code = 2006 - name = "ConstraintSeeds" - msg = "A seeds constraint was violated" - - -class ConstraintExecutable(ProgramError): - def __init__(self): - super().__init__(2007, "An executable constraint was violated") - - code = 2007 - name = "ConstraintExecutable" - msg = "An executable constraint was violated" - - -class ConstraintState(ProgramError): - def __init__(self): - super().__init__(2008, "A state constraint was violated") - - code = 2008 - name = "ConstraintState" - msg = "A state constraint was violated" - - -class ConstraintAssociated(ProgramError): - def __init__(self): - super().__init__(2009, "An associated constraint was violated") - - code = 2009 - name = "ConstraintAssociated" - msg = "An associated constraint was violated" - - -class ConstraintAssociatedInit(ProgramError): - def __init__(self): - super().__init__(2010, "An associated init constraint was violated") - - code = 2010 - name = "ConstraintAssociatedInit" - msg = "An associated init constraint was violated" - - -class ConstraintClose(ProgramError): - def __init__(self): - super().__init__(2011, "A close constraint was violated") - - code = 2011 - name = "ConstraintClose" - msg = "A close constraint was violated" - - -class ConstraintAddress(ProgramError): - def __init__(self): - super().__init__(2012, "An address constraint was violated") - - code = 2012 - name = "ConstraintAddress" - msg = "An address constraint was violated" - - -class ConstraintZero(ProgramError): - def __init__(self): - super().__init__(2013, "Expected zero account discriminant") - - code = 2013 - name = "ConstraintZero" - msg = "Expected zero account discriminant" - - -class ConstraintTokenMint(ProgramError): - def __init__(self): - super().__init__(2014, "A token mint constraint was violated") - - code = 2014 - name = "ConstraintTokenMint" - msg = "A token mint constraint was violated" - - -class ConstraintTokenOwner(ProgramError): - def __init__(self): - super().__init__(2015, "A token owner constraint was violated") - - code = 2015 - name = "ConstraintTokenOwner" - msg = "A token owner constraint was violated" - - -class ConstraintMintMintAuthority(ProgramError): - def __init__(self): - super().__init__(2016, "A mint mint authority constraint was violated") - - code = 2016 - name = "ConstraintMintMintAuthority" - msg = "A mint mint authority constraint was violated" - - -class ConstraintMintFreezeAuthority(ProgramError): - def __init__(self): - super().__init__(2017, "A mint freeze authority constraint was violated") - - code = 2017 - name = "ConstraintMintFreezeAuthority" - msg = "A mint freeze authority constraint was violated" - - -class ConstraintMintDecimals(ProgramError): - def __init__(self): - super().__init__(2018, "A mint decimals constraint was violated") - - code = 2018 - name = "ConstraintMintDecimals" - msg = "A mint decimals constraint was violated" - - -class ConstraintSpace(ProgramError): - def __init__(self): - super().__init__(2019, "A space constraint was violated") - - code = 2019 - name = "ConstraintSpace" - msg = "A space constraint was violated" - - -class RequireViolated(ProgramError): - def __init__(self): - super().__init__(2500, "A require expression was violated") - - code = 2500 - name = "RequireViolated" - msg = "A require expression was violated" - - -class RequireEqViolated(ProgramError): - def __init__(self): - super().__init__(2501, "A require_eq expression was violated") - - code = 2501 - name = "RequireEqViolated" - msg = "A require_eq expression was violated" - - -class RequireKeysEqViolated(ProgramError): - def __init__(self): - super().__init__(2502, "A require_keys_eq expression was violated") - - code = 2502 - name = "RequireKeysEqViolated" - msg = "A require_keys_eq expression was violated" - - -class RequireNeqViolated(ProgramError): - def __init__(self): - super().__init__(2503, "A require_neq expression was violated") - - code = 2503 - name = "RequireNeqViolated" - msg = "A require_neq expression was violated" - - -class RequireKeysNeqViolated(ProgramError): - def __init__(self): - super().__init__(2504, "A require_keys_neq expression was violated") - - code = 2504 - name = "RequireKeysNeqViolated" - msg = "A require_keys_neq expression was violated" - - -class RequireGtViolated(ProgramError): - def __init__(self): - super().__init__(2505, "A require_gt expression was violated") - - code = 2505 - name = "RequireGtViolated" - msg = "A require_gt expression was violated" - - -class RequireGteViolated(ProgramError): - def __init__(self): - super().__init__(2506, "A require_gte expression was violated") - - code = 2506 - name = "RequireGteViolated" - msg = "A require_gte expression was violated" - - -class AccountDiscriminatorAlreadySet(ProgramError): - def __init__(self): - super().__init__( - 3000, "The account discriminator was already set on this account" - ) - - code = 3000 - name = "AccountDiscriminatorAlreadySet" - msg = "The account discriminator was already set on this account" - - -class AccountDiscriminatorNotFound(ProgramError): - def __init__(self): - super().__init__(3001, "No 8 byte discriminator was found on the account") - - code = 3001 - name = "AccountDiscriminatorNotFound" - msg = "No 8 byte discriminator was found on the account" - - -class AccountDiscriminatorMismatch(ProgramError): - def __init__(self): - super().__init__(3002, "8 byte discriminator did not match what was expected") - - code = 3002 - name = "AccountDiscriminatorMismatch" - msg = "8 byte discriminator did not match what was expected" - - -class AccountDidNotDeserialize(ProgramError): - def __init__(self): - super().__init__(3003, "Failed to deserialize the account") - - code = 3003 - name = "AccountDidNotDeserialize" - msg = "Failed to deserialize the account" - - -class AccountDidNotSerialize(ProgramError): - def __init__(self): - super().__init__(3004, "Failed to serialize the account") - - code = 3004 - name = "AccountDidNotSerialize" - msg = "Failed to serialize the account" - - -class AccountNotEnoughKeys(ProgramError): - def __init__(self): - super().__init__(3005, "Not enough account keys given to the instruction") - - code = 3005 - name = "AccountNotEnoughKeys" - msg = "Not enough account keys given to the instruction" - - -class AccountNotMutable(ProgramError): - def __init__(self): - super().__init__(3006, "The given account is not mutable") - - code = 3006 - name = "AccountNotMutable" - msg = "The given account is not mutable" - - -class AccountOwnedByWrongProgram(ProgramError): - def __init__(self): - super().__init__( - 3007, "The given account is owned by a different program than expected" - ) - - code = 3007 - name = "AccountOwnedByWrongProgram" - msg = "The given account is owned by a different program than expected" - - -class InvalidProgramId(ProgramError): - def __init__(self): - super().__init__(3008, "Program ID was not as expected") - - code = 3008 - name = "InvalidProgramId" - msg = "Program ID was not as expected" - - -class InvalidProgramExecutable(ProgramError): - def __init__(self): - super().__init__(3009, "Program account is not executable") - - code = 3009 - name = "InvalidProgramExecutable" - msg = "Program account is not executable" - - -class AccountNotSigner(ProgramError): - def __init__(self): - super().__init__(3010, "The given account did not sign") - - code = 3010 - name = "AccountNotSigner" - msg = "The given account did not sign" - - -class AccountNotSystemOwned(ProgramError): - def __init__(self): - super().__init__(3011, "The given account is not owned by the system program") - - code = 3011 - name = "AccountNotSystemOwned" - msg = "The given account is not owned by the system program" - - -class AccountNotInitialized(ProgramError): - def __init__(self): - super().__init__( - 3012, "The program expected this account to be already initialized" - ) - - code = 3012 - name = "AccountNotInitialized" - msg = "The program expected this account to be already initialized" - - -class AccountNotProgramData(ProgramError): - def __init__(self): - super().__init__(3013, "The given account is not a program data account") - - code = 3013 - name = "AccountNotProgramData" - msg = "The given account is not a program data account" - - -class AccountNotAssociatedTokenAccount(ProgramError): - def __init__(self): - super().__init__(3014, "The given account is not the associated token account") - - code = 3014 - name = "AccountNotAssociatedTokenAccount" - msg = "The given account is not the associated token account" - - -class AccountSysvarMismatch(ProgramError): - def __init__(self): - super().__init__( - 3015, "The given public key does not match the required sysvar" - ) - - code = 3015 - name = "AccountSysvarMismatch" - msg = "The given public key does not match the required sysvar" - - -class StateInvalidAddress(ProgramError): - def __init__(self): - super().__init__( - 4000, "The given state account does not have the correct address" - ) - - code = 4000 - name = "StateInvalidAddress" - msg = "The given state account does not have the correct address" - - -class Deprecated(ProgramError): - def __init__(self): - super().__init__( - 5000, "The API being used is deprecated and should no longer be used" - ) - - code = 5000 - name = "Deprecated" - msg = "The API being used is deprecated and should no longer be used" - - -AnchorError = typing.Union[ - InstructionMissing, - InstructionFallbackNotFound, - InstructionDidNotDeserialize, - InstructionDidNotSerialize, - IdlInstructionStub, - IdlInstructionInvalidProgram, - ConstraintMut, - ConstraintHasOne, - ConstraintSigner, - ConstraintRaw, - ConstraintOwner, - ConstraintRentExempt, - ConstraintSeeds, - ConstraintExecutable, - ConstraintState, - ConstraintAssociated, - ConstraintAssociatedInit, - ConstraintClose, - ConstraintAddress, - ConstraintZero, - ConstraintTokenMint, - ConstraintTokenOwner, - ConstraintMintMintAuthority, - ConstraintMintFreezeAuthority, - ConstraintMintDecimals, - ConstraintSpace, - RequireViolated, - RequireEqViolated, - RequireKeysEqViolated, - RequireNeqViolated, - RequireKeysNeqViolated, - RequireGtViolated, - RequireGteViolated, - AccountDiscriminatorAlreadySet, - AccountDiscriminatorNotFound, - AccountDiscriminatorMismatch, - AccountDidNotDeserialize, - AccountDidNotSerialize, - AccountNotEnoughKeys, - AccountNotMutable, - AccountOwnedByWrongProgram, - InvalidProgramId, - InvalidProgramExecutable, - AccountNotSigner, - AccountNotSystemOwned, - AccountNotInitialized, - AccountNotProgramData, - AccountNotAssociatedTokenAccount, - AccountSysvarMismatch, - StateInvalidAddress, - Deprecated, -] -ANCHOR_ERROR_MAP: dict[int, AnchorError] = { - 100: InstructionMissing(), - 101: InstructionFallbackNotFound(), - 102: InstructionDidNotDeserialize(), - 103: InstructionDidNotSerialize(), - 1000: IdlInstructionStub(), - 1001: IdlInstructionInvalidProgram(), - 2000: ConstraintMut(), - 2001: ConstraintHasOne(), - 2002: ConstraintSigner(), - 2003: ConstraintRaw(), - 2004: ConstraintOwner(), - 2005: ConstraintRentExempt(), - 2006: ConstraintSeeds(), - 2007: ConstraintExecutable(), - 2008: ConstraintState(), - 2009: ConstraintAssociated(), - 2010: ConstraintAssociatedInit(), - 2011: ConstraintClose(), - 2012: ConstraintAddress(), - 2013: ConstraintZero(), - 2014: ConstraintTokenMint(), - 2015: ConstraintTokenOwner(), - 2016: ConstraintMintMintAuthority(), - 2017: ConstraintMintFreezeAuthority(), - 2018: ConstraintMintDecimals(), - 2019: ConstraintSpace(), - 2500: RequireViolated(), - 2501: RequireEqViolated(), - 2502: RequireKeysEqViolated(), - 2503: RequireNeqViolated(), - 2504: RequireKeysNeqViolated(), - 2505: RequireGtViolated(), - 2506: RequireGteViolated(), - 3000: AccountDiscriminatorAlreadySet(), - 3001: AccountDiscriminatorNotFound(), - 3002: AccountDiscriminatorMismatch(), - 3003: AccountDidNotDeserialize(), - 3004: AccountDidNotSerialize(), - 3005: AccountNotEnoughKeys(), - 3006: AccountNotMutable(), - 3007: AccountOwnedByWrongProgram(), - 3008: InvalidProgramId(), - 3009: InvalidProgramExecutable(), - 3010: AccountNotSigner(), - 3011: AccountNotSystemOwned(), - 3012: AccountNotInitialized(), - 3013: AccountNotProgramData(), - 3014: AccountNotAssociatedTokenAccount(), - 3015: AccountSysvarMismatch(), - 4000: StateInvalidAddress(), - 5000: Deprecated(), -} - - -def from_code(code: int) -> typing.Optional[AnchorError]: - maybe_err = ANCHOR_ERROR_MAP.get(code) - if maybe_err is None: - return None - return maybe_err diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/errors/custom.py b/express_relay/sdk/python/express_relay/svm/generated/limo/errors/custom.py deleted file mode 100644 index e379be61b1..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/errors/custom.py +++ /dev/null @@ -1,191 +0,0 @@ -import typing -from anchorpy.error import ProgramError - - -class OrderCanNotBeCanceled(ProgramError): - def __init__(self) -> None: - super().__init__(6000, "Order can't be canceled") - - code = 6000 - name = "OrderCanNotBeCanceled" - msg = "Order can't be canceled" - - -class OrderNotActive(ProgramError): - def __init__(self) -> None: - super().__init__(6001, "Order not active") - - code = 6001 - name = "OrderNotActive" - msg = "Order not active" - - -class InvalidAdminAuthority(ProgramError): - def __init__(self) -> None: - super().__init__(6002, "Invalid admin authority") - - code = 6002 - name = "InvalidAdminAuthority" - msg = "Invalid admin authority" - - -class InvalidPdaAuthority(ProgramError): - def __init__(self) -> None: - super().__init__(6003, "Invalid pda authority") - - code = 6003 - name = "InvalidPdaAuthority" - msg = "Invalid pda authority" - - -class InvalidConfigOption(ProgramError): - def __init__(self) -> None: - super().__init__(6004, "Invalid config option") - - code = 6004 - name = "InvalidConfigOption" - msg = "Invalid config option" - - -class InvalidOrderOwner(ProgramError): - def __init__(self) -> None: - super().__init__(6005, "Order owner account is not the order owner") - - code = 6005 - name = "InvalidOrderOwner" - msg = "Order owner account is not the order owner" - - -class OutOfRangeIntegralConversion(ProgramError): - def __init__(self) -> None: - super().__init__(6006, "Out of range integral conversion attempted") - - code = 6006 - name = "OutOfRangeIntegralConversion" - msg = "Out of range integral conversion attempted" - - -class InvalidFlag(ProgramError): - def __init__(self) -> None: - super().__init__(6007, "Invalid boolean flag, valid values are 0 and 1") - - code = 6007 - name = "InvalidFlag" - msg = "Invalid boolean flag, valid values are 0 and 1" - - -class MathOverflow(ProgramError): - def __init__(self) -> None: - super().__init__(6008, "Mathematical operation with overflow") - - code = 6008 - name = "MathOverflow" - msg = "Mathematical operation with overflow" - - -class OrderInputAmountInvalid(ProgramError): - def __init__(self) -> None: - super().__init__(6009, "Order input amount invalid") - - code = 6009 - name = "OrderInputAmountInvalid" - msg = "Order input amount invalid" - - -class OrderOutputAmountInvalid(ProgramError): - def __init__(self) -> None: - super().__init__(6010, "Order input amount invalid") - - code = 6010 - name = "OrderOutputAmountInvalid" - msg = "Order input amount invalid" - - -class InvalidHostFee(ProgramError): - def __init__(self) -> None: - super().__init__(6011, "Host fee bps must be between 0 and 10000") - - code = 6011 - name = "InvalidHostFee" - msg = "Host fee bps must be between 0 and 10000" - - -class IntegerOverflow(ProgramError): - def __init__(self) -> None: - super().__init__(6012, "Conversion between integers failed") - - code = 6012 - name = "IntegerOverflow" - msg = "Conversion between integers failed" - - -class InvalidTipBalance(ProgramError): - def __init__(self) -> None: - super().__init__(6013, "Tip balance less than accounted tip") - - code = 6013 - name = "InvalidTipBalance" - msg = "Tip balance less than accounted tip" - - -class InvalidTipTransferAmount(ProgramError): - def __init__(self) -> None: - super().__init__(6014, "Tip transfer amount is less than expected") - - code = 6014 - name = "InvalidTipTransferAmount" - msg = "Tip transfer amount is less than expected" - - -class InvalidHostTipBalance(ProgramError): - def __init__(self) -> None: - super().__init__(6015, "Host tup amount is less than accounted for") - - code = 6015 - name = "InvalidHostTipBalance" - msg = "Host tup amount is less than accounted for" - - -CustomError = typing.Union[ - OrderCanNotBeCanceled, - OrderNotActive, - InvalidAdminAuthority, - InvalidPdaAuthority, - InvalidConfigOption, - InvalidOrderOwner, - OutOfRangeIntegralConversion, - InvalidFlag, - MathOverflow, - OrderInputAmountInvalid, - OrderOutputAmountInvalid, - InvalidHostFee, - IntegerOverflow, - InvalidTipBalance, - InvalidTipTransferAmount, - InvalidHostTipBalance, -] -CUSTOM_ERROR_MAP: dict[int, CustomError] = { - 6000: OrderCanNotBeCanceled(), - 6001: OrderNotActive(), - 6002: InvalidAdminAuthority(), - 6003: InvalidPdaAuthority(), - 6004: InvalidConfigOption(), - 6005: InvalidOrderOwner(), - 6006: OutOfRangeIntegralConversion(), - 6007: InvalidFlag(), - 6008: MathOverflow(), - 6009: OrderInputAmountInvalid(), - 6010: OrderOutputAmountInvalid(), - 6011: InvalidHostFee(), - 6012: IntegerOverflow(), - 6013: InvalidTipBalance(), - 6014: InvalidTipTransferAmount(), - 6015: InvalidHostTipBalance(), -} - - -def from_code(code: int) -> typing.Optional[CustomError]: - maybe_err = CUSTOM_ERROR_MAP.get(code) - if maybe_err is None: - return None - return maybe_err diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/__init__.py deleted file mode 100644 index 112bad917b..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -from .initialize_global_config import ( - initialize_global_config, - InitializeGlobalConfigAccounts, -) -from .initialize_vault import initialize_vault, InitializeVaultAccounts -from .create_order import create_order, CreateOrderArgs, CreateOrderAccounts -from .close_order_and_claim_tip import ( - close_order_and_claim_tip, - CloseOrderAndClaimTipAccounts, -) -from .take_order import take_order, TakeOrderArgs, TakeOrderAccounts -from .update_global_config import ( - update_global_config, - UpdateGlobalConfigArgs, - UpdateGlobalConfigAccounts, -) -from .withdraw_host_tip import withdraw_host_tip, WithdrawHostTipAccounts diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/close_order_and_claim_tip.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/close_order_and_claim_tip.py deleted file mode 100644 index 77fb473314..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/close_order_and_claim_tip.py +++ /dev/null @@ -1,49 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class CloseOrderAndClaimTipAccounts(typing.TypedDict): - maker: Pubkey - order: Pubkey - global_config: Pubkey - pda_authority: Pubkey - input_mint: Pubkey - maker_input_ata: Pubkey - input_vault: Pubkey - input_token_program: Pubkey - - -def close_order_and_claim_tip( - accounts: CloseOrderAndClaimTipAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["maker"], is_signer=True, is_writable=True), - AccountMeta(pubkey=accounts["order"], is_signer=False, is_writable=True), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["pda_authority"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=accounts["input_mint"], is_signer=False, is_writable=False), - AccountMeta( - pubkey=accounts["maker_input_ata"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=accounts["input_vault"], is_signer=False, is_writable=True), - AccountMeta( - pubkey=accounts["input_token_program"], is_signer=False, is_writable=False - ), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xf4\x1b\x0c\xe2-\xf7\xe6+" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/create_order.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/create_order.py deleted file mode 100644 index 194fd4e091..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/create_order.py +++ /dev/null @@ -1,70 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from ..program_id import PROGRAM_ID - - -class CreateOrderArgs(typing.TypedDict): - input_amount: int - output_amount: int - order_type: int - - -layout = borsh.CStruct( - "input_amount" / borsh.U64, "output_amount" / borsh.U64, "order_type" / borsh.U8 -) - - -class CreateOrderAccounts(typing.TypedDict): - maker: Pubkey - global_config: Pubkey - pda_authority: Pubkey - order: Pubkey - input_mint: Pubkey - output_mint: Pubkey - maker_ata: Pubkey - input_vault: Pubkey - input_token_program: Pubkey - output_token_program: Pubkey - - -def create_order( - args: CreateOrderArgs, - accounts: CreateOrderAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["maker"], is_signer=True, is_writable=True), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["pda_authority"], is_signer=False, is_writable=False - ), - AccountMeta(pubkey=accounts["order"], is_signer=False, is_writable=True), - AccountMeta(pubkey=accounts["input_mint"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["output_mint"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["maker_ata"], is_signer=False, is_writable=True), - AccountMeta(pubkey=accounts["input_vault"], is_signer=False, is_writable=True), - AccountMeta( - pubkey=accounts["input_token_program"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["output_token_program"], is_signer=False, is_writable=False - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\x8d6%\xcf\xed\xd2\xfa\xd7" - encoded_args = layout.build( - { - "input_amount": args["input_amount"], - "output_amount": args["output_amount"], - "order_type": args["order_type"], - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/initialize_global_config.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/initialize_global_config.py deleted file mode 100644 index d0a5ede929..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/initialize_global_config.py +++ /dev/null @@ -1,35 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class InitializeGlobalConfigAccounts(typing.TypedDict): - admin_authority: Pubkey - pda_authority: Pubkey - global_config: Pubkey - - -def initialize_global_config( - accounts: InitializeGlobalConfigAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta( - pubkey=accounts["admin_authority"], is_signer=True, is_writable=True - ), - AccountMeta( - pubkey=accounts["pda_authority"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=True - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"q\xd8z\x83\xe1\xd1\x167" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/initialize_vault.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/initialize_vault.py deleted file mode 100644 index 155821ca13..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/initialize_vault.py +++ /dev/null @@ -1,45 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.sysvar import RENT -from spl.token.constants import TOKEN_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class InitializeVaultAccounts(typing.TypedDict): - admin_authority: Pubkey - global_config: Pubkey - pda_authority: Pubkey - mint: Pubkey - vault: Pubkey - - -def initialize_vault( - accounts: InitializeVaultAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta( - pubkey=accounts["admin_authority"], is_signer=True, is_writable=True - ), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["pda_authority"], is_signer=False, is_writable=False - ), - AccountMeta(pubkey=accounts["mint"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["vault"], is_signer=False, is_writable=True), - AccountMeta(pubkey=RENT, is_signer=False, is_writable=False), - AccountMeta(pubkey=TOKEN_PROGRAM_ID, is_signer=False, is_writable=False), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"0\xbf\xa3,G\x81?\xa4" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/take_order.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/take_order.py deleted file mode 100644 index 24646c7466..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/take_order.py +++ /dev/null @@ -1,98 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from ..program_id import PROGRAM_ID - - -class TakeOrderArgs(typing.TypedDict): - input_amount: int - output_amount: int - - -layout = borsh.CStruct("input_amount" / borsh.U64, "output_amount" / borsh.U64) - - -class TakeOrderAccounts(typing.TypedDict): - taker: Pubkey - maker: Pubkey - global_config: Pubkey - pda_authority: Pubkey - order: Pubkey - input_mint: Pubkey - output_mint: Pubkey - input_vault: Pubkey - taker_input_ata: Pubkey - taker_output_ata: Pubkey - maker_output_ata: Pubkey - express_relay: Pubkey - express_relay_metadata: Pubkey - sysvar_instructions: Pubkey - permission: Pubkey - config_router: Pubkey - input_token_program: Pubkey - output_token_program: Pubkey - - -def take_order( - args: TakeOrderArgs, - accounts: TakeOrderAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta(pubkey=accounts["taker"], is_signer=True, is_writable=True), - AccountMeta(pubkey=accounts["maker"], is_signer=False, is_writable=False), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["pda_authority"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=accounts["order"], is_signer=False, is_writable=True), - AccountMeta(pubkey=accounts["input_mint"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["output_mint"], is_signer=False, is_writable=False), - AccountMeta(pubkey=accounts["input_vault"], is_signer=False, is_writable=True), - AccountMeta( - pubkey=accounts["taker_input_ata"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["taker_output_ata"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["maker_output_ata"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["express_relay"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["express_relay_metadata"], - is_signer=False, - is_writable=False, - ), - AccountMeta( - pubkey=accounts["sysvar_instructions"], is_signer=False, is_writable=False - ), - AccountMeta(pubkey=accounts["permission"], is_signer=False, is_writable=False), - AccountMeta( - pubkey=accounts["config_router"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["input_token_program"], is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=accounts["output_token_program"], is_signer=False, is_writable=False - ), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xa3\xd0\x14\xac\xdfA\xff\xe4" - encoded_args = layout.build( - { - "input_amount": args["input_amount"], - "output_amount": args["output_amount"], - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/update_global_config.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/update_global_config.py deleted file mode 100644 index a67e8e6394..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/update_global_config.py +++ /dev/null @@ -1,48 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -import borsh_construct as borsh -from ..program_id import PROGRAM_ID - - -class UpdateGlobalConfigArgs(typing.TypedDict): - mode: int - value: list[int] - - -layout = borsh.CStruct("mode" / borsh.U16, "value" / borsh.U8[128]) - - -class UpdateGlobalConfigAccounts(typing.TypedDict): - admin_authority: Pubkey - global_config: Pubkey - - -def update_global_config( - args: UpdateGlobalConfigArgs, - accounts: UpdateGlobalConfigAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta( - pubkey=accounts["admin_authority"], is_signer=True, is_writable=True - ), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\xa4T\x82\xbdo:\xfa\xc8" - encoded_args = layout.build( - { - "mode": args["mode"], - "value": args["value"], - } - ) - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/withdraw_host_tip.py b/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/withdraw_host_tip.py deleted file mode 100644 index f04829bf6e..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/instructions/withdraw_host_tip.py +++ /dev/null @@ -1,37 +0,0 @@ -from __future__ import annotations -import typing -from solders.pubkey import Pubkey -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.instruction import Instruction, AccountMeta -from ..program_id import PROGRAM_ID - - -class WithdrawHostTipAccounts(typing.TypedDict): - admin_authority: Pubkey - global_config: Pubkey - pda_authority: Pubkey - - -def withdraw_host_tip( - accounts: WithdrawHostTipAccounts, - program_id: Pubkey = PROGRAM_ID, - remaining_accounts: typing.Optional[typing.List[AccountMeta]] = None, -) -> Instruction: - keys: list[AccountMeta] = [ - AccountMeta( - pubkey=accounts["admin_authority"], is_signer=True, is_writable=True - ), - AccountMeta( - pubkey=accounts["global_config"], is_signer=False, is_writable=True - ), - AccountMeta( - pubkey=accounts["pda_authority"], is_signer=False, is_writable=True - ), - AccountMeta(pubkey=SYS_PROGRAM_ID, is_signer=False, is_writable=False), - ] - if remaining_accounts is not None: - keys += remaining_accounts - identifier = b"\x8c\xf6i\xa5PU\x8f\x12" - encoded_args = b"" - data = identifier + encoded_args - return Instruction(program_id, data, keys) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/program_id.py b/express_relay/sdk/python/express_relay/svm/generated/limo/program_id.py deleted file mode 100644 index 2024925b63..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/program_id.py +++ /dev/null @@ -1,3 +0,0 @@ -from solders.pubkey import Pubkey - -PROGRAM_ID = Pubkey.from_string("LiMoM9rMhrdYrfzUCxQppvxCSG1FcrUK9G8uLq4A1GF") diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/types/__init__.py b/express_relay/sdk/python/express_relay/svm/generated/limo/types/__init__.py deleted file mode 100644 index f87e65e67a..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/types/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -import typing -from . import order_status -from .order_status import OrderStatusKind, OrderStatusJSON -from . import order_type -from .order_type import OrderTypeKind, OrderTypeJSON -from . import update_global_config_mode -from .update_global_config_mode import ( - UpdateGlobalConfigModeKind, - UpdateGlobalConfigModeJSON, -) -from . import update_global_config_value -from .update_global_config_value import ( - UpdateGlobalConfigValueKind, - UpdateGlobalConfigValueJSON, -) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/types/order_status.py b/express_relay/sdk/python/express_relay/svm/generated/limo/types/order_status.py deleted file mode 100644 index 79a65f23b6..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/types/order_status.py +++ /dev/null @@ -1,105 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from anchorpy.borsh_extension import EnumForCodegen -import borsh_construct as borsh - - -class ActiveJSON(typing.TypedDict): - kind: typing.Literal["Active"] - - -class FilledJSON(typing.TypedDict): - kind: typing.Literal["Filled"] - - -class CancelledJSON(typing.TypedDict): - kind: typing.Literal["Cancelled"] - - -@dataclass -class Active: - discriminator: typing.ClassVar = 0 - kind: typing.ClassVar = "Active" - - @classmethod - def to_json(cls) -> ActiveJSON: - return ActiveJSON( - kind="Active", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "Active": {}, - } - - -@dataclass -class Filled: - discriminator: typing.ClassVar = 1 - kind: typing.ClassVar = "Filled" - - @classmethod - def to_json(cls) -> FilledJSON: - return FilledJSON( - kind="Filled", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "Filled": {}, - } - - -@dataclass -class Cancelled: - discriminator: typing.ClassVar = 2 - kind: typing.ClassVar = "Cancelled" - - @classmethod - def to_json(cls) -> CancelledJSON: - return CancelledJSON( - kind="Cancelled", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "Cancelled": {}, - } - - -OrderStatusKind = typing.Union[Active, Filled, Cancelled] -OrderStatusJSON = typing.Union[ActiveJSON, FilledJSON, CancelledJSON] - - -def from_decoded(obj: dict) -> OrderStatusKind: - if not isinstance(obj, dict): - raise ValueError("Invalid enum object") - if "Active" in obj: - return Active() - if "Filled" in obj: - return Filled() - if "Cancelled" in obj: - return Cancelled() - raise ValueError("Invalid enum object") - - -def from_json(obj: OrderStatusJSON) -> OrderStatusKind: - if obj["kind"] == "Active": - return Active() - if obj["kind"] == "Filled": - return Filled() - if obj["kind"] == "Cancelled": - return Cancelled() - kind = obj["kind"] - raise ValueError(f"Unrecognized enum kind: {kind}") - - -layout = EnumForCodegen( - "Active" / borsh.CStruct(), - "Filled" / borsh.CStruct(), - "Cancelled" / borsh.CStruct(), -) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/types/order_type.py b/express_relay/sdk/python/express_relay/svm/generated/limo/types/order_type.py deleted file mode 100644 index 2a9e012632..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/types/order_type.py +++ /dev/null @@ -1,75 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from anchorpy.borsh_extension import EnumForCodegen -import borsh_construct as borsh - - -class ExactInJSON(typing.TypedDict): - kind: typing.Literal["ExactIn"] - - -class ExactOutJSON(typing.TypedDict): - kind: typing.Literal["ExactOut"] - - -@dataclass -class ExactIn: - discriminator: typing.ClassVar = 0 - kind: typing.ClassVar = "ExactIn" - - @classmethod - def to_json(cls) -> ExactInJSON: - return ExactInJSON( - kind="ExactIn", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "ExactIn": {}, - } - - -@dataclass -class ExactOut: - discriminator: typing.ClassVar = 1 - kind: typing.ClassVar = "ExactOut" - - @classmethod - def to_json(cls) -> ExactOutJSON: - return ExactOutJSON( - kind="ExactOut", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "ExactOut": {}, - } - - -OrderTypeKind = typing.Union[ExactIn, ExactOut] -OrderTypeJSON = typing.Union[ExactInJSON, ExactOutJSON] - - -def from_decoded(obj: dict) -> OrderTypeKind: - if not isinstance(obj, dict): - raise ValueError("Invalid enum object") - if "ExactIn" in obj: - return ExactIn() - if "ExactOut" in obj: - return ExactOut() - raise ValueError("Invalid enum object") - - -def from_json(obj: OrderTypeJSON) -> OrderTypeKind: - if obj["kind"] == "ExactIn": - return ExactIn() - if obj["kind"] == "ExactOut": - return ExactOut() - kind = obj["kind"] - raise ValueError(f"Unrecognized enum kind: {kind}") - - -layout = EnumForCodegen("ExactIn" / borsh.CStruct(), "ExactOut" / borsh.CStruct()) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/types/update_global_config_mode.py b/express_relay/sdk/python/express_relay/svm/generated/limo/types/update_global_config_mode.py deleted file mode 100644 index 0375268040..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/types/update_global_config_mode.py +++ /dev/null @@ -1,200 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from anchorpy.borsh_extension import EnumForCodegen -import borsh_construct as borsh - - -class UpdateEmergencyModeJSON(typing.TypedDict): - kind: typing.Literal["UpdateEmergencyMode"] - - -class UpdateBlockLocalAdminsJSON(typing.TypedDict): - kind: typing.Literal["UpdateBlockLocalAdmins"] - - -class UpdateBlockNewOrdersJSON(typing.TypedDict): - kind: typing.Literal["UpdateBlockNewOrders"] - - -class UpdateBlockOrdersTakingJSON(typing.TypedDict): - kind: typing.Literal["UpdateBlockOrdersTaking"] - - -class UpdateHostFeeBpsJSON(typing.TypedDict): - kind: typing.Literal["UpdateHostFeeBps"] - - -class UpdateAdminAuthorityJSON(typing.TypedDict): - kind: typing.Literal["UpdateAdminAuthority"] - - -@dataclass -class UpdateEmergencyMode: - discriminator: typing.ClassVar = 0 - kind: typing.ClassVar = "UpdateEmergencyMode" - - @classmethod - def to_json(cls) -> UpdateEmergencyModeJSON: - return UpdateEmergencyModeJSON( - kind="UpdateEmergencyMode", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "UpdateEmergencyMode": {}, - } - - -@dataclass -class UpdateBlockLocalAdmins: - discriminator: typing.ClassVar = 1 - kind: typing.ClassVar = "UpdateBlockLocalAdmins" - - @classmethod - def to_json(cls) -> UpdateBlockLocalAdminsJSON: - return UpdateBlockLocalAdminsJSON( - kind="UpdateBlockLocalAdmins", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "UpdateBlockLocalAdmins": {}, - } - - -@dataclass -class UpdateBlockNewOrders: - discriminator: typing.ClassVar = 2 - kind: typing.ClassVar = "UpdateBlockNewOrders" - - @classmethod - def to_json(cls) -> UpdateBlockNewOrdersJSON: - return UpdateBlockNewOrdersJSON( - kind="UpdateBlockNewOrders", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "UpdateBlockNewOrders": {}, - } - - -@dataclass -class UpdateBlockOrdersTaking: - discriminator: typing.ClassVar = 3 - kind: typing.ClassVar = "UpdateBlockOrdersTaking" - - @classmethod - def to_json(cls) -> UpdateBlockOrdersTakingJSON: - return UpdateBlockOrdersTakingJSON( - kind="UpdateBlockOrdersTaking", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "UpdateBlockOrdersTaking": {}, - } - - -@dataclass -class UpdateHostFeeBps: - discriminator: typing.ClassVar = 4 - kind: typing.ClassVar = "UpdateHostFeeBps" - - @classmethod - def to_json(cls) -> UpdateHostFeeBpsJSON: - return UpdateHostFeeBpsJSON( - kind="UpdateHostFeeBps", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "UpdateHostFeeBps": {}, - } - - -@dataclass -class UpdateAdminAuthority: - discriminator: typing.ClassVar = 5 - kind: typing.ClassVar = "UpdateAdminAuthority" - - @classmethod - def to_json(cls) -> UpdateAdminAuthorityJSON: - return UpdateAdminAuthorityJSON( - kind="UpdateAdminAuthority", - ) - - @classmethod - def to_encodable(cls) -> dict: - return { - "UpdateAdminAuthority": {}, - } - - -UpdateGlobalConfigModeKind = typing.Union[ - UpdateEmergencyMode, - UpdateBlockLocalAdmins, - UpdateBlockNewOrders, - UpdateBlockOrdersTaking, - UpdateHostFeeBps, - UpdateAdminAuthority, -] -UpdateGlobalConfigModeJSON = typing.Union[ - UpdateEmergencyModeJSON, - UpdateBlockLocalAdminsJSON, - UpdateBlockNewOrdersJSON, - UpdateBlockOrdersTakingJSON, - UpdateHostFeeBpsJSON, - UpdateAdminAuthorityJSON, -] - - -def from_decoded(obj: dict) -> UpdateGlobalConfigModeKind: - if not isinstance(obj, dict): - raise ValueError("Invalid enum object") - if "UpdateEmergencyMode" in obj: - return UpdateEmergencyMode() - if "UpdateBlockLocalAdmins" in obj: - return UpdateBlockLocalAdmins() - if "UpdateBlockNewOrders" in obj: - return UpdateBlockNewOrders() - if "UpdateBlockOrdersTaking" in obj: - return UpdateBlockOrdersTaking() - if "UpdateHostFeeBps" in obj: - return UpdateHostFeeBps() - if "UpdateAdminAuthority" in obj: - return UpdateAdminAuthority() - raise ValueError("Invalid enum object") - - -def from_json(obj: UpdateGlobalConfigModeJSON) -> UpdateGlobalConfigModeKind: - if obj["kind"] == "UpdateEmergencyMode": - return UpdateEmergencyMode() - if obj["kind"] == "UpdateBlockLocalAdmins": - return UpdateBlockLocalAdmins() - if obj["kind"] == "UpdateBlockNewOrders": - return UpdateBlockNewOrders() - if obj["kind"] == "UpdateBlockOrdersTaking": - return UpdateBlockOrdersTaking() - if obj["kind"] == "UpdateHostFeeBps": - return UpdateHostFeeBps() - if obj["kind"] == "UpdateAdminAuthority": - return UpdateAdminAuthority() - kind = obj["kind"] - raise ValueError(f"Unrecognized enum kind: {kind}") - - -layout = EnumForCodegen( - "UpdateEmergencyMode" / borsh.CStruct(), - "UpdateBlockLocalAdmins" / borsh.CStruct(), - "UpdateBlockNewOrders" / borsh.CStruct(), - "UpdateBlockOrdersTaking" / borsh.CStruct(), - "UpdateHostFeeBps" / borsh.CStruct(), - "UpdateAdminAuthority" / borsh.CStruct(), -) diff --git a/express_relay/sdk/python/express_relay/svm/generated/limo/types/update_global_config_value.py b/express_relay/sdk/python/express_relay/svm/generated/limo/types/update_global_config_value.py deleted file mode 100644 index 6f4fddec9f..0000000000 --- a/express_relay/sdk/python/express_relay/svm/generated/limo/types/update_global_config_value.py +++ /dev/null @@ -1,128 +0,0 @@ -from __future__ import annotations -import typing -from dataclasses import dataclass -from solders.pubkey import Pubkey -from anchorpy.borsh_extension import EnumForCodegen, BorshPubkey -import borsh_construct as borsh - -BoolJSONValue = tuple[bool] -U16JSONValue = tuple[int] -PubkeyJSONValue = tuple[str] -BoolValue = tuple[bool] -U16Value = tuple[int] -PubkeyValue = tuple[Pubkey] - - -class BoolJSON(typing.TypedDict): - value: BoolJSONValue - kind: typing.Literal["Bool"] - - -class U16JSON(typing.TypedDict): - value: U16JSONValue - kind: typing.Literal["U16"] - - -class PubkeyJSON(typing.TypedDict): - value: PubkeyJSONValue - kind: typing.Literal["Pubkey"] - - -@dataclass -class Bool: - discriminator: typing.ClassVar = 0 - kind: typing.ClassVar = "Bool" - value: BoolValue - - def to_json(self) -> BoolJSON: - return BoolJSON( - kind="Bool", - value=(self.value[0],), - ) - - def to_encodable(self) -> dict: - return { - "Bool": { - "item_0": self.value[0], - }, - } - - -@dataclass -class U16: - discriminator: typing.ClassVar = 1 - kind: typing.ClassVar = "U16" - value: U16Value - - def to_json(self) -> U16JSON: - return U16JSON( - kind="U16", - value=(self.value[0],), - ) - - def to_encodable(self) -> dict: - return { - "U16": { - "item_0": self.value[0], - }, - } - - -@dataclass -class Pubkey: - discriminator: typing.ClassVar = 2 - kind: typing.ClassVar = "Pubkey" - value: PubkeyValue - - def to_json(self) -> PubkeyJSON: - return PubkeyJSON( - kind="Pubkey", - value=(str(self.value[0]),), - ) - - def to_encodable(self) -> dict: - return { - "Pubkey": { - "item_0": self.value[0], - }, - } - - -UpdateGlobalConfigValueKind = typing.Union[Bool, U16, Pubkey] -UpdateGlobalConfigValueJSON = typing.Union[BoolJSON, U16JSON, PubkeyJSON] - - -def from_decoded(obj: dict) -> UpdateGlobalConfigValueKind: - if not isinstance(obj, dict): - raise ValueError("Invalid enum object") - if "Bool" in obj: - val = obj["Bool"] - return Bool((val["item_0"],)) - if "U16" in obj: - val = obj["U16"] - return U16((val["item_0"],)) - if "Pubkey" in obj: - val = obj["Pubkey"] - return Pubkey((val["item_0"],)) - raise ValueError("Invalid enum object") - - -def from_json(obj: UpdateGlobalConfigValueJSON) -> UpdateGlobalConfigValueKind: - if obj["kind"] == "Bool": - bool_json_value = typing.cast(BoolJSONValue, obj["value"]) - return Bool((bool_json_value[0],)) - if obj["kind"] == "U16": - u16json_value = typing.cast(U16JSONValue, obj["value"]) - return U16((u16json_value[0],)) - if obj["kind"] == "Pubkey": - pubkey_json_value = typing.cast(PubkeyJSONValue, obj["value"]) - return Pubkey((Pubkey.from_string(pubkey_json_value[0]),)) - kind = obj["kind"] - raise ValueError(f"Unrecognized enum kind: {kind}") - - -layout = EnumForCodegen( - "Bool" / borsh.CStruct("item_0" / borsh.Bool), - "U16" / borsh.CStruct("item_0" / borsh.U16), - "Pubkey" / borsh.CStruct("item_0" / BorshPubkey), -) diff --git a/express_relay/sdk/python/express_relay/svm/limo_client.py b/express_relay/sdk/python/express_relay/svm/limo_client.py deleted file mode 100644 index fca7c6699c..0000000000 --- a/express_relay/sdk/python/express_relay/svm/limo_client.py +++ /dev/null @@ -1,348 +0,0 @@ -from decimal import Decimal -from typing import Sequence, List, TypedDict, Tuple - -from solana.constants import SYSTEM_PROGRAM_ID -from solana.rpc.async_api import AsyncClient -from solana.rpc.types import MemcmpOpts -from solders import system_program -from solders.instruction import Instruction, AccountMeta -from solders.pubkey import Pubkey -from solders.system_program import TransferParams -from solders.sysvar import RENT, INSTRUCTIONS -from spl.token._layouts import MINT_LAYOUT, ACCOUNT_LAYOUT as TOKEN_ACCOUNT_LAYOUT -from spl.token.constants import ( - WRAPPED_SOL_MINT, - ASSOCIATED_TOKEN_PROGRAM_ID, - TOKEN_PROGRAM_ID, -) - -from express_relay.svm.generated.limo.accounts import Order -from express_relay.svm.generated.limo.instructions import ( - take_order, - TakeOrderArgs, -) -from express_relay.svm.generated.limo.program_id import PROGRAM_ID - -import spl.token.instructions as spl_token - -ESCROW_VAULT_SEED = b"escrow_vault" -GLOBAL_AUTH_SEED = b"authority" -EXPRESS_RELAY_MEATADATA_SEED = b"metadata" -EXPRESS_RELAY_CONFIG_ROUTER_SEED = b"config_router" - - -class OrderStateAndAddress(TypedDict): - state: Order - address: Pubkey - - -class WSOLInstructions(TypedDict): - create_ixs: List[Instruction] - fill_ixs: List[Instruction] - close_ixs: List[Instruction] - ata: Pubkey - - -class LimoClient: - def __init__(self, connection: AsyncClient): - self._connection = connection - - async def get_all_orders_state_and_address_with_filters( - self, filters: List[MemcmpOpts], global_config: Pubkey - ) -> List[OrderStateAndAddress]: - filters.append(MemcmpOpts(offset=8, bytes=str(global_config))) - programs = await self._connection.get_program_accounts( - PROGRAM_ID, - commitment=None, - encoding="base64", - data_slice=None, - filters=filters, - ) - - return [ - {"state": Order.decode(value.account.data), "address": value.pubkey} - for value in programs.value - ] - - async def get_mint_decimals(self, mint: Pubkey) -> int: - mint_account = await self._connection.get_account_info(mint) - if mint_account.value is None: - raise ValueError("Mint account not found") - bytes_data = mint_account.value.data - if len(bytes_data) != MINT_LAYOUT.sizeof(): - raise ValueError("Invalid mint size") - - decoded_data = MINT_LAYOUT.parse(bytes_data) - decimals = decoded_data.decimals - return decimals - - async def account_exists(self, address: Pubkey) -> bool: - account_info = await self._connection.get_account_info(address) - return account_info.value is not None - - def create_associated_token_account_idempotent( - self, payer: Pubkey, owner: Pubkey, mint: Pubkey, token_program_id: Pubkey - ) -> Instruction: - """Creates a transaction instruction to create an associated token account. - - Returns: - The instruction to create the associated token account. - """ - associated_token_address = self.get_ata(owner, mint, token_program_id) - return Instruction( - accounts=[ - AccountMeta(pubkey=payer, is_signer=True, is_writable=True), - AccountMeta( - pubkey=associated_token_address, is_signer=False, is_writable=True - ), - AccountMeta(pubkey=owner, is_signer=False, is_writable=False), - AccountMeta(pubkey=mint, is_signer=False, is_writable=False), - AccountMeta( - pubkey=SYSTEM_PROGRAM_ID, is_signer=False, is_writable=False - ), - AccountMeta( - pubkey=token_program_id, is_signer=False, is_writable=False - ), - AccountMeta(pubkey=RENT, is_signer=False, is_writable=False), - ], - program_id=ASSOCIATED_TOKEN_PROGRAM_ID, - data=bytes(1), # idempotent version of the instruction - ) - - async def get_ata_and_create_ixn_if_required( - self, - owner: Pubkey, - token_mint_address: Pubkey, - token_program_id: Pubkey, - payer: Pubkey, - ) -> Tuple[Pubkey, Sequence[Instruction]]: - ata = self.get_ata(owner, token_mint_address, token_program_id) - if not await self.account_exists(ata): - ix = self.create_associated_token_account_idempotent( - payer, owner, token_mint_address, token_program_id - ) - return ata, [ix] - return ata, [] - - async def get_init_if_needed_wsol_create_and_close_ixs( - self, owner: Pubkey, payer: Pubkey, amount_to_deposit_lamports: int - ) -> WSOLInstructions: - """ - Returns necessary instructions to create, fill and close a wrapped SOL account. - If the account already exists: - it makes sure the balance is at least `amount_to_deposit_lamports` with no create or close instructions. - If the account does not exist: - it creates the account, fills it with `amount_to_deposit_lamports` lamports and close it in the end. - Args: - owner: Who owns the WSOL token account - payer: Who pays for the instructions - amount_to_deposit_lamports: Minimum amount of lamports required in the account - """ - ata = self.get_ata(owner, WRAPPED_SOL_MINT, TOKEN_PROGRAM_ID) - ata_info = await self._connection.get_account_info(ata) - - create_ixs = [] - close_ixs = [] - if ata_info.value is None: - create_ixs = [ - self.create_associated_token_account_idempotent( - payer, owner, WRAPPED_SOL_MINT, TOKEN_PROGRAM_ID - ) - ] - close_ixs = [ - spl_token.close_account( - spl_token.CloseAccountParams( - program_id=TOKEN_PROGRAM_ID, - account=ata, - dest=owner, - owner=owner, - ) - ) - ] - - fill_ixs = [] - current_balance = ( - TOKEN_ACCOUNT_LAYOUT.parse(ata_info.value.data).amount - if ata_info.value - else 0 - ) - if current_balance < amount_to_deposit_lamports: - fill_ixs = [ - system_program.transfer( - TransferParams( - from_pubkey=owner, - to_pubkey=ata, - lamports=amount_to_deposit_lamports - current_balance, - ) - ), - spl_token.sync_native( - spl_token.SyncNativeParams(TOKEN_PROGRAM_ID, ata) - ), - ] - - return WSOLInstructions( - create_ixs=create_ixs, fill_ixs=fill_ixs, close_ixs=close_ixs, ata=ata - ) - - async def take_order_ix( - self, - taker: Pubkey, - order: OrderStateAndAddress, - input_amount_decimals: Decimal, - output_amount_decimals: Decimal, - input_mint_decimals: int, - output_mint_decimals: int, - express_relay_program_id: Pubkey, - ) -> List[Instruction]: - """ - Returns the instructions to fulfill an order as a taker. - Args: - taker: The taker's public key - order: The order to fulfill - input_amount_decimals: The amount of input tokens to take. Will be multiplied by 10 ** input_mint_decimals in this method. - output_amount_decimals: The amount of output tokens to provide. Will be multiplied by 10 ** output_mint_decimals in this method. - input_mint_decimals: input mint decimals (can be fetched via get_mint_decimals) - output_mint_decimals: output mint decimals (can be fetched via get_mint_decimals) - express_relay_program_id: Express relay program id - - Returns: - A list of instructions to include in the transaction to fulfill the order. The submit_bid instruction for - express relay program is not included and should be added separately. - - """ - ixs: List[Instruction] = [] - close_wsol_ixns: List[Instruction] = [] - taker_input_ata: Pubkey - if order["state"].input_mint == WRAPPED_SOL_MINT: - instructions = await self.get_init_if_needed_wsol_create_and_close_ixs( - owner=taker, payer=taker, amount_to_deposit_lamports=0 - ) - ixs.extend(instructions["create_ixs"]) - close_wsol_ixns.extend(instructions["close_ixs"]) - taker_input_ata = instructions["ata"] - else: - ( - taker_input_ata, - create_taker_input_ata_ixs, - ) = await self.get_ata_and_create_ixn_if_required( - owner=taker, - token_mint_address=order["state"].input_mint, - token_program_id=order["state"].input_mint_program_id, - payer=taker, - ) - ixs.extend(create_taker_input_ata_ixs) - - taker_output_ata: Pubkey - if order["state"].output_mint == WRAPPED_SOL_MINT: - raise NotImplementedError("Output mint is WSOL") - else: - ( - taker_output_ata, - create_taker_output_ata_ixs, - ) = await self.get_ata_and_create_ixn_if_required( - owner=taker, - token_mint_address=order["state"].output_mint, - token_program_id=order["state"].output_mint_program_id, - payer=taker, - ) - ixs.extend(create_taker_output_ata_ixs) - - ( - maker_output_ata, - create_maker_output_ata_ixs, - ) = await self.get_ata_and_create_ixn_if_required( - owner=order["state"].maker, - token_mint_address=order["state"].output_mint, - token_program_id=order["state"].output_mint_program_id, - payer=taker, - ) - ixs.extend(create_maker_output_ata_ixs) - - pda_authority = self.get_pda_authority(PROGRAM_ID, order["state"].global_config) - ixs.append( - take_order( - TakeOrderArgs( - input_amount=int( - input_amount_decimals * (10**input_mint_decimals) - ), - output_amount=int( - output_amount_decimals * (10**output_mint_decimals) - ), - ), - { - "taker": taker, - "maker": order["state"].maker, - "global_config": order["state"].global_config, - "pda_authority": pda_authority, - "order": order["address"], - "input_mint": order["state"].input_mint, - "output_mint": order["state"].output_mint, - "input_vault": self.get_token_vault_pda( - PROGRAM_ID, - order["state"].global_config, - order["state"].input_mint, - ), - "taker_input_ata": taker_input_ata, - "taker_output_ata": taker_output_ata, - "maker_output_ata": maker_output_ata, - "express_relay": express_relay_program_id, - "express_relay_metadata": self.get_express_relay_metadata_pda( - express_relay_program_id - ), - "sysvar_instructions": INSTRUCTIONS, - "permission": order["address"], - "config_router": self.get_express_relay_config_router_pda( - express_relay_program_id, pda_authority - ), - "input_token_program": order["state"].input_mint_program_id, - "output_token_program": order["state"].output_mint_program_id, - }, - ) - ) - - ixs.extend(close_wsol_ixns) - return ixs - - @staticmethod - def get_program_id() -> Pubkey: - return PROGRAM_ID - - @staticmethod - def get_token_vault_pda( - program_id: Pubkey, global_config: Pubkey, input_mint: Pubkey - ) -> Pubkey: - return Pubkey.find_program_address( - seeds=[ESCROW_VAULT_SEED, bytes(global_config), bytes(input_mint)], - program_id=program_id, - )[0] - - @staticmethod - def get_express_relay_metadata_pda(program_id: Pubkey) -> Pubkey: - return Pubkey.find_program_address( - seeds=[EXPRESS_RELAY_MEATADATA_SEED], program_id=program_id - )[0] - - @staticmethod - def get_express_relay_config_router_pda( - program_id: Pubkey, router: Pubkey - ) -> Pubkey: - return Pubkey.find_program_address( - seeds=[EXPRESS_RELAY_CONFIG_ROUTER_SEED, bytes(router)], - program_id=program_id, - )[0] - - @staticmethod - def get_pda_authority(program_id: Pubkey, global_config: Pubkey) -> Pubkey: - return Pubkey.find_program_address( - seeds=[GLOBAL_AUTH_SEED, bytes(global_config)], program_id=program_id - )[0] - - @staticmethod - def get_ata( - owner: Pubkey, token_mint_address: Pubkey, token_program_id: Pubkey - ) -> Pubkey: - ata, _ = Pubkey.find_program_address( - seeds=[bytes(owner), bytes(token_program_id), bytes(token_mint_address)], - program_id=ASSOCIATED_TOKEN_PROGRAM_ID, - ) - return ata diff --git a/express_relay/sdk/python/mypy.ini b/express_relay/sdk/python/mypy.ini deleted file mode 100644 index 8f071f54a2..0000000000 --- a/express_relay/sdk/python/mypy.ini +++ /dev/null @@ -1,15 +0,0 @@ -[mypy] -plugins = pydantic.mypy -exclude = express_relay/limo_generated_client - -follow_imports = silent -warn_redundant_casts = True -warn_unused_ignores = True -disallow_any_generics = True -check_untyped_defs = True -no_implicit_reexport = True - -[pydantic-mypy] -init_forbid_extra = True -init_typed = True -warn_required_dynamic_aliases = True diff --git a/express_relay/sdk/python/poetry.lock b/express_relay/sdk/python/poetry.lock deleted file mode 100644 index 800bb9f983..0000000000 --- a/express_relay/sdk/python/poetry.lock +++ /dev/null @@ -1,2710 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "aiohappyeyeballs" -version = "2.4.0" -description = "Happy Eyeballs for asyncio" -optional = false -python-versions = ">=3.8" -files = [ - {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"}, - {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"}, -] - -[[package]] -name = "aiohttp" -version = "3.10.6" -description = "Async http client/server framework (asyncio)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "aiohttp-3.10.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:682836fc672972cc3101cc9e30d49c5f7e8f1d010478d46119fe725a4545acfd"}, - {file = "aiohttp-3.10.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:289fa8a20018d0d5aa9e4b35d899bd51bcb80f0d5f365d9a23e30dac3b79159b"}, - {file = "aiohttp-3.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8617c96a20dd57e7e9d398ff9d04f3d11c4d28b1767273a5b1a018ada5a654d3"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdbeff1b062751c2a2a55b171f7050fb7073633c699299d042e962aacdbe1a07"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ea35d849cdd4a9268f910bff4497baebbc1aa3f2f625fd8ccd9ac99c860c621"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473961b3252f3b949bb84873d6e268fb6d8aa0ccc6eb7404fa58c76a326bb8e1"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d2665c5df629eb2f981dab244c01bfa6cdc185f4ffa026639286c4d56fafb54"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25d92f794f1332f656e3765841fc2b7ad5c26c3f3d01e8949eeb3495691cf9f4"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9bd6b2033993d5ae80883bb29b83fb2b432270bbe067c2f53cc73bb57c46065f"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d7f408c43f5e75ea1edc152fb375e8f46ef916f545fb66d4aebcbcfad05e2796"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:cf8b8560aa965f87bf9c13bf9fed7025993a155ca0ce8422da74bf46d18c2f5f"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14477c4e52e2f17437b99893fd220ffe7d7ee41df5ebf931a92b8ca82e6fd094"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb138fbf9f53928e779650f5ed26d0ea1ed8b2cab67f0ea5d63afa09fdc07593"}, - {file = "aiohttp-3.10.6-cp310-cp310-win32.whl", hash = "sha256:9843d683b8756971797be171ead21511d2215a2d6e3c899c6e3107fbbe826791"}, - {file = "aiohttp-3.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:f8b8e49fe02f744d38352daca1dbef462c3874900bd8166516f6ea8e82b5aacf"}, - {file = "aiohttp-3.10.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f52e54fd776ad0da1006708762213b079b154644db54bcfc62f06eaa5b896402"}, - {file = "aiohttp-3.10.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:995ab1a238fd0d19dc65f2d222e5eb064e409665c6426a3e51d5101c1979ee84"}, - {file = "aiohttp-3.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0749c4d5a08a802dd66ecdf59b2df4d76b900004017468a7bb736c3b5a3dd902"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05b39158f2af0e2438cc2075cfc271f4ace0c3cc4a81ec95b27a0432e161951"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a9f196c970db2dcde4f24317e06615363349dc357cf4d7a3b0716c20ac6d7bcd"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:47647c8af04a70e07a2462931b0eba63146a13affa697afb4ecbab9d03a480ce"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669c0efe7e99f6d94d63274c06344bd0e9c8daf184ce5602a29bc39e00a18720"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9721cdd83a994225352ca84cd537760d41a9da3c0eacb3ff534747ab8fba6d0"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b82c8ebed66ce182893e7c0b6b60ba2ace45b1df104feb52380edae266a4850"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b169f8e755e541b72e714b89a831b315bbe70db44e33fead28516c9e13d5f931"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0be3115753baf8b4153e64f9aa7bf6c0c64af57979aa900c31f496301b374570"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e1f80cd17d81a404b6e70ef22bfe1870bafc511728397634ad5f5efc8698df56"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6419728b08fb6380c66a470d2319cafcec554c81780e2114b7e150329b9a9a7f"}, - {file = "aiohttp-3.10.6-cp311-cp311-win32.whl", hash = "sha256:bd294dcdc1afdc510bb51d35444003f14e327572877d016d576ac3b9a5888a27"}, - {file = "aiohttp-3.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:bf861da9a43d282d6dd9dcd64c23a0fccf2c5aa5cd7c32024513c8c79fb69de3"}, - {file = "aiohttp-3.10.6-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2708baccdc62f4b1251e59c2aac725936a900081f079b88843dabcab0feeeb27"}, - {file = "aiohttp-3.10.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7475da7a5e2ccf1a1c86c8fee241e277f4874c96564d06f726d8df8e77683ef7"}, - {file = "aiohttp-3.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02108326574ff60267b7b35b17ac5c0bbd0008ccb942ce4c48b657bb90f0b8aa"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:029a019627b37fa9eac5c75cc54a6bb722c4ebbf5a54d8c8c0fb4dd8facf2702"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a637d387db6fdad95e293fab5433b775fd104ae6348d2388beaaa60d08b38c4"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1a16f3fc1944c61290d33c88dc3f09ba62d159b284c38c5331868425aca426"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b292f37969f9cc54f4643f0be7dacabf3612b3b4a65413661cf6c350226787"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0754690a3a26e819173a34093798c155bafb21c3c640bff13be1afa1e9d421f9"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:164ecd32e65467d86843dbb121a6666c3deb23b460e3f8aefdcaacae79eb718a"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438c5863feb761f7ca3270d48c292c334814459f61cc12bab5ba5b702d7c9e56"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ba18573bb1de1063d222f41de64a0d3741223982dcea863b3f74646faf618ec7"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c82a94ddec996413a905f622f3da02c4359952aab8d817c01cf9915419525e95"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92351aa5363fc3c1f872ca763f86730ced32b01607f0c9662b1fa711087968d0"}, - {file = "aiohttp-3.10.6-cp312-cp312-win32.whl", hash = "sha256:3e15e33bfc73fa97c228f72e05e8795e163a693fd5323549f49367c76a6e5883"}, - {file = "aiohttp-3.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:fe517113fe4d35d9072b826c3e147d63c5f808ca8167d450b4f96c520c8a1d8d"}, - {file = "aiohttp-3.10.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:482f74057ea13d387a7549d7a7ecb60e45146d15f3e58a2d93a0ad2d5a8457cd"}, - {file = "aiohttp-3.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:03fa40d1450ee5196e843315ddf74a51afc7e83d489dbfc380eecefea74158b1"}, - {file = "aiohttp-3.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e52e59ed5f4cc3a3acfe2a610f8891f216f486de54d95d6600a2c9ba1581f4d"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b3935a22c9e41a8000d90588bed96cf395ef572dbb409be44c6219c61d900d"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bef1480ee50f75abcfcb4b11c12de1005968ca9d0172aec4a5057ba9f2b644f"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:671745ea7db19693ce867359d503772177f0b20fa8f6ee1e74e00449f4c4151d"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b50b367308ca8c12e0b50cba5773bc9abe64c428d3fd2bbf5cd25aab37c77bf"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a504d7cdb431a777d05a124fd0b21efb94498efa743103ea01b1e3136d2e4fb"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:66bc81361131763660b969132a22edce2c4d184978ba39614e8f8f95db5c95f8"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:27cf19a38506e2e9f12fc17e55f118f04897b0a78537055d93a9de4bf3022e3d"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3468b39f977a11271517c6925b226720e148311039a380cc9117b1e2258a721f"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:9d26da22a793dfd424be1050712a70c0afd96345245c29aced1e35dbace03413"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:844d48ff9173d0b941abed8b2ea6a412f82b56d9ab1edb918c74000c15839362"}, - {file = "aiohttp-3.10.6-cp313-cp313-win32.whl", hash = "sha256:2dd56e3c43660ed3bea67fd4c5025f1ac1f9ecf6f0b991a6e5efe2e678c490c5"}, - {file = "aiohttp-3.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:c91781d969fbced1993537f45efe1213bd6fccb4b37bfae2a026e20d6fbed206"}, - {file = "aiohttp-3.10.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4407a80bca3e694f2d2a523058e20e1f9f98a416619e04f6dc09dc910352ac8b"}, - {file = "aiohttp-3.10.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1cb045ec5961f51af3e2c08cd6fe523f07cc6e345033adee711c49b7b91bb954"}, - {file = "aiohttp-3.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4fabdcdc781a36b8fd7b2ca9dea8172f29a99e11d00ca0f83ffeb50958da84a1"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a9f42efcc2681790595ab3d03c0e52d01edc23a0973ea09f0dc8d295e12b8e"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cca776a440795db437d82c07455761c85bbcf3956221c3c23b8c93176c278ce7"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5582de171f0898139cf51dd9fcdc79b848e28d9abd68e837f0803fc9f30807b1"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:370e2d47575c53c817ee42a18acc34aad8da4dbdaac0a6c836d58878955f1477"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:444d1704e2af6b30766debed9be8a795958029e552fe77551355badb1944012c"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40271a2a375812967401c9ca8077de9368e09a43a964f4dce0ff603301ec9358"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f3af26f86863fad12e25395805bb0babbd49d512806af91ec9708a272b696248"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4752df44df48fd42b80f51d6a97553b482cda1274d9dc5df214a3a1aa5d8f018"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2cd5290ab66cfca2f90045db2cc6434c1f4f9fbf97c9f1c316e785033782e7d2"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3427031064b0d5c95647e6369c4aa3c556402f324a3e18107cb09517abe5f962"}, - {file = "aiohttp-3.10.6-cp38-cp38-win32.whl", hash = "sha256:614fc21e86adc28e4165a6391f851a6da6e9cbd7bb232d0df7718b453a89ee98"}, - {file = "aiohttp-3.10.6-cp38-cp38-win_amd64.whl", hash = "sha256:58c5d7318a136a3874c78717dd6de57519bc64f6363c5827c2b1cb775bea71dd"}, - {file = "aiohttp-3.10.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5db26bbca8e7968c4c977a0c640e0b9ce7224e1f4dcafa57870dc6ee28e27de6"}, - {file = "aiohttp-3.10.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3fb4216e3ec0dbc01db5ba802f02ed78ad8f07121be54eb9e918448cc3f61b7c"}, - {file = "aiohttp-3.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a976ef488f26e224079deb3d424f29144c6d5ba4ded313198169a8af8f47fb82"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a86610174de8a85a920e956e2d4f9945e7da89f29a00e95ac62a4a414c4ef4e"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:217791c6a399cc4f2e6577bb44344cba1f5714a2aebf6a0bea04cfa956658284"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba3662d41abe2eab0eeec7ee56f33ef4e0b34858f38abf24377687f9e1fb00a5"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4dfa5ad4bce9ca30a76117fbaa1c1decf41ebb6c18a4e098df44298941566f9"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0009258e97502936d3bd5bf2ced15769629097d0abb81e6495fba1047824fe0"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0a75d5c9fb4f06c41d029ae70ad943c3a844c40c0a769d12be4b99b04f473d3d"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8198b7c002aae2b40b2d16bfe724b9a90bcbc9b78b2566fc96131ef4e382574d"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4611db8c907f90fe86be112efdc2398cd7b4c8eeded5a4f0314b70fdea8feab0"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ff99ae06eef85c7a565854826114ced72765832ee16c7e3e766c5e4c5b98d20e"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7641920bdcc7cd2d3ddfb8bb9133a6c9536b09dbd49490b79e125180b2d25b93"}, - {file = "aiohttp-3.10.6-cp39-cp39-win32.whl", hash = "sha256:e2e7d5591ea868d5ec82b90bbeb366a198715672841d46281b623e23079593db"}, - {file = "aiohttp-3.10.6-cp39-cp39-win_amd64.whl", hash = "sha256:b504c08c45623bf5c7ca41be380156d925f00199b3970efd758aef4a77645feb"}, - {file = "aiohttp-3.10.6.tar.gz", hash = "sha256:d2578ef941be0c2ba58f6f421a703527d08427237ed45ecb091fed6f83305336"}, -] - -[package.dependencies] -aiohappyeyeballs = ">=2.3.0" -aiosignal = ">=1.1.2" -attrs = ">=17.3.0" -frozenlist = ">=1.1.1" -multidict = ">=4.5,<7.0" -yarl = ">=1.12.0,<2.0" - -[package.extras] -speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] - -[[package]] -name = "aiosignal" -version = "1.3.1" -description = "aiosignal: a list of registered asynchronous callbacks" -optional = false -python-versions = ">=3.7" -files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, -] - -[package.dependencies] -frozenlist = ">=1.1.0" - -[[package]] -name = "anchorpy" -version = "0.20.1" -description = "The Python Anchor client." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "anchorpy-0.20.1-py3-none-any.whl", hash = "sha256:78c82b56e340240fd00697cde08cd63f84ccc48b34532f0eed4a570f7054aec9"}, - {file = "anchorpy-0.20.1.tar.gz", hash = "sha256:e4ac7e3e742a4a31165da2cdded44bfec8d03802488beb36f6735d1c9351fe08"}, -] - -[package.dependencies] -anchorpy-core = ">=0.2.0,<0.3.0" -autoflake = {version = ">=1.4,<2.0", optional = true, markers = "extra == \"cli\""} -based58 = ">=0.1.1,<0.2.0" -black = {version = ">=22.3.0,<23.0.0", optional = true, markers = "extra == \"cli\""} -borsh-construct = ">=0.1.0,<0.2.0" -construct-typing = ">=0.5.1,<0.6.0" -genpy = {version = ">=2021.1,<2022.0", optional = true, markers = "extra == \"cli\""} -ipython = {version = ">=8.0.1,<9.0.0", optional = true, markers = "extra == \"cli\""} -more-itertools = ">=8.11.0,<9.0.0" -pyheck = ">=0.1.4,<0.2.0" -solana = ">=0.33.0,<1.0" -solders = ">=0.21.0,<0.22.0" -toml = ">=0.10.2,<0.11.0" -toolz = ">=0.11.2,<0.12.0" -typer = {version = "0.4.1", optional = true, markers = "extra == \"cli\""} -websockets = ">=9.0,<11.0" - -[package.extras] -cli = ["autoflake (>=1.4,<2.0)", "black (>=22.3.0,<23.0.0)", "genpy (>=2021.1,<2022.0)", "ipython (>=8.0.1,<9.0.0)", "typer (==0.4.1)"] -pytest = ["py (>=1.11.0,<2.0.0)", "pytest (>=7.2.0,<8.0.0)", "pytest-asyncio (>=0.21.0,<0.22.0)", "pytest-xprocess (>=0.18.1,<0.19.0)"] - -[[package]] -name = "anchorpy-core" -version = "0.2.0" -description = "Python bindings for Anchor Rust code" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anchorpy_core-0.2.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f04928c0916e8a5cba5986a85db682df19e204bb424bdea49b8a46fc45f2fc66"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e37373336fa735f7f3f5eab8f3b090c8a39ef48f3f4f367ad703c7643260560"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:60b5a2b779acbba6b60957fb76a568d6b29c24147c2fff6a127d25842fcbe5a5"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:67293b0a1e29df0b50fcac616a5122e3639842f115666f58267470666a847b59"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abb91b8781cae23113ca03b567973e00c1caf6b341707dbe0fe2ca832af66e5b"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9fb52db4e37736bf461737b4fc088f3c31ee9d1926d7f52f8432e6f25b38c9b"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5d70c9992b678a92640981013c1953a6f7d7de383bc837a511bb96534539db8"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:41588e343bad3945bf5bbdeeff1c92c6cf8b517590739e100d96fc9505c3bc6f"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:af25089ba1fe2a3494536b77d8b93e191cce50ced5afa2fdf7cc83a0d0839750"}, - {file = "anchorpy_core-0.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:9e0d34e2b168855847d0b0c2e33d3c63767a89bb7b78bcb377365b4e6db6aaba"}, - {file = "anchorpy_core-0.2.0.tar.gz", hash = "sha256:e06f0b9867d5d773a574b5027d19558a24d738b5c0d73df5ab5a97119c466ce2"}, -] - -[package.dependencies] -jsonalias = "0.1.1" - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "argparse" -version = "1.4.0" -description = "Python command-line parsing library" -optional = false -python-versions = "*" -files = [ - {file = "argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314"}, - {file = "argparse-1.4.0.tar.gz", hash = "sha256:62b089a55be1d8949cd2bc7e0df0bddb9e028faefc8c32038cc84862aefdd6e4"}, -] - -[[package]] -name = "asttokens" -version = "2.4.1" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = "*" -files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, -] - -[package.dependencies] -six = ">=1.12.0" - -[package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] - -[[package]] -name = "asyncio" -version = "3.4.3" -description = "reference implementation of PEP 3156" -optional = false -python-versions = "*" -files = [ - {file = "asyncio-3.4.3-cp33-none-win32.whl", hash = "sha256:b62c9157d36187eca799c378e572c969f0da87cd5fc42ca372d92cdb06e7e1de"}, - {file = "asyncio-3.4.3-cp33-none-win_amd64.whl", hash = "sha256:c46a87b48213d7464f22d9a497b9eef8c1928b68320a2fa94240f969f6fec08c"}, - {file = "asyncio-3.4.3-py3-none-any.whl", hash = "sha256:c4d18b22701821de07bd6aea8b53d21449ec0ec5680645e5317062ea21817d2d"}, - {file = "asyncio-3.4.3.tar.gz", hash = "sha256:83360ff8bc97980e4ff25c964c7bd3923d333d177aa4f7fb736b019f26c7cb41"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "autoflake" -version = "1.7.7" -description = "Removes unused imports and unused variables" -optional = false -python-versions = ">=3.7" -files = [ - {file = "autoflake-1.7.7-py3-none-any.whl", hash = "sha256:a9b43d08f8e455824e4f7b3f078399f59ba538ba53872f466c09e55c827773ef"}, - {file = "autoflake-1.7.7.tar.gz", hash = "sha256:c8e4fc41aa3eae0f5c94b939e3a3d50923d7a9306786a6cbf4866a077b8f6832"}, -] - -[package.dependencies] -pyflakes = ">=1.1.0" - -[[package]] -name = "based58" -version = "0.1.1" -description = "A fast Python library for Base58 and Base58Check" -optional = false -python-versions = ">=3.7" -files = [ - {file = "based58-0.1.1-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:745851792ce5fada615f05ec61d7f360d19c76950d1e86163b2293c63a5d43bc"}, - {file = "based58-0.1.1-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f8448a71678bd1edc0a464033695686461ab9d6d0bc3282cb29b94f883583572"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:852c37206374a62c5d3ef7f6777746e2ad9106beec4551539e9538633385e613"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3fb17f0aaaad0381c8b676623c870c1a56aca039e2a7c8416e65904d80a415f7"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:06f3c40b358b0c6fc6fc614c43bb11ef851b6d04e519ac1eda2833420cb43799"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a9db744be79c8087eebedbffced00c608b3ed780668ab3c59f1d16e72c84947"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0506435e98836cc16e095e0d6dc428810e0acfb44bc2f3ac3e23e051a69c0e3e"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8937e97fa8690164fd11a7c642f6d02df58facd2669ae7355e379ab77c48c924"}, - {file = "based58-0.1.1-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14b01d91ac250300ca7f634e5bf70fb2b1b9aaa90cc14357943c7da525a35aff"}, - {file = "based58-0.1.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6c03c7f0023981c7d52fc7aad23ed1f3342819358b9b11898d693c9ef4577305"}, - {file = "based58-0.1.1-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:621269732454875510230b85053f462dffe7d7babecc8c553fdb488fd15810ff"}, - {file = "based58-0.1.1-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:aba18f6c869fade1d1551fe398a376440771d6ce288c54cba71b7090cf08af02"}, - {file = "based58-0.1.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ae7f17b67bf0c209da859a6b833504aa3b19dbf423cbd2369aa17e89299dc972"}, - {file = "based58-0.1.1-cp37-abi3-win32.whl", hash = "sha256:d8dece575de525c1ad889d9ab239defb7a6ceffc48f044fe6e14a408fb05bef4"}, - {file = "based58-0.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:ab85804a401a7b5a7141fbb14ef5b5f7d85288357d1d3f0085d47e616cef8f5a"}, - {file = "based58-0.1.1.tar.gz", hash = "sha256:80804b346b34196c89dc7a3dc89b6021f910f4cd75aac41d433ca1880b1672dc"}, -] - -[[package]] -name = "bitarray" -version = "2.9.2" -description = "efficient arrays of booleans -- C extension" -optional = false -python-versions = "*" -files = [ - {file = "bitarray-2.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:917905de565d9576eb20f53c797c15ba88b9f4f19728acabec8d01eee1d3756a"}, - {file = "bitarray-2.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b35bfcb08b7693ab4bf9059111a6e9f14e07d57ac93cd967c420db58ab9b71e1"}, - {file = "bitarray-2.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ea1923d2e7880f9e1959e035da661767b5a2e16a45dfd57d6aa831e8b65ee1bf"}, - {file = "bitarray-2.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0b63a565e8a311cc8348ff1262d5784df0f79d64031d546411afd5dd7ef67d"}, - {file = "bitarray-2.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cf0620da2b81946d28c0b16f3e3704d38e9837d85ee4f0652816e2609aaa4fed"}, - {file = "bitarray-2.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79a9b8b05f2876c7195a2b698c47528e86a73c61ea203394ff8e7a4434bda5c8"}, - {file = "bitarray-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:345c76b349ff145549652436235c5532e5bfe9db690db6f0a6ad301c62b9ef21"}, - {file = "bitarray-2.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e2936f090bf3f4d1771f44f9077ebccdbc0415d2b598d51a969afcb519df505"}, - {file = "bitarray-2.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f9346e98fc2abcef90b942973087e2462af6d3e3710e82938078d3493f7fef52"}, - {file = "bitarray-2.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e6ec283d4741befb86e8c3ea2e9ac1d17416c956d392107e45263e736954b1f7"}, - {file = "bitarray-2.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:962892646599529917ef26266091e4cb3077c88b93c3833a909d68dcc971c4e3"}, - {file = "bitarray-2.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e8da5355d7d75a52df5b84750989e34e39919ec7e59fafc4c104cc1607ab2d31"}, - {file = "bitarray-2.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:603e7d640e54ad764d2b4da6b61e126259af84f253a20f512dd10689566e5478"}, - {file = "bitarray-2.9.2-cp310-cp310-win32.whl", hash = "sha256:f00079f8e69d75c2a417de7961a77612bb77ef46c09bc74607d86de4740771ef"}, - {file = "bitarray-2.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:1bb33673e7f7190a65f0a940c1ef63266abdb391f4a3e544a47542d40a81f536"}, - {file = "bitarray-2.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fe71fd4b76380c2772f96f1e53a524da7063645d647a4fcd3b651bdd80ca0f2e"}, - {file = "bitarray-2.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d527172919cdea1e13994a66d9708a80c3d33dedcf2f0548e4925e600fef3a3a"}, - {file = "bitarray-2.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:052c5073bdcaa9dd10628d99d37a2f33ec09364b86dd1f6281e2d9f8d3db3060"}, - {file = "bitarray-2.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e064caa55a6ed493aca1eda06f8b3f689778bc780a75e6ad7724642ba5dc62f7"}, - {file = "bitarray-2.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:508069a04f658210fdeee85a7a0ca84db4bcc110cbb1d21f692caa13210f24a7"}, - {file = "bitarray-2.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4da73ebd537d75fa7bccfc2228fcaedea0803f21dd9d0bf0d3b67fef3c4af294"}, - {file = "bitarray-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cb378eaa65cd43098f11ff5d27e48ee3b956d2c00d2d6b5bfc2a09fe183be47"}, - {file = "bitarray-2.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d14c790b91f6cbcd9b718f88ed737c78939980c69ac8c7f03dd7e60040c12951"}, - {file = "bitarray-2.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7eea9318293bc0ea6447e9ebfba600a62f3428bea7e9c6d42170ae4f481dbab3"}, - {file = "bitarray-2.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b76ffec27c7450b8a334f967366a9ebadaea66ee43f5b530c12861b1a991f503"}, - {file = "bitarray-2.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:76b76a07d4ee611405045c6950a1e24c4362b6b44808d4ad6eea75e0dbc59af4"}, - {file = "bitarray-2.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c7d16beeaaab15b075990cd26963d6b5b22e8c5becd131781514a00b8bdd04bd"}, - {file = "bitarray-2.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60df43e868a615c7e15117a1e1c2e5e11f48f6457280eba6ddf8fbefbec7da99"}, - {file = "bitarray-2.9.2-cp311-cp311-win32.whl", hash = "sha256:e788608ed7767b7b3bbde6d49058bccdf94df0de9ca75d13aa99020cc7e68095"}, - {file = "bitarray-2.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:a23397da092ef0a8cfe729571da64c2fc30ac18243caa82ac7c4f965087506ff"}, - {file = "bitarray-2.9.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:90e3a281ffe3897991091b7c46fca38c2675bfd4399ffe79dfeded6c52715436"}, - {file = "bitarray-2.9.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bed637b674db5e6c8a97a4a321e3e4d73e72d50b5c6b29950008a93069cc64cd"}, - {file = "bitarray-2.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e49066d251dbbe4e6e3a5c3937d85b589e40e2669ad0eef41a00f82ec17d844b"}, - {file = "bitarray-2.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c4344e96642e2211fb3a50558feff682c31563a4c64529a931769d40832ca79"}, - {file = "bitarray-2.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aeb60962ec4813c539a59fbd4f383509c7222b62c3fb1faa76b54943a613e33a"}, - {file = "bitarray-2.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed0f7982f10581bb16553719e5e8f933e003f5b22f7d25a68bdb30fac630a6ff"}, - {file = "bitarray-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c71d1cabdeee0cdda4669168618f0e46b7dace207b29da7b63aaa1adc2b54081"}, - {file = "bitarray-2.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0ef2d0a6f1502d38d911d25609b44c6cc27bee0a4363dd295df78b075041b60"}, - {file = "bitarray-2.9.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6f71d92f533770fb027388b35b6e11988ab89242b883f48a6fe7202d238c61f8"}, - {file = "bitarray-2.9.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ba0734aa300757c924f3faf8148e1b8c247176a0ac8e16aefdf9c1eb19e868f7"}, - {file = "bitarray-2.9.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:d91406f413ccbf4af6ab5ae7bc78f772a95609f9ddd14123db36ef8c37116d95"}, - {file = "bitarray-2.9.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:87abb7f80c0a042f3fe8e5264da1a2756267450bb602110d5327b8eaff7682e7"}, - {file = "bitarray-2.9.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b558ce85579b51a2e38703877d1e93b7728a7af664dd45a34e833534f0b755d"}, - {file = "bitarray-2.9.2-cp312-cp312-win32.whl", hash = "sha256:dac2399ee2889fbdd3472bfc2ede74c34cceb1ccf29a339964281a16eb1d3188"}, - {file = "bitarray-2.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:48a30d718d1a6dfc22a49547450107abe8f4afdf2abdcbe76eb9ed88edc49498"}, - {file = "bitarray-2.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2c6be1b651fad8f3adb7a5aa12c65b612cd9b89530969af941844ae680f7d981"}, - {file = "bitarray-2.9.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5b399ae6ab975257ec359f03b48fc00b1c1cd109471e41903548469b8feae5c"}, - {file = "bitarray-2.9.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b3543c8a1cb286ad105f11c25d8d0f712f41c5c55f90be39f0e5a1376c7d0b0"}, - {file = "bitarray-2.9.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03adaacb79e2fb8f483ab3a67665eec53bb3fd0cd5dbd7358741aef124688db3"}, - {file = "bitarray-2.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae5b0657380d2581e13e46864d147a52c1e2bbac9f59b59c576e42fa7d10cf0"}, - {file = "bitarray-2.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c1f4bf6ea8eb9d7f30808c2e9894237a96650adfecbf5f3643862dc5982f89e"}, - {file = "bitarray-2.9.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a8873089be2aa15494c0f81af1209f6e1237d762c5065bc4766c1b84321e1b50"}, - {file = "bitarray-2.9.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:677e67f50e2559efc677a4366707070933ad5418b8347a603a49a070890b19bc"}, - {file = "bitarray-2.9.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:a620d8ce4ea2f1c73c6b6b1399e14cb68c6915e2be3fad5808c2998ed55b4acf"}, - {file = "bitarray-2.9.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:64115ccabbdbe279c24c367b629c6b1d3da9ed36c7420129e27c338a3971bfee"}, - {file = "bitarray-2.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5d6fb422772e75385b76ad1c52f45a68bd4efafd8be8d0061c11877be74c4d43"}, - {file = "bitarray-2.9.2-cp36-cp36m-win32.whl", hash = "sha256:852e202875dd6dfd6139ce7ec4e98dac2b17d8d25934dc99900831e81c3adaef"}, - {file = "bitarray-2.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:7dfefdcb0dc6a3ba9936063cec65a74595571b375beabe18742b3d91d087eefd"}, - {file = "bitarray-2.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b306c4cf66912511422060f7f5e1149c8bdb404f8e00e600561b0749fdd45659"}, - {file = "bitarray-2.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a09c4f81635408e3387348f415521d4b94198c562c23330f560596a6aaa26eaf"}, - {file = "bitarray-2.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5361413fd2ecfdf44dc8f065177dc6aba97fa80a91b815586cb388763acf7f8d"}, - {file = "bitarray-2.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e8a9475d415ef1eaae7942df6f780fa4dcd48fce32825eda591a17abba869299"}, - {file = "bitarray-2.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9b87baa7bfff9a5878fcc1bffe49ecde6e647a72a64b39a69cd8a2992a43a34"}, - {file = "bitarray-2.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb6b86cfdfc503e92cb71c68766a24565359136961642504a7cc9faf936d9c88"}, - {file = "bitarray-2.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cd56b8ae87ebc71bcacbd73615098e8a8de952ecbb5785b6b4e2b07da8a06e1f"}, - {file = "bitarray-2.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3fa909cfd675004aed8b4cc9df352415933656e0155a6209d878b7cb615c787e"}, - {file = "bitarray-2.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b069ca9bf728e0c5c5b60e00a89df9af34cc170c695c3bfa3b372d8f40288efb"}, - {file = "bitarray-2.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6067f2f07a7121749858c7daa93c8774325c91590b3e81a299621e347740c2ae"}, - {file = "bitarray-2.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:321841cdad1dd0f58fe62e80e9c9c7531f8ebf8be93f047401e930dc47425b1e"}, - {file = "bitarray-2.9.2-cp37-cp37m-win32.whl", hash = "sha256:54e16e32e60973bb83c315de9975bc1bcfc9bd50bb13001c31da159bc49b0ca1"}, - {file = "bitarray-2.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:f4dcadb7b8034aa3491ee8f5a69b3d9ba9d7d1e55c3cc1fc45be313e708277f8"}, - {file = "bitarray-2.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c8919fdbd3bb596b104388b56ae4b266eb28da1f2f7dff2e1f9334a21840fe96"}, - {file = "bitarray-2.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eb7a9d8a2e400a1026de341ad48e21670a6261a75b06df162c5c39b0d0e7c8f4"}, - {file = "bitarray-2.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6ec84668dd7b937874a2b2c293cd14ba84f37be0d196dead852e0ada9815d807"}, - {file = "bitarray-2.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2de9a31c34e543ae089fd2a5ced01292f725190e379921384f695e2d7184bd3"}, - {file = "bitarray-2.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9521f49ae121a17c0a41e5112249e6fa7f6a571245b1118de81fb86e7c1bc1ce"}, - {file = "bitarray-2.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6cc6545d6d76542aee3d18c1c9485fb7b9812b8df4ebe52c4535ec42081b48f"}, - {file = "bitarray-2.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:856bbe1616425f71c0df5ef2e8755e878d9504d5a531acba58ab4273c52c117a"}, - {file = "bitarray-2.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4bba8042ea6ab331ade91bc435d81ad72fddb098e49108610b0ce7780c14e68"}, - {file = "bitarray-2.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a035da89c959d98afc813e3c62f052690d67cfd55a36592f25d734b70de7d4b0"}, - {file = "bitarray-2.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6d70b1579da7fb71be5a841a1f965d19aca0ef27f629cfc07d06b09aafd0a333"}, - {file = "bitarray-2.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:405b83bed28efaae6d86b6ab287c75712ead0adbfab2a1075a1b7ab47dad4d62"}, - {file = "bitarray-2.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7eb8be687c50da0b397d5e0ab7ca200b5ebb639e79a9f5e285851d1944c94be9"}, - {file = "bitarray-2.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eceb551dfeaf19c609003a69a0cf8264b0efd7abc3791a11dfabf4788daf0d19"}, - {file = "bitarray-2.9.2-cp38-cp38-win32.whl", hash = "sha256:bb198c6ed1edbcdaf3d1fa3c9c9d1cdb7e179a5134ef5ee660b53cdec43b34e7"}, - {file = "bitarray-2.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:648d2f2685590b0103c67a937c2fb9e09bcc8dfb166f0c7c77bd341902a6f5b3"}, - {file = "bitarray-2.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ea816dc8f8e65841a8bbdd30e921edffeeb6f76efe6a1eb0da147b60d539d1cf"}, - {file = "bitarray-2.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4d0e32530f941c41eddfc77600ec89b65184cb909c549336463a738fab3ed285"}, - {file = "bitarray-2.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4a22266fb416a3b6c258bf7f83c9fe531ba0b755a56986a81ad69dc0f3bcc070"}, - {file = "bitarray-2.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc6d3e80dd8239850f2604833ff3168b28909c8a9357abfed95632cccd17e3e7"}, - {file = "bitarray-2.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f135e804986b12bf14f2cd1eb86674c47dea86c4c5f0fa13c88978876b97ebe6"}, - {file = "bitarray-2.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87580c7f7d14f7ec401eda7adac1e2a25e95153e9c339872c8ae61b3208819a1"}, - {file = "bitarray-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64b433e26993127732ac7b66a7821b2537c3044355798de7c5fcb0af34b8296f"}, - {file = "bitarray-2.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e497c535f2a9b68c69d36631bf2dba243e05eb343b00b9c7bbdc8c601c6802d"}, - {file = "bitarray-2.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e40b3cb9fa1edb4e0175d7c06345c49c7925fe93e39ef55ecb0bc40c906b0c09"}, - {file = "bitarray-2.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f2f8692f95c9e377eb19ca519d30d1f884b02feb7e115f798de47570a359e43f"}, - {file = "bitarray-2.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f0b84fc50b6dbeced4fa390688c07c10a73222810fb0e08392bd1a1b8259de36"}, - {file = "bitarray-2.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d656ad38c942e38a470ddbce26b5020e08e1a7ea86b8fd413bb9024b5189993a"}, - {file = "bitarray-2.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6ab0f1dbfe5070db98771a56aa14797595acd45a1af9eadfb193851a270e7996"}, - {file = "bitarray-2.9.2-cp39-cp39-win32.whl", hash = "sha256:0a99b23ac845a9ea3157782c97465e6ae026fe0c7c4c1ed1d88f759fd6ea52d9"}, - {file = "bitarray-2.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:9bbcfc7c279e8d74b076e514e669b683f77b4a2a328585b3f16d4c5259c91222"}, - {file = "bitarray-2.9.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:43847799461d8ba71deb4d97b47250c2c2fb66d82cd3cb8b4caf52bb97c03034"}, - {file = "bitarray-2.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f44381b0a4bdf64416082f4f0e7140377ae962c0ced6f983c6d7bbfc034040"}, - {file = "bitarray-2.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a484061616fb4b158b80789bd3cb511f399d2116525a8b29b6334c68abc2310f"}, - {file = "bitarray-2.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ff9e38356cc803e06134cf8ae9758e836ccd1b793135ef3db53c7c5d71e93bc"}, - {file = "bitarray-2.9.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b44105792fbdcfbda3e26ee88786790fda409da4c71f6c2b73888108cf8f062f"}, - {file = "bitarray-2.9.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7e913098de169c7fc890638ce5e171387363eb812579e637c44261460ac00aa2"}, - {file = "bitarray-2.9.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6fe315355cdfe3ed22ef355b8bdc81a805ca4d0949d921576560e5b227a1112"}, - {file = "bitarray-2.9.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f708e91fdbe443f3bec2df394ed42328fb9b0446dff5cb4199023ac6499e09fd"}, - {file = "bitarray-2.9.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b7b09489b71f9f1f64c0fa0977e250ec24500767dab7383ba9912495849cadf"}, - {file = "bitarray-2.9.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:128cc3488176145b9b137fdcf54c1c201809bbb8dd30b260ee40afe915843b43"}, - {file = "bitarray-2.9.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:21f21e7f56206be346bdbda2a6bdb2165a5e6a11821f88fd4911c5a6bbbdc7e2"}, - {file = "bitarray-2.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f4dd3af86dd8a617eb6464622fb64ca86e61ce99b59b5c35d8cd33f9c30603d"}, - {file = "bitarray-2.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6465de861aff7a2559f226b37982007417eab8c3557543879987f58b453519bd"}, - {file = "bitarray-2.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbaf2bb71d6027152d603f1d5f31e0dfd5e50173d06f877bec484e5396d4594b"}, - {file = "bitarray-2.9.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2f32948c86e0d230a296686db28191b67ed229756f84728847daa0c7ab7406e3"}, - {file = "bitarray-2.9.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be94e5a685e60f9d24532af8fe5c268002e9016fa80272a94727f435de3d1003"}, - {file = "bitarray-2.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5cc9381fd54f3c23ae1039f977bfd6d041a5c3c1518104f616643c3a5a73b15"}, - {file = "bitarray-2.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd926e8ae4d1ed1ac4a8f37212a62886292f692bc1739fde98013bf210c2d175"}, - {file = "bitarray-2.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:461a3dafb9d5fda0bb3385dc507d78b1984b49da3fe4c6d56c869a54373b7008"}, - {file = "bitarray-2.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:393cb27fd859af5fd9c16eb26b1c59b17b390ff66b3ae5d0dd258270191baf13"}, - {file = "bitarray-2.9.2.tar.gz", hash = "sha256:a8f286a51a32323715d77755ed959f94bef13972e9a2fe71b609e40e6d27957e"}, -] - -[[package]] -name = "black" -version = "22.12.0" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.7" -files = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -pathspec = ">=0.9.0" -platformdirs = ">=2" - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - -[[package]] -name = "borsh-construct" -version = "0.1.0" -description = "Python implementation of Borsh serialization, built on the Construct library." -optional = false -python-versions = ">=3.8.3,<4.0.0" -files = [ - {file = "borsh-construct-0.1.0.tar.gz", hash = "sha256:c916758ceba70085d8f456a1cc26991b88cb64233d347767766473b651b37263"}, - {file = "borsh_construct-0.1.0-py3-none-any.whl", hash = "sha256:f584c791e2a03f8fc36e6c13011a27bcaf028c9c54ba89cd70f485a7d1c687ed"}, -] - -[package.dependencies] -construct-typing = ">=0.5.1,<0.6.0" -sumtypes = ">=0.1a5,<0.2" - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "construct" -version = "2.10.68" -description = "A powerful declarative symmetric parser/builder for binary data" -optional = false -python-versions = ">=3.6" -files = [ - {file = "construct-2.10.68.tar.gz", hash = "sha256:7b2a3fd8e5f597a5aa1d614c3bd516fa065db01704c72a1efaaeec6ef23d8b45"}, -] - -[package.extras] -extras = ["arrow", "cloudpickle", "enum34", "lz4", "numpy", "ruamel.yaml"] - -[[package]] -name = "construct-typing" -version = "0.5.6" -description = "Extension for the python package 'construct' that adds typing features" -optional = false -python-versions = ">=3.7" -files = [ - {file = "construct-typing-0.5.6.tar.gz", hash = "sha256:0dc501351cd6b308f15ec54e5fe7c0fbc07cc1530a1b77b4303062a0a93c1297"}, - {file = "construct_typing-0.5.6-py3-none-any.whl", hash = "sha256:39c948329e880564e33521cba497b21b07967c465b9c9037d6334e2cffa1ced9"}, -] - -[package.dependencies] -construct = "2.10.68" - -[[package]] -name = "cytoolz" -version = "0.12.3" -description = "Cython implementation of Toolz: High performance functional utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cytoolz-0.12.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bbe58e26c84b163beba0fbeacf6b065feabc8f75c6d3fe305550d33f24a2d346"}, - {file = "cytoolz-0.12.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c51b66ada9bfdb88cf711bf350fcc46f82b83a4683cf2413e633c31a64df6201"}, - {file = "cytoolz-0.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e70d9c615e5c9dc10d279d1e32e846085fe1fd6f08d623ddd059a92861f4e3dd"}, - {file = "cytoolz-0.12.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a83f4532707963ae1a5108e51fdfe1278cc8724e3301fee48b9e73e1316de64f"}, - {file = "cytoolz-0.12.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d028044524ee2e815f36210a793c414551b689d4f4eda28f8bbb0883ad78bf5f"}, - {file = "cytoolz-0.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c2875bcd1397d0627a09a4f9172fa513185ad302c63758efc15b8eb33cc2a98"}, - {file = "cytoolz-0.12.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:131ff4820e5d64a25d7ad3c3556f2d8aa65c66b3f021b03f8a8e98e4180dd808"}, - {file = "cytoolz-0.12.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:04afa90d9d9d18394c40d9bed48c51433d08b57c042e0e50c8c0f9799735dcbd"}, - {file = "cytoolz-0.12.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:dc1ca9c610425f9854323669a671fc163300b873731584e258975adf50931164"}, - {file = "cytoolz-0.12.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bfa3f8e01bc423a933f2e1c510cbb0632c6787865b5242857cc955cae220d1bf"}, - {file = "cytoolz-0.12.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:f702e295dddef5f8af4a456db93f114539b8dc2a7a9bc4de7c7e41d169aa6ec3"}, - {file = "cytoolz-0.12.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0fbad1fb9bb47e827d00e01992a099b0ba79facf5e5aa453be066033232ac4b5"}, - {file = "cytoolz-0.12.3-cp310-cp310-win32.whl", hash = "sha256:8587c3c3dbe78af90c5025288766ac10dc2240c1e76eb0a93a4e244c265ccefd"}, - {file = "cytoolz-0.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e45803d9e75ef90a2f859ef8f7f77614730f4a8ce1b9244375734567299d239"}, - {file = "cytoolz-0.12.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3ac4f2fb38bbc67ff1875b7d2f0f162a247f43bd28eb7c9d15e6175a982e558d"}, - {file = "cytoolz-0.12.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0cf1e1e96dd86829a0539baf514a9c8473a58fbb415f92401a68e8e52a34ecd5"}, - {file = "cytoolz-0.12.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08a438701c6141dd34eaf92e9e9a1f66e23a22f7840ef8a371eba274477de85d"}, - {file = "cytoolz-0.12.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b6f11b0d7ed91be53166aeef2a23a799e636625675bb30818f47f41ad31821"}, - {file = "cytoolz-0.12.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7fde09384d23048a7b4ac889063761e44b89a0b64015393e2d1d21d5c1f534a"}, - {file = "cytoolz-0.12.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d3bfe45173cc8e6c76206be3a916d8bfd2214fb2965563e288088012f1dabfc"}, - {file = "cytoolz-0.12.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27513a5d5b6624372d63313574381d3217a66e7a2626b056c695179623a5cb1a"}, - {file = "cytoolz-0.12.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d294e5e81ff094fe920fd545052ff30838ea49f9e91227a55ecd9f3ca19774a0"}, - {file = "cytoolz-0.12.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:727b01a2004ddb513496507a695e19b5c0cfebcdfcc68349d3efd92a1c297bf4"}, - {file = "cytoolz-0.12.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:fe1e1779a39dbe83f13886d2b4b02f8c4b10755e3c8d9a89b630395f49f4f406"}, - {file = "cytoolz-0.12.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:de74ef266e2679c3bf8b5fc20cee4fc0271ba13ae0d9097b1491c7a9bcadb389"}, - {file = "cytoolz-0.12.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e04d22049233394e0b08193aca9737200b4a2afa28659d957327aa780ddddf2"}, - {file = "cytoolz-0.12.3-cp311-cp311-win32.whl", hash = "sha256:20d36430d8ac809186736fda735ee7d595b6242bdb35f69b598ef809ebfa5605"}, - {file = "cytoolz-0.12.3-cp311-cp311-win_amd64.whl", hash = "sha256:780c06110f383344d537f48d9010d79fa4f75070d214fc47f389357dd4f010b6"}, - {file = "cytoolz-0.12.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:86923d823bd19ce35805953b018d436f6b862edd6a7c8b747a13d52b39ed5716"}, - {file = "cytoolz-0.12.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3e61acfd029bfb81c2c596249b508dfd2b4f72e31b7b53b62e5fb0507dd7293"}, - {file = "cytoolz-0.12.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd728f4e6051af6af234651df49319da1d813f47894d4c3c8ab7455e01703a37"}, - {file = "cytoolz-0.12.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe8c6267caa7ec67bcc37e360f0d8a26bc3bdce510b15b97f2f2e0143bdd3673"}, - {file = "cytoolz-0.12.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99462abd8323c52204a2a0ce62454ce8fa0f4e94b9af397945c12830de73f27e"}, - {file = "cytoolz-0.12.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da125221b1fa25c690fcd030a54344cecec80074df018d906fc6a99f46c1e3a6"}, - {file = "cytoolz-0.12.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c18e351956f70db9e2d04ff02f28e9a41839250d3f936a4c8a1eabd1c3094d2"}, - {file = "cytoolz-0.12.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:921e6d2440ac758c4945c587b1d1d9b781b72737ac0c0ca5d5e02ca1db8bded2"}, - {file = "cytoolz-0.12.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1651a9bd591a8326329ce1d6336f3129161a36d7061a4d5ea9e5377e033364cf"}, - {file = "cytoolz-0.12.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8893223b87c2782bd59f9c4bd5c7bf733edd8728b523c93efb91d7468b486528"}, - {file = "cytoolz-0.12.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:e4d2961644153c5ae186db964aa9f6109da81b12df0f1d3494b4e5cf2c332ee2"}, - {file = "cytoolz-0.12.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:71b6eb97f6695f7ba8ce69c49b707a351c5f46fd97f5aeb5f6f2fb0d6e72b887"}, - {file = "cytoolz-0.12.3-cp312-cp312-win32.whl", hash = "sha256:cee3de65584e915053412cd178729ff510ad5f8f585c21c5890e91028283518f"}, - {file = "cytoolz-0.12.3-cp312-cp312-win_amd64.whl", hash = "sha256:9eef0d23035fa4dcfa21e570961e86c375153a7ee605cdd11a8b088c24f707f6"}, - {file = "cytoolz-0.12.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9a38332cfad2a91e89405b7c18b3f00e2edc951c225accbc217597d3e4e9fde"}, - {file = "cytoolz-0.12.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f501ae1353071fa5d6677437bbeb1aeb5622067dce0977cedc2c5ec5843b202"}, - {file = "cytoolz-0.12.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56f899758146a52e2f8cfb3fb6f4ca19c1e5814178c3d584de35f9e4d7166d91"}, - {file = "cytoolz-0.12.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:800f0526adf9e53d3c6acda748f4def1f048adaa780752f154da5cf22aa488a2"}, - {file = "cytoolz-0.12.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0976a3fcb81d065473173e9005848218ce03ddb2ec7d40dd6a8d2dba7f1c3ae"}, - {file = "cytoolz-0.12.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c835eab01466cb67d0ce6290601ebef2d82d8d0d0a285ed0d6e46989e4a7a71a"}, - {file = "cytoolz-0.12.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4fba0616fcd487e34b8beec1ad9911d192c62e758baa12fcb44448b9b6feae22"}, - {file = "cytoolz-0.12.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6f6e8207d732651e0204779e1ba5a4925c93081834570411f959b80681f8d333"}, - {file = "cytoolz-0.12.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:8119bf5961091cfe644784d0bae214e273b3b3a479f93ee3baab97bbd995ccfe"}, - {file = "cytoolz-0.12.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7ad1331cb68afeec58469c31d944a2100cee14eac221553f0d5218ace1a0b25d"}, - {file = "cytoolz-0.12.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:92c53d508fb8a4463acc85b322fa24734efdc66933a5c8661bdc862103a3373d"}, - {file = "cytoolz-0.12.3-cp37-cp37m-win32.whl", hash = "sha256:2c6dd75dae3d84fa8988861ab8b1189d2488cb8a9b8653828f9cd6126b5e7abd"}, - {file = "cytoolz-0.12.3-cp37-cp37m-win_amd64.whl", hash = "sha256:caf07a97b5220e6334dd32c8b6d8b2bd255ca694eca5dfe914bb5b880ee66cdb"}, - {file = "cytoolz-0.12.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ed0cfb9326747759e2ad81cb6e45f20086a273b67ac3a4c00b19efcbab007c60"}, - {file = "cytoolz-0.12.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:96a5a0292575c3697121f97cc605baf2fd125120c7dcdf39edd1a135798482ca"}, - {file = "cytoolz-0.12.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b76f2f50a789c44d6fd7f773ec43d2a8686781cd52236da03f7f7d7998989bee"}, - {file = "cytoolz-0.12.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2905fdccacc64b4beba37f95cab9d792289c80f4d70830b70de2fc66c007ec01"}, - {file = "cytoolz-0.12.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ebe23028eac51251f22ba01dba6587d30aa9c320372ca0c14eeab67118ec3f"}, - {file = "cytoolz-0.12.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96c715404a3825e37fe3966fe84c5f8a1f036e7640b2a02dbed96cac0c933451"}, - {file = "cytoolz-0.12.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bac0adffc1b6b6a4c5f1fd1dd2161afb720bcc771a91016dc6bdba59af0a5d3"}, - {file = "cytoolz-0.12.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:37441bf4a2a4e2e0fe9c3b0ea5e72db352f5cca03903977ffc42f6f6c5467be9"}, - {file = "cytoolz-0.12.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f04037302049cb30033f7fa4e1d0e44afe35ed6bfcf9b380fc11f2a27d3ed697"}, - {file = "cytoolz-0.12.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f37b60e66378e7a116931d7220f5352186abfcc950d64856038aa2c01944929c"}, - {file = "cytoolz-0.12.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ec9be3e4b6f86ea8b294d34c990c99d2ba6c526ef1e8f46f1d52c263d4f32cd7"}, - {file = "cytoolz-0.12.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0e9199c9e3fbf380a92b8042c677eb9e7ed4bccb126de5e9c0d26f5888d96788"}, - {file = "cytoolz-0.12.3-cp38-cp38-win32.whl", hash = "sha256:18cd61e078bd6bffe088e40f1ed02001387c29174750abce79499d26fa57f5eb"}, - {file = "cytoolz-0.12.3-cp38-cp38-win_amd64.whl", hash = "sha256:765b8381d4003ceb1a07896a854eee2c31ebc950a4ae17d1e7a17c2a8feb2a68"}, - {file = "cytoolz-0.12.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b4a52dd2a36b0a91f7aa50ca6c8509057acc481a24255f6cb07b15d339a34e0f"}, - {file = "cytoolz-0.12.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:581f1ce479769fe7eeb9ae6d87eadb230df8c7c5fff32138162cdd99d7fb8fc3"}, - {file = "cytoolz-0.12.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46f505d4c6eb79585c8ad0b9dc140ef30a138c880e4e3b40230d642690e36366"}, - {file = "cytoolz-0.12.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59276021619b432a5c21c01cda8320b9cc7dbc40351ffc478b440bfccd5bbdd3"}, - {file = "cytoolz-0.12.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e44f4c25e1e7cf6149b499c74945a14649c8866d36371a2c2d2164e4649e7755"}, - {file = "cytoolz-0.12.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c64f8e60c1dd69e4d5e615481f2d57937746f4a6be2d0f86e9e7e3b9e2243b5e"}, - {file = "cytoolz-0.12.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33c63186f3bf9d7ef1347bc0537bb9a0b4111a0d7d6e619623cabc18fef0dc3b"}, - {file = "cytoolz-0.12.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fdddb9d988405f24035234f1e8d1653ab2e48cc2404226d21b49a129aefd1d25"}, - {file = "cytoolz-0.12.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6986632d8a969ea1e720990c818dace1a24c11015fd7c59b9fea0b65ef71f726"}, - {file = "cytoolz-0.12.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0ba1cbc4d9cd7571c917f88f4a069568e5121646eb5d82b2393b2cf84712cf2a"}, - {file = "cytoolz-0.12.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7d267ffc9a36c0a9a58c7e0adc9fa82620f22e4a72533e15dd1361f57fc9accf"}, - {file = "cytoolz-0.12.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95e878868a172a41fbf6c505a4b967309e6870e22adc7b1c3b19653d062711fa"}, - {file = "cytoolz-0.12.3-cp39-cp39-win32.whl", hash = "sha256:8e21932d6d260996f7109f2a40b2586070cb0a0cf1d65781e156326d5ebcc329"}, - {file = "cytoolz-0.12.3-cp39-cp39-win_amd64.whl", hash = "sha256:0d8edfbc694af6c9bda4db56643fb8ed3d14e47bec358c2f1417de9a12d6d1fb"}, - {file = "cytoolz-0.12.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:55f9bd1ae6c2a27eda5abe2a0b65a83029d2385c5a1da7b8ef47af5905d7e905"}, - {file = "cytoolz-0.12.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2d271393c378282727f1231d40391ae93b93ddc0997448acc21dd0cb6a1e56d"}, - {file = "cytoolz-0.12.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee98968d6a66ee83a8ceabf31182189ab5d8598998c8ce69b6d5843daeb2db60"}, - {file = "cytoolz-0.12.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01cfb8518828c1189200c02a5010ea404407fb18fd5589e29c126e84bbeadd36"}, - {file = "cytoolz-0.12.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:456395d7aec01db32bf9e6db191d667347c78d8d48e77234521fa1078f60dabb"}, - {file = "cytoolz-0.12.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:cd88028bb897fba99ddd84f253ca6bef73ecb7bdf3f3cf25bc493f8f97d3c7c5"}, - {file = "cytoolz-0.12.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b19223e7f7bd7a73ec3aa6fdfb73b579ff09c2bc0b7d26857eec2d01a58c76"}, - {file = "cytoolz-0.12.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a79d72b08048a0980a59457c239555f111ac0c8bdc140c91a025f124104dbb4"}, - {file = "cytoolz-0.12.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dd70141b32b717696a72b8876e86bc9c6f8eff995c1808e299db3541213ff82"}, - {file = "cytoolz-0.12.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a1445c91009eb775d479e88954c51d0b4cf9a1e8ce3c503c2672d17252882647"}, - {file = "cytoolz-0.12.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ca6a9a9300d5bda417d9090107c6d2b007683efc59d63cc09aca0e7930a08a85"}, - {file = "cytoolz-0.12.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be6feb903d2a08a4ba2e70e950e862fd3be9be9a588b7c38cee4728150a52918"}, - {file = "cytoolz-0.12.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b6f43f086e5a965d33d62a145ae121b4ccb6e0789ac0acc895ce084fec8c65"}, - {file = "cytoolz-0.12.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:534fa66db8564d9b13872d81d54b6b09ae592c585eb826aac235bd6f1830f8ad"}, - {file = "cytoolz-0.12.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:fea649f979def23150680de1bd1d09682da3b54932800a0f90f29fc2a6c98ba8"}, - {file = "cytoolz-0.12.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a447247ed312dd64e3a8d9483841ecc5338ee26d6e6fbd29cd373ed030db0240"}, - {file = "cytoolz-0.12.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba3f843aa89f35467b38c398ae5b980a824fdbdb94065adc6ec7c47a0a22f4c7"}, - {file = "cytoolz-0.12.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:582c22f97a380211fb36a7b65b1beeb84ea11d82015fa84b054be78580390082"}, - {file = "cytoolz-0.12.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47feb089506fc66e1593cd9ade3945693a9d089a445fbe9a11385cab200b9f22"}, - {file = "cytoolz-0.12.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ba9002d2f043943744a9dc8e50a47362bcb6e6f360dc0a1abcb19642584d87bb"}, - {file = "cytoolz-0.12.3.tar.gz", hash = "sha256:4503dc59f4ced53a54643272c61dc305d1dbbfbd7d6bdf296948de9f34c3a282"}, -] - -[package.dependencies] -toolz = ">=0.8.0" - -[package.extras] -cython = ["cython"] - -[[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.5" -files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] - -[[package]] -name = "eth-abi" -version = "4.2.1" -description = "eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding" -optional = false -python-versions = ">=3.7.2, <4" -files = [ - {file = "eth_abi-4.2.1-py3-none-any.whl", hash = "sha256:abd83410a5326145bf178675c276de0ed154f6dc695dcad1beafaa44d97f44ae"}, - {file = "eth_abi-4.2.1.tar.gz", hash = "sha256:60d88788d53725794cdb07c0f0bb0df2a31a6e1ad19644313fe6117ac24eeeb0"}, -] - -[package.dependencies] -eth-typing = ">=3.0.0" -eth-utils = ">=2.0.0" -parsimonious = ">=0.9.0,<0.10.0" - -[package.extras] -dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "hypothesis (>=4.18.2,<5.0.0)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -lint = ["black (>=23)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)"] -test = ["eth-hash[pycryptodome]", "hypothesis (>=4.18.2,<5.0.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-xdist (>=2.4.0)"] -tools = ["hypothesis (>=4.18.2,<5.0.0)"] - -[[package]] -name = "eth-account" -version = "0.10.0" -description = "eth-account: Sign Ethereum transactions and messages with local private keys" -optional = false -python-versions = ">=3.7, <4" -files = [ - {file = "eth-account-0.10.0.tar.gz", hash = "sha256:474a2fccf7286230cf66502565f03b536921d7e1fdfceba198e42160e5ac4bc1"}, - {file = "eth_account-0.10.0-py3-none-any.whl", hash = "sha256:b7a83f506a8edf57926569e5f04471ce3f1700e572d3421b4ad0dad7a26c0978"}, -] - -[package.dependencies] -bitarray = ">=2.4.0" -eth-abi = ">=4.0.0-b.2" -eth-keyfile = ">=0.6.0" -eth-keys = ">=0.4.0" -eth-rlp = ">=0.3.0" -eth-utils = ">=2.0.0" -hexbytes = ">=0.1.0,<0.4.0" -rlp = ">=1.0.0" - -[package.extras] -dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "coverage", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "hypothesis (>=4.18.0,<5)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -lint = ["black (>=23)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)"] -test = ["coverage", "hypothesis (>=4.18.0,<5)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "eth-hash" -version = "0.7.0" -description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" -optional = false -python-versions = ">=3.8, <4" -files = [ - {file = "eth-hash-0.7.0.tar.gz", hash = "sha256:bacdc705bfd85dadd055ecd35fd1b4f846b671add101427e089a4ca2e8db310a"}, - {file = "eth_hash-0.7.0-py3-none-any.whl", hash = "sha256:b8d5a230a2b251f4a291e3164a23a14057c4a6de4b0aa4a16fa4dc9161b57e2f"}, -] - -[package.dependencies] -pycryptodome = {version = ">=3.6.6,<4", optional = true, markers = "extra == \"pycryptodome\""} - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -pycryptodome = ["pycryptodome (>=3.6.6,<4)"] -pysha3 = ["pysha3 (>=1.0.0,<2.0.0)", "safe-pysha3 (>=1.0.0)"] -test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "eth-keyfile" -version = "0.8.1" -description = "eth-keyfile: A library for handling the encrypted keyfiles used to store ethereum private keys" -optional = false -python-versions = "<4,>=3.8" -files = [ - {file = "eth_keyfile-0.8.1-py3-none-any.whl", hash = "sha256:65387378b82fe7e86d7cb9f8d98e6d639142661b2f6f490629da09fddbef6d64"}, - {file = "eth_keyfile-0.8.1.tar.gz", hash = "sha256:9708bc31f386b52cca0969238ff35b1ac72bd7a7186f2a84b86110d3c973bec1"}, -] - -[package.dependencies] -eth-keys = ">=0.4.0" -eth-utils = ">=2" -pycryptodome = ">=3.6.6,<4" - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["towncrier (>=21,<22)"] -test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "eth-keys" -version = "0.5.1" -description = "eth-keys: Common API for Ethereum key operations" -optional = false -python-versions = "<4,>=3.8" -files = [ - {file = "eth_keys-0.5.1-py3-none-any.whl", hash = "sha256:ad13d920a2217a49bed3a1a7f54fb0980f53caf86d3bbab2139fd3330a17b97e"}, - {file = "eth_keys-0.5.1.tar.gz", hash = "sha256:2b587e4bbb9ac2195215a7ab0c0fb16042b17d4ec50240ed670bbb8f53da7a48"}, -] - -[package.dependencies] -eth-typing = ">=3" -eth-utils = ">=2" - -[package.extras] -coincurve = ["coincurve (>=12.0.0)"] -dev = ["asn1tools (>=0.146.2)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "coincurve (>=12.0.0)", "eth-hash[pysha3]", "factory-boy (>=3.0.1)", "hypothesis (>=5.10.3)", "ipython", "pre-commit (>=3.4.0)", "pyasn1 (>=0.4.5)", "pytest (>=7.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["towncrier (>=21,<22)"] -test = ["asn1tools (>=0.146.2)", "eth-hash[pysha3]", "factory-boy (>=3.0.1)", "hypothesis (>=5.10.3)", "pyasn1 (>=0.4.5)", "pytest (>=7.0.0)"] - -[[package]] -name = "eth-rlp" -version = "1.0.1" -description = "eth-rlp: RLP definitions for common Ethereum objects in Python" -optional = false -python-versions = ">=3.8, <4" -files = [ - {file = "eth-rlp-1.0.1.tar.gz", hash = "sha256:d61dbda892ee1220f28fb3663c08f6383c305db9f1f5624dc585c9cd05115027"}, - {file = "eth_rlp-1.0.1-py3-none-any.whl", hash = "sha256:dd76515d71654277377d48876b88e839d61553aaf56952e580bb7cebef2b1517"}, -] - -[package.dependencies] -eth-utils = ">=2.0.0" -hexbytes = ">=0.1.0,<1" -rlp = ">=0.6.0" -typing-extensions = {version = ">=4.0.1", markers = "python_version <= \"3.11\""} - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -test = ["eth-hash[pycryptodome]", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "eth-typing" -version = "5.0.0" -description = "eth-typing: Common type annotations for ethereum python packages" -optional = false -python-versions = "<4,>=3.8" -files = [ - {file = "eth_typing-5.0.0-py3-none-any.whl", hash = "sha256:c7ebc8595e7b65175bb4b4176c2b548ab21b13329f2058e84d4f8c289ba9f577"}, - {file = "eth_typing-5.0.0.tar.gz", hash = "sha256:87ce7cee75665c09d2dcff8de1b496609d5e32fcd2e2b1d8fc0370c29eedcdc0"}, -] - -[package.dependencies] -typing-extensions = ">=4.5.0" - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "eth-utils" -version = "4.1.1" -description = "eth-utils: Common utility functions for python code that interacts with Ethereum" -optional = false -python-versions = "<4,>=3.8" -files = [ - {file = "eth_utils-4.1.1-py3-none-any.whl", hash = "sha256:ccbbac68a6d65cb6e294c5bcb6c6a5cec79a241c56dc5d9c345ed788c30f8534"}, - {file = "eth_utils-4.1.1.tar.gz", hash = "sha256:71c8d10dec7494aeed20fa7a4d52ec2ce4a2e52fdce80aab4f5c3c19f3648b25"}, -] - -[package.dependencies] -cytoolz = {version = ">=0.10.1", markers = "implementation_name == \"cpython\""} -eth-hash = ">=0.3.1" -eth-typing = ">=3.0.0" -toolz = {version = ">0.8.2", markers = "implementation_name == \"pypy\""} - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "hypothesis (>=4.43.0)", "ipython", "mypy (==1.5.1)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -test = ["hypothesis (>=4.43.0)", "mypy (==1.5.1)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "executing" -version = "2.1.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] - -[[package]] -name = "frozenlist" -version = "1.4.1" -description = "A list-like structure which implements collections.abc.MutableSequence" -optional = false -python-versions = ">=3.8" -files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, -] - -[[package]] -name = "genpy" -version = "2021.1" -description = "AST-based generation of Python source code" -optional = false -python-versions = "~=3.6" -files = [ - {file = "genpy-2021.1.tar.gz", hash = "sha256:9bc062fa98c5c466ff464d8974be81a6bf67af9247b5e5176215ad1e81a6cdac"}, -] - -[package.dependencies] -numpy = ">=1.6" -pytools = ">=2015.1.2" - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "hexbytes" -version = "0.3.1" -description = "hexbytes: Python `bytes` subclass that decodes hex, with a readable console output" -optional = false -python-versions = ">=3.7, <4" -files = [ - {file = "hexbytes-0.3.1-py3-none-any.whl", hash = "sha256:383595ad75026cf00abd570f44b368c6cdac0c6becfae5c39ff88829877f8a59"}, - {file = "hexbytes-0.3.1.tar.gz", hash = "sha256:a3fe35c6831ee8fafd048c4c086b986075fc14fd46258fa24ecb8d65745f9a9d"}, -] - -[package.extras] -dev = ["black (>=22)", "bumpversion (>=0.5.3)", "eth-utils (>=1.0.1,<3)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "hypothesis (>=3.44.24,<=6.31.6)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=5.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -lint = ["black (>=22)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=5.0.0)"] -test = ["eth-utils (>=1.0.1,<3)", "hypothesis (>=3.44.24,<=6.31.6)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "httpcore" -version = "0.16.3" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.7" -files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, -] - -[package.dependencies] -anyio = ">=3.0,<5.0" -certifi = "*" -h11 = ">=0.13,<0.15" -sniffio = "==1.*" - -[package.extras] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] - -[[package]] -name = "httpx" -version = "0.23.3" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.7" -files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, -] - -[package.dependencies] -certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "ipython" -version = "8.27.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.10" -files = [ - {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, - {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack-data = "*" -traitlets = ">=5.13.0" -typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} - -[package.extras] -all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] -kernel = ["ipykernel"] -matplotlib = ["matplotlib"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "jedi" -version = "0.19.1" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, -] - -[package.dependencies] -parso = ">=0.8.3,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] - -[[package]] -name = "jsonalias" -version = "0.1.1" -description = "A microlibrary that defines a Json type alias for Python." -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "jsonalias-0.1.1-py3-none-any.whl", hash = "sha256:a56d2888e6397812c606156504e861e8ec00e188005af149f003c787db3d3f18"}, - {file = "jsonalias-0.1.1.tar.gz", hash = "sha256:64f04d935397d579fc94509e1fcb6212f2d081235d9d6395bd10baedf760a769"}, -] - -[[package]] -name = "jsonschema" -version = "4.23.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, - {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, -] - -[package.dependencies] -attrs = ">=22.2.0" -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rpds-py = ">=0.7.1" - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-specifications" -version = "2023.12.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, -] - -[package.dependencies] -referencing = ">=0.31.0" - -[[package]] -name = "lru-dict" -version = "1.2.0" -description = "An Dict like LRU container." -optional = false -python-versions = "*" -files = [ - {file = "lru-dict-1.2.0.tar.gz", hash = "sha256:13c56782f19d68ddf4d8db0170041192859616514c706b126d0df2ec72a11bd7"}, - {file = "lru_dict-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:de906e5486b5c053d15b7731583c25e3c9147c288ac8152a6d1f9bccdec72641"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604d07c7604b20b3130405d137cae61579578b0e8377daae4125098feebcb970"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:203b3e78d03d88f491fa134f85a42919020686b6e6f2d09759b2f5517260c651"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:020b93870f8c7195774cbd94f033b96c14f51c57537969965c3af300331724fe"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1184d91cfebd5d1e659d47f17a60185bbf621635ca56dcdc46c6a1745d25df5c"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fc42882b554a86e564e0b662da47b8a4b32fa966920bd165e27bb8079a323bc1"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:18ee88ada65bd2ffd483023be0fa1c0a6a051ef666d1cd89e921dcce134149f2"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:756230c22257597b7557eaef7f90484c489e9ba78e5bb6ab5a5bcfb6b03cb075"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c4da599af36618881748b5db457d937955bb2b4800db891647d46767d636c408"}, - {file = "lru_dict-1.2.0-cp310-cp310-win32.whl", hash = "sha256:35a142a7d1a4fd5d5799cc4f8ab2fff50a598d8cee1d1c611f50722b3e27874f"}, - {file = "lru_dict-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:6da5b8099766c4da3bf1ed6e7d7f5eff1681aff6b5987d1258a13bd2ed54f0c9"}, - {file = "lru_dict-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b20b7c9beb481e92e07368ebfaa363ed7ef61e65ffe6e0edbdbaceb33e134124"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22147367b296be31cc858bf167c448af02435cac44806b228c9be8117f1bfce4"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34a3091abeb95e707f381a8b5b7dc8e4ee016316c659c49b726857b0d6d1bd7a"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:877801a20f05c467126b55338a4e9fa30e2a141eb7b0b740794571b7d619ee11"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d3336e901acec897bcd318c42c2b93d5f1d038e67688f497045fc6bad2c0be7"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8dafc481d2defb381f19b22cc51837e8a42631e98e34b9e0892245cc96593deb"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:87bbad3f5c3de8897b8c1263a9af73bbb6469fb90e7b57225dad89b8ef62cd8d"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:25f9e0bc2fe8f41c2711ccefd2871f8a5f50a39e6293b68c3dec576112937aad"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ae301c282a499dc1968dd633cfef8771dd84228ae9d40002a3ea990e4ff0c469"}, - {file = "lru_dict-1.2.0-cp311-cp311-win32.whl", hash = "sha256:c9617583173a29048e11397f165501edc5ae223504a404b2532a212a71ecc9ed"}, - {file = "lru_dict-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6b7a031e47421d4b7aa626b8c91c180a9f037f89e5d0a71c4bb7afcf4036c774"}, - {file = "lru_dict-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ea2ac3f7a7a2f32f194c84d82a034e66780057fd908b421becd2f173504d040e"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd46c94966f631a81ffe33eee928db58e9fbee15baba5923d284aeadc0e0fa76"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:086ce993414f0b28530ded7e004c77dc57c5748fa6da488602aa6e7f79e6210e"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df25a426446197488a6702954dcc1de511deee20c9db730499a2aa83fddf0df1"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c53b12b89bd7a6c79f0536ff0d0a84fdf4ab5f6252d94b24b9b753bd9ada2ddf"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f9484016e6765bd295708cccc9def49f708ce07ac003808f69efa386633affb9"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d0f7ec902a0097ac39f1922c89be9eaccf00eb87751e28915320b4f72912d057"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:981ef3edc82da38d39eb60eae225b88a538d47b90cce2e5808846fd2cf64384b"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e25b2e90a032dc248213af7f3f3e975e1934b204f3b16aeeaeaff27a3b65e128"}, - {file = "lru_dict-1.2.0-cp36-cp36m-win32.whl", hash = "sha256:59f3df78e94e07959f17764e7fa7ca6b54e9296953d2626a112eab08e1beb2db"}, - {file = "lru_dict-1.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:de24b47159e07833aeab517d9cb1c3c5c2d6445cc378b1c2f1d8d15fb4841d63"}, - {file = "lru_dict-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d0dd4cd58220351233002f910e35cc01d30337696b55c6578f71318b137770f9"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a87bdc291718bbdf9ea4be12ae7af26cbf0706fa62c2ac332748e3116c5510a7"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05fb8744f91f58479cbe07ed80ada6696ec7df21ea1740891d4107a8dd99a970"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f6e8a3fc91481b40395316a14c94daa0f0a5de62e7e01a7d589f8d29224052"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b172fce0a0ffc0fa6d282c14256d5a68b5db1e64719c2915e69084c4b6bf555"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e707d93bae8f0a14e6df1ae8b0f076532b35f00e691995f33132d806a88e5c18"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b9ec7a4a0d6b8297102aa56758434fb1fca276a82ed7362e37817407185c3abb"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f404dcc8172da1f28da9b1f0087009578e608a4899b96d244925c4f463201f2a"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1171ad3bff32aa8086778be4a3bdff595cc2692e78685bcce9cb06b96b22dcc2"}, - {file = "lru_dict-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:0c316dfa3897fabaa1fe08aae89352a3b109e5f88b25529bc01e98ac029bf878"}, - {file = "lru_dict-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5919dd04446bc1ee8d6ecda2187deeebfff5903538ae71083e069bc678599446"}, - {file = "lru_dict-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fbf36c5a220a85187cacc1fcb7dd87070e04b5fc28df7a43f6842f7c8224a388"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712e71b64da181e1c0a2eaa76cd860265980cd15cb0e0498602b8aa35d5db9f8"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f54908bf91280a9b8fa6a8c8f3c2f65850ce6acae2852bbe292391628ebca42f"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3838e33710935da2ade1dd404a8b936d571e29268a70ff4ca5ba758abb3850df"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5d5a5f976b39af73324f2b793862859902ccb9542621856d51a5993064f25e4"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8bda3a9afd241ee0181661decaae25e5336ce513ac268ab57da737eacaa7871f"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd2cd1b998ea4c8c1dad829fc4fa88aeed4dee555b5e03c132fc618e6123f168"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b55753ee23028ba8644fd22e50de7b8f85fa60b562a0fafaad788701d6131ff8"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e51fa6a203fa91d415f3b2900e5748ec8e06ad75777c98cc3aeb3983ca416d7"}, - {file = "lru_dict-1.2.0-cp38-cp38-win32.whl", hash = "sha256:cd6806313606559e6c7adfa0dbeb30fc5ab625f00958c3d93f84831e7a32b71e"}, - {file = "lru_dict-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d90a70c53b0566084447c3ef9374cc5a9be886e867b36f89495f211baabd322"}, - {file = "lru_dict-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3ea7571b6bf2090a85ff037e6593bbafe1a8598d5c3b4560eb56187bcccb4dc"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:287c2115a59c1c9ed0d5d8ae7671e594b1206c36ea9df2fca6b17b86c468ff99"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5ccfd2291c93746a286c87c3f895165b697399969d24c54804ec3ec559d4e43"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b710f0f4d7ec4f9fa89dfde7002f80bcd77de8024017e70706b0911ea086e2ef"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5345bf50e127bd2767e9fd42393635bbc0146eac01f6baf6ef12c332d1a6a329"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:291d13f85224551913a78fe695cde04cbca9dcb1d84c540167c443eb913603c9"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d5bb41bc74b321789803d45b124fc2145c1b3353b4ad43296d9d1d242574969b"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0facf49b053bf4926d92d8d5a46fe07eecd2af0441add0182c7432d53d6da667"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:987b73a06bcf5a95d7dc296241c6b1f9bc6cda42586948c9dabf386dc2bef1cd"}, - {file = "lru_dict-1.2.0-cp39-cp39-win32.whl", hash = "sha256:231d7608f029dda42f9610e5723614a35b1fff035a8060cf7d2be19f1711ace8"}, - {file = "lru_dict-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:71da89e134747e20ed5b8ad5b4ee93fc5b31022c2b71e8176e73c5a44699061b"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:21b3090928c7b6cec509e755cc3ab742154b33660a9b433923bd12c37c448e3e"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaecd7085212d0aa4cd855f38b9d61803d6509731138bf798a9594745953245b"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ead83ac59a29d6439ddff46e205ce32f8b7f71a6bd8062347f77e232825e3d0a"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:312b6b2a30188586fe71358f0f33e4bac882d33f5e5019b26f084363f42f986f"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b30122e098c80e36d0117810d46459a46313421ce3298709170b687dc1240b02"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f010cfad3ab10676e44dc72a813c968cd586f37b466d27cde73d1f7f1ba158c2"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20f5f411f7751ad9a2c02e80287cedf69ae032edd321fe696e310d32dd30a1f8"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afdadd73304c9befaed02eb42f5f09fdc16288de0a08b32b8080f0f0f6350aa6"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7ab0c10c4fa99dc9e26b04e6b62ac32d2bcaea3aad9b81ec8ce9a7aa32b7b1b"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:edad398d5d402c43d2adada390dd83c74e46e020945ff4df801166047013617e"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:91d577a11b84387013815b1ad0bb6e604558d646003b44c92b3ddf886ad0f879"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb12f19cdf9c4f2d9aa259562e19b188ff34afab28dd9509ff32a3f1c2c29326"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e4c85aa8844bdca3c8abac3b7f78da1531c74e9f8b3e4890c6e6d86a5a3f6c0"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6acbd097b15bead4de8e83e8a1030bb4d8257723669097eac643a301a952f0"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b6613daa851745dd22b860651de930275be9d3e9373283a2164992abacb75b62"}, -] - -[package.extras] -test = ["pytest"] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - -[[package]] -name = "more-itertools" -version = "8.14.0" -description = "More routines for operating on iterables, beyond itertools" -optional = false -python-versions = ">=3.5" -files = [ - {file = "more-itertools-8.14.0.tar.gz", hash = "sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750"}, - {file = "more_itertools-8.14.0-py3-none-any.whl", hash = "sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2"}, -] - -[[package]] -name = "multidict" -version = "6.1.0" -description = "multidict implementation" -optional = false -python-versions = ">=3.8" -files = [ - {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, - {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, - {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, - {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, - {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, - {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, - {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, - {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, - {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, - {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, - {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, - {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, - {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, - {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, - {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, - {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, - {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, -] - -[[package]] -name = "mypy" -version = "1.11.2" -description = "Optional static typing for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, - {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, - {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, - {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, - {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, - {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, - {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, - {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, - {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, - {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, - {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, - {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, - {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, - {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, -] - -[package.dependencies] -mypy-extensions = ">=1.0.0" -typing-extensions = ">=4.6.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "numpy" -version = "2.1.1" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.10" -files = [ - {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, - {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, - {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, - {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, - {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, - {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, - {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, - {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, - {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, - {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, -] - -[[package]] -name = "parsimonious" -version = "0.9.0" -description = "(Soon to be) the fastest pure-Python PEG parser I could muster" -optional = false -python-versions = "*" -files = [ - {file = "parsimonious-0.9.0.tar.gz", hash = "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1"}, -] - -[package.dependencies] -regex = ">=2022.3.15" - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "prompt-toolkit" -version = "3.0.48" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "protobuf" -version = "5.28.2" -description = "" -optional = false -python-versions = ">=3.8" -files = [ - {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, - {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, - {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, - {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, - {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, - {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, - {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, - {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, - {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, -] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - -[[package]] -name = "pycryptodome" -version = "3.20.0" -description = "Cryptographic library for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pycryptodome-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-win32.whl", hash = "sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818"}, - {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044"}, - {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a"}, - {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2"}, - {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c"}, - {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25"}, - {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128"}, - {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c"}, - {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4"}, - {file = "pycryptodome-3.20.0-cp35-abi3-win32.whl", hash = "sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72"}, - {file = "pycryptodome-3.20.0-cp35-abi3-win_amd64.whl", hash = "sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9"}, - {file = "pycryptodome-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a"}, - {file = "pycryptodome-3.20.0-pp27-pypy_73-win32.whl", hash = "sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e"}, - {file = "pycryptodome-3.20.0.tar.gz", hash = "sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7"}, -] - -[[package]] -name = "pydantic" -version = "2.9.2" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] - -[[package]] -name = "pydantic-core" -version = "2.23.4" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pyflakes" -version = "3.2.0" -description = "passive checker of Python programs" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, - {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, -] - -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pyheck" -version = "0.1.5" -description = "Python bindings for heck, the Rust case conversion library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyheck-0.1.5-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:44caf2b7a49d71fdeb0469e9f35886987ad815a8638b3c5b5c83f351d6aed413"}, - {file = "pyheck-0.1.5-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:316a842b94beff6e59a97dbcc590e9be92a932e59126b0faa9ac750384f27eaf"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b6169397395ff041f056bfb36c1957a788a1cd7cb967a927fcae7917ff1b6aa"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e9d101e1c599227280e34eeccab0414246e70a91a1cabb4c4868dca284f2be7d"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:69d6509138909df92b2f2f837518dca118ef08ae3c804044ae511b81b7aecb4d"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ce4a2e1b4778051b8f31183e321a034603f3957b6e95cf03bf5f231c8ea3066"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69387b70d910637ab6dc8dc378c8e0b4037cee2c51a9c6f64ce5331b010f5de3"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0fb50b7d899d2a583ec2ac291b8ec2afb10f0e32c4ac290148d3da15927787f8"}, - {file = "pyheck-0.1.5-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:aa8dfd0883212f8495e0bae6eb6ea670c56f9b197b5fe6fb5cae9fd5ec56fb7c"}, - {file = "pyheck-0.1.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b7c07506b9591e27f8241bf7a72bc4d5c4ac30dedb332efb87e402e49029f233"}, - {file = "pyheck-0.1.5-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:9ee256cafbdab6c5fcca22d0910176d820bf1e1298773e64f4eea79f51218cc7"}, - {file = "pyheck-0.1.5-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:e9ba36060abc55127c3813de398b4013c05be6118cfae3cfa3d978f7b4c84dea"}, - {file = "pyheck-0.1.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:64201a6d213bec443aeb33f66c60cea61aaf6257e48a19159ac69a5afad4768e"}, - {file = "pyheck-0.1.5-cp37-abi3-win32.whl", hash = "sha256:1501fcfd15f7c05c6bfe38915f5e514ac95fc63e945f7d8b089d30c1b8fdb2c5"}, - {file = "pyheck-0.1.5-cp37-abi3-win_amd64.whl", hash = "sha256:e519f80a0ef87a8f880bfdf239e396e238dcaed34bec1ea7ef526c4873220e82"}, - {file = "pyheck-0.1.5.tar.gz", hash = "sha256:5c9fe372d540c5dbcb76bf062f951d998d0e14c906c842a52f1cd5de208e183a"}, -] - -[[package]] -name = "pytools" -version = "2024.1.14" -description = "A collection of tools for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytools-2024.1.14-py3-none-any.whl", hash = "sha256:f70c549cdab36e4d31a48a88ce8d969af24816482d73b10012dcac42ce9425e8"}, - {file = "pytools-2024.1.14.tar.gz", hash = "sha256:39e5bbaf81fa432e688b82dd0980212d18f97b23e51a8c7afe7592249fe40ab1"}, -] - -[package.dependencies] -platformdirs = ">=2.2" -typing-extensions = {version = ">=4", markers = "python_version < \"3.13\""} - -[package.extras] -numpy = ["numpy (>=1.6)"] -siphash = ["siphash24 (>=1.6)"] -test = ["mypy", "pytest", "ruff"] - -[[package]] -name = "pyunormalize" -version = "16.0.0" -description = "Unicode normalization forms (NFC, NFKC, NFD, NFKD). A library independent of the Python core Unicode database." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyunormalize-16.0.0-py3-none-any.whl", hash = "sha256:c647d95e5d1e2ea9a2f448d1d95d8518348df24eab5c3fd32d2b5c3300a49152"}, - {file = "pyunormalize-16.0.0.tar.gz", hash = "sha256:2e1dfbb4a118154ae26f70710426a52a364b926c9191f764601f5a8cb12761f7"}, -] - -[[package]] -name = "pywin32" -version = "306" -description = "Python for Window Extensions" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, -] - -[[package]] -name = "referencing" -version = "0.35.1" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - -[[package]] -name = "regex" -version = "2024.9.11" -description = "Alternative regular expression module, to replace re." -optional = false -python-versions = ">=3.8" -files = [ - {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, - {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, - {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, - {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, - {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, - {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, - {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, - {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, - {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, - {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, - {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, - {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, - {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, - {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, - {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, - {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, - {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, - {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, - {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, - {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, - {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, - {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, - {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, - {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, - {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, - {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, - {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, - {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, - {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, - {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, - {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - -[[package]] -name = "rlp" -version = "4.0.1" -description = "rlp: A package for Recursive Length Prefix encoding and decoding" -optional = false -python-versions = "<4,>=3.8" -files = [ - {file = "rlp-4.0.1-py3-none-any.whl", hash = "sha256:ff6846c3c27b97ee0492373aa074a7c3046aadd973320f4fffa7ac45564b0258"}, - {file = "rlp-4.0.1.tar.gz", hash = "sha256:bcefb11013dfadf8902642337923bd0c786dc8a27cb4c21da6e154e52869ecb1"}, -] - -[package.dependencies] -eth-utils = ">=2" - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "hypothesis (==5.19.0)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -rust-backend = ["rusty-rlp (>=0.2.1)"] -test = ["hypothesis (==5.19.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] - -[[package]] -name = "rpds-py" -version = "0.20.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, -] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "solana" -version = "0.34.3" -description = "Solana Python API" -optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "solana-0.34.3-py3-none-any.whl", hash = "sha256:b81b6e85b4e638864318f866c7da2d102ec86401ce22c43cdf80d960cb1ddfc4"}, - {file = "solana-0.34.3.tar.gz", hash = "sha256:f3d62098d8451f37fcc6d631ddc92d260f767710529971ddd361a854747f88c6"}, -] - -[package.dependencies] -construct-typing = ">=0.5.2,<0.6.0" -httpx = ">=0.23.0" -solders = ">=0.21.0,<0.22.0" -typing-extensions = ">=4.2.0" -websockets = ">=9.0,<12.0" - -[[package]] -name = "solders" -version = "0.21.0" -description = "Python bindings for Solana Rust tools" -optional = false -python-versions = ">=3.7" -files = [ - {file = "solders-0.21.0-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7df88e59aea016644c0b2eac84f2f931d5aa570c654132770263b26f2928fdb7"}, - {file = "solders-0.21.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a11dfc5933707c466880ef2116f1bffc74659bf677b79479f4280247d60543c9"}, - {file = "solders-0.21.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33a28fedff80defd01455844700e3b9924c06a87d7ca93aff0a9298a9eb902ac"}, - {file = "solders-0.21.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3ac70badd0da7e0d87db1c9c2edac63e48470903fd5f28e2fd6b22c7624ef52f"}, - {file = "solders-0.21.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac79feca36470945ac026433828d4105a4b3bada5422ea77b1083c0e8fe93872"}, - {file = "solders-0.21.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:6993e2e1709aa04b94267597dc31e29ae5625cde3d65fdf452c6366c6c7f41cd"}, - {file = "solders-0.21.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9521974ffa8b0fc8a4aa3b65f9057392c214a814c10af4f8cd2ad1d3f943ae61"}, - {file = "solders-0.21.0-cp37-abi3-win_amd64.whl", hash = "sha256:7258b0faa97ab3dc2e1951082af63f2971f178519540f7abac43ec2385d84b7f"}, - {file = "solders-0.21.0.tar.gz", hash = "sha256:a228c09b690f215acb01c55e17246efdfdb7c013f7332b057ecd0499363868ad"}, -] - -[package.dependencies] -jsonalias = "0.1.1" -typing-extensions = ">=4.2.0" - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "sumtypes" -version = "0.1a6" -description = "Algebraic types for Python (notably providing Sum Types, aka Tagged Unions)" -optional = false -python-versions = "*" -files = [ - {file = "sumtypes-0.1a6-py2.py3-none-any.whl", hash = "sha256:3e9d71322dd927d25d935072f8be7daec655ea292fd392359a5bb2c1e53dfdc3"}, - {file = "sumtypes-0.1a6.tar.gz", hash = "sha256:1a6ff095e06a1885f340ddab803e0f38e3f9bed81f9090164ca9682e04e96b43"}, -] - -[package.dependencies] -attrs = "*" - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "toolz" -version = "0.11.2" -description = "List processing tools and functional utilities" -optional = false -python-versions = ">=3.5" -files = [ - {file = "toolz-0.11.2-py3-none-any.whl", hash = "sha256:a5700ce83414c64514d82d60bcda8aabfde092d1c1a8663f9200c07fdcc6da8f"}, - {file = "toolz-0.11.2.tar.gz", hash = "sha256:6b312d5e15138552f1bda8a4e66c30e236c831b612b2bf0005f8a1df10a4bc33"}, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - -[[package]] -name = "typer" -version = "0.4.1" -description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -optional = false -python-versions = ">=3.6" -files = [ - {file = "typer-0.4.1-py3-none-any.whl", hash = "sha256:e8467f0ebac0c81366c2168d6ad9f888efdfb6d4e1d3d5b4a004f46fa444b5c3"}, - {file = "typer-0.4.1.tar.gz", hash = "sha256:5646aef0d936b2c761a10393f0384ee6b5c7fe0bb3e5cd710b17134ca1d99cff"}, -] - -[package.dependencies] -click = ">=7.1.1,<9.0.0" - -[package.extras] -all = ["colorama (>=0.4.3,<0.5.0)", "shellingham (>=1.3.0,<2.0.0)"] -dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)"] -doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)"] -test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<5.4.0)", "pytest-cov (>=2.10.0,<3.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<2.0.0)", "shellingham (>=1.3.0,<2.0.0)"] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "web3" -version = "6.20.1" -description = "web3.py" -optional = false -python-versions = ">=3.7.2" -files = [ - {file = "web3-6.20.1-py3-none-any.whl", hash = "sha256:16fe72aeb48bbd5f7e7e64b323a0d3a16522a28eb4f19ef9f9dd6ce7ee813c82"}, - {file = "web3-6.20.1.tar.gz", hash = "sha256:a29bc1863734e1c05f128ddbc56878f299ea71776806e667b581a83b5d5be0ed"}, -] - -[package.dependencies] -aiohttp = ">=3.7.4.post0" -eth-abi = ">=4.0.0" -eth-account = ">=0.8.0,<0.13" -eth-hash = {version = ">=0.5.1", extras = ["pycryptodome"]} -eth-typing = ">=3.0.0,<4.2.0 || >4.2.0" -eth-utils = ">=2.1.0" -hexbytes = ">=0.1.0,<0.4.0" -jsonschema = ">=4.0.0" -lru-dict = ">=1.1.6,<1.3.0" -protobuf = ">=4.21.6" -pyunormalize = ">=15.0.0" -pywin32 = {version = ">=223", markers = "platform_system == \"Windows\""} -requests = ">=2.16.0" -typing-extensions = ">=4.0.1" -websockets = ">=10.0.0" - -[package.extras] -dev = ["build (>=0.9.0)", "bumpversion", "eth-tester[py-evm] (>=0.11.0b1,<0.12.0b1)", "eth-tester[py-evm] (>=0.9.0b1,<0.10.0b1)", "flaky (>=3.7.0)", "hypothesis (>=3.31.2)", "importlib-metadata (<5.0)", "ipfshttpclient (==0.8.0a2)", "pre-commit (>=2.21.0)", "py-geth (>=3.14.0)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.21.2,<0.23)", "pytest-mock (>=1.10)", "pytest-watch (>=4.2)", "pytest-xdist (>=1.29)", "setuptools (>=38.6.0)", "sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=3.18.0)", "tqdm (>4.32)", "twine (>=1.13)", "when-changed (>=0.3.0)"] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -ipfs = ["ipfshttpclient (==0.8.0a2)"] -tester = ["eth-tester[py-evm] (>=0.11.0b1,<0.12.0b1)", "eth-tester[py-evm] (>=0.9.0b1,<0.10.0b1)", "py-geth (>=3.14.0)"] - -[[package]] -name = "websockets" -version = "10.4" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48"}, - {file = "websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab"}, - {file = "websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c"}, - {file = "websockets-10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032"}, - {file = "websockets-10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4"}, - {file = "websockets-10.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50"}, - {file = "websockets-10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8"}, - {file = "websockets-10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1"}, - {file = "websockets-10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331"}, - {file = "websockets-10.4-cp310-cp310-win32.whl", hash = "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a"}, - {file = "websockets-10.4-cp310-cp310-win_amd64.whl", hash = "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089"}, - {file = "websockets-10.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4"}, - {file = "websockets-10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f"}, - {file = "websockets-10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c"}, - {file = "websockets-10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46"}, - {file = "websockets-10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96"}, - {file = "websockets-10.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa"}, - {file = "websockets-10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c"}, - {file = "websockets-10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106"}, - {file = "websockets-10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9"}, - {file = "websockets-10.4-cp311-cp311-win32.whl", hash = "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8"}, - {file = "websockets-10.4-cp311-cp311-win_amd64.whl", hash = "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882"}, - {file = "websockets-10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb"}, - {file = "websockets-10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc"}, - {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033"}, - {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41"}, - {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df"}, - {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea"}, - {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c"}, - {file = "websockets-10.4-cp37-cp37m-win32.whl", hash = "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038"}, - {file = "websockets-10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28"}, - {file = "websockets-10.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94"}, - {file = "websockets-10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63"}, - {file = "websockets-10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf"}, - {file = "websockets-10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6"}, - {file = "websockets-10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8"}, - {file = "websockets-10.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b"}, - {file = "websockets-10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c"}, - {file = "websockets-10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b"}, - {file = "websockets-10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56"}, - {file = "websockets-10.4-cp38-cp38-win32.whl", hash = "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a"}, - {file = "websockets-10.4-cp38-cp38-win_amd64.whl", hash = "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6"}, - {file = "websockets-10.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f"}, - {file = "websockets-10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112"}, - {file = "websockets-10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f"}, - {file = "websockets-10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d"}, - {file = "websockets-10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4"}, - {file = "websockets-10.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0"}, - {file = "websockets-10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c"}, - {file = "websockets-10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269"}, - {file = "websockets-10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b"}, - {file = "websockets-10.4-cp39-cp39-win32.whl", hash = "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588"}, - {file = "websockets-10.4-cp39-cp39-win_amd64.whl", hash = "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74"}, - {file = "websockets-10.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193"}, - {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342"}, - {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179"}, - {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485"}, - {file = "websockets-10.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631"}, - {file = "websockets-10.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0"}, - {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393"}, - {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576"}, - {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f"}, - {file = "websockets-10.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1"}, - {file = "websockets-10.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4"}, - {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf"}, - {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3"}, - {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13"}, - {file = "websockets-10.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72"}, - {file = "websockets-10.4.tar.gz", hash = "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3"}, -] - -[[package]] -name = "yarl" -version = "1.12.1" -description = "Yet another URL library" -optional = false -python-versions = ">=3.8" -files = [ - {file = "yarl-1.12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:64c5b0f2b937fe40d0967516eee5504b23cb247b8b7ffeba7213a467d9646fdc"}, - {file = "yarl-1.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e430ac432f969ef21770645743611c1618362309e3ad7cab45acd1ad1a540ff"}, - {file = "yarl-1.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3e26e64f42bce5ddf9002092b2c37b13071c2e6413d5c05f9fa9de58ed2f7749"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0103c52f8dfe5d573c856322149ddcd6d28f51b4d4a3ee5c4b3c1b0a05c3d034"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b63465b53baeaf2122a337d4ab57d6bbdd09fcadceb17a974cfa8a0300ad9c67"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17d4dc4ff47893a06737b8788ed2ba2f5ac4e8bb40281c8603920f7d011d5bdd"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b54949267bd5704324397efe9fbb6aa306466dee067550964e994d309db5f1"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10b690cd78cbaca2f96a7462f303fdd2b596d3978b49892e4b05a7567c591572"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c85ab016e96a975afbdb9d49ca90f3bca9920ef27c64300843fe91c3d59d8d20"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c1caa5763d1770216596e0a71b5567f27aac28c95992110212c108ec74589a48"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:595bbcdbfc4a9c6989d7489dca8510cba053ff46b16c84ffd95ac8e90711d419"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e64f0421892a207d3780903085c1b04efeb53b16803b23d947de5a7261b71355"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:319c206e83e46ec2421b25b300c8482b6fe8a018baca246be308c736d9dab267"}, - {file = "yarl-1.12.1-cp310-cp310-win32.whl", hash = "sha256:da045bd1147d12bd43fb032296640a7cc17a7f2eaba67495988362e99db24fd2"}, - {file = "yarl-1.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:aebbd47df77190ada603157f0b3670d578c110c31746ecc5875c394fdcc59a99"}, - {file = "yarl-1.12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:28389a68981676bf74e2e199fe42f35d1aa27a9c98e3a03e6f58d2d3d054afe1"}, - {file = "yarl-1.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f736f54565f8dd7e3ab664fef2bc461d7593a389a7f28d4904af8d55a91bd55f"}, - {file = "yarl-1.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dee0496d5f1a8f57f0f28a16f81a2033fc057a2cf9cd710742d11828f8c80e2"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8981a94a27ac520a398302afb74ae2c0be1c3d2d215c75c582186a006c9e7b0"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff54340fc1129e8e181827e2234af3ff659b4f17d9bbe77f43bc19e6577fadec"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54c8cee662b5f8c30ad7eedfc26123f845f007798e4ff1001d9528fe959fd23c"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e97a29b37830ba1262d8dfd48ddb5b28ad4d3ebecc5d93a9c7591d98641ec737"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c89894cc6f6ddd993813e79244b36b215c14f65f9e4f1660b1f2ba9e5594b95"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:712ba8722c0699daf186de089ddc4677651eb9875ed7447b2ad50697522cbdd9"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6e9a9f50892153bad5046c2a6df153224aa6f0573a5a8ab44fc54a1e886f6e21"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1d4017e78fb22bc797c089b746230ad78ecd3cdb215bc0bd61cb72b5867da57e"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f494c01b28645c431239863cb17af8b8d15b93b0d697a0320d5dd34cd9d7c2fa"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de4544b1fb29cf14870c4e2b8a897c0242449f5dcebd3e0366aa0aa3cf58a23a"}, - {file = "yarl-1.12.1-cp311-cp311-win32.whl", hash = "sha256:7564525a4673fde53dee7d4c307a961c0951918f0b8c7f09b2c9e02067cf6504"}, - {file = "yarl-1.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:f23bb1a7a6e8e8b612a164fdd08e683bcc16c76f928d6dbb7bdbee2374fbfee6"}, - {file = "yarl-1.12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a3e2aff8b822ab0e0bdbed9f50494b3a35629c4b9488ae391659973a37a9f53f"}, - {file = "yarl-1.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:22dda2799c8d39041d731e02bf7690f0ef34f1691d9ac9dfcb98dd1e94c8b058"}, - {file = "yarl-1.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18c2a7757561f05439c243f517dbbb174cadfae3a72dee4ae7c693f5b336570f"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:835010cc17d0020e7931d39e487d72c8e01c98e669b6896a8b8c9aa8ca69a949"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2254fe137c4a360b0a13173a56444f756252c9283ba4d267ca8e9081cd140ea"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6a071d2c3d39b4104f94fc08ab349e9b19b951ad4b8e3b6d7ea92d6ef7ccaf8"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73a183042ae0918c82ce2df38c3db2409b0eeae88e3afdfc80fb67471a95b33b"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326b8a079a9afcac0575971e56dabdf7abb2ea89a893e6949b77adfeb058b50e"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:126309c0f52a2219b3d1048aca00766429a1346596b186d51d9fa5d2070b7b13"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ba1c779b45a399cc25f511c681016626f69e51e45b9d350d7581998722825af9"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:af1107299cef049ad00a93df4809517be432283a0847bcae48343ebe5ea340dc"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:20d817c0893191b2ab0ba30b45b77761e8dfec30a029b7c7063055ca71157f84"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d4f818f6371970d6a5d1e42878389bbfb69dcde631e4bbac5ec1cb11158565ca"}, - {file = "yarl-1.12.1-cp312-cp312-win32.whl", hash = "sha256:0ac33d22b2604b020569a82d5f8a03ba637ba42cc1adf31f616af70baf81710b"}, - {file = "yarl-1.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:fd24996e12e1ba7c397c44be75ca299da14cde34d74bc5508cce233676cc68d0"}, - {file = "yarl-1.12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dea360778e0668a7ad25d7727d03364de8a45bfd5d808f81253516b9f2217765"}, - {file = "yarl-1.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1f50a37aeeb5179d293465e522fd686080928c4d89e0ff215e1f963405ec4def"}, - {file = "yarl-1.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0274b1b7a9c9c32b7bf250583e673ff99fb9fccb389215841e2652d9982de740"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4f3ab9eb8ab2d585ece959c48d234f7b39ac0ca1954a34d8b8e58a52064bdb3"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d31dd0245d88cf7239e96e8f2a99f815b06e458a5854150f8e6f0e61618d41b"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a96198d5d26f40557d986c1253bfe0e02d18c9d9b93cf389daf1a3c9f7c755fa"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddae504cfb556fe220efae65e35be63cd11e3c314b202723fc2119ce19f0ca2e"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bce00f3b1f7f644faae89677ca68645ed5365f1c7f874fdd5ebf730a69640d38"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eee5ff934b0c9f4537ff9596169d56cab1890918004791a7a06b879b3ba2a7ef"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4ea99e64b2ad2635e0f0597b63f5ea6c374791ff2fa81cdd4bad8ed9f047f56f"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c667b383529520b8dd6bd496fc318678320cb2a6062fdfe6d3618da6b8790f6"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d920401941cb898ef089422e889759dd403309eb370d0e54f1bdf6ca07fef603"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:501a1576716032cc6d48c7c47bcdc42d682273415a8f2908e7e72cb4625801f3"}, - {file = "yarl-1.12.1-cp313-cp313-win32.whl", hash = "sha256:24416bb5e221e29ddf8aac5b97e94e635ca2c5be44a1617ad6fe32556df44294"}, - {file = "yarl-1.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:71af3766bb46738d12cc288d9b8de7ef6f79c31fd62757e2b8a505fe3680b27f"}, - {file = "yarl-1.12.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c924deab8105f86980983eced740433fb7554a7f66db73991affa4eda99d5402"}, - {file = "yarl-1.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5fb475a4cdde582c9528bb412b98f899680492daaba318231e96f1a0a1bb0d53"}, - {file = "yarl-1.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:36ee0115b9edca904153a66bb74a9ff1ce38caff015de94eadfb9ba8e6ecd317"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2631c9d7386bd2d4ce24ecc6ebf9ae90b3efd713d588d90504eaa77fec4dba01"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2376d8cf506dffd0e5f2391025ae8675b09711016656590cb03b55894161fcfa"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24197ba3114cc85ddd4091e19b2ddc62650f2e4a899e51b074dfd52d56cf8c72"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfdf419bf5d3644f94cd7052954fc233522f5a1b371fc0b00219ebd9c14d5798"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8112f640a4f7e7bf59f7cabf0d47a29b8977528c521d73a64d5cc9e99e48a174"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:607d12f0901f6419a8adceb139847c42c83864b85371f58270e42753f9780fa6"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:664380c7ed524a280b6a2d5d9126389c3e96cd6e88986cdb42ca72baa27421d6"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:0d0a5e87bc48d76dfcfc16295201e9812d5f33d55b4a0b7cad1025b92bf8b91b"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:eff6bac402719c14e17efe845d6b98593c56c843aca6def72080fbede755fd1f"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:22839d1d1eab9e4b427828a88a22beb86f67c14d8ff81175505f1cc8493f3500"}, - {file = "yarl-1.12.1-cp38-cp38-win32.whl", hash = "sha256:717f185086bb9d817d4537dd18d5df5d657598cd00e6fc22e4d54d84de266c1d"}, - {file = "yarl-1.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:71978ba778948760cff528235c951ea0ef7a4f9c84ac5a49975f8540f76c3f73"}, - {file = "yarl-1.12.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30ffc046ebddccb3c4cac72c1a3e1bc343492336f3ca86d24672e90ccc5e788a"}, - {file = "yarl-1.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f10954b233d4df5cc3137ffa5ced97f8894152df817e5d149bf05a0ef2ab8134"}, - {file = "yarl-1.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2e912b282466444023610e4498e3795c10e7cfd641744524876239fcf01d538d"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af871f70cfd5b528bd322c65793b5fd5659858cdfaa35fbe563fb99b667ed1f"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3e4e1f7b08d1ec6b685ccd3e2d762219c550164fbf524498532e39f9413436e"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9a7ee79183f0b17dcede8b6723e7da2ded529cf159a878214be9a5d3098f5b1e"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96c8ff1e1dd680e38af0887927cab407a4e51d84a5f02ae3d6eb87233036c763"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e9905fc2dc1319e4c39837b906a024cf71b1261cc66b0cd89678f779c0c61f5"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01549468858b87d36f967c97d02e6e54106f444aeb947ed76f8f71f85ed07cec"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:96b34830bd6825ca0220bf005ea99ac83eb9ce51301ddb882dcf613ae6cd95fb"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2aee7594d2c2221c717a8e394bbed4740029df4c0211ceb0f04815686e99c795"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:15871130439ad10abb25a4631120d60391aa762b85fcab971411e556247210a0"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:838dde2cb570cfbb4cab8a876a0974e8b90973ea40b3ac27a79b8a74c8a2db15"}, - {file = "yarl-1.12.1-cp39-cp39-win32.whl", hash = "sha256:eacbcf30efaca7dc5cb264228ffecdb95fdb1e715b1ec937c0ce6b734161e0c8"}, - {file = "yarl-1.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:76a59d1b63de859398bc7764c860a769499511463c1232155061fe0147f13e01"}, - {file = "yarl-1.12.1-py3-none-any.whl", hash = "sha256:dc3192a81ecd5ff954cecd690327badd5a84d00b877e1573f7c9097ce13e5bfb"}, - {file = "yarl-1.12.1.tar.gz", hash = "sha256:5b860055199aec8d6fe4dcee3c5196ce506ca198a50aab0059ffd26e8e815828"}, -] - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" - -[metadata] -lock-version = "2.0" -python-versions = "^3.11" -content-hash = "7530d9999f984459c51bd78480ad79697d84bdf5ba7e01ef3040ce0c8a3c36d7" diff --git a/express_relay/sdk/python/pyproject.toml b/express_relay/sdk/python/pyproject.toml deleted file mode 100644 index 751307b287..0000000000 --- a/express_relay/sdk/python/pyproject.toml +++ /dev/null @@ -1,30 +0,0 @@ -[tool.poetry] -name = "express-relay" -version = "0.12.2" -description = "Utilities for searchers and protocols to interact with the Express Relay protocol." -authors = ["dourolabs"] -license = "Apache-2.0" -readme = "README.md" - -[tool.poetry.dependencies] -python = "^3.11" -web3 = "^6.15.1" -eth_abi = "^4.2.1" -eth_account = "^0.10.0" -httpx = "^0.23.3" -websockets = "^10.0" -asyncio = "^3.4.3" -argparse = "^1.4.0" -pydantic = "^2.6.3" -anchorpy = "^0.20.1" -solana = "^0.34.3" - -[tool.poetry.group.dev.dependencies] -black = "^22.3.0" -pyflakes = "^3.2.0" -mypy = "^1.9.0" -anchorpy = {extras = ["cli"], version = "^0.20.1"} - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/express_relay/sdk/solidity/IExpressRelay.sol b/express_relay/sdk/solidity/IExpressRelay.sol deleted file mode 100644 index 3b424cb3aa..0000000000 --- a/express_relay/sdk/solidity/IExpressRelay.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.0; - -interface IExpressRelay { - // Check if the combination of protocol and permissionKey is allowed within this transaction. - // This will return true if and only if it's being called while executing the auction winner(s) call. - // @param protocolFeeReceiver The address of the protocol that is gating an action behind this permission - // @param permissionId The id that represents the action being gated - // @return permissioned True if the permission is allowed, false otherwise - function isPermissioned( - address protocolFeeReceiver, - bytes calldata permissionId - ) external view returns (bool permissioned); -} diff --git a/express_relay/sdk/solidity/IExpressRelayFeeReceiver.sol b/express_relay/sdk/solidity/IExpressRelayFeeReceiver.sol deleted file mode 100644 index 215af56ad0..0000000000 --- a/express_relay/sdk/solidity/IExpressRelayFeeReceiver.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.0; - -interface IExpressRelayFeeReceiver { - // Receive the proceeds of an auction. - // @param permissionKey The permission key where the auction was conducted on. - function receiveAuctionProceedings( - bytes calldata permissionKey - ) external payable; -} diff --git a/express_relay/sdk/solidity/README.md b/express_relay/sdk/solidity/README.md deleted file mode 100644 index b2d3edbf8e..0000000000 --- a/express_relay/sdk/solidity/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Express Relay Solidity SDK - -## Install - -### Truffle/Hardhat - -If you are using Truffle or Hardhat, simply install the NPM package: - -```bash -npm install @pythnetwork/express-relay-sdk-solidity -``` - -### Foundry - -If you are using Foundry, you will need to create an NPM project if you don't already have one. -From the root directory of your project, run: - -```bash -npm init -y -npm install @pythnetwork/express-relay-sdk-solidity -``` - -Then add the following line to your `remappings.txt` file: - -```text -@pythnetwork/express-relay-sdk-solidity/=node_modules/@pythnetwork/express-relay-sdk-solidity -``` diff --git a/express_relay/sdk/solidity/abis/IExpressRelay.json b/express_relay/sdk/solidity/abis/IExpressRelay.json deleted file mode 100644 index a73d837e78..0000000000 --- a/express_relay/sdk/solidity/abis/IExpressRelay.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "protocolFeeReceiver", - "type": "address" - }, - { - "internalType": "bytes", - "name": "permissionId", - "type": "bytes" - } - ], - "name": "isPermissioned", - "outputs": [ - { - "internalType": "bool", - "name": "permissioned", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/express_relay/sdk/solidity/abis/IExpressRelayFeeReceiver.json b/express_relay/sdk/solidity/abis/IExpressRelayFeeReceiver.json deleted file mode 100644 index 1758be0d12..0000000000 --- a/express_relay/sdk/solidity/abis/IExpressRelayFeeReceiver.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "bytes", - "name": "permissionKey", - "type": "bytes" - } - ], - "name": "receiveAuctionProceedings", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } -] diff --git a/express_relay/sdk/solidity/package.json b/express_relay/sdk/solidity/package.json deleted file mode 100644 index 6613628171..0000000000 --- a/express_relay/sdk/solidity/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@pythnetwork/express-relay-sdk-solidity", - "version": "0.2.0", - "description": "Solidity SDK for interacting with Express Relay contracts", - "repository": { - "type": "git", - "url": "https://github.com/pyth-network/pyth-crosschain", - "directory": "express_relay/sdk/solidity" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "format": "prettier --write .", - "build": "generate-abis IExpressRelay IExpressRelayFeeReceiver", - "test": "git diff --exit-code abis" - }, - "keywords": [ - "pyth", - "oracle", - "relay" - ], - "author": "Douro Labs", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/pyth-network/pyth-crosschain/issues" - }, - "homepage": "https://github.com/pyth-network/pyth-crosschain/tree/main/express_relay/sdk/solidity", - "devDependencies": { - "prettier": "^2.7.1", - "prettier-plugin-solidity": "^1.0.0-rc.1", - "abi_generator": "workspace:*" - } -} diff --git a/express_relay/sdk/solidity/turbo.json b/express_relay/sdk/solidity/turbo.json deleted file mode 100644 index 9d364662ea..0000000000 --- a/express_relay/sdk/solidity/turbo.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"], - "tasks": { - "build": { - "outputs": ["abis/**"] - }, - "test": { - "dependsOn": ["build"] - } - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33c7cd3375..7bd1d8b710 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -231,7 +231,7 @@ importers: version: 2.1.4(react@19.0.0) '@next/third-parties': specifier: ^14.2.4 - version: 14.2.4(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) + version: 14.2.4(next@15.1.2(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) '@pythnetwork/client': specifier: ^2.22.0 version: 2.22.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -252,7 +252,7 @@ importers: version: 2.1.1 connectkit: specifier: ^1.8.2 - version: 1.8.2(cwnwljk3n25tzd5weih3j2cexi) + version: 1.8.2(6anadc4dr5vwtj2ynlqfbej324) cryptocurrency-icons: specifier: ^0.18.1 version: 0.18.1 @@ -261,7 +261,7 @@ importers: version: 11.3.8(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 'catalog:' - version: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -285,7 +285,7 @@ importers: version: 2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) wagmi: specifier: ^2.10.4 - version: 2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@19.0.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + version: 2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@19.0.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) zod: specifier: ^3.23.8 version: 3.23.8 @@ -298,7 +298,7 @@ importers: version: 3.0.0(@testing-library/dom@10.4.0)(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2))(@typescript-eslint/parser@7.13.1(eslint@9.12.0(jiti@1.21.0))(typescript@5.5.2))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(jiti@1.21.0)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(typescript@5.5.2) '@cprussin/jest-config': specifier: 'catalog:' - version: 1.4.1(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/node@20.14.7)(babel-jest@29.7.0(@babel/core@7.25.8))(bufferutil@4.0.8)(eslint@9.5.0)(sass@1.80.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(utf-8-validate@5.0.10) + version: 1.4.1(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/node@20.14.7)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.5.0)(sass@1.80.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(utf-8-validate@5.0.10) '@cprussin/prettier-config': specifier: 'catalog:' version: 2.1.1(prettier@3.3.2) @@ -950,128 +950,6 @@ importers: specifier: ^0.25.7 version: 0.25.7(typescript@5.4.5) - express_relay/examples/easy_lend: - dependencies: - '@openzeppelin/contracts': - specifier: ^4.5.0 - version: 4.8.1 - '@pythnetwork/express-relay-js': - specifier: workspace:* - version: link:../../sdk/js - '@pythnetwork/express-relay-sdk-solidity': - specifier: workspace:* - version: link:../../sdk/solidity - '@pythnetwork/price-service-client': - specifier: workspace:^ - version: link:../../../price_service/client/js - '@pythnetwork/pyth-evm-js': - specifier: workspace:* - version: link:../../../target_chains/ethereum/sdk/js - '@pythnetwork/pyth-sdk-solidity': - specifier: workspace:* - version: link:../../../target_chains/ethereum/sdk/solidity - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@22.8.2)(typescript@5.4.5) - typescript: - specifier: ^5.3.3 - version: 5.4.5 - viem: - specifier: ^2.7.6 - version: 2.8.13(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.4)(zod@3.23.8) - devDependencies: - '@types/yargs': - specifier: ^17.0.10 - version: 17.0.32 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^2.6.2 - version: 2.8.8 - typedoc: - specifier: ^0.25.7 - version: 0.25.7(typescript@5.4.5) - yargs: - specifier: ^17.4.1 - version: 17.7.2 - - express_relay/sdk/js: - dependencies: - '@coral-xyz/anchor': - specifier: ^0.30.1 - version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@kamino-finance/limo-sdk': - specifier: ^0.3.0 - version: 0.3.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(chai@5.1.1)(decimal.js@10.4.3)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: 1.92.3 - version: 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - decimal.js: - specifier: ^10.4.3 - version: 10.4.3 - isomorphic-ws: - specifier: ^5.0.0 - version: 5.0.0(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - openapi-client-axios: - specifier: ^7.5.5 - version: 7.5.5(axios@1.7.7)(js-yaml@4.1.0) - openapi-fetch: - specifier: ^0.8.2 - version: 0.8.2 - viem: - specifier: ^2.16.2 - version: 2.16.2(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) - ws: - specifier: ^8.17.1 - version: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@pythnetwork/pyth-evm-js': - specifier: workspace:* - version: link:../../../target_chains/ethereum/sdk/js - '@types/node': - specifier: ^20.14.9 - version: 20.14.9 - '@types/yargs': - specifier: ^17.0.32 - version: 17.0.32 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.5.2) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - jest: - specifier: ^27.5.1 - version: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10) - openapi-typescript: - specifier: 6.5.5 - version: 6.5.5 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - typescript: - specifier: ^5.5.2 - version: 5.5.2 - yargs: - specifier: ^17.7.2 - version: 17.7.2 - - express_relay/sdk/solidity: - devDependencies: - abi_generator: - specifier: workspace:* - version: link:../../../target_chains/ethereum/abi_generator - prettier: - specifier: ^2.7.1 - version: 2.8.8 - prettier-plugin-solidity: - specifier: ^1.0.0-rc.1 - version: 1.1.3(prettier@2.8.8) - governance/pyth_staking_sdk: dependencies: '@coral-xyz/anchor': @@ -4593,10 +4471,6 @@ packages: resolution: {integrity: sha512-+P/vPdORawvg3A9Wj02iquxb4T0C5m4P6aZBVYysKl4Amk+r6aMPZkUhilBkD6E4Nuxnoajv3CFykUfkGE0n5g==} engines: {node: '>=11'} - '@coral-xyz/anchor@0.28.0': - resolution: {integrity: sha512-kQ02Hv2ZqxtWP30WN1d4xxT4QqlOXYDxmEd3k/bbneqhV3X5QMO4LAtoUFs7otxyivOgoqam5Il5qx81FuI4vw==} - engines: {node: '>=11'} - '@coral-xyz/anchor@0.29.0': resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} engines: {node: '>=11'} @@ -6101,23 +5975,10 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@27.5.1': - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/console@29.7.0': resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/core@27.5.1': - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - '@jest/core@29.7.0': resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6131,10 +5992,6 @@ packages: resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/environment@27.5.1': - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/environment@29.7.0': resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6147,31 +6004,14 @@ packages: resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/fake-timers@27.5.1': - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/globals@27.5.1': - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/globals@29.7.0': resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/reporters@27.5.1': - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - '@jest/reporters@29.7.0': resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6185,34 +6025,18 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@27.5.1': - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/source-map@29.6.3': resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/test-result@27.5.1': - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/test-result@29.7.0': resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/test-sequencer@27.5.1': - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/test-sequencer@29.7.0': resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/transform@27.5.1': - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6221,10 +6045,6 @@ packages: resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} - '@jest/types@27.5.1': - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6283,13 +6103,6 @@ packages: resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - '@kamino-finance/limo-sdk@0.3.0': - resolution: {integrity: sha512-D8x1TyF+YY1sOlfDLyaJFRRqserhrneNSWN5WIydFke4LTfoT7WMKu9bzEBESIo4zopiUhUFSGKOicsdegvyJg==} - hasBin: true - peerDependencies: - '@solana/web3.js': ~1.73.3 - decimal.js: ^10.4.3 - '@keystonehq/alias-sampling@0.1.2': resolution: {integrity: sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w==} @@ -8495,9 +8308,6 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sinonjs/commons@1.8.6': - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - '@sinonjs/commons@2.0.0': resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} @@ -8513,9 +8323,6 @@ packages: '@sinonjs/fake-timers@13.0.3': resolution: {integrity: sha512-golm/Sc4CqLV/ZalIP14Nre7zPgd8xG/S3nHULMTBHMX0llyTNhE1O6nrgbfvLX2o0y849CnLKdu8OE05Ztiiw==} - '@sinonjs/fake-timers@8.1.0': - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sinonjs/samsam@8.0.0': resolution: {integrity: sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==} @@ -8562,64 +8369,27 @@ packages: '@solana/codecs-core@2.0.0-preview.2': resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} - '@solana/codecs-core@2.0.0-rc.1': - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' - '@solana/codecs-data-structures@2.0.0-preview.2': resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' - '@solana/codecs-numbers@2.0.0-preview.2': resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' - '@solana/codecs-strings@2.0.0-preview.2': resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} peerDependencies: fastestsmallesttextencoderdecoder: ^1.0.22 - '@solana/codecs-strings@2.0.0-rc.1': - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - '@solana/codecs@2.0.0-preview.2': resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} - '@solana/codecs@2.0.0-rc.1': - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' - '@solana/errors@2.0.0-preview.2': resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} hasBin: true - '@solana/errors@2.0.0-rc.1': - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' - '@solana/options@2.0.0-preview.2': resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} - '@solana/options@2.0.0-rc.1': - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' - '@solana/spl-governance@0.3.28': resolution: {integrity: sha512-CUi1hMvzId2rAtMFTlxMwOy0EmFeT0VcmiC+iQnDhRBuM8LLLvRrbTYBWZo3xIvtPQW9HfhVBoL7P/XNFIqYVQ==} @@ -8635,18 +8405,6 @@ packages: peerDependencies: '@solana/web3.js': 1.92.3 - '@solana/spl-token-metadata@0.1.6': - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': 1.92.3 - - '@solana/spl-token@0.3.11': - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': 1.92.3 - '@solana/spl-token@0.3.7': resolution: {integrity: sha512-bKGxWTtIw6VDdCBngjtsGlKGLSmiu/8ghSt/IOYJV24BsymRbgq7r12GToeetpxmPaZYLddKwAz7+EwprLfkfg==} engines: {node: '>=16'} @@ -9624,10 +9382,6 @@ packages: '@tonconnect/sdk@2.2.0': resolution: {integrity: sha512-8plnAXzaLhapUnt47ZqAOQSIQ8NHSvgTSR74QVJdPWqg8128smgGM4cDYewKdBfTD6Lup0odT1WMMrJu+rE4NQ==} - '@tootallnate/once@1.1.2': - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -10170,9 +9924,6 @@ packages: '@types/node@20.14.7': resolution: {integrity: sha512-uTr2m2IbJJucF3KUxgnGOZvYbN0QgkGyWxG6973HCpMYFy2KfcgYuIwkJQMQkt1VbBMlvWRbpshFTLxnxCZjKQ==} - '@types/node@20.14.9': - resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} - '@types/node@22.2.0': resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} @@ -10198,9 +9949,6 @@ packages: resolution: {integrity: sha512-wKoab31pknvILkxAF8ss+v9iNyhw5Iu/0jLtRkUD74cNfOOLJNnqfFKAv0r7wVaTQxRZtWrMpGfShwwBjOcgcg==} deprecated: This is a stub types definition. pino provides its own type definitions, so you do not need this installed. - '@types/prettier@2.7.3': - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -10309,9 +10057,6 @@ packages: '@types/yargs@15.0.19': resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} - '@types/yargs@16.0.9': - resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} - '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} @@ -11162,28 +10907,6 @@ packages: zod: optional: true - abitype@1.0.0: - resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.4: - resolution: {integrity: sha512-UivtYZOGJGE8rsrM/N5vdRkUpqEZVmuTumfTuolm7m/6O09wprd958rx8kUBwVAAAhQDveGAgD0GJdBuR8s6tw==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - abitype@1.0.5: resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} peerDependencies: @@ -11244,9 +10967,6 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-globals@6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -11552,10 +11272,6 @@ packages: appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - append-transform@2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} - aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -11569,9 +11285,6 @@ packages: engines: {node: '>=11.0.0'} deprecated: Package aptos is no longer supported, please migrate to https://www.npmjs.com/package/@aptos-labs/ts-sdk - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} @@ -11857,12 +11570,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - babel-jest@27.5.1: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11880,10 +11587,6 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} - babel-plugin-jest-hoist@27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11936,12 +11639,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-jest@27.5.1: - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11975,10 +11672,6 @@ packages: base-x@5.0.0: resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} - base58-js@1.0.5: - resolution: {integrity: sha512-LkkAPP8Zu+c0SVNRTRVDyMfKVORThX+rCViget00xdgLRrKkClCTz1T7cIrpr69ShwV5XJuuoZvMvJ43yURwkA==} - engines: {node: '>= 8'} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -11986,9 +11679,6 @@ packages: resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} engines: {node: '>=6.0.0'} - bath-es5@3.0.3: - resolution: {integrity: sha512-PdCioDToH3t84lP40kUFCKWCOCH389Dl1kbC8FGoqOwamxsmqxxnJSXdkTOsPoNHXjem4+sJ+bbNoQm5zeCqxg==} - bcp-47@2.1.0: resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} @@ -12140,9 +11830,6 @@ packages: browser-or-node@2.1.1: resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} - browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -12314,10 +12001,6 @@ packages: resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} engines: {node: '>=8'} - caching-transform@4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -12422,11 +12105,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai-as-promised@7.1.2: - resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} - peerDependencies: - chai: '>= 2.1.2 < 6' - chai-bn@0.2.2: resolution: {integrity: sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==} peerDependencies: @@ -12564,10 +12242,6 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - ci@2.3.0: - resolution: {integrity: sha512-0MGXkzJKkwV3enG7RUxjJKdiAkbaZ7visCjitfpCN2BQjv02KGRMxCHLv4RPokkjJ4xR33FLMAXweS+aQ0pFSQ==} - hasBin: true - cids@0.7.5: resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} engines: {node: '>=4.0.0', npm: '>=3.0.0'} @@ -13201,9 +12875,6 @@ packages: cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - cssom@0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} @@ -13276,10 +12947,6 @@ packages: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} - data-urls@2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -13483,10 +13150,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-require-extensions@3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -13550,9 +13213,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dereference-json-schema@0.2.1: - resolution: {integrity: sha512-uzJsrg225owJyRQ8FNTPHIuBOdSzIZlHhss9u6W8mp7jJldHqGuLv9cULagP/E26QVJDnjtG8U7Dw139mM1ydA==} - des.js@1.0.1: resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} @@ -13709,11 +13369,6 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - deprecated: Use your platform's native DOMException instead - domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} @@ -13839,10 +13494,6 @@ packages: resolution: {integrity: sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==} engines: {node: '>=6'} - emittery@0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} - emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -14012,9 +13663,6 @@ packages: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} - es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - es6-iterator@2.0.3: resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} @@ -14723,10 +14371,6 @@ packages: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} - expect@27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -14782,10 +14426,6 @@ packages: resolution: {integrity: sha512-I2FldZwnCbcY6iL+H0rp9m4D+O3PotuFu9FasWjMCzUedYHMP89/37JbSt6/n7Yq/IZmJDW0B2h30sPYdzrfzw==} engines: {node: '>=8.0.0'} - fast-check@3.22.0: - resolution: {integrity: sha512-8HKz3qXqnHYp/VCNn2qfjHdAdcI8zcSqOyX64GOMukp7SL2bfzfeDKjSd+UyECtejccaZv3LcvZTm9YDD22iCQ==} - engines: {node: '>=8.0.0'} - fast-copy@3.0.2: resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} @@ -14995,10 +14635,6 @@ packages: foreach@2.0.6: resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -15038,10 +14674,6 @@ packages: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} - form-data@3.0.2: - resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==} - engines: {node: '>= 6'} - form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -15128,9 +14760,6 @@ packages: from-exponential@1.1.1: resolution: {integrity: sha512-VBE7f5OVnYwdgB3LHa+Qo29h8qVpxhVO9Trlc+AWm+/XNAgks1tAwMFHb33mjeiof77GglsJzeYF7OqXrROP/A==} - fromentries@1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - front-matter@4.0.2: resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} @@ -15627,10 +15256,6 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -15719,10 +15344,6 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - html-encoding-sniffer@2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -15795,10 +15416,6 @@ packages: http-https@1.0.0: resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} - http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -16399,14 +16016,6 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-hook@3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} - - istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} @@ -16415,10 +16024,6 @@ packages: resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} engines: {node: '>=10'} - istanbul-lib-processinfo@2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} - istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -16487,32 +16092,14 @@ packages: engines: {node: '>=8'} hasBin: true - jest-changed-files@27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-circus@27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-circus@29.7.0: resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-cli@27.5.1: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jest-cli@29.7.0: resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16523,15 +16110,6 @@ packages: node-notifier: optional: true - jest-config@27.5.1: - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - jest-config@29.7.0: resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16552,26 +16130,14 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-docblock@27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-docblock@29.7.0: resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-each@27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-each@29.7.0: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-environment-jsdom@27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-environment-jsdom@29.7.0: resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16581,10 +16147,6 @@ packages: canvas: optional: true - jest-environment-node@27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16597,22 +16159,10 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-jasmine2@27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - jest-leak-detector@27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-leak-detector@29.7.0: resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16625,18 +16175,10 @@ packages: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-message-util@27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-mock@27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16650,26 +16192,14 @@ packages: jest-resolve: optional: true - jest-regex-util@27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-regex-util@29.6.3: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-resolve-dependencies@29.7.0: resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve@27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-resolve@29.7.0: resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16681,54 +16211,26 @@ packages: eslint: ^7 || ^8 jest: ^27 || ^28 || ^29 - jest-runner@27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-runner@29.7.0: resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-runtime@27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-runtime@29.7.0: resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-serializer@27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - jest-snapshot@27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-validate@27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-validate@29.7.0: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-watcher@27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-watcher@29.7.0: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16745,16 +16247,6 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest@27.5.1: - resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jest@29.7.0: resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16850,15 +16342,6 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsdom@16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -17294,9 +16777,6 @@ packages: lodash.flatten@4.4.0: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -18317,10 +17797,6 @@ packages: peerDependencies: webpack: '>=5' - node-preload@0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -18459,11 +17935,6 @@ packages: '@swc/core': optional: true - nyc@15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true - o3@1.0.3: resolution: {integrity: sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==} @@ -18597,25 +18068,9 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - openapi-client-axios@7.5.5: - resolution: {integrity: sha512-pgCo1z+rxtYmGQXzB+N5DiXvRurTP6JqV+Ao/wtaGUMIIIM+znh3nTztps+FZS8mZgWnDHpdEzL9bWtZuWuvoA==} - peerDependencies: - axios: '>=0.25.0' - js-yaml: ^4.1.0 - - openapi-fetch@0.8.2: - resolution: {integrity: sha512-4g+NLK8FmQ51RW6zLcCBOVy/lwYmFJiiT+ckYZxJWxUxH4XFhsNcX2eeqVMfVOi+mDNFja6qDXIZAz2c5J/RVw==} - openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - openapi-typescript-helpers@0.0.5: - resolution: {integrity: sha512-MRffg93t0hgGZbYTxg60hkRIK2sRuEOHEtCUgMuLgbCC33TMQ68AmxskzUlauzZYD47+ENeGV/ElI7qnWqrAxA==} - - openapi-typescript@6.5.5: - resolution: {integrity: sha512-pMsA8GrMQKtNOPPjKnJbDotA2UpKsIcTHecMw2Bl3M/2eWTVs8zAYBm/cgaE9Qz5GrcVCDIru9GQX/P9vxtUFg==} - hasBin: true - openapi-zod-client@1.18.1: resolution: {integrity: sha512-L0GzU/7Sx9ugbWWoQwOJdKtyxr8ZnjxIK2RJP63//OkmKws2w7c5HSgS2bdNxPVCIp/eJuYk+CtaKfvCoJ08Yw==} hasBin: true @@ -18715,10 +18170,6 @@ packages: resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} engines: {node: '>=8'} - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -18751,10 +18202,6 @@ packages: resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} engines: {node: '>=8'} - package-hash@4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} - package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} @@ -18827,9 +18274,6 @@ packages: parse5-parser-stream@7.1.2: resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -19440,10 +18884,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-on-spawn@1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} - process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} @@ -20125,10 +19565,6 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} - release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} - remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -20210,10 +19646,6 @@ packages: resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} engines: {node: '>=12'} - resolve.exports@1.1.1: - resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} - engines: {node: '>=10'} - resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -20417,10 +19849,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - saxes@5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -20809,10 +20237,6 @@ packages: sparse-array@1.3.2: resolution: {integrity: sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==} - spawn-wrap@2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -21208,14 +20632,6 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - supports-hyperlinks@3.1.0: resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} engines: {node: '>=14.18'} @@ -21383,10 +20799,6 @@ packages: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - terser-webpack-plugin@5.3.10: resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -21568,10 +20980,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -22367,10 +21775,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@8.1.1: - resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} - engines: {node: '>=10.12.0'} - v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} @@ -22448,14 +21852,6 @@ packages: typescript: optional: true - viem@2.16.2: - resolution: {integrity: sha512-qor3v1cJFR3jcPtcJxPbKfKURAH2agNf2IWZIaSReV6teNLERiu4Sr7kbqpkIeTAEpiDCVQwg336M+mub1m+pg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - viem@2.19.4: resolution: {integrity: sha512-JdhK3ui3uPD2tnpqGNkJaDQV4zTfOeKXcF+VrU8RG88Dn2e0lFjv6l7m0YNmYLsHm+n5vFFfCLcUrTk6xcYv5w==} peerDependencies: @@ -22472,14 +21868,6 @@ packages: typescript: optional: true - viem@2.8.13: - resolution: {integrity: sha512-jEbRUjsiBwmoDr3fnKL1Bh1GhK5ERhmZcPLeARtEaQoBTPB6bcO2siKhNPVOF8qrYRnGHGQrZHncBWMQhTjGYg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} @@ -22502,14 +21890,6 @@ packages: vuvuzela@1.0.3: resolution: {integrity: sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==} - w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - - w3c-xmlserializer@2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} @@ -23013,14 +22393,6 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - - webidl-conversions@6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -23066,9 +22438,6 @@ packages: resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} engines: {node: '>=4.0.0'} - whatwg-encoding@1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -23083,9 +22452,6 @@ packages: whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -23101,10 +22467,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - whence@2.0.0: resolution: {integrity: sha512-exmM13v2lg8juBbfS2tao/alV68jyryPXS+jf29NBNGLzE2hRgmzvQFQGX5CxNfH4Ag9qRqd6gGpXTH2JxqKHg==} engines: {node: '>=14'} @@ -23207,9 +22569,6 @@ packages: write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -23363,9 +22722,6 @@ packages: xhr@2.6.0: resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} - xml-name-validator@3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -24088,6 +23444,19 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24159,6 +23528,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-member-expression-to-functions': 7.25.7 + '@babel/helper-optimise-call-expression': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/traverse': 7.25.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24206,6 +23588,13 @@ snapshots: regexpu-core: 6.1.1 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + regexpu-core: 6.1.1 + semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24394,6 +23783,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24434,6 +23833,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24480,6 +23889,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-wrap-function': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24496,6 +23914,13 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24539,6 +23964,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-replace-supers@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.25.7 + '@babel/helper-optimise-call-expression': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-replace-supers@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24776,6 +24210,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24792,6 +24236,12 @@ snapshots: '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24816,6 +24266,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-proposal-export-default-from@7.25.8(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-proposal-export-default-from@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24839,6 +24294,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24851,6 +24312,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24863,6 +24330,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24878,6 +24351,15 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.7)': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.8)': dependencies: '@babel/compat-data': 7.24.7 @@ -24893,6 +24375,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24915,6 +24403,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -24975,6 +24472,7 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.25.7 + optional: true '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.8)': dependencies: @@ -25031,6 +24529,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25056,6 +24559,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25156,6 +24664,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25301,6 +24814,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25349,6 +24867,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25429,6 +24952,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25483,6 +25015,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25606,6 +25143,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.24.7) + '@babel/traverse': 7.25.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25648,6 +25197,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/template': 7.25.7 + '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/template': 7.25.7 + '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25679,6 +25234,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25800,6 +25360,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.24.0) + '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25872,6 +25438,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -25924,6 +25499,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-literals@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26044,6 +25624,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26155,6 +25744,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26321,6 +25916,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26346,6 +25946,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26383,6 +25988,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26430,6 +26043,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26489,6 +26111,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-display-name@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-display-name@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26514,6 +26141,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26524,6 +26156,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26567,6 +26204,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.24.7) + '@babel/types': 7.25.8 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26664,6 +26312,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-runtime@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-runtime@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26701,6 +26361,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26744,6 +26409,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-spread@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26777,6 +26450,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26851,6 +26529,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -26930,6 +26619,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -27863,28 +27558,6 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.28.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.1.8(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) @@ -28648,18 +28321,18 @@ snapshots: - ts-node - typescript - '@cprussin/jest-config@1.4.1(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/node@20.14.7)(babel-jest@29.7.0(@babel/core@7.25.8))(bufferutil@4.0.8)(eslint@9.5.0)(sass@1.80.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(utf-8-validate@5.0.10)': + '@cprussin/jest-config@1.4.1(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/node@20.14.7)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.5.0)(sass@1.80.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(utf-8-validate@5.0.10)': dependencies: '@cprussin/jest-runner-prettier': 1.0.0(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(prettier@3.3.3) '@testing-library/jest-dom': 6.5.0 jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-environment-jsdom: 29.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) jest-runner-eslint: 2.2.0(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))) - next: 14.2.15(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@18.3.1)(sass@1.80.7) + next: 14.2.15(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.80.7) prettier: 3.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - ts-jest: 29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.4) + ts-jest: 29.2.4(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - '@babel/core' @@ -31104,15 +30777,6 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jest/console@27.5.1': - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -31122,43 +30786,6 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10)': - dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 27.5.1 - jest-config: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10) - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.8 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - '@jest/core@29.7.0(ts-node@10.9.1(@types/node@22.8.2)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 @@ -31654,13 +31281,6 @@ snapshots: dependencies: '@jest/types': 29.6.3 - '@jest/environment@27.5.1': - dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - jest-mock: 27.5.1 - '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -31679,15 +31299,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/fake-timers@27.5.1': - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.14.15 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 - '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -31697,12 +31308,6 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - '@jest/globals@27.5.1': - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 - '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -31712,36 +31317,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@27.5.1': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 - transitivePeerDependencies: - - supports-color - '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -31775,25 +31350,12 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@27.5.1': - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 - '@jest/test-result@27.5.1': - dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 @@ -31801,15 +31363,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - '@jest/test-sequencer@27.5.1': - dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color - '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 @@ -31817,26 +31370,6 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 - '@jest/transform@27.5.1': - dependencies: - '@babel/core': 7.25.8 - '@jest/types': 27.5.1 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - '@jest/transform@29.7.0': dependencies: '@babel/core': 7.25.8 @@ -31865,14 +31398,6 @@ snapshots: '@types/yargs': 15.0.19 chalk: 4.1.2 - '@jest/types@27.5.1': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.15 - '@types/yargs': 16.0.9 - chalk: 4.1.2 - '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -31993,32 +31518,6 @@ snapshots: '@json-rpc-tools/types': 1.7.6 '@pedrouid/environment': 1.0.1 - '@kamino-finance/limo-sdk@0.3.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(chai@5.1.1)(decimal.js@10.4.3)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - base58-js: 1.0.5 - bn.js: 5.2.1 - bs58: 4.0.1 - chai-as-promised: 7.1.2(chai@5.1.1) - ci: 2.3.0 - commander: 9.5.0 - decimal.js: 10.4.3 - decimal.js-light: 2.5.1 - dotenv: 10.0.0 - fast-check: 3.22.0 - nyc: 15.1.0 - transitivePeerDependencies: - - bufferutil - - chai - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - '@keystonehq/alias-sampling@0.1.2': {} '@keystonehq/bc-ur-registry-sol@0.3.1': @@ -32575,22 +32074,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/sdk-install-modal-web@0.26.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)': + '@metamask/sdk-install-modal-web@0.26.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 - react-i18next: 13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) optionalDependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-native: 0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) - '@metamask/sdk@0.26.0(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.26.0(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 '@metamask/sdk-communication-layer': 0.26.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@metamask/sdk-install-modal-web': 0.26.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) + '@metamask/sdk-install-modal-web': 0.26.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0(encoding@0.1.13) @@ -32603,7 +32102,7 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react-native-webview: 11.26.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) + react-native-webview: 11.26.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0 socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -32951,9 +32450,9 @@ snapshots: '@next/swc-win32-x64-msvc@15.1.2': optional: true - '@next/third-parties@14.2.4(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': + '@next/third-parties@14.2.4(next@15.1.2(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': dependencies: - next: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) react: 19.0.0 third-party-capital: 1.0.20 @@ -35081,6 +34580,12 @@ snapshots: react-native: 0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) optional: true + '@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))': + dependencies: + merge-options: 3.0.4 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) + optional: true + '@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@18.3.11)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))': dependencies: merge-options: 3.0.4 @@ -35249,6 +34754,13 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/babel-plugin-codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/babel-plugin-codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.25.8))': dependencies: '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.25.8)) @@ -35305,6 +34817,55 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/babel-preset@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-export-default-from': 7.25.8(@babel/core@7.24.7) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.24.7) + '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-runtime': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.24.7) + '@babel/template': 7.25.7 + '@react-native/babel-plugin-codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.7) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/babel-preset@0.74.84(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))': dependencies: '@babel/core': 7.25.8 @@ -35367,6 +34928,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@react-native/codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/parser': 7.25.8 + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + glob: 7.2.3 + hermes-parser: 0.19.1 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + '@react-native/codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.25.8))': dependencies: '@babel/parser': 7.25.8 @@ -35402,6 +34976,28 @@ snapshots: - supports-color - utf-8-validate + '@react-native/community-cli-plugin@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@react-native-community/cli-server-api': 13.6.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-tools': 13.6.8(encoding@0.1.13) + '@react-native/dev-middleware': 0.74.84(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native/metro-babel-transformer': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.80.12(bufferutil@4.0.8)(utf-8-validate@5.0.10) + metro-config: 0.80.12(bufferutil@4.0.8)(utf-8-validate@5.0.10) + metro-core: 0.80.12 + node-fetch: 2.7.0(encoding@0.1.13) + querystring: 0.2.1 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@react-native/community-cli-plugin@0.74.84(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@react-native-community/cli-server-api': 13.6.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -35461,6 +35057,16 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/metro-babel-transformer@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/core': 7.24.7 + '@react-native/babel-preset': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + hermes-parser: 0.19.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/metro-babel-transformer@0.74.84(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))': dependencies: '@babel/core': 7.25.8 @@ -35491,6 +35097,15 @@ snapshots: optionalDependencies: '@types/react': 19.0.1 + '@react-native/virtualized-lists@0.74.84(@types/react@19.0.1)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 19.0.0 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) + optionalDependencies: + '@types/react': 19.0.1 + '@react-native/virtualized-lists@0.74.84(@types/react@19.0.1)(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)': dependencies: invariant: 2.2.4 @@ -36182,10 +35797,6 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@sinonjs/commons@1.8.6': - dependencies: - type-detect: 4.0.8 - '@sinonjs/commons@2.0.0': dependencies: type-detect: 4.0.8 @@ -36206,10 +35817,6 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers@8.1.0': - dependencies: - '@sinonjs/commons': 1.8.6 - '@sinonjs/samsam@8.0.0': dependencies: '@sinonjs/commons': 2.0.0 @@ -36384,35 +35991,17 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.5.2)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.5.2) - typescript: 5.5.2 - '@solana/codecs-data-structures@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.5.2)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.5.2) - typescript: 5.5.2 - '@solana/codecs-numbers@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.5.2)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.5.2) - typescript: 5.5.2 - '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs-core': 2.0.0-preview.2 @@ -36420,14 +36009,6 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.5.2) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.5.2 - '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs-core': 2.0.0-preview.2 @@ -36438,44 +36019,16 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2) - typescript: 5.5.2 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - '@solana/errors@2.0.0-preview.2': dependencies: chalk: 5.3.0 commander: 12.1.0 - '@solana/errors@2.0.0-rc.1(typescript@5.5.2)': - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - typescript: 5.5.2 - '@solana/options@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.5.2) - typescript: 5.5.2 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - '@solana/spl-governance@0.3.28(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -36507,28 +36060,6 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2) - '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.2) - '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@6.0.3))(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@6.0.3)': dependencies: '@solana/buffer-layout': 4.0.1 @@ -38477,8 +38008,6 @@ snapshots: transitivePeerDependencies: - encoding - '@tootallnate/once@1.1.2': {} - '@tootallnate/once@2.0.0': {} '@toruslabs/base-controllers@2.9.0(@babel/runtime@7.25.7)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': @@ -39342,10 +38871,6 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.14.9': - dependencies: - undici-types: 5.26.5 - '@types/node@22.2.0': dependencies: undici-types: 6.13.0 @@ -39374,8 +38899,6 @@ snapshots: dependencies: pino: 9.2.0 - '@types/prettier@2.7.3': {} - '@types/prop-types@15.7.12': {} '@types/qs@6.9.15': @@ -39493,10 +39016,6 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@types/yargs@16.0.9': - dependencies: - '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 @@ -39561,26 +39080,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.12.0(jiti@1.21.0))(typescript@5.5.2))(eslint@9.12.0(jiti@1.21.0))(typescript@5.5.2)': dependencies: '@eslint-community/regexpp': 4.11.0 @@ -39825,19 +39324,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@7.13.0(eslint@8.56.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 7.13.0 @@ -40046,18 +39532,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.2) - debug: 4.3.7(supports-color@8.1.1) - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@7.13.1(eslint@9.12.0(jiti@1.21.0))(typescript@5.5.2)': dependencies: '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) @@ -40257,21 +39731,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.5.2)': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@7.13.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.13.0 @@ -40512,20 +39971,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.2) - eslint: 8.57.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@7.13.1(eslint@9.12.0(jiti@1.21.0))(typescript@5.5.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.0)) @@ -41074,14 +40519,14 @@ snapshots: '@vue/shared@3.4.34': {} - '@wagmi/connectors@5.0.16(4kbay4ejz7vqiich5e43lezopu)': + '@wagmi/connectors@5.0.16(hncxwyxgso647ji7tzmgxjxpbq)': dependencies: '@coinbase/wallet-sdk': 4.0.3 - '@metamask/sdk': 0.26.0(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10) + '@metamask/sdk': 0.26.0(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) '@wagmi/core': 2.11.4(@tanstack/query-core@5.45.0)(@types/react@19.0.1)(bufferutil@4.0.8)(immer@9.0.21)(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) - '@walletconnect/ethereum-provider': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) '@walletconnect/modal': 2.6.2(@types/react@19.0.1)(react@19.0.0) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' viem: 2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) @@ -41236,21 +40681,21 @@ snapshots: - uWebSockets.js - utf-8-validate - '@walletconnect/core@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@walletconnect/core@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.10 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) events: 3.3.0 isomorphic-unfetch: 3.1.0(encoding@0.1.13) lodash.isequal: 4.5.0 @@ -41278,17 +40723,17 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(@types/react@19.0.1)(react@19.0.0) - '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) - '@walletconnect/universal-provider': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/universal-provider': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -41397,6 +40842,28 @@ snapshots: - ioredis - uWebSockets.js + '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))': + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.1 + unstorage: 1.10.2(idb-keyval@6.2.1) + optionalDependencies: + '@react-native-async-storage/async-storage': 1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))': dependencies: '@walletconnect/safe-json': 1.0.2 @@ -41539,16 +41006,16 @@ snapshots: - uWebSockets.js - utf-8-validate - '@walletconnect/sign-client@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@walletconnect/sign-client@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/core': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -41623,12 +41090,12 @@ snapshots: - ioredis - uWebSockets.js - '@walletconnect/types@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -41647,16 +41114,16 @@ snapshots: - ioredis - uWebSockets.js - '@walletconnect/universal-provider@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@walletconnect/universal-provider@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -41741,7 +41208,7 @@ snapshots: - ioredis - uWebSockets.js - '@walletconnect/utils@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))': + '@walletconnect/utils@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -41751,7 +41218,7 @@ snapshots: '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -41980,16 +41447,6 @@ snapshots: typescript: 5.5.2 zod: 3.23.8 - abitype@1.0.0(typescript@5.4.5)(zod@3.23.8): - optionalDependencies: - typescript: 5.4.5 - zod: 3.23.8 - - abitype@1.0.4(typescript@5.5.2)(zod@3.23.8): - optionalDependencies: - typescript: 5.5.2 - zod: 3.23.8 - abitype@1.0.5(typescript@5.4.5)(zod@3.23.8): optionalDependencies: typescript: 5.4.5 @@ -42056,11 +41513,6 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-globals@6.0.0: - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - acorn-globals@7.0.1: dependencies: acorn: 8.13.0 @@ -42408,10 +41860,6 @@ snapshots: appdirsjs@1.2.7: {} - append-transform@2.0.0: - dependencies: - default-require-extensions: 3.0.1 - aproba@2.0.0: {} aptos@1.5.0: @@ -42434,8 +41882,6 @@ snapshots: transitivePeerDependencies: - debug - archy@1.0.0: {} - are-we-there-yet@2.0.0: dependencies: delegates: 1.0.0 @@ -42806,19 +42252,19 @@ snapshots: dependencies: '@babel/core': 7.25.8 - babel-jest@27.5.1(@babel/core@7.24.7): + babel-jest@29.7.0(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.24.7) + babel-preset-jest: 29.6.3(@babel/core@7.24.7) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true babel-jest@29.7.0(@babel/core@7.25.8): dependencies: @@ -42850,13 +42296,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@27.5.1: - dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.0 @@ -42941,6 +42380,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) + core-js-compat: 3.38.0 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.8): dependencies: '@babel/core': 7.25.8 @@ -43000,14 +42447,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-styled-components@2.1.4(@babel/core@7.25.8)(styled-components@5.3.11(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0))(supports-color@5.5.0): + babel-plugin-styled-components@2.1.4(@babel/core@7.24.7)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0))(supports-color@5.5.0): dependencies: '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.8) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.11(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0) + styled-components: 5.3.11(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -43018,6 +42465,12 @@ snapshots: transitivePeerDependencies: - '@babel/core' + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.7): + dependencies: + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.24.7) + transitivePeerDependencies: + - '@babel/core' + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.8): dependencies: '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.25.8) @@ -43039,6 +42492,7 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + optional: true babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.8): dependencies: @@ -43056,11 +42510,12 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.8) - babel-preset-jest@27.5.1(@babel/core@7.24.7): + babel-preset-jest@29.6.3(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 - babel-plugin-jest-hoist: 27.5.1 + babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) + optional: true babel-preset-jest@29.6.3(@babel/core@7.25.8): dependencies: @@ -43090,14 +42545,10 @@ snapshots: base-x@5.0.0: {} - base58-js@1.0.5: {} - base64-js@1.5.1: {} base64url@3.0.1: {} - bath-es5@3.0.3: {} - bcp-47@2.1.0: dependencies: is-alphabetical: 2.0.1 @@ -43307,8 +42758,6 @@ snapshots: browser-or-node@2.1.1: {} - browser-process-hrtime@1.0.0: {} - browser-stdout@1.3.1: {} browserify-aes@1.2.0: @@ -43522,13 +42971,6 @@ snapshots: normalize-url: 6.1.0 responselike: 2.0.1 - caching-transform@4.0.0: - dependencies: - hasha: 5.2.2 - make-dir: 3.1.0 - package-hash: 4.0.0 - write-file-atomic: 3.0.3 - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -43621,11 +43063,6 @@ snapshots: ccount@2.0.1: {} - chai-as-promised@7.1.2(chai@5.1.1): - dependencies: - chai: 5.1.1 - check-error: 1.0.3 - chai-bn@0.2.2(bn.js@5.2.1)(chai@4.5.0): dependencies: bn.js: 5.2.1 @@ -43846,8 +43283,6 @@ snapshots: ci-info@4.0.0: {} - ci@2.3.0: {} - cids@0.7.5: dependencies: buffer: 5.7.1 @@ -44141,7 +43576,7 @@ snapshots: transitivePeerDependencies: - supports-color - connectkit@1.8.2(cwnwljk3n25tzd5weih3j2cexi): + connectkit@1.8.2(6anadc4dr5vwtj2ynlqfbej324): dependencies: '@tanstack/react-query': 5.45.1(react@19.0.0) buffer: 6.0.3 @@ -44153,9 +43588,9 @@ snapshots: react-transition-state: 1.1.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-use-measure: 2.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) resize-observer-polyfill: 1.5.1 - styled-components: 5.3.11(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0) + styled-components: 5.3.11(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0) viem: 2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) - wagmi: 2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@19.0.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + wagmi: 2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@19.0.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) transitivePeerDependencies: - '@babel/core' - react-is @@ -44800,8 +44235,6 @@ snapshots: cssom@0.3.8: {} - cssom@0.4.4: {} - cssom@0.5.0: {} cssstyle@2.3.0: @@ -44866,12 +44299,6 @@ snapshots: dependencies: assert-plus: 1.0.0 - data-urls@2.0.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - data-urls@3.0.2: dependencies: abab: 2.0.6 @@ -45022,10 +44449,6 @@ snapshots: deepmerge@4.3.1: {} - default-require-extensions@3.0.1: - dependencies: - strip-bom: 4.0.0 - defaults@1.0.4: dependencies: clone: 1.0.4 @@ -45076,8 +44499,6 @@ snapshots: dequal@2.0.3: {} - dereference-json-schema@0.2.1: {} - des.js@1.0.1: dependencies: inherits: 2.0.4 @@ -45246,10 +44667,6 @@ snapshots: domelementtype@2.3.0: {} - domexception@2.0.1: - dependencies: - webidl-conversions: 5.0.0 - domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 @@ -45411,8 +44828,6 @@ snapshots: emittery@0.4.1: {} - emittery@0.8.1: {} - emoji-regex-xs@1.0.0: {} emoji-regex@7.0.3: {} @@ -45653,8 +45068,6 @@ snapshots: esniff: 2.0.1 next-tick: 1.1.0 - es6-error@4.1.1: {} - es6-iterator@2.0.3: dependencies: d: 1.0.1 @@ -47363,13 +46776,6 @@ snapshots: dependencies: homedir-polyfill: 1.0.3 - expect@27.5.1: - dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -47457,10 +46863,6 @@ snapshots: dependencies: pure-rand: 6.0.4 - fast-check@3.22.0: - dependencies: - pure-rand: 6.1.0 - fast-copy@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -47676,11 +47078,6 @@ snapshots: foreach@2.0.6: {} - foreground-child@2.0.0: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 @@ -47739,12 +47136,6 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - form-data@3.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - form-data@4.0.0: dependencies: asynckit: 0.4.0 @@ -47826,8 +47217,6 @@ snapshots: from-exponential@1.1.1: {} - fromentries@1.3.2: {} - front-matter@4.0.2: dependencies: js-yaml: 3.14.1 @@ -48613,11 +48002,6 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 - hasha@5.2.2: - dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -48736,10 +48120,6 @@ snapshots: dependencies: lru-cache: 10.4.3 - html-encoding-sniffer@2.0.1: - dependencies: - whatwg-encoding: 1.0.5 - html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 @@ -48833,14 +48213,6 @@ snapshots: http-https@1.0.0: {} - http-proxy-agent@4.0.1: - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 @@ -49394,10 +48766,6 @@ snapshots: dependencies: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - isomorphic-ws@5.0.0(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - isomorphic-ws@5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -49406,10 +48774,6 @@ snapshots: dependencies: ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): - dependencies: - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - isows@1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -49422,19 +48786,6 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-hook@3.0.0: - dependencies: - append-transform: 2.0.0 - - istanbul-lib-instrument@4.0.3: - dependencies: - '@babel/core': 7.25.8 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.25.8 @@ -49455,15 +48806,6 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-processinfo@2.0.3: - dependencies: - archy: 1.0.0 - cross-spawn: 7.0.3 - istanbul-lib-coverage: 3.2.2 - p-map: 3.0.0 - rimraf: 3.0.2 - uuid: 8.3.2 - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 @@ -49628,42 +48970,12 @@ snapshots: - bufferutil - utf-8-validate - jest-changed-files@27.5.1: - dependencies: - '@jest/types': 27.5.1 - execa: 5.1.1 - throat: 6.0.2 - jest-changed-files@29.7.0: dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 - jest-circus@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - throat: 6.0.2 - transitivePeerDependencies: - - supports-color - jest-circus@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -49690,27 +49002,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10): - dependencies: - '@jest/core': 27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10) - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10) - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - jest-cli@29.7.0(@types/node@16.18.101)(ts-node@10.9.2(@types/node@16.18.101)(typescript@4.9.5)): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@16.18.101)(typescript@4.9.5)) @@ -49978,40 +49269,6 @@ snapshots: - supports-color - ts-node - jest-config@27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 27.5.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.5.2) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - jest-config@29.7.0(@types/node@16.18.101)(ts-node@10.9.2(@types/node@16.18.101)(typescript@4.9.5)): dependencies: '@babel/core': 7.25.8 @@ -50865,22 +50122,10 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-docblock@27.5.1: - dependencies: - detect-newline: 3.1.0 - jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - jest-each@27.5.1: - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -50889,21 +50134,6 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 - jest-environment-jsdom@27.5.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - jest-environment-jsdom@29.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@jest/environment': 29.7.0 @@ -50934,15 +50164,6 @@ snapshots: - supports-color - utf-8-validate - jest-environment-node@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -50956,23 +50177,6 @@ snapshots: jest-get-type@29.6.3: {} - jest-haste-map@27.5.1: - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.9 - '@types/node': 20.14.15 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -50989,33 +50193,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-jasmine2@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.2 - transitivePeerDependencies: - - supports-color - - jest-leak-detector@27.5.1: - dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 @@ -51035,18 +50212,6 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-message-util@27.5.1: - dependencies: - '@babel/code-frame': 7.25.7 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.24.7 @@ -51059,37 +50224,18 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@27.5.1: - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.15 jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): - optionalDependencies: - jest-resolve: 27.5.1 - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 - jest-regex-util@27.5.1: {} - jest-regex-util@29.6.3: {} - jest-resolve-dependencies@27.5.1: - dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 - transitivePeerDependencies: - - supports-color - jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 @@ -51097,19 +50243,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-resolve@27.5.1: - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.22.8 - resolve.exports: 1.1.1 - slash: 3.0.0 - jest-resolve@29.7.0: dependencies: chalk: 4.1.2 @@ -51158,35 +50291,6 @@ snapshots: - '@jest/test-result' - jest-runner - jest-runner@27.5.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.11 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.2 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 @@ -51213,33 +50317,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - cjs-module-lexer: 1.3.1 - collect-v8-coverage: 1.0.2 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -51267,38 +50344,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-serializer@27.5.1: - dependencies: - '@types/node': 20.14.15 - graceful-fs: 4.2.11 - - jest-snapshot@27.5.1: - dependencies: - '@babel/core': 7.25.8 - '@babel/generator': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.8) - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.6 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.8) - chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.11 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - jest-snapshot@29.7.0: dependencies: '@babel/core': 7.25.8 @@ -51324,15 +50369,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-util@27.5.1: - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -51342,15 +50378,6 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@27.5.1: - dependencies: - '@jest/types': 27.5.1 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 27.5.1 - leven: 3.1.0 - pretty-format: 27.5.1 - jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -51360,16 +50387,6 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 - jest-watcher@27.5.1: - dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.14.15 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 - jest-watcher@29.7.0: dependencies: '@jest/test-result': 29.7.0 @@ -51400,18 +50417,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10): - dependencies: - '@jest/core': 27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10) - import-local: 3.1.0 - jest-cli: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - jest@29.7.0(@types/node@16.18.101)(ts-node@10.9.2(@types/node@16.18.101)(typescript@4.9.5)): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@16.18.101)(typescript@4.9.5)) @@ -51682,6 +50687,31 @@ snapshots: transitivePeerDependencies: - supports-color + jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.7)): + dependencies: + '@babel/core': 7.25.8 + '@babel/parser': 7.25.8 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.8) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.8) + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.8) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.8) + '@babel/register': 7.25.7(@babel/core@7.25.8) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.8) + chalk: 4.1.2 + flow-parser: 0.250.0 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.25.8)): dependencies: '@babel/core': 7.25.8 @@ -51711,40 +50741,6 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} - jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - abab: 2.0.6 - acorn: 8.13.0 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.4.3 - domexception: 2.0.1 - escodegen: 2.1.0 - form-data: 3.0.2 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsdom@20.0.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: abab: 2.0.6 @@ -52371,8 +51367,6 @@ snapshots: lodash.flatten@4.4.0: {} - lodash.flattendeep@4.4.0: {} - lodash.get@4.4.2: {} lodash.isequal@4.5.0: {} @@ -53542,6 +52536,32 @@ snapshots: next-tick@1.1.0: {} + next@14.2.15(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.80.7): + dependencies: + '@next/env': 14.2.15 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001669 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.24.7)(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.15 + '@next/swc-darwin-x64': 14.2.15 + '@next/swc-linux-arm64-gnu': 14.2.15 + '@next/swc-linux-arm64-musl': 14.2.15 + '@next/swc-linux-x64-gnu': 14.2.15 + '@next/swc-linux-x64-musl': 14.2.15 + '@next/swc-win32-arm64-msvc': 14.2.15 + '@next/swc-win32-ia32-msvc': 14.2.15 + '@next/swc-win32-x64-msvc': 14.2.15 + sass: 1.80.7 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@14.2.15(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@18.3.1)(sass@1.80.7): dependencies: '@next/env': 14.2.15 @@ -53594,6 +52614,32 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.1.2(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7): + dependencies: + '@next/env': 15.1.2 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001669 + postcss: 8.4.31 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.6(@babel/core@7.24.7)(react@19.0.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.1.2 + '@next/swc-darwin-x64': 15.1.2 + '@next/swc-linux-arm64-gnu': 15.1.2 + '@next/swc-linux-arm64-musl': 15.1.2 + '@next/swc-linux-x64-gnu': 15.1.2 + '@next/swc-linux-x64-musl': 15.1.2 + '@next/swc-win32-arm64-msvc': 15.1.2 + '@next/swc-win32-x64-msvc': 15.1.2 + sass: 1.80.7 + sharp: 0.33.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@15.1.2(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7): dependencies: '@next/env': 15.1.2 @@ -53787,10 +52833,6 @@ snapshots: vm-browserify: 1.1.2 webpack: 5.91.0(esbuild@0.22.0) - node-preload@0.2.1: - dependencies: - process-on-spawn: 1.0.0 - node-releases@2.0.14: {} node-releases@2.0.18: {} @@ -53975,38 +53017,6 @@ snapshots: transitivePeerDependencies: - debug - nyc@15.1.0: - dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - caching-transform: 4.0.0 - convert-source-map: 1.9.0 - decamelize: 1.2.0 - find-cache-dir: 3.3.2 - find-up: 4.1.0 - foreground-child: 2.0.0 - get-package-type: 0.1.0 - glob: 7.2.3 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-hook: 3.0.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-processinfo: 2.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - make-dir: 3.1.0 - node-preload: 0.2.1 - p-map: 3.0.0 - process-on-spawn: 1.0.0 - resolve-from: 5.0.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - spawn-wrap: 2.0.0 - test-exclude: 6.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - o3@1.0.3: dependencies: capability: 0.2.5 @@ -54153,31 +53163,8 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openapi-client-axios@7.5.5(axios@1.7.7)(js-yaml@4.1.0): - dependencies: - axios: 1.7.7(debug@4.3.7) - bath-es5: 3.0.3 - dereference-json-schema: 0.2.1 - js-yaml: 4.1.0 - openapi-types: 12.1.3 - - openapi-fetch@0.8.2: - dependencies: - openapi-typescript-helpers: 0.0.5 - openapi-types@12.1.3: {} - openapi-typescript-helpers@0.0.5: {} - - openapi-typescript@6.5.5: - dependencies: - ansi-colors: 4.1.3 - fast-glob: 3.3.2 - js-yaml: 4.1.0 - supports-color: 9.4.0 - undici: 5.28.4 - yargs-parser: 21.1.1 - openapi-zod-client@1.18.1(react@19.0.0): dependencies: '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) @@ -54311,10 +53298,6 @@ snapshots: p-map-series@2.1.0: {} - p-map@3.0.0: - dependencies: - aggregate-error: 3.1.0 - p-map@4.0.0: dependencies: aggregate-error: 3.1.0 @@ -54340,13 +53323,6 @@ snapshots: dependencies: p-reduce: 2.1.0 - package-hash@4.0.0: - dependencies: - graceful-fs: 4.2.11 - hasha: 5.2.2 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - package-json-from-dist@1.0.0: {} pacote@18.0.6: @@ -54455,8 +53431,6 @@ snapshots: dependencies: parse5: 7.1.2 - parse5@6.0.1: {} - parse5@7.1.2: dependencies: entities: 4.5.0 @@ -55191,10 +54165,6 @@ snapshots: process-nextick-args@2.0.1: {} - process-on-spawn@1.0.0: - dependencies: - fromentries: 1.3.2 - process-warning@1.0.0: {} process-warning@3.0.0: {} @@ -55806,7 +54776,7 @@ snapshots: transitivePeerDependencies: - csstype - react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0): + react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0): dependencies: '@babel/runtime': 7.25.7 html-parse-stringify: 3.0.1 @@ -55814,7 +54784,7 @@ snapshots: react: 19.0.0 optionalDependencies: react-dom: 19.0.0(react@19.0.0) - react-native: 0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) react-is@16.13.1: {} @@ -55852,12 +54822,12 @@ snapshots: react-lifecycles-compat: 3.0.4 warning: 4.0.3 - react-native-webview@11.26.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0): + react-native-webview@11.26.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 19.0.0 - react-native: 0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10): dependencies: @@ -55909,6 +54879,56 @@ snapshots: - supports-color - utf-8-validate + react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native-community/cli': 13.6.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-platform-android': 13.6.8(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 13.6.8(encoding@0.1.13) + '@react-native/assets-registry': 0.74.84 + '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + '@react-native/community-cli-plugin': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native/gradle-plugin': 0.74.84 + '@react-native/js-polyfills': 0.74.84 + '@react-native/normalize-colors': 0.74.84 + '@react-native/virtualized-lists': 0.74.84(@types/react@19.0.1)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + base64-js: 1.5.1 + chalk: 4.1.2 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.80.12 + metro-source-map: 0.80.12 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 19.0.0 + react-devtools-core: 5.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + react-refresh: 0.14.2 + react-shallow-renderer: 16.15.0(react@19.0.0) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + whatwg-fetch: 3.6.20 + ws: 6.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + yargs: 17.7.2 + optionalDependencies: + '@types/react': 19.0.1 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@18.3.11)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10): dependencies: '@jest/create-cache-key-function': 29.7.0 @@ -56407,10 +55427,6 @@ snapshots: relateurl@0.2.7: {} - release-zalgo@1.0.0: - dependencies: - es6-error: 4.1.1 - remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 @@ -56514,8 +55530,6 @@ snapshots: postcss: 8.4.47 source-map: 0.6.1 - resolve.exports@1.1.1: {} - resolve.exports@2.0.2: {} resolve@1.17.0: @@ -56710,10 +55724,6 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.4.1 - saxes@5.0.1: - dependencies: - xmlchars: 2.2.0 - saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -57293,15 +56303,6 @@ snapshots: sparse-array@1.3.2: {} - spawn-wrap@2.0.0: - dependencies: - foreground-child: 2.0.0 - is-windows: 1.0.2 - make-dir: 3.1.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - which: 2.0.2 - spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -57616,14 +56617,14 @@ snapshots: hey-listen: 1.0.8 tslib: 2.8.0 - styled-components@5.3.11(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0): + styled-components@5.3.11(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0): dependencies: '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/traverse': 7.24.7(supports-color@5.5.0) '@emotion/is-prop-valid': 1.2.2 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.4(@babel/core@7.25.8)(styled-components@5.3.11(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0))(supports-color@5.5.0) + babel-plugin-styled-components: 2.1.4(@babel/core@7.24.7)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@19.0.0(react@19.0.0))(react-is@18.3.1)(react@19.0.0))(supports-color@5.5.0) css-to-react-native: 3.2.0 hoist-non-react-statics: 3.3.2 react: 19.0.0 @@ -57634,6 +56635,13 @@ snapshots: transitivePeerDependencies: - '@babel/core' + styled-jsx@5.1.1(@babel/core@7.24.7)(react@18.3.1): + dependencies: + client-only: 0.0.1 + react: 18.3.1 + optionalDependencies: + '@babel/core': 7.24.7 + styled-jsx@5.1.1(@babel/core@7.25.8)(react@18.3.1): dependencies: client-only: 0.0.1 @@ -57648,6 +56656,13 @@ snapshots: optionalDependencies: '@babel/core': 7.24.0 + styled-jsx@5.1.6(@babel/core@7.24.7)(react@19.0.0): + dependencies: + client-only: 0.0.1 + react: 19.0.0 + optionalDependencies: + '@babel/core': 7.24.7 + styled-jsx@5.1.6(@babel/core@7.25.8)(react@19.0.0): dependencies: client-only: 0.0.1 @@ -57781,13 +56796,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@9.4.0: {} - - supports-hyperlinks@2.3.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - supports-hyperlinks@3.1.0: dependencies: has-flag: 4.0.0 @@ -58206,11 +57214,6 @@ snapshots: dependencies: rimraf: 2.6.3 - terminal-link@2.1.1: - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(esbuild@0.22.0)(webpack@5.91.0(esbuild@0.22.0)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -58416,10 +57419,6 @@ snapshots: tr46@0.0.3: {} - tr46@2.1.0: - dependencies: - punycode: 2.3.1 - tr46@3.0.0: dependencies: punycode: 2.3.1 @@ -58642,12 +57641,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.8) - ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(esbuild@0.22.0)(jest@29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)))(typescript@5.5.4): + ts-jest@29.2.4(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.4): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -58656,43 +57655,43 @@ snapshots: typescript: 5.5.4 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.24.7 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.8) - esbuild: 0.22.0 + babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@18.19.44)(ts-node@10.9.2(@types/node@18.19.44)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(esbuild@0.22.0)(jest@29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)))(typescript@5.5.4): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.44)(ts-node@10.9.2(@types/node@18.19.44)(typescript@4.9.5)) + jest: 29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.3 - typescript: 4.9.5 + typescript: 5.5.4 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.25.8 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.8) + esbuild: 0.22.0 - ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@20.14.15)(ts-node@10.9.2(@types/node@20.14.15)(typescript@5.5.4)))(typescript@5.5.4): + ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@18.19.44)(ts-node@10.9.2(@types/node@18.19.44)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.15)(ts-node@10.9.2(@types/node@20.14.15)(typescript@5.5.4)) + jest: 29.7.0(@types/node@18.19.44)(ts-node@10.9.2(@types/node@18.19.44)(typescript@4.9.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.3 - typescript: 5.5.4 + typescript: 4.9.5 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.25.8 @@ -58700,12 +57699,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.8) - ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.4): + ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@20.14.15)(ts-node@10.9.2(@types/node@20.14.15)(typescript@5.5.4)))(typescript@5.5.4): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) + jest: 29.7.0(@types/node@20.14.15)(ts-node@10.9.2(@types/node@20.14.15)(typescript@5.5.4)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -59024,25 +58023,6 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.14.9 - acorn: 8.13.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.5.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -59735,12 +58715,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@8.1.1: - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 1.9.0 - source-map: 0.7.4 - v8-to-istanbul@9.0.1: dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -59885,23 +58859,6 @@ snapshots: - utf-8-validate - zod - viem@2.16.2(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 1.0.4(typescript@5.5.2)(zod@3.23.8) - isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 @@ -59938,23 +58895,6 @@ snapshots: - utf-8-validate - zod - viem@2.8.13(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.4)(zod@3.23.8): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.5)(zod@3.23.8) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - vlq@1.0.1: {} vlq@2.0.4: {} @@ -59970,22 +58910,14 @@ snapshots: vuvuzela@1.0.3: optional: true - w3c-hr-time@1.0.2: - dependencies: - browser-process-hrtime: 1.0.0 - - w3c-xmlserializer@2.0.0: - dependencies: - xml-name-validator: 3.0.0 - w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 - wagmi@2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@19.0.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.25.8)(@babel/preset-env@7.24.7(@babel/core@7.25.8))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): + wagmi@2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@19.0.0))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@19.0.0(react@19.0.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@19.0.0(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@19.0.1)(bufferutil@4.0.8)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): dependencies: '@tanstack/react-query': 5.45.1(react@19.0.0) - '@wagmi/connectors': 5.0.16(4kbay4ejz7vqiich5e43lezopu) + '@wagmi/connectors': 5.0.16(hncxwyxgso647ji7tzmgxjxpbq) '@wagmi/core': 2.11.4(@tanstack/query-core@5.45.0)(@types/react@19.0.1)(bufferutil@4.0.8)(immer@9.0.21)(react@19.0.0)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.21.35(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) react: 19.0.0 use-sync-external-store: 1.2.0(react@19.0.0) @@ -61269,10 +60201,6 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@5.0.0: {} - - webidl-conversions@6.1.0: {} - webidl-conversions@7.0.0: {} webpack-dev-middleware@6.1.3(webpack@5.91.0(esbuild@0.22.0)): @@ -61384,10 +60312,6 @@ snapshots: transitivePeerDependencies: - supports-color - whatwg-encoding@1.0.5: - dependencies: - iconv-lite: 0.4.24 - whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 @@ -61400,8 +60324,6 @@ snapshots: whatwg-fetch@3.6.20: {} - whatwg-mimetype@2.3.0: {} - whatwg-mimetype@3.0.0: {} whatwg-mimetype@4.0.0: {} @@ -61416,12 +60338,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@8.7.0: - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - whence@2.0.0: dependencies: '@babel/parser': 7.24.7 @@ -61548,13 +60464,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 @@ -61680,11 +60589,6 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 - ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): optionalDependencies: bufferutil: 4.0.8 @@ -61739,8 +60643,6 @@ snapshots: parse-headers: 2.0.5 xtend: 4.0.2 - xml-name-validator@3.0.0: {} - xml-name-validator@4.0.0: {} xmlchars@2.2.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 280eeb28d5..eb2ad97bd7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,9 +2,6 @@ packages: - "apps/*" - "packages/*" - "apps/hermes/client/js" - - "express_relay/examples/easy_lend" - - "express_relay/sdk/js" - - "express_relay/sdk/solidity" - "governance/xc_admin/packages/*" - "governance/pyth_staking_sdk" - "price_service/sdk/js"