diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..c8b1a71f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Bond Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index a4ed24d8..196d5629 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,12 @@ cd apps/dapp pnpm test:open ``` +### Enabling new Chains + +- Check examples under `packages/contract-library/src/deployments` for the configuration structure +- Update `../deployments/(mainnets/testnets)/index.ts` to include the newly added deployment configuration +- If oracle markets or fixed expiry is available, add it to `dapp/.../create-market/config.ts` + ## Useful Links [Turbopack](https://turbo.build/repo/docs) diff --git a/apps/dapp/README.md b/apps/dapp/README.md index 1fbf5521..6bf40a04 100644 --- a/apps/dapp/README.md +++ b/apps/dapp/README.md @@ -1,6 +1,6 @@ # Bond Protocol dApp -## Dev setup (for now) +## Dev setup ```bash pnpm install @@ -15,9 +15,6 @@ pnpm build pnpm preview ``` -> [!WARNING] -> App still need the [caching API](https://github.com/Bond-Protocol/api) to be running in order to work, this should be deprecated in a near future - ## Testing E2E tests are setup using cypress and require a running foundry/anvil node. @@ -38,11 +35,8 @@ pnpm test:run # Headless mode pnpm test:open # Open browser mode -- useful for development ``` -### New Chain Deployment Setup +### Enabling new Chains -- Add addresses to `packages/contract-library/.../address-provider.tsx` -- Add chain to `CHAIN_ID` enum in `packages/types/.../chains.ts` -- Add chain to `dapp/.../blockchain-provider.tsx` -- Add subgraph to `dapp/.../services/subgraph-endpoints.ts` -- Add chain handlers for defillama/coingecko to `dapp/.../defillama` -- If oracle markets are not available, add it to `dapp/.../create-market/config.ts` +- Check examples under `packages/contract-library/src/deployments` for the configuration structure +- Update `../deployments/(mainnets/testnets)/index.ts` to include the newly added deployment configuration +- If oracle markets or fixed expiry is available, add it to `dapp/.../create-market/config.ts` diff --git a/apps/dapp/codegen.ts b/apps/dapp/codegen.ts index 8ecae3a6..f4297245 100644 --- a/apps/dapp/codegen.ts +++ b/apps/dapp/codegen.ts @@ -5,7 +5,8 @@ dotenv.config(); const config: CodegenConfig = { overwrite: true, - schema: process.env.VITE_SUBGRAPH_CODEGEN_SCHEMA_ENDPOINT, + schema: + "https://api.studio.thegraph.com/query/47265/bond-protocol-base/version/latest", documents: "src/graphql/queries.gql", config: { legacyMode: false, diff --git a/apps/dapp/package.json b/apps/dapp/package.json index 976e99c2..e707ae87 100644 --- a/apps/dapp/package.json +++ b/apps/dapp/package.json @@ -40,7 +40,7 @@ "@tanstack/react-query": "^5.8.9", "@wagmi/chains": "^1.8.0", "@wagmi/core": "^1.4.12", - "axios": "^1.6.0", + "axios": "^1.7.4", "buffer": "^6.0.3", "cypress": "^14.1.0", "date-fns": "2.30", diff --git a/apps/dapp/src/components/modules/create-market/CreateMarketController.tsx b/apps/dapp/src/components/modules/create-market/CreateMarketController.tsx index 8b80b125..4d4a9ef5 100644 --- a/apps/dapp/src/components/modules/create-market/CreateMarketController.tsx +++ b/apps/dapp/src/components/modules/create-market/CreateMarketController.tsx @@ -7,14 +7,13 @@ import { useWaitForTransaction, } from "wagmi"; import * as contractLib from "@bond-protocol/contract-library"; -import { BondType, CHAIN_ID, CreateMarketParams } from "@bond-protocol/types"; +import { BondType, CreateMarketParams } from "@bond-protocol/types"; import { checkOraclePairValidity, getBlockExplorer, getOracleDecimals, getOraclePrice, getTeller, - getAuctioneerForCreate, } from "@bond-protocol/contract-library"; import { CreateMarketAction, @@ -28,6 +27,7 @@ import { useTokens } from "hooks"; import { parseUnits, formatUnits } from "viem"; import { useAllowance } from "hooks/contracts/useAllowance"; import { useCreateMarket as useCreateMarketContract } from "hooks/contracts/useCreateMarket"; +import { mainnet } from "@wagmi/chains"; export const CreateMarketController = () => { const [creationHash, setCreationHash] = useState
(); @@ -364,7 +364,7 @@ export function getBondType(state: CreateMarketState) { SDA v1.1 has not been deployed to Ethereum Mainnet It has been deployed to Goerli, but using the old SDA contracts for consistency */ - if (chainId === CHAIN_ID.ETHEREUM_MAINNET) { + if (chainId === mainnet.id.toString()) { return state.vestingType === "term" ? BondType.FIXED_TERM_SDA : BondType.FIXED_EXPIRY_SDA; diff --git a/apps/dapp/src/components/modules/create-market/CreateMarketScreen.tsx b/apps/dapp/src/components/modules/create-market/CreateMarketScreen.tsx index 6b1a8314..03009502 100644 --- a/apps/dapp/src/components/modules/create-market/CreateMarketScreen.tsx +++ b/apps/dapp/src/components/modules/create-market/CreateMarketScreen.tsx @@ -33,7 +33,7 @@ import { import { Address } from "viem"; import { Token } from "@bond-protocol/types"; import { getBlockExplorer } from "@bond-protocol/contract-library"; -import { unavailableFixedExpiry } from "./config"; +import { availableFixedExpiry } from "./config"; export type CreateMarketScreenProps = { projectionData: Array; @@ -221,9 +221,9 @@ export const CreateMarketScreen = (props: CreateMarketScreenProps) => { ModalContent={(props) => ( )} onSubmit={({ value }) => diff --git a/apps/dapp/src/components/modules/create-market/PriceModelPicker.tsx b/apps/dapp/src/components/modules/create-market/PriceModelPicker.tsx index bca39d71..19ae04ee 100644 --- a/apps/dapp/src/components/modules/create-market/PriceModelPicker.tsx +++ b/apps/dapp/src/components/modules/create-market/PriceModelPicker.tsx @@ -7,7 +7,7 @@ import { PriceModelDetails } from "./PriceModelDetails"; import { PriceModel, PriceType } from "./create-market-reducer"; import { PriceControl, PriceControlProps } from "./PriceControl"; import { useNetwork } from "wagmi"; -import { unavailableOracleChains } from "./config"; +import { availableOracleChains } from "./config"; import { featureToggles } from "src/feature-toggles"; export type PriceModelPickerProps = { @@ -128,7 +128,7 @@ export const PriceModelPicker = (props: PriceModelPickerProps) => {

Price Model

{featureToggles.ORACLE_BONDS ? ( - props.chain && !unavailableOracleChains.includes(props.chain) ? ( + props.chain && availableOracleChains.includes(props.chain) ? ( { diff --git a/apps/dapp/src/components/modules/create-market/config.ts b/apps/dapp/src/components/modules/create-market/config.ts index a06e2911..02cb636a 100644 --- a/apps/dapp/src/components/modules/create-market/config.ts +++ b/apps/dapp/src/components/modules/create-market/config.ts @@ -1,5 +1,5 @@ -/** Chains where the Oracle Auctioneers are not avaiable*/ -export const unavailableOracleChains = [1, 8453, 84532, 56, 34443]; +/** Chains where the Oracle Auctioneers are avaiable*/ +export const availableOracleChains = [42161, 10, 137]; -/** Chains where the Fixed Expiry Auctioneers are not avaiable*/ -export const unavailableFixedExpiry = [34443, 80084]; +/** Chains where the Fixed Expiry Auctioneers are avaiable*/ +export const availableFixedExpiry = [1, 10, 42161, 56]; diff --git a/apps/dapp/src/components/modules/create-market/create-market-reducer.tsx b/apps/dapp/src/components/modules/create-market/create-market-reducer.tsx index 10768ff2..2c61a143 100644 --- a/apps/dapp/src/components/modules/create-market/create-market-reducer.tsx +++ b/apps/dapp/src/components/modules/create-market/create-market-reducer.tsx @@ -1,9 +1,9 @@ import { calculateTrimDigits, trimAsNumber, formatDate } from "formatters"; import { createContext, Dispatch, useContext, useReducer } from "react"; import { differenceInCalendarDays } from "date-fns"; -import { formatUnits, parseUnits } from "viem"; +import { parseUnits } from "viem"; import { switchNetwork } from "@wagmi/core"; -import { unavailableOracleChains } from "./config"; +import { availableOracleChains } from "./config"; const DEFAULT_DEPOSIT_INTERVAL = 86400; const DEFAULT_DEBT_BUFFER = 75; @@ -198,11 +198,7 @@ function calculateAllowance( let payoutTokenPrice = payoutToken.price; if (state.priceModel === "static") { - if ( - state.priceModels?.static?.fixedPrice && - !payoutToken.price && - capacityType === "quote" - ) { + if (state.priceModels?.static?.fixedPrice && !payoutToken.price) { payoutTokenPrice = state.priceModels?.static?.fixedPrice; } else if (!payoutToken.price) { return { @@ -272,7 +268,7 @@ export const reducer = ( switchNetwork({ chainId }); - const oracleUnavailable = unavailableOracleChains.includes(chainId); + const oracleUnavailable = !availableOracleChains.includes(chainId); return { ...state, diff --git a/apps/dapp/src/config.ts b/apps/dapp/src/config.ts index 4625a857..11dec920 100644 --- a/apps/dapp/src/config.ts +++ b/apps/dapp/src/config.ts @@ -45,3 +45,6 @@ export const testnetSubgraphs = "https://subgraph.satsuma-prod.com/35414fbc50a7/spaces-team/bond-protocol-base-sepolia/api", } : {}; + +// Key is domain restricted to *.bondprotocol.finance +export const GRAPH_API_KEY = "70873ff55ac0869c81ba8a128ef5e786"; diff --git a/apps/dapp/src/config/auto-signer.ts b/apps/dapp/src/config/auto-signer.ts index b6787c25..4350e477 100644 --- a/apps/dapp/src/config/auto-signer.ts +++ b/apps/dapp/src/config/auto-signer.ts @@ -1,6 +1,6 @@ import { WalletClient } from "wagmi"; import { baseSepolia, foundry } from "viem/chains"; -import { custom, createWalletClient, Account, Address } from "viem"; +import { custom, createWalletClient, Address } from "viem"; import { Connector } from "wagmi"; import { injectAutoSignerProvider } from "@axis-finance/auto-signer-provider"; import { privateKeyToAccount } from "viem/accounts"; diff --git a/apps/dapp/src/config/chains.ts b/apps/dapp/src/config/chains.ts index 2ac8e58e..e09d4078 100644 --- a/apps/dapp/src/config/chains.ts +++ b/apps/dapp/src/config/chains.ts @@ -1,21 +1,16 @@ -import { arbitrum, mainnet, optimism, polygon, base } from "@wagmi/chains"; import { environment } from "src/environment"; import { getIconsForChains } from "src/utils/get-icons-for-chains"; -import { Chain, baseSepolia, bsc } from "viem/chains"; -import { sonic } from "@bond-protocol/contract-library"; +import { Chain } from "viem/chains"; +import { mainnetDeployments } from "@bond-protocol/contract-library/src/deployments/mainnets"; +import { testnetDeployments } from "@bond-protocol/contract-library/src/deployments/testnets"; type _Chain = Chain & { logoUrl?: string }; -export const TESTNETS = [baseSepolia].map(getIconsForChains); -export const MAINNETS = [ - mainnet, - arbitrum, - optimism, - polygon, - base, - bsc, - sonic, -]; +export const TESTNETS = testnetDeployments + .map((d) => d.chain) + .map(getIconsForChains); + +export const MAINNETS = mainnetDeployments.map((d) => d.chain); export const SUPPORTED_CHAINS = [...TESTNETS, ...MAINNETS]; export const ACTIVE_CHAINS: _Chain[] = environment.isTestnet diff --git a/apps/dapp/src/config/public-clients.ts b/apps/dapp/src/config/public-clients.ts index 5f47c456..12ba6fb3 100644 --- a/apps/dapp/src/config/public-clients.ts +++ b/apps/dapp/src/config/public-clients.ts @@ -1,56 +1,14 @@ -import { - arbitrum, - arbitrumGoerli, - mainnet, - optimism, - polygon, - base, -} from "@wagmi/chains"; import { environment } from "src/environment"; import { ANVIL_RPC_URL } from "./auto-signer"; import { PublicClient, createPublicClient, http } from "viem"; -import { baseSepolia, bsc } from "viem/chains"; -import { sonic } from "@bond-protocol/contract-library"; +import { baseSepolia } from "viem/chains"; +import { deployments } from "@bond-protocol/contract-library"; const key = import.meta.env.VITE_ALCHEMY_RPC_KEY; -const rpcConfigs = [ - { - chain: mainnet, - endpoint: ` https://eth-mainnet.g.alchemy.com/v2/${key}`, - }, - { - chain: arbitrumGoerli, - endpoint: `https://arb-goerli.g.alchemy.com/v2/${key}`, - }, - { - chain: arbitrum, - endpoint: `https://arb-mainnet.g.alchemy.com/v2/${key}`, - }, - { - chain: optimism, - endpoint: `https://opt-mainnet.g.alchemy.com/v2/${key}`, - }, - { - chain: polygon, - endpoint: `https://polygon-mainnet.g.alchemy.com/v2/${key}`, - }, - { - chain: base, - endpoint: `https://base-mainnet.g.alchemy.com/v2/${key}`, - }, - { - chain: baseSepolia, - endpoint: `https://base-sepolia.g.alchemy.com/v2/${key}`, - }, - { - chain: sonic, - endpoint: `https://sonic-mainnet.g.alchemy.com/v2/${key}`, - }, - { - chain: bsc, - endpoint: `https://bnb-mainnet.g.alchemy.com/v2/${key}`, - }, -]; +const rpcConfigs = deployments.map((d) => ({ + chain: d.chain, + endpoint: d.getRpcURL(key), +})); const testRpcConfigs = [ { diff --git a/apps/dapp/src/services/subgraph-endpoints.tsx b/apps/dapp/src/services/subgraph-endpoints.ts similarity index 55% rename from apps/dapp/src/services/subgraph-endpoints.tsx rename to apps/dapp/src/services/subgraph-endpoints.ts index 8accf984..484248c8 100644 --- a/apps/dapp/src/services/subgraph-endpoints.tsx +++ b/apps/dapp/src/services/subgraph-endpoints.ts @@ -1,75 +1,26 @@ import { UseQueryResult, useQueries } from "@tanstack/react-query"; import { environment } from "src/environment"; -import { mainnetSubgraphs, testnetSubgraphs } from "src/config"; import { Variables } from "graphql-request"; import { queryAllEndpoints } from "src/utils/queryAllEndpoints"; -import { CHAIN_ID } from "@bond-protocol/types"; +import { mainnetDeployments } from "@bond-protocol/contract-library/src/deployments/mainnets"; +import { testnetDeployments } from "@bond-protocol/contract-library/src/deployments/testnets"; +import { BondDeployment } from "@bond-protocol/contract-library/src/deployments/types"; -/**List of available subgraph endpoint urls indexed by chain*/ -export const subgraphEndpoints = { - ...mainnetSubgraphs, - ...testnetSubgraphs, -} as Record; - -export const mainnetEndpoints = [ - { - url: subgraphEndpoints[CHAIN_ID.ETHEREUM_MAINNET], - chain: CHAIN_ID.ETHEREUM_MAINNET, - }, - { - url: subgraphEndpoints[CHAIN_ID.ARBITRUM_MAINNET], - chain: CHAIN_ID.ARBITRUM_MAINNET, - }, - { - url: subgraphEndpoints[CHAIN_ID.OPTIMISM_MAINNET], - chain: CHAIN_ID.OPTIMISM_MAINNET, - }, - { - url: subgraphEndpoints[CHAIN_ID.POLYGON_MAINNET], - chain: CHAIN_ID.POLYGON_MAINNET, - }, - { - url: subgraphEndpoints[CHAIN_ID.BASE_MAINNET], - chain: CHAIN_ID.BASE_MAINNET, - }, - { - url: subgraphEndpoints[CHAIN_ID.SONIC], - chain: CHAIN_ID.SONIC, - }, - { - url: subgraphEndpoints[CHAIN_ID.BSC_MAINNET], - chain: CHAIN_ID.BSC_MAINNET[CHAIN_ID.BSC_MAINNET], - }, -]; - -export const testnetEndpoints = [ - // { - // url: subgraphEndpoints[CHAIN_ID.GOERLI_TESTNET], - // chain: CHAIN_ID.GOERLI_TESTNET, - // }, - // { - // url: subgraphEndpoints[CHAIN_ID.ARBITRUM_GOERLI_TESTNET], - // chain: CHAIN_ID.ARBITRUM_GOERLI_TESTNET, - // }, - // { - // url: subgraphEndpoints[CHAIN_ID.OPTIMISM_GOERLI_TESTNET], - // chain: CHAIN_ID.OPTIMISM_GOERLI_TESTNET, - // }, +function toSubgraphURL(deployment: BondDeployment) { + return { + url: deployment.subgraphURL, + chain: deployment.chain, + }; +} +export const mainnetEndpoints = mainnetDeployments.map(toSubgraphURL); +export const testnetEndpoints = testnetDeployments.map(toSubgraphURL); - // { - // url: subgraphEndpoints[CHAIN_ID.POLYGON_MUMBAI_TESTNET], - // chain: CHAIN_ID.POLYGON_MUMBAI_TESTNET, - // }, - { - url: subgraphEndpoints[CHAIN_ID.BASE_SEPOLIA], - chain: CHAIN_ID.BASE_SEPOLIA, - }, - /*{ - url: subgraphEndpoints[CHAIN_ID.AVALANCHE_FUJI_TESTNET], - chain: CHAIN_ID.AVALANCHE_FUJI_TESTNET, - }, - */ -]; +export const subgraphEndpoints: Record = [ + ...mainnetEndpoints, + ...testnetEndpoints, +].reduce((record, element) => { + return { ...record, [element.chain.id]: element.url }; +}, {}); export const currentEndpoints = environment.isTesting ? testnetEndpoints @@ -127,7 +78,7 @@ export function useGetSubgraphQueries({ export const getSubgraphQueriesPerChainFn = ( query: ({}: any, {}: any, {}: any) => UseQueryResult, - func: (chain: CHAIN_ID) => any, + func: (chain: number) => any, fieldName: string ): UseQueryResult[] => { const endpoints = isTestnet ? testnetEndpoints : mainnetEndpoints; diff --git a/apps/dapp/src/utils/queryAllEndpoints.ts b/apps/dapp/src/utils/queryAllEndpoints.ts index 35d3a047..96cd1701 100644 --- a/apps/dapp/src/utils/queryAllEndpoints.ts +++ b/apps/dapp/src/utils/queryAllEndpoints.ts @@ -5,15 +5,18 @@ import { import { environment } from "src/environment"; import { request } from "./request"; import { Variables } from "graphql-request"; +import { GRAPH_API_KEY } from "src/config"; export function queryAllEndpoints({ document, variables, enabled = true, + headers = { Authorization: `Bearer ${GRAPH_API_KEY}` }, }: { document: string; variables?: Variables; enabled?: boolean; + headers?: Record; }) { const isTestnet = environment.isTestnet; const endpoints = isTestnet ? testnetEndpoints : mainnetEndpoints; @@ -26,9 +29,10 @@ export function queryAllEndpoints({ const queries = endpoints.map(({ url }) => ({ queryKey: [url, document], queryFn: async () => { - const response = await request(url, document, vars); + const response = await request(url, document, vars, headers); return response; }, + enabled, })); diff --git a/apps/dapp/src/utils/request.ts b/apps/dapp/src/utils/request.ts index 65b33f8b..1a9937b3 100644 --- a/apps/dapp/src/utils/request.ts +++ b/apps/dapp/src/utils/request.ts @@ -13,7 +13,8 @@ type TypedDocumentNode< export async function request( endpoint: string, document: RequestDocument | TypedDocumentNode, - variables?: Variables + variables?: Variables, + headers?: Record ) { const response = await graphqlRequest( endpoint, @@ -21,6 +22,7 @@ export async function request( variables, { "Content-Type": "application/json", + ...headers, } ); diff --git a/apps/lp/package.json b/apps/lp/package.json index 64815b2a..3d857eb7 100644 --- a/apps/lp/package.json +++ b/apps/lp/package.json @@ -13,7 +13,7 @@ "@next/font": "13.1.1", "@vercel/analytics": "^0.1.8", "add": "^2.0.6", - "eslint": "8.31.0", + "eslint": "9.0.0", "eslint-config-next": "13.1.1", "@bond-protocol/eslint-config-custom": "workspace:*", "next": "13.5.1", diff --git a/packages/contract-library/src/core/address-provider.ts b/packages/contract-library/src/core/address-provider.ts index a168c182..835f1251 100644 --- a/packages/contract-library/src/core/address-provider.ts +++ b/packages/contract-library/src/core/address-provider.ts @@ -1,33 +1,8 @@ import { Address, zeroAddress } from "viem"; import { auctioneerAddressesByType } from "./enums"; import type { BondType } from "@bond-protocol/types"; - -export type ContractAddresses = { - authority: Address; - aggregator: Address; - fixedExpiryTeller: Address; - fixedExpirySDAAuctioneer: Address; - fixedExpirySDAv1_1Auctioneer: Address; - fixedExpiryFPAAuctioneer: Address; - fixedExpiryOFDAAuctioneer: Address; - fixedExpiryOSDAAuctioneer: Address; - fixedTermTeller: Address; - fixedTermSDAAuctioneer: Address; - fixedTermSDAv1_1Auctioneer: Address; - fixedTermFPAAuctioneer: Address; - fixedTermOFDAAuctioneer: Address; - fixedTermOSDAAuctioneer: Address; - settlement: Address; -}; - -export type AddressesForType = { - teller: Address; - auctioneer: Address; -}; - -export type BaseMarketPricing = "dynamic" | "static"; -export type OracleMarketPricing = "oracle-dynamic" | "oracle-static"; -export type MarketPricing = BaseMarketPricing | OracleMarketPricing; +import { ContractAddresses, MarketPricing } from "./types"; +import { deployments } from "../deployments/index"; export const getMarketTypeByAuctioneer = (address: string): MarketPricing => { switch (address.toLowerCase()) { @@ -50,42 +25,6 @@ export const getMarketTypeByAuctioneer = (address: string): MarketPricing => { } }; -const mainnetAddresses: ContractAddresses = { - authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", - aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", - fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", - fixedExpirySDAAuctioneer: "0x007FEA32545a39Ff558a1367BBbC1A22bc7ABEfD", - fixedExpirySDAv1_1Auctioneer: "" as Address, - fixedExpiryFPAAuctioneer: "0xFEF9A527ac84836DC9939Ad75eb8ce325bBE0E54", - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", - fixedTermSDAAuctioneer: "0x007F7A1cb838A872515c8ebd16bE4b14Ef43a222", - fixedTermSDAv1_1Auctioneer: "" as Address, - fixedTermFPAAuctioneer: "0xF7F9Ae2415F8Cb89BEebf9662A19f2393e7065e0", - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007105D27BCe31CcFFA76Fc191886e944606E34a", -}; - -const goerliAddresses: ContractAddresses = { - authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", - aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", - fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", - fixedExpirySDAAuctioneer: "0x007FEA32545a39Ff558a1367BBbC1A22bc7ABEfD", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA041e5a3941BA12EbaBA7A7492BEAf91B646", - fixedExpiryFPAAuctioneer: "0xFEF9A53AA10Ce2C9Ab6519AEE7DF82767F504f55", - fixedExpiryOFDAAuctioneer: "0xFE0FDA2ACB13249099E5edAc64439ac76C7eF4B6", - fixedExpiryOSDAAuctioneer: "0xFE05DA9fffc72027C26E2327A9e6339670CD1b90", - fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", - fixedTermSDAAuctioneer: "0x007F7A1cb838A872515c8ebd16bE4b14Ef43a222", - fixedTermSDAv1_1Auctioneer: "0xF75DA09c8538b7AFe8B9D3adC1d626dA5D33467F", - fixedTermFPAAuctioneer: "0xF7F9A96cDBFEFd70BDa14a8f30EC503b16bCe9b1", - fixedTermOFDAAuctioneer: "0xF70FDAae514a8b48B83caDa51C0847B46Bb698bd", - fixedTermOSDAAuctioneer: "0xF705DA9476a172408e1B94b2A7B2eF595A91C29b", - settlement: "0x007105D27BCe31CcFFA76Fc191886e944606E34a", -}; - const arbitrumMainnetAddresses: ContractAddresses = { authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", @@ -104,228 +43,15 @@ const arbitrumMainnetAddresses: ContractAddresses = { settlement: "0x007105D27BCe31CcFFA76Fc191886e944606E34a", }; -const arbitrumGoerliAddresses: ContractAddresses = { - authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", - aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", - fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", - fixedExpirySDAAuctioneer: "0x007FEA32545a39Ff558a1367BBbC1A22bc7ABEfD", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA041e5a3941BA12EbaBA7A7492BEAf91B646", - fixedExpiryFPAAuctioneer: "0xFEF9A53AA10Ce2C9Ab6519AEE7DF82767F504f55", - fixedExpiryOFDAAuctioneer: "0xFE0FDA2ACB13249099E5edAc64439ac76C7eF4B6", - fixedExpiryOSDAAuctioneer: "0xFE05DA9fffc72027C26E2327A9e6339670CD1b90", - fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", - fixedTermSDAAuctioneer: "0x007F7A1cb838A872515c8ebd16bE4b14Ef43a222", - fixedTermSDAv1_1Auctioneer: "0xF75DA09c8538b7AFe8B9D3adC1d626dA5D33467F", - fixedTermFPAAuctioneer: "0xF7F9A96cDBFEFd70BDa14a8f30EC503b16bCe9b1", - fixedTermOFDAAuctioneer: "0xF70FDAae514a8b48B83caDa51C0847B46Bb698bd", - fixedTermOSDAAuctioneer: "0xF705DA9476a172408e1B94b2A7B2eF595A91C29b", - settlement: "0x007105D27BCe31CcFFA76Fc191886e944606E34a", -}; - -const optimismMainnetAddresses: ContractAddresses = { - authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", - aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", - fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", - fixedExpirySDAAuctioneer: "" as Address, - fixedExpirySDAv1_1Auctioneer: "0xFE5DA041e5a3941BA12EbaBA7A7492BEAf91B646", - fixedExpiryFPAAuctioneer: "0xFEF9A53AA10Ce2C9Ab6519AEE7DF82767F504f55", - fixedExpiryOFDAAuctioneer: "0xFE0FDA2ACB13249099E5edAc64439ac76C7eF4B6", - fixedExpiryOSDAAuctioneer: "0xFE05DA9fffc72027C26E2327A9e6339670CD1b90", - fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", - fixedTermSDAAuctioneer: "" as Address, - fixedTermSDAv1_1Auctioneer: "0xF75DA09c8538b7AFe8B9D3adC1d626dA5D33467F", - fixedTermFPAAuctioneer: "0xF7F9A96cDBFEFd70BDa14a8f30EC503b16bCe9b1", - fixedTermOFDAAuctioneer: "0xF70FDAae514a8b48B83caDa51C0847B46Bb698bd", - fixedTermOSDAAuctioneer: "0xF705DA9476a172408e1B94b2A7B2eF595A91C29b", - settlement: "" as Address, -}; - -const optimismGoerliAddresses: ContractAddresses = { - authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", - aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", - fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", - fixedExpirySDAAuctioneer: "0x007FEA32545a39Ff558a1367BBbC1A22bc7ABEfD", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA041e5a3941BA12EbaBA7A7492BEAf91B646", - fixedExpiryFPAAuctioneer: "0xFEF9A53AA10Ce2C9Ab6519AEE7DF82767F504f55", - fixedExpiryOFDAAuctioneer: "0xFE0FDA2ACB13249099E5edAc64439ac76C7eF4B6", - fixedExpiryOSDAAuctioneer: "0xFE05DA9fffc72027C26E2327A9e6339670CD1b90", - fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", - fixedTermSDAAuctioneer: "0x007F7A1cb838A872515c8ebd16bE4b14Ef43a222", - fixedTermSDAv1_1Auctioneer: "0xF75DA09c8538b7AFe8B9D3adC1d626dA5D33467F", - fixedTermFPAAuctioneer: "0xF7F9A96cDBFEFd70BDa14a8f30EC503b16bCe9b1", - fixedTermOFDAAuctioneer: "0xF70FDAae514a8b48B83caDa51C0847B46Bb698bd", - fixedTermOSDAAuctioneer: "0xF705DA9476a172408e1B94b2A7B2eF595A91C29b", - settlement: "" as Address, -}; - -const polygonMumbaiAddresses: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", - fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", - fixedExpiryOFDAAuctioneer: "0xFE0FDAD3969BbD8dd94c0bda7b04eC4ab66fFf85", - fixedExpiryOSDAAuctioneer: "0xFE05DA30aF9cfAc9bCfC911273F83fDcbb04Ae22", - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "0xF70FDA7c9C397CE958320Db5C481939F0a8bb08D", - fixedTermOSDAAuctioneer: "0xF705DA88cd0AAeed5EA612502Fb9E5E7f1A5c2bD", - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const polygonMainnetAddresses: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", - fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", - fixedExpiryOFDAAuctioneer: "0xFE0FDAD3969BbD8dd94c0bda7b04eC4ab66fFf85", - fixedExpiryOSDAAuctioneer: "0xFE05DA30aF9cfAc9bCfC911273F83fDcbb04Ae22", - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: - "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "0xF70FDA7c9C397CE958320Db5C481939F0a8bb08D", - fixedTermOSDAAuctioneer: "0xF705DA88cd0AAeed5EA612502Fb9E5E7f1A5c2bD", - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const baseSepoliaAddresses: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", - fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const baseMainnetAddresses: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", - fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const bscMainnetAddresses: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", - fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpiryFPAAuctioneer: "" as Address, - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: - "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "" as Address, - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const modeMainnetAddresses: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", - fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", - fixedExpiryFPAAuctioneer: "" as Address, - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: - "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const berachainBartio: ContractAddresses = { - authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", - aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", - fixedExpiryTeller: "" as Address, - fixedExpirySDAAuctioneer: "" as Address, - fixedExpirySDAv1_1Auctioneer: "" as Address, - fixedExpiryFPAAuctioneer: "" as Address, - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: - "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const sonicAddresses: ContractAddresses = { - authority: "0x007A0F3b90c97ab8c5eE7f3b142204Ad819edB3A", - aggregator: "0x007A66b5358D0e2a07C0eE078908517d186c1108", - fixedExpiryTeller: "" as Address, - fixedExpirySDAAuctioneer: "" as Address, - fixedExpirySDAv1_1Auctioneer: "" as Address, - fixedExpiryFPAAuctioneer: "" as Address, - fixedExpiryOFDAAuctioneer: "" as Address, - fixedExpiryOSDAAuctioneer: "" as Address, - fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", - fixedTermSDAAuctioneer: - "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, - fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", - fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", - fixedTermOFDAAuctioneer: "" as Address, - fixedTermOSDAAuctioneer: "" as Address, - settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", -}; - -const addressesByChainId: Record> = { - 1: mainnetAddresses as ContractAddresses, - 5: goerliAddresses, - 42161: arbitrumMainnetAddresses, - 421613: arbitrumGoerliAddresses, - 10: optimismMainnetAddresses as ContractAddresses, - 56: bscMainnetAddresses, - 34443: modeMainnetAddresses, - 420: optimismGoerliAddresses, - 137: polygonMainnetAddresses, - 80001: polygonMumbaiAddresses, - 8453: baseMainnetAddresses, - 84532: baseSepoliaAddresses, - 80084: berachainBartio, - 146: sonicAddresses, -}; +const addressesByChainId: Record< + number, + Partial +> = deployments.reduce((acc, ele) => { + return { ...acc, [ele.chain.id]: ele.addresses }; +}, {}); export const getAddresses = (chainId: number) => { - return addressesByChainId[chainId] ?? mainnetAddresses; + return addressesByChainId[chainId]; }; export function getAuctioneerByBondType( diff --git a/packages/contract-library/src/core/enums.ts b/packages/contract-library/src/core/enums.ts index 2e16273e..398f4625 100644 --- a/packages/contract-library/src/core/enums.ts +++ b/packages/contract-library/src/core/enums.ts @@ -1,5 +1,5 @@ import { abis } from "../abis"; -import { ContractAddresses } from "./address-provider"; +import { ContractAddresses } from "./types"; import { BondType } from "@bond-protocol/types"; export enum Auctioneer { diff --git a/packages/contract-library/src/core/index.ts b/packages/contract-library/src/core/index.ts index 972c7559..fdfb74fd 100644 --- a/packages/contract-library/src/core/index.ts +++ b/packages/contract-library/src/core/index.ts @@ -2,3 +2,4 @@ export * from "./contract-helper"; export * from "./address-provider"; export * from "./chains"; export * from "./enums"; +export type * from "./types"; diff --git a/packages/contract-library/src/core/types.ts b/packages/contract-library/src/core/types.ts new file mode 100644 index 00000000..6410d1ab --- /dev/null +++ b/packages/contract-library/src/core/types.ts @@ -0,0 +1,28 @@ +import { Address } from "viem"; + +export type ContractAddresses = { + authority: Address; + aggregator: Address; + fixedExpiryTeller: Address; + fixedExpirySDAAuctioneer: Address; + fixedExpirySDAv1_1Auctioneer: Address; + fixedExpiryFPAAuctioneer: Address; + fixedExpiryOFDAAuctioneer: Address; + fixedExpiryOSDAAuctioneer: Address; + fixedTermTeller: Address; + fixedTermSDAAuctioneer: Address; + fixedTermSDAv1_1Auctioneer: Address; + fixedTermFPAAuctioneer: Address; + fixedTermOFDAAuctioneer: Address; + fixedTermOSDAAuctioneer: Address; + settlement: Address; +}; + +export type AddressesForType = { + teller: Address; + auctioneer: Address; +}; + +export type BaseMarketPricing = "dynamic" | "static"; +export type OracleMarketPricing = "oracle-dynamic" | "oracle-static"; +export type MarketPricing = BaseMarketPricing | OracleMarketPricing; diff --git a/packages/contract-library/src/deployments/index.ts b/packages/contract-library/src/deployments/index.ts new file mode 100644 index 00000000..849ea8bc --- /dev/null +++ b/packages/contract-library/src/deployments/index.ts @@ -0,0 +1,8 @@ +import { mainnetDeployments } from "./mainnets"; +import { testnetDeployments } from "./testnets"; + +export const deployments = [...mainnetDeployments, ...testnetDeployments]; + +export const deploymentRecord = deployments.reduce((acc, ele) => { + return { ...acc, [ele.chain.id]: ele }; +}, {}); diff --git a/packages/contract-library/src/deployments/mainnets/arbitrum.ts b/packages/contract-library/src/deployments/mainnets/arbitrum.ts new file mode 100644 index 00000000..da958c29 --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/arbitrum.ts @@ -0,0 +1,28 @@ +import type { ContractAddresses } from "../../"; +import { arbitrum } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", + aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", + fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", + fixedExpirySDAAuctioneer: "0x007FEA32545a39Ff558a1367BBbC1A22bc7ABEfD", + fixedExpirySDAv1_1Auctioneer: "0xFE5DA041e5a3941BA12EbaBA7A7492BEAf91B646", + fixedExpiryFPAAuctioneer: "0xFEF9A53AA10Ce2C9Ab6519AEE7DF82767F504f55", + fixedExpiryOFDAAuctioneer: "0xFE0FDA2ACB13249099E5edAc64439ac76C7eF4B6", + fixedExpiryOSDAAuctioneer: "0xFE05DA9fffc72027C26E2327A9e6339670CD1b90", + fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", + fixedTermSDAAuctioneer: "0x007F7A1cb838A872515c8ebd16bE4b14Ef43a222", + fixedTermSDAv1_1Auctioneer: "0xF75DA09c8538b7AFe8B9D3adC1d626dA5D33467F", + fixedTermFPAAuctioneer: "0xF7F9A96cDBFEFd70BDa14a8f30EC503b16bCe9b1", + fixedTermOFDAAuctioneer: "0xF70FDAae514a8b48B83caDa51C0847B46Bb698bd", + fixedTermOSDAAuctioneer: "0xF705DA9476a172408e1B94b2A7B2eF595A91C29b", + settlement: "0x007105D27BCe31CcFFA76Fc191886e944606E34a", +}; + +export default { + chain: arbitrum, + addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/4ePbdoXWVGRgUFJk2GirF4Gi3X3qcKPhAzWJJvH5M6g1", + getRpcURL: (key?: string) => `https://arb-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/mainnets/base.ts b/packages/contract-library/src/deployments/mainnets/base.ts new file mode 100644 index 00000000..688dfd75 --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/base.ts @@ -0,0 +1,29 @@ +import type { ContractAddresses } from "../.."; +import type { Address } from "viem"; +import { base } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", + aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", + fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", + fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", + fixedExpiryOFDAAuctioneer: "" as Address, + fixedExpiryOSDAAuctioneer: "" as Address, + fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", + fixedTermSDAAuctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", + fixedTermOFDAAuctioneer: "" as Address, + fixedTermOSDAAuctioneer: "" as Address, + settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", +}; + +export default { + chain: base, + addresses: addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/8mab7L62yataWPcKSBqcLpLoSw7WU5VLsfwqnHmzzgX1", + getRpcURL: (key?: string) => `https://base-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/mainnets/bsc.ts b/packages/contract-library/src/deployments/mainnets/bsc.ts new file mode 100644 index 00000000..9558e2d5 --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/bsc.ts @@ -0,0 +1,30 @@ +import { ContractAddresses } from "../.."; +import { Address } from "viem"; +import { bsc } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", + aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", + fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", + fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpiryFPAAuctioneer: "" as Address, + fixedExpiryOFDAAuctioneer: "" as Address, + fixedExpiryOSDAAuctioneer: "" as Address, + fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", + fixedTermSDAAuctioneer: + "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, + fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermFPAAuctioneer: "" as Address, + fixedTermOFDAAuctioneer: "" as Address, + fixedTermOSDAAuctioneer: "" as Address, + settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", +}; + +export default { + chain: bsc, + addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/ZoGqhRHsndEdvqQ6aJeG5xtLRq4LnrMajotrApRyUuM", + getRpcURL: (key?: string) => `https://bnb-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/mainnets/index.ts b/packages/contract-library/src/deployments/mainnets/index.ts new file mode 100644 index 00000000..8ba14214 --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/index.ts @@ -0,0 +1,19 @@ +import arbitrum from "./arbitrum"; +import mainnet from "./mainnet"; +import optimism from "./optimism"; +import base from "./base"; +import polygon from "./polygon"; +import sonic from "./sonic"; +import bsc from "./bsc"; + +export const mainnetDeployments = [ + arbitrum, + mainnet, + optimism, + base, + polygon, + sonic, + bsc, +]; + +export * as arbitrumDeployment from "./arbitrum"; diff --git a/packages/contract-library/src/deployments/mainnets/mainnet.ts b/packages/contract-library/src/deployments/mainnets/mainnet.ts new file mode 100644 index 00000000..5f9eb6ab --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/mainnet.ts @@ -0,0 +1,29 @@ +import type { ContractAddresses } from "../.."; +import type { Address } from "viem"; +import { mainnet } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", + aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", + fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", + fixedExpirySDAAuctioneer: "0x007FEA32545a39Ff558a1367BBbC1A22bc7ABEfD", + fixedExpirySDAv1_1Auctioneer: "" as Address, + fixedExpiryFPAAuctioneer: "0xFEF9A527ac84836DC9939Ad75eb8ce325bBE0E54", + fixedExpiryOFDAAuctioneer: "" as Address, + fixedExpiryOSDAAuctioneer: "" as Address, + fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", + fixedTermSDAAuctioneer: "0x007F7A1cb838A872515c8ebd16bE4b14Ef43a222", + fixedTermSDAv1_1Auctioneer: "" as Address, + fixedTermFPAAuctioneer: "0xF7F9Ae2415F8Cb89BEebf9662A19f2393e7065e0", + fixedTermOFDAAuctioneer: "" as Address, + fixedTermOSDAAuctioneer: "" as Address, + settlement: "0x007105D27BCe31CcFFA76Fc191886e944606E34a", +}; + +export default { + chain: mainnet, + addresses: addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/5RqgP2oXavdheeqPxo4vaiRGnwuPzEMVs94aHJmgrJvX", + getRpcURL: (key?: string) => `https://eth-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/mainnets/optimism.ts b/packages/contract-library/src/deployments/mainnets/optimism.ts new file mode 100644 index 00000000..e246bbe5 --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/optimism.ts @@ -0,0 +1,29 @@ +import type { ContractAddresses } from "../.."; +import type { Address } from "viem"; +import { optimism } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A0F48A4e3d74Ab4234adf9eA9EB32f87b4b14", + aggregator: "0x007A66A2a13415DB3613C1a4dd1C942A285902d1", + fixedExpiryTeller: "0x007FE70dc9797C4198528aE43d8195ffF82Bdc95", + fixedExpirySDAAuctioneer: "" as Address, + fixedExpirySDAv1_1Auctioneer: "0xFE5DA041e5a3941BA12EbaBA7A7492BEAf91B646", + fixedExpiryFPAAuctioneer: "0xFEF9A53AA10Ce2C9Ab6519AEE7DF82767F504f55", + fixedExpiryOFDAAuctioneer: "0xFE0FDA2ACB13249099E5edAc64439ac76C7eF4B6", + fixedExpiryOSDAAuctioneer: "0xFE05DA9fffc72027C26E2327A9e6339670CD1b90", + fixedTermTeller: "0x007F7735baF391e207E3aA380bb53c4Bd9a5Fed6", + fixedTermSDAAuctioneer: "" as Address, + fixedTermSDAv1_1Auctioneer: "0xF75DA09c8538b7AFe8B9D3adC1d626dA5D33467F", + fixedTermFPAAuctioneer: "0xF7F9A96cDBFEFd70BDa14a8f30EC503b16bCe9b1", + fixedTermOFDAAuctioneer: "0xF70FDAae514a8b48B83caDa51C0847B46Bb698bd", + fixedTermOSDAAuctioneer: "0xF705DA9476a172408e1B94b2A7B2eF595A91C29b", + settlement: "" as Address, +}; + +export default { + chain: optimism, + addresses: addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/36u2MphKvLra96HPfFVYeEtHkj2G62eBe9BJZojFTfWx", + getRpcURL: (key?: string) => `https://opt-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/mainnets/polygon.ts b/packages/contract-library/src/deployments/mainnets/polygon.ts new file mode 100644 index 00000000..6cd0b4b7 --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/polygon.ts @@ -0,0 +1,31 @@ +import type { ContractAddresses } from "../.."; +import type { Address } from "viem"; +import { polygon } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", + aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", + fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", + fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", + fixedExpiryOFDAAuctioneer: "0xFE0FDAD3969BbD8dd94c0bda7b04eC4ab66fFf85", + fixedExpiryOSDAAuctioneer: "0xFE05DA30aF9cfAc9bCfC911273F83fDcbb04Ae22", + fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", + fixedTermSDAAuctioneer: + "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, + fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", + fixedTermOFDAAuctioneer: "0xF70FDA7c9C397CE958320Db5C481939F0a8bb08D", + fixedTermOSDAAuctioneer: "0xF705DA88cd0AAeed5EA612502Fb9E5E7f1A5c2bD", + settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", +}; + +export default { + chain: polygon, + addresses: addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/3pfu8JLfU29gum3EmRwy9QMNudnZEzME3aqEpbH6So84", + getRpcURL: (key?: string) => + `https://polygon-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/mainnets/sonic.ts b/packages/contract-library/src/deployments/mainnets/sonic.ts new file mode 100644 index 00000000..86ba388b --- /dev/null +++ b/packages/contract-library/src/deployments/mainnets/sonic.ts @@ -0,0 +1,30 @@ +import type { ContractAddresses } from "../.."; +import type { Address } from "viem"; +import { sonic } from "../../chains"; + +const addresses: ContractAddresses = { + authority: "0x007A0F3b90c97ab8c5eE7f3b142204Ad819edB3A", + aggregator: "0x007A66b5358D0e2a07C0eE078908517d186c1108", + fixedExpiryTeller: "" as Address, + fixedExpirySDAAuctioneer: "" as Address, + fixedExpirySDAv1_1Auctioneer: "" as Address, + fixedExpiryFPAAuctioneer: "" as Address, + fixedExpiryOFDAAuctioneer: "" as Address, + fixedExpiryOSDAAuctioneer: "" as Address, + fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", + fixedTermSDAAuctioneer: + "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557" as Address, + fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", + fixedTermOFDAAuctioneer: "" as Address, + fixedTermOSDAAuctioneer: "" as Address, + settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", +}; + +export default { + chain: sonic, + addresses: addresses, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/44bPCgvSEQVe1aFzxXYMMgdUFyhRk7FxnSD5C6VmJV1D", + getRpcURL: (key?: string) => `https://sonic-mainnet.g.alchemy.com/v2/${key}`, +}; diff --git a/packages/contract-library/src/deployments/testnets/base-sepolia.ts b/packages/contract-library/src/deployments/testnets/base-sepolia.ts new file mode 100644 index 00000000..cf9e5ae7 --- /dev/null +++ b/packages/contract-library/src/deployments/testnets/base-sepolia.ts @@ -0,0 +1,32 @@ +import { ContractAddresses } from "../.."; +import { Address } from "viem"; +import { BondDeployment } from "../types"; +import { baseSepolia } from "viem/chains"; + +const addresses: ContractAddresses = { + authority: "0x007A2F0A16bd0874CA2e1FFfAfc2d6B0b876aA8E", + aggregator: "0x007A6621A9997A633Cb1B757f2f7ffb51310704A", + fixedExpiryTeller: "0x007FE7c977a584CC54269730d210D889a86Ff9Cf", + fixedExpirySDAAuctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpirySDAv1_1Auctioneer: "0xFE5DA8cF974EaC29606EDce195BF7fAbfC570f1C", + fixedExpiryFPAAuctioneer: "0xFEF9A1BB7c9AFd5F31c58Cf87Cefc639bDfA04Dd", + fixedExpiryOFDAAuctioneer: "" as Address, + fixedExpiryOSDAAuctioneer: "" as Address, + fixedTermTeller: "0x007F774351e541b8bc720018De0796c4BF5afE3D", + fixedTermSDAAuctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermSDAv1_1Auctioneer: "0xF75DA1E6eA0521da0cb938D2F96bfe1Da5929557", + fixedTermFPAAuctioneer: "0xF7F9A834CBD3075D4810A9b818f594312C0de168", + fixedTermOFDAAuctioneer: "" as Address, + fixedTermOSDAAuctioneer: "" as Address, + settlement: "0x007102170E678984738f687E5b70F89Ad7ACa85e", +}; + +const deployment: BondDeployment = { + addresses, + chain: baseSepolia, + subgraphURL: + "https://gateway.thegraph.com/api/subgraphs/id/3AvuwA5Zn8mF3obaYcvUoRNVN5WFzX8SfN1f362dprag", + getRpcURL: (key?: string) => `https://base-sepolia.g.alchemy.com/v2/${key}`, +}; + +export default deployment; diff --git a/packages/contract-library/src/deployments/testnets/index.ts b/packages/contract-library/src/deployments/testnets/index.ts new file mode 100644 index 00000000..9efaefcf --- /dev/null +++ b/packages/contract-library/src/deployments/testnets/index.ts @@ -0,0 +1,3 @@ +import baseSepolia from "./base-sepolia"; + +export const testnetDeployments = [baseSepolia]; diff --git a/packages/contract-library/src/deployments/types.ts b/packages/contract-library/src/deployments/types.ts new file mode 100644 index 00000000..4138e5e4 --- /dev/null +++ b/packages/contract-library/src/deployments/types.ts @@ -0,0 +1,9 @@ +import { ContractAddresses } from "../.."; +import { Chain } from "viem"; + +export type BondDeployment = { + addresses: Partial; + chain: Chain; + subgraphURL: string; + getRpcURL: (key?: string) => string; +}; diff --git a/packages/contract-library/src/index.ts b/packages/contract-library/src/index.ts index 67acf827..a6bd4b59 100644 --- a/packages/contract-library/src/index.ts +++ b/packages/contract-library/src/index.ts @@ -5,4 +5,5 @@ export * from "./modules"; export * from "formatters"; export * from "@bond-protocol/types"; export * from "./chains"; +export * from "./deployments"; export * as chains from "viem/chains"; diff --git a/packages/types/src/chains.ts b/packages/types/src/chains.ts index 2d4700be..da110945 100644 --- a/packages/types/src/chains.ts +++ b/packages/types/src/chains.ts @@ -1,21 +1,3 @@ -export enum CHAIN_ID { - ETHEREUM_MAINNET = "1", - POLYGON_MAINNET = "137", - POLYGON_MUMBAI_TESTNET = "80001", - BSC_MAINNET = "56", - AVALANCHE_MAINNET = "43114", - AVALANCHE_FUJI_TESTNET = "43113", - ARBITRUM_MAINNET = "42161", - ARBITRUM_GOERLI_TESTNET = "421613", - OPTIMISM_MAINNET = "10", - OPTIMISM_GOERLI_TESTNET = "420", - BASE_MAINNET = "8453", - BASE_SEPOLIA = "84532", - MODE_MAINNET = "34443", - BERA_BARTIO = "80084", - SONIC = "146", -} - export const chainLogos: Record = { 1: "/chains/ethereum.png", 10: "/chains/optimism.png", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5bc0707..8a3c6677 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,8 +70,8 @@ importers: specifier: ^1.4.12 version: 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.2.2)(viem@1.17.2) axios: - specifier: ^1.6.0 - version: 1.6.0 + specifier: ^1.7.4 + version: 1.8.4 buffer: specifier: ^6.0.3 version: 6.0.3 @@ -101,7 +101,7 @@ importers: version: 5.2.4 openapi-client-axios: specifier: ^7.3.3 - version: 7.3.3(axios@1.6.0)(js-yaml@4.1.0) + version: 7.3.3(axios@1.8.4)(js-yaml@4.1.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -278,11 +278,11 @@ importers: specifier: ^2.0.6 version: 2.0.6 eslint: - specifier: 8.31.0 - version: 8.31.0 + specifier: 9.0.0 + version: 9.0.0 eslint-config-next: specifier: 13.1.1 - version: 13.1.1(eslint@8.31.0)(typescript@4.9.4) + version: 13.1.1(eslint@9.0.0)(typescript@4.9.4) next: specifier: 13.5.1 version: 13.5.1(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) @@ -3483,6 +3483,21 @@ packages: eslint: 8.44.0 eslint-visitor-keys: 3.4.1 + /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 9.0.0 + eslint-visitor-keys: 3.4.1 + dev: false + + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + /@eslint-community/regexpp@4.5.1: resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -3504,8 +3519,8 @@ packages: - supports-color dev: true - /@eslint/eslintrc@1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint/eslintrc@2.1.0: + resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -3519,28 +3534,33 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: false - /@eslint/eslintrc@2.1.0: - resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/eslintrc@3.3.1: + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.0 - globals: 13.19.0 - ignore: 5.2.4 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: false /@eslint/js@8.44.0: resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.0.0: + resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: false + /@fal-works/esbuild-plugin-global-externals@2.1.2: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: true @@ -4063,7 +4083,7 @@ packages: graphql-ws: 6.0.4(graphql@16.5.0)(ws@8.18.1) isomorphic-ws: 5.0.0(ws@8.18.1) tslib: 2.8.1 - ws: 8.18.1 + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) transitivePeerDependencies: - '@fastify/websocket' - bufferutil @@ -4101,7 +4121,7 @@ packages: graphql: 16.5.0 isomorphic-ws: 5.0.0(ws@8.18.1) tslib: 2.5.0 - ws: 8.18.1 + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4349,7 +4369,7 @@ packages: isomorphic-ws: 5.0.0(ws@8.18.1) sync-fetch: 0.6.0-2 tslib: 2.5.0 - ws: 8.18.1 + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) transitivePeerDependencies: - '@fastify/websocket' - '@types/node' @@ -4428,6 +4448,18 @@ packages: transitivePeerDependencies: - supports-color + /@humanwhocodes/config-array@0.12.3: + resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /@humanwhocodes/config-array@0.5.0: resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} engines: {node: '>=10.10.0'} @@ -4446,6 +4478,11 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: false + /@inquirer/confirm@5.1.8(@types/node@16.18.25): resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} engines: {node: '>=18'} @@ -5180,7 +5217,6 @@ packages: /@noble/hashes@1.7.1: resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} engines: {node: ^14.21.3 || >=16} - dev: true /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -5398,7 +5434,7 @@ packages: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 is-glob: 4.0.3 open: 8.4.2 picocolors: 1.0.0 @@ -6160,7 +6196,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@noble/ed25519': 1.7.1 - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.7.1 '@noble/secp256k1': 1.7.1 '@solana/buffer-layout': 4.0.0 agentkeepalive: 4.2.1 @@ -7059,7 +7095,7 @@ packages: util: 0.12.5 util-deprecate: 1.0.2 watchpack: 2.4.0 - ws: 8.13.0(bufferutil@4.0.6)(utf-8-validate@5.0.9) + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) transitivePeerDependencies: - bufferutil - encoding @@ -8401,7 +8437,7 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/parser@5.60.1(eslint@8.31.0)(typescript@4.9.4): + /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.2.2): resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8413,15 +8449,14 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.60.1 '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@4.9.4) + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.31.0 - typescript: 4.9.4 + eslint: 8.44.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: false - /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.60.1(eslint@9.0.0)(typescript@4.9.4): resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8433,12 +8468,13 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.60.1 '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 5.60.1(typescript@4.9.4) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.44.0 - typescript: 5.2.2 + eslint: 9.0.0 + typescript: 4.9.4 transitivePeerDependencies: - supports-color + dev: false /@typescript-eslint/scope-manager@5.60.1: resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} @@ -9732,6 +9768,14 @@ packages: dependencies: acorn: 8.10.0 + /acorn-jsx@5.3.2(acorn@8.14.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.14.1 + dev: false + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} @@ -9753,6 +9797,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + /add@2.0.6: resolution: {integrity: sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q==} dev: false @@ -10177,10 +10227,10 @@ packages: - debug dev: false - /axios@1.6.0: - resolution: {integrity: sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==} + /axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.9 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -11379,7 +11429,6 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: false /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} @@ -12652,7 +12701,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-next@13.1.1(eslint@8.31.0)(typescript@4.9.4): + /eslint-config-next@13.1.1(eslint@9.0.0)(typescript@4.9.4): resolution: {integrity: sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -12663,14 +12712,14 @@ packages: dependencies: '@next/eslint-plugin-next': 13.1.1 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.60.1(eslint@8.31.0)(typescript@4.9.4) - eslint: 8.31.0 + '@typescript-eslint/parser': 5.60.1(eslint@9.0.0)(typescript@4.9.4) + eslint: 9.0.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.26.0)(eslint@8.31.0) - eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.3)(eslint@8.31.0) - eslint-plugin-jsx-a11y: 6.6.1(eslint@8.31.0) - eslint-plugin-react: 7.31.10(eslint@8.31.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.31.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.26.0)(eslint@9.0.0) + eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.3)(eslint@9.0.0) + eslint-plugin-jsx-a11y: 6.6.1(eslint@9.0.0) + eslint-plugin-react: 7.31.10(eslint@9.0.0) + eslint-plugin-react-hooks: 4.6.0(eslint@9.0.0) typescript: 4.9.4 transitivePeerDependencies: - eslint-import-resolver-webpack @@ -12704,7 +12753,7 @@ packages: - supports-color dev: false - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.26.0)(eslint@8.31.0): + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.26.0)(eslint@9.0.0): resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -12713,8 +12762,8 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.10.0 - eslint: 8.31.0 - eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.3)(eslint@8.31.0) + eslint: 9.0.0 + eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.3)(eslint@9.0.0) get-tsconfig: 4.3.0 globby: 13.2.2 is-core-module: 2.12.0 @@ -12724,7 +12773,7 @@ packages: - supports-color dev: false - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.6)(eslint-import-resolver-typescript@3.5.3)(eslint@8.31.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.6)(eslint-import-resolver-typescript@3.5.3)(eslint@9.0.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -12745,11 +12794,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.60.1(eslint@8.31.0)(typescript@4.9.4) + '@typescript-eslint/parser': 5.60.1(eslint@9.0.0)(typescript@4.9.4) debug: 3.2.7(supports-color@8.1.1) - eslint: 8.31.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.26.0)(eslint@8.31.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.26.0)(eslint@9.0.0) transitivePeerDependencies: - supports-color dev: false @@ -12763,7 +12812,7 @@ packages: globals: 11.12.0 dev: true - /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.3)(eslint@8.31.0): + /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.3)(eslint@9.0.0): resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -12773,14 +12822,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.60.1(eslint@8.31.0)(typescript@4.9.4) + '@typescript-eslint/parser': 5.60.1(eslint@9.0.0)(typescript@4.9.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.31.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.6)(eslint-import-resolver-typescript@3.5.3)(eslint@8.31.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.6)(eslint-import-resolver-typescript@3.5.3)(eslint@9.0.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -12794,7 +12843,7 @@ packages: - supports-color dev: false - /eslint-plugin-jsx-a11y@6.6.1(eslint@8.31.0): + /eslint-plugin-jsx-a11y@6.6.1(eslint@9.0.0): resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==} engines: {node: '>=4.0'} peerDependencies: @@ -12808,7 +12857,7 @@ packages: axobject-query: 2.2.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.31.0 + eslint: 9.0.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -12816,23 +12865,23 @@ packages: semver: 6.3.1 dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.31.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.44.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.31.0 - dev: false + eslint: 8.44.0 + dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.44.0): + /eslint-plugin-react-hooks@4.6.0(eslint@9.0.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.44.0 - dev: true + eslint: 9.0.0 + dev: false /eslint-plugin-react-refresh@0.3.5(eslint@8.44.0): resolution: {integrity: sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==} @@ -12842,7 +12891,7 @@ packages: eslint: 8.44.0 dev: true - /eslint-plugin-react@7.31.10(eslint@8.31.0): + /eslint-plugin-react@7.31.10(eslint@9.0.0): resolution: {integrity: sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==} engines: {node: '>=4'} peerDependencies: @@ -12851,7 +12900,7 @@ packages: array-includes: 3.1.6 array.prototype.flatmap: 1.3.2 doctrine: 2.1.0 - eslint: 8.31.0 + eslint: 9.0.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -12895,6 +12944,14 @@ packages: esrecurse: 4.3.0 estraverse: 5.3.0 + /eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} @@ -12902,16 +12959,6 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.31.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.31.0 - eslint-visitor-keys: 2.1.0 - dev: false - /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} @@ -12920,11 +12967,17 @@ packages: /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} + dev: true /eslint-visitor-keys@3.4.1: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: false + /eslint@7.32.0: resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} engines: {node: ^10.12.0 || >=12.0.0} @@ -12974,12 +13027,15 @@ packages: - supports-color dev: true - /eslint@8.31.0: - resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==} + /eslint@8.44.0: + resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.1.0 + '@eslint/js': 8.44.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -12990,7 +13046,6 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 - eslint-utils: 3.0.0(eslint@8.31.0) eslint-visitor-keys: 3.4.1 espree: 9.6.0 esquery: 1.5.0 @@ -13000,13 +13055,12 @@ packages: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.19.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.1.4 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -13014,49 +13068,43 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.3 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: false - /eslint@8.44.0: - resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint@9.0.0: + resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.1.0 - '@eslint/js': 8.44.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.0.0 + '@humanwhocodes/config-array': 0.12.3 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 debug: 4.3.4(supports-color@8.1.1) - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.6.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 graphemer: 1.4.0 - ignore: 5.2.4 - import-fresh: 3.3.0 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -13064,10 +13112,19 @@ packages: natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: false + + /espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + dev: false /espree@7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} @@ -13518,6 +13575,13 @@ packages: dependencies: flat-cache: 3.0.4 + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + dependencies: + flat-cache: 4.0.1 + dev: false + /file-system-cache@2.3.0: resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} dependencies: @@ -13630,9 +13694,21 @@ packages: flatted: 3.2.7 rimraf: 3.0.2 + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + dev: false + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + dev: false + /flow-parser@0.205.0: resolution: {integrity: sha512-ZJ6VuLe/BoqeI4GsF+ZuzlpfGi3FCnBrb4xDYhgEJxRt7SAj3ibRuRSsuJSRcY+lQhPZRPNbNWiQqFMxramUzw==} engines: {node: '>=0.4.0'} @@ -13648,6 +13724,16 @@ packages: optional: true dev: false + /follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -13662,7 +13748,7 @@ packages: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 3.0.7 dev: true @@ -14101,6 +14187,11 @@ packages: dependencies: type-fest: 0.20.2 + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: false + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -14237,7 +14328,7 @@ packages: optional: true dependencies: graphql: 16.5.0 - ws: 8.18.1 + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) dev: true /graphql@16.5.0: @@ -14582,7 +14673,6 @@ packages: /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - dev: true /immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} @@ -15111,7 +15201,7 @@ packages: peerDependencies: ws: '*' dependencies: - ws: 8.18.1 + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) dev: true /isows@1.0.3(ws@8.13.0): @@ -15119,7 +15209,7 @@ packages: peerDependencies: ws: '*' dependencies: - ws: 8.13.0(bufferutil@4.0.6)(utf-8-validate@5.0.9) + ws: 8.13.0 /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -15743,10 +15833,6 @@ packages: resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} dev: true - /js-sdsl@4.1.4: - resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} - dev: false - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -15853,6 +15939,10 @@ packages: engines: {node: '>=6'} hasBin: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -15952,6 +16042,12 @@ packages: readable-stream: 3.6.0 dev: false + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: false + /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false @@ -17100,13 +17196,13 @@ packages: - debug dev: false - /openapi-client-axios@7.3.3(axios@1.6.0)(js-yaml@4.1.0): + /openapi-client-axios@7.3.3(axios@1.8.4)(js-yaml@4.1.0): resolution: {integrity: sha512-4ZvdCyrbLZzMvggLDQdBJjUEgRMQDrVNeg+G5sFi8pY8jM4GH7mv2YloXsFX8dY7zwoHEW8zclhONR8pbtBQoA==} peerDependencies: axios: '>=0.25.0' js-yaml: ^4.1.0 dependencies: - axios: 1.6.0 + axios: 1.8.4 bath-es5: 3.0.3 dereference-json-schema: 0.2.1 js-yaml: 4.1.0 @@ -18356,6 +18452,7 @@ packages: /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} + dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -18573,7 +18670,7 @@ packages: '@babel/runtime': 7.23.2 eventemitter3: 4.0.7 uuid: 8.3.2 - ws: 8.13.0(bufferutil@4.0.6)(utf-8-validate@5.0.9) + ws: 8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9) optionalDependencies: bufferutil: 4.0.6 utf-8-validate: 5.0.9 @@ -20613,7 +20710,7 @@ packages: abitype: 0.9.8(typescript@5.2.2)(zod@3.22.4) isows: 1.0.3(ws@8.13.0) typescript: 5.2.2 - ws: 8.13.0(bufferutil@4.0.6)(utf-8-validate@5.0.9) + ws: 8.13.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -21087,7 +21184,7 @@ packages: utf-8-validate: optional: true - /ws@8.13.0(bufferutil@4.0.6)(utf-8-validate@5.0.9): + /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -21098,11 +21195,8 @@ packages: optional: true utf-8-validate: optional: true - dependencies: - bufferutil: 4.0.6 - utf-8-validate: 5.0.9 - /ws@8.18.1: + /ws@8.18.1(bufferutil@4.0.6)(utf-8-validate@5.0.9): resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} peerDependencies: @@ -21113,7 +21207,9 @@ packages: optional: true utf-8-validate: optional: true - dev: true + dependencies: + bufferutil: 4.0.6 + utf-8-validate: 5.0.9 /xml-name-validator@3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}