From 2c58c70a31261f4d787961f47621e9210ce5489d Mon Sep 17 00:00:00 2001 From: Nejc Date: Fri, 18 Aug 2023 16:43:38 +0800 Subject: [PATCH 01/33] feat: indexer (#232) * feat: indexer * refactor: app data --- .eslintignore | 1 + codegen.ts | 14 + gql/fragment-masking.ts | 66 + gql/gql.ts | 52 + gql/graphql.ts | 8004 +++++++++++++++++ gql/index.ts | 2 + package.json | 15 +- src/components/Asset/Selector/Modal/index.tsx | 12 +- src/components/Asset/Selector/index.tsx | 21 +- src/components/Layout/Versions.tsx | 8 +- .../Pools/Backstop/AddLiquidity/index.tsx | 18 +- src/components/Pools/Backstop/Modals/types.ts | 2 +- .../Pools/Backstop/Withdraw/index.tsx | 12 +- src/components/Pools/Backstop/index.tsx | 13 +- .../Pools/Swap/AddLiquidity/index.tsx | 14 +- .../Pools/Swap/WithdrawLiquidity/index.tsx | 10 +- src/components/Pools/Swap/columns.tsx | 6 +- src/components/Pools/Swap/index.tsx | 13 +- src/components/Swap/Approval/index.tsx | 5 +- src/components/Swap/From/index.tsx | 17 +- src/components/Swap/To/index.tsx | 128 +- src/components/Swap/index.tsx | 11 +- src/components/Swap/useSwapComponent.ts | 20 +- src/config/apps/index.ts | 3 + src/config/apps/nabla.ts | 54 +- src/config/apps/types.ts | 3 +- src/helpers/array.ts | 12 - src/helpers/general.ts | 1 + src/hooks/nabla/useBackstopPools.ts | 42 + src/hooks/nabla/useSwapPools.ts | 53 + src/hooks/nabla/useTokens.ts | 50 + src/hooks/useAssets.ts | 9 - src/hooks/useGetAppDataByTenant.ts | 7 + src/hooks/useGetTenantData.ts | 7 - src/index.css | 1 + src/models/Asset.ts | 7 - src/models/BackstopPool.ts | 8 - src/models/SwapPool.ts | 10 - src/pages/bridge/TransferDialog.tsx | 1 - src/pages/nabla/dev/index.tsx | 20 +- src/services/mocks.ts | 43 - vite.config.ts | 3 +- yarn.lock | 2067 ++++- 43 files changed, 10447 insertions(+), 418 deletions(-) create mode 100644 codegen.ts create mode 100644 gql/fragment-masking.ts create mode 100644 gql/gql.ts create mode 100644 gql/graphql.ts create mode 100644 gql/index.ts create mode 100644 src/hooks/nabla/useBackstopPools.ts create mode 100644 src/hooks/nabla/useSwapPools.ts create mode 100644 src/hooks/nabla/useTokens.ts delete mode 100644 src/hooks/useAssets.ts create mode 100644 src/hooks/useGetAppDataByTenant.ts delete mode 100644 src/hooks/useGetTenantData.ts delete mode 100644 src/models/Asset.ts delete mode 100644 src/models/BackstopPool.ts delete mode 100644 src/models/SwapPool.ts delete mode 100644 src/services/mocks.ts diff --git a/.eslintignore b/.eslintignore index 2674832d..f9e5872f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,6 +4,7 @@ build/ lib/ types/ coverage/ +gql/ *.d.ts *.config.* diff --git a/codegen.ts b/codegen.ts new file mode 100644 index 00000000..4fb63852 --- /dev/null +++ b/codegen.ts @@ -0,0 +1,14 @@ +import { CodegenConfig } from '@graphql-codegen/cli'; + +const config: CodegenConfig = { + schema: 'https://squid.subsquid.io/foucoco-squid/graphql', + documents: ['**/*.{ts,tsx}', '!gql/**/*'], + generates: { + './gql/': { + preset: 'client', + plugins: [], + }, + }, +}; + +export default config; diff --git a/gql/fragment-masking.ts b/gql/fragment-masking.ts new file mode 100644 index 00000000..cb880a31 --- /dev/null +++ b/gql/fragment-masking.ts @@ -0,0 +1,66 @@ +import { DocumentTypeDecoration, ResultOf, TypedDocumentNode } from '@graphql-typed-document-node/core'; +import { FragmentDefinitionNode } from 'graphql'; +import { Incremental } from './graphql'; + +export type FragmentType> = + TDocumentType extends DocumentTypeDecoration + ? [TType] extends [{ ' $fragmentName'?: infer TKey }] + ? TKey extends string + ? { ' $fragmentRefs'?: { [key in TKey]: TType } } + : never + : never + : never; + +// return non-nullable if `fragmentType` is non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType>, +): TType; +// return nullable if `fragmentType` is nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> | null | undefined, +): TType | null | undefined; +// return array of non-nullable if `fragmentType` is array of non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: ReadonlyArray>>, +): ReadonlyArray; +// return array of nullable if `fragmentType` is array of nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: ReadonlyArray>> | null | undefined, +): ReadonlyArray | null | undefined; +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: + | FragmentType> + | ReadonlyArray>> + | null + | undefined, +): TType | ReadonlyArray | null | undefined { + return fragmentType as any; +} + +export function makeFragmentData, FT extends ResultOf>( + data: FT, + _fragment: F, +): FragmentType { + return data as FragmentType; +} +export function isFragmentReady( + queryNode: DocumentTypeDecoration, + fragmentNode: TypedDocumentNode, + data: FragmentType, any>> | null | undefined, +): data is FragmentType { + const deferredFields = (queryNode as { __meta__?: { deferredFields: Record } }).__meta__ + ?.deferredFields; + + if (!deferredFields) return true; + + const fragDef = fragmentNode.definitions[0] as FragmentDefinitionNode | undefined; + const fragName = fragDef?.name?.value; + + const fields = (fragName && deferredFields[fragName]) || []; + return fields.length > 0 && fields.every((field) => data && field in data); +} diff --git a/gql/gql.ts b/gql/gql.ts new file mode 100644 index 00000000..bf30a9bb --- /dev/null +++ b/gql/gql.ts @@ -0,0 +1,52 @@ +/* eslint-disable */ +import * as types from './graphql'; +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +/** + * Map of all GraphQL operations in the project. + * + * This map has several performance disadvantages: + * 1. It is not tree-shakeable, so it will include all operations in the project. + * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. + * 3. It does not support dead code elimination, so it will add unused operations. + * + * Therefore it is highly recommended to use the babel or swc plugin for production. + */ +const documents = { + "\n query getBackstopPools {\n backstopPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n": types.GetBackstopPoolsDocument, + "\n query getSwapPools {\n swapPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n": types.GetSwapPoolsDocument, + "\n query getTokens {\n nablaTokens {\n id\n name\n symbol\n decimals\n }\n }\n": types.GetTokensDocument, +}; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + * + * + * @example + * ```ts + * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`); + * ``` + * + * The query argument is unknown! + * Please regenerate the types. + */ +export function graphql(source: string): unknown; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query getBackstopPools {\n backstopPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"): (typeof documents)["\n query getBackstopPools {\n backstopPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query getSwapPools {\n swapPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n"): (typeof documents)["\n query getSwapPools {\n swapPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query getTokens {\n nablaTokens {\n id\n name\n symbol\n decimals\n }\n }\n"): (typeof documents)["\n query getTokens {\n nablaTokens {\n id\n name\n symbol\n decimals\n }\n }\n"]; + +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never; \ No newline at end of file diff --git a/gql/graphql.ts b/gql/graphql.ts new file mode 100644 index 00000000..ee9a6dbc --- /dev/null +++ b/gql/graphql.ts @@ -0,0 +1,8004 @@ +/* eslint-disable */ +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { [_ in K]?: never }; +export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } + /** Big number integer */ + BigInt: { input: any; output: any; } + /** Binary data encoded as a hex string always prefixed with 0x */ + Bytes: { input: any; output: any; } + /** A date-time string in simplified extended ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ) */ + DateTime: { input: any; output: any; } +}; + +export type BackstopPool = { + __typename?: 'BackstopPool'; + id: Scalars['String']['output']; + liabilities: Scalars['BigInt']['output']; + paused: Scalars['Boolean']['output']; + reserves: Scalars['BigInt']['output']; + router: Router; + token: NablaToken; + totalSupply: Scalars['BigInt']['output']; +}; + +export type BackstopPoolEdge = { + __typename?: 'BackstopPoolEdge'; + cursor: Scalars['String']['output']; + node: BackstopPool; +}; + +export enum BackstopPoolOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiabilitiesAsc = 'liabilities_ASC', + LiabilitiesDesc = 'liabilities_DESC', + PausedAsc = 'paused_ASC', + PausedDesc = 'paused_DESC', + ReservesAsc = 'reserves_ASC', + ReservesDesc = 'reserves_DESC', + RouterIdAsc = 'router_id_ASC', + RouterIdDesc = 'router_id_DESC', + RouterPausedAsc = 'router_paused_ASC', + RouterPausedDesc = 'router_paused_DESC', + TokenDecimalsAsc = 'token_decimals_ASC', + TokenDecimalsDesc = 'token_decimals_DESC', + TokenIdAsc = 'token_id_ASC', + TokenIdDesc = 'token_id_DESC', + TokenNameAsc = 'token_name_ASC', + TokenNameDesc = 'token_name_DESC', + TokenSymbolAsc = 'token_symbol_ASC', + TokenSymbolDesc = 'token_symbol_DESC', + TotalSupplyAsc = 'totalSupply_ASC', + TotalSupplyDesc = 'totalSupply_DESC' +} + +export type BackstopPoolWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liabilities_eq?: InputMaybe; + liabilities_gt?: InputMaybe; + liabilities_gte?: InputMaybe; + liabilities_in?: InputMaybe>; + liabilities_isNull?: InputMaybe; + liabilities_lt?: InputMaybe; + liabilities_lte?: InputMaybe; + liabilities_not_eq?: InputMaybe; + liabilities_not_in?: InputMaybe>; + paused_eq?: InputMaybe; + paused_isNull?: InputMaybe; + paused_not_eq?: InputMaybe; + reserves_eq?: InputMaybe; + reserves_gt?: InputMaybe; + reserves_gte?: InputMaybe; + reserves_in?: InputMaybe>; + reserves_isNull?: InputMaybe; + reserves_lt?: InputMaybe; + reserves_lte?: InputMaybe; + reserves_not_eq?: InputMaybe; + reserves_not_in?: InputMaybe>; + router?: InputMaybe; + router_isNull?: InputMaybe; + token?: InputMaybe; + token_isNull?: InputMaybe; + totalSupply_eq?: InputMaybe; + totalSupply_gt?: InputMaybe; + totalSupply_gte?: InputMaybe; + totalSupply_in?: InputMaybe>; + totalSupply_isNull?: InputMaybe; + totalSupply_lt?: InputMaybe; + totalSupply_lte?: InputMaybe; + totalSupply_not_eq?: InputMaybe; + totalSupply_not_in?: InputMaybe>; +}; + +export type BackstopPoolsConnection = { + __typename?: 'BackstopPoolsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Bundle = { + __typename?: 'Bundle'; + /** BigDecimal */ + ethPrice: Scalars['String']['output']; + id: Scalars['String']['output']; +}; + +export type BundleEdge = { + __typename?: 'BundleEdge'; + cursor: Scalars['String']['output']; + node: Bundle; +}; + +export enum BundleOrderByInput { + EthPriceAsc = 'ethPrice_ASC', + EthPriceDesc = 'ethPrice_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC' +} + +export type BundleWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + ethPrice_contains?: InputMaybe; + ethPrice_containsInsensitive?: InputMaybe; + ethPrice_endsWith?: InputMaybe; + ethPrice_eq?: InputMaybe; + ethPrice_gt?: InputMaybe; + ethPrice_gte?: InputMaybe; + ethPrice_in?: InputMaybe>; + ethPrice_isNull?: InputMaybe; + ethPrice_lt?: InputMaybe; + ethPrice_lte?: InputMaybe; + ethPrice_not_contains?: InputMaybe; + ethPrice_not_containsInsensitive?: InputMaybe; + ethPrice_not_endsWith?: InputMaybe; + ethPrice_not_eq?: InputMaybe; + ethPrice_not_in?: InputMaybe>; + ethPrice_not_startsWith?: InputMaybe; + ethPrice_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; +}; + +export type BundlesConnection = { + __typename?: 'BundlesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Burn = { + __typename?: 'Burn'; + amount0?: Maybe; + amount1?: Maybe; + amountUSD?: Maybe; + feeLiquidity?: Maybe; + feeTo?: Maybe; + id: Scalars['String']['output']; + liquidity: Scalars['String']['output']; + logIndex?: Maybe; + needsComplete: Scalars['Boolean']['output']; + pair: Pair; + sender?: Maybe; + timestamp: Scalars['DateTime']['output']; + to?: Maybe; + transaction: Transaction; +}; + +export type BurnEdge = { + __typename?: 'BurnEdge'; + cursor: Scalars['String']['output']; + node: Burn; +}; + +export enum BurnOrderByInput { + Amount0Asc = 'amount0_ASC', + Amount0Desc = 'amount0_DESC', + Amount1Asc = 'amount1_ASC', + Amount1Desc = 'amount1_DESC', + AmountUsdAsc = 'amountUSD_ASC', + AmountUsdDesc = 'amountUSD_DESC', + FeeLiquidityAsc = 'feeLiquidity_ASC', + FeeLiquidityDesc = 'feeLiquidity_DESC', + FeeToAsc = 'feeTo_ASC', + FeeToDesc = 'feeTo_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityAsc = 'liquidity_ASC', + LiquidityDesc = 'liquidity_DESC', + LogIndexAsc = 'logIndex_ASC', + LogIndexDesc = 'logIndex_DESC', + NeedsCompleteAsc = 'needsComplete_ASC', + NeedsCompleteDesc = 'needsComplete_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + SenderAsc = 'sender_ASC', + SenderDesc = 'sender_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + ToAsc = 'to_ASC', + ToDesc = 'to_DESC', + TransactionBlockNumberAsc = 'transaction_blockNumber_ASC', + TransactionBlockNumberDesc = 'transaction_blockNumber_DESC', + TransactionIdAsc = 'transaction_id_ASC', + TransactionIdDesc = 'transaction_id_DESC', + TransactionTimestampAsc = 'transaction_timestamp_ASC', + TransactionTimestampDesc = 'transaction_timestamp_DESC' +} + +export type BurnWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount0_contains?: InputMaybe; + amount0_containsInsensitive?: InputMaybe; + amount0_endsWith?: InputMaybe; + amount0_eq?: InputMaybe; + amount0_gt?: InputMaybe; + amount0_gte?: InputMaybe; + amount0_in?: InputMaybe>; + amount0_isNull?: InputMaybe; + amount0_lt?: InputMaybe; + amount0_lte?: InputMaybe; + amount0_not_contains?: InputMaybe; + amount0_not_containsInsensitive?: InputMaybe; + amount0_not_endsWith?: InputMaybe; + amount0_not_eq?: InputMaybe; + amount0_not_in?: InputMaybe>; + amount0_not_startsWith?: InputMaybe; + amount0_startsWith?: InputMaybe; + amount1_contains?: InputMaybe; + amount1_containsInsensitive?: InputMaybe; + amount1_endsWith?: InputMaybe; + amount1_eq?: InputMaybe; + amount1_gt?: InputMaybe; + amount1_gte?: InputMaybe; + amount1_in?: InputMaybe>; + amount1_isNull?: InputMaybe; + amount1_lt?: InputMaybe; + amount1_lte?: InputMaybe; + amount1_not_contains?: InputMaybe; + amount1_not_containsInsensitive?: InputMaybe; + amount1_not_endsWith?: InputMaybe; + amount1_not_eq?: InputMaybe; + amount1_not_in?: InputMaybe>; + amount1_not_startsWith?: InputMaybe; + amount1_startsWith?: InputMaybe; + amountUSD_contains?: InputMaybe; + amountUSD_containsInsensitive?: InputMaybe; + amountUSD_endsWith?: InputMaybe; + amountUSD_eq?: InputMaybe; + amountUSD_gt?: InputMaybe; + amountUSD_gte?: InputMaybe; + amountUSD_in?: InputMaybe>; + amountUSD_isNull?: InputMaybe; + amountUSD_lt?: InputMaybe; + amountUSD_lte?: InputMaybe; + amountUSD_not_contains?: InputMaybe; + amountUSD_not_containsInsensitive?: InputMaybe; + amountUSD_not_endsWith?: InputMaybe; + amountUSD_not_eq?: InputMaybe; + amountUSD_not_in?: InputMaybe>; + amountUSD_not_startsWith?: InputMaybe; + amountUSD_startsWith?: InputMaybe; + feeLiquidity_contains?: InputMaybe; + feeLiquidity_containsInsensitive?: InputMaybe; + feeLiquidity_endsWith?: InputMaybe; + feeLiquidity_eq?: InputMaybe; + feeLiquidity_gt?: InputMaybe; + feeLiquidity_gte?: InputMaybe; + feeLiquidity_in?: InputMaybe>; + feeLiquidity_isNull?: InputMaybe; + feeLiquidity_lt?: InputMaybe; + feeLiquidity_lte?: InputMaybe; + feeLiquidity_not_contains?: InputMaybe; + feeLiquidity_not_containsInsensitive?: InputMaybe; + feeLiquidity_not_endsWith?: InputMaybe; + feeLiquidity_not_eq?: InputMaybe; + feeLiquidity_not_in?: InputMaybe>; + feeLiquidity_not_startsWith?: InputMaybe; + feeLiquidity_startsWith?: InputMaybe; + feeTo_contains?: InputMaybe; + feeTo_containsInsensitive?: InputMaybe; + feeTo_endsWith?: InputMaybe; + feeTo_eq?: InputMaybe; + feeTo_gt?: InputMaybe; + feeTo_gte?: InputMaybe; + feeTo_in?: InputMaybe>; + feeTo_isNull?: InputMaybe; + feeTo_lt?: InputMaybe; + feeTo_lte?: InputMaybe; + feeTo_not_contains?: InputMaybe; + feeTo_not_containsInsensitive?: InputMaybe; + feeTo_not_endsWith?: InputMaybe; + feeTo_not_eq?: InputMaybe; + feeTo_not_in?: InputMaybe>; + feeTo_not_startsWith?: InputMaybe; + feeTo_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidity_contains?: InputMaybe; + liquidity_containsInsensitive?: InputMaybe; + liquidity_endsWith?: InputMaybe; + liquidity_eq?: InputMaybe; + liquidity_gt?: InputMaybe; + liquidity_gte?: InputMaybe; + liquidity_in?: InputMaybe>; + liquidity_isNull?: InputMaybe; + liquidity_lt?: InputMaybe; + liquidity_lte?: InputMaybe; + liquidity_not_contains?: InputMaybe; + liquidity_not_containsInsensitive?: InputMaybe; + liquidity_not_endsWith?: InputMaybe; + liquidity_not_eq?: InputMaybe; + liquidity_not_in?: InputMaybe>; + liquidity_not_startsWith?: InputMaybe; + liquidity_startsWith?: InputMaybe; + logIndex_eq?: InputMaybe; + logIndex_gt?: InputMaybe; + logIndex_gte?: InputMaybe; + logIndex_in?: InputMaybe>; + logIndex_isNull?: InputMaybe; + logIndex_lt?: InputMaybe; + logIndex_lte?: InputMaybe; + logIndex_not_eq?: InputMaybe; + logIndex_not_in?: InputMaybe>; + needsComplete_eq?: InputMaybe; + needsComplete_isNull?: InputMaybe; + needsComplete_not_eq?: InputMaybe; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + sender_contains?: InputMaybe; + sender_containsInsensitive?: InputMaybe; + sender_endsWith?: InputMaybe; + sender_eq?: InputMaybe; + sender_gt?: InputMaybe; + sender_gte?: InputMaybe; + sender_in?: InputMaybe>; + sender_isNull?: InputMaybe; + sender_lt?: InputMaybe; + sender_lte?: InputMaybe; + sender_not_contains?: InputMaybe; + sender_not_containsInsensitive?: InputMaybe; + sender_not_endsWith?: InputMaybe; + sender_not_eq?: InputMaybe; + sender_not_in?: InputMaybe>; + sender_not_startsWith?: InputMaybe; + sender_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_containsInsensitive?: InputMaybe; + to_endsWith?: InputMaybe; + to_eq?: InputMaybe; + to_gt?: InputMaybe; + to_gte?: InputMaybe; + to_in?: InputMaybe>; + to_isNull?: InputMaybe; + to_lt?: InputMaybe; + to_lte?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_containsInsensitive?: InputMaybe; + to_not_endsWith?: InputMaybe; + to_not_eq?: InputMaybe; + to_not_in?: InputMaybe>; + to_not_startsWith?: InputMaybe; + to_startsWith?: InputMaybe; + transaction?: InputMaybe; + transaction_isNull?: InputMaybe; +}; + +export type BurnsConnection = { + __typename?: 'BurnsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type FactoriesConnection = { + __typename?: 'FactoriesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Factory = { + __typename?: 'Factory'; + id: Scalars['String']['output']; + pairCount: Scalars['Int']['output']; + /** BigDecimal */ + totalLiquidityETH: Scalars['String']['output']; + /** BigDecimal */ + totalLiquidityUSD: Scalars['String']['output']; + /** BigDecimal */ + totalVolumeETH: Scalars['String']['output']; + /** BigDecimal */ + totalVolumeUSD: Scalars['String']['output']; + txCount: Scalars['Int']['output']; + /** BigDecimal */ + untrackedVolumeUSD: Scalars['String']['output']; +}; + +export type FactoryDayData = { + __typename?: 'FactoryDayData'; + dailyVolumeETH: Scalars['String']['output']; + dailyVolumeUSD: Scalars['String']['output']; + dailyVolumeUntracked: Scalars['String']['output']; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + totalLiquidityETH: Scalars['String']['output']; + totalLiquidityUSD: Scalars['String']['output']; + totalVolumeETH: Scalars['String']['output']; + totalVolumeUSD: Scalars['String']['output']; + txCount: Scalars['Int']['output']; +}; + +export type FactoryDayDataConnection = { + __typename?: 'FactoryDayDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type FactoryDayDataEdge = { + __typename?: 'FactoryDayDataEdge'; + cursor: Scalars['String']['output']; + node: FactoryDayData; +}; + +export enum FactoryDayDataOrderByInput { + DailyVolumeEthAsc = 'dailyVolumeETH_ASC', + DailyVolumeEthDesc = 'dailyVolumeETH_DESC', + DailyVolumeUsdAsc = 'dailyVolumeUSD_ASC', + DailyVolumeUsdDesc = 'dailyVolumeUSD_DESC', + DailyVolumeUntrackedAsc = 'dailyVolumeUntracked_ASC', + DailyVolumeUntrackedDesc = 'dailyVolumeUntracked_DESC', + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TotalLiquidityEthAsc = 'totalLiquidityETH_ASC', + TotalLiquidityEthDesc = 'totalLiquidityETH_DESC', + TotalLiquidityUsdAsc = 'totalLiquidityUSD_ASC', + TotalLiquidityUsdDesc = 'totalLiquidityUSD_DESC', + TotalVolumeEthAsc = 'totalVolumeETH_ASC', + TotalVolumeEthDesc = 'totalVolumeETH_DESC', + TotalVolumeUsdAsc = 'totalVolumeUSD_ASC', + TotalVolumeUsdDesc = 'totalVolumeUSD_DESC', + TxCountAsc = 'txCount_ASC', + TxCountDesc = 'txCount_DESC' +} + +export type FactoryDayDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + dailyVolumeETH_contains?: InputMaybe; + dailyVolumeETH_containsInsensitive?: InputMaybe; + dailyVolumeETH_endsWith?: InputMaybe; + dailyVolumeETH_eq?: InputMaybe; + dailyVolumeETH_gt?: InputMaybe; + dailyVolumeETH_gte?: InputMaybe; + dailyVolumeETH_in?: InputMaybe>; + dailyVolumeETH_isNull?: InputMaybe; + dailyVolumeETH_lt?: InputMaybe; + dailyVolumeETH_lte?: InputMaybe; + dailyVolumeETH_not_contains?: InputMaybe; + dailyVolumeETH_not_containsInsensitive?: InputMaybe; + dailyVolumeETH_not_endsWith?: InputMaybe; + dailyVolumeETH_not_eq?: InputMaybe; + dailyVolumeETH_not_in?: InputMaybe>; + dailyVolumeETH_not_startsWith?: InputMaybe; + dailyVolumeETH_startsWith?: InputMaybe; + dailyVolumeUSD_contains?: InputMaybe; + dailyVolumeUSD_containsInsensitive?: InputMaybe; + dailyVolumeUSD_endsWith?: InputMaybe; + dailyVolumeUSD_eq?: InputMaybe; + dailyVolumeUSD_gt?: InputMaybe; + dailyVolumeUSD_gte?: InputMaybe; + dailyVolumeUSD_in?: InputMaybe>; + dailyVolumeUSD_isNull?: InputMaybe; + dailyVolumeUSD_lt?: InputMaybe; + dailyVolumeUSD_lte?: InputMaybe; + dailyVolumeUSD_not_contains?: InputMaybe; + dailyVolumeUSD_not_containsInsensitive?: InputMaybe; + dailyVolumeUSD_not_endsWith?: InputMaybe; + dailyVolumeUSD_not_eq?: InputMaybe; + dailyVolumeUSD_not_in?: InputMaybe>; + dailyVolumeUSD_not_startsWith?: InputMaybe; + dailyVolumeUSD_startsWith?: InputMaybe; + dailyVolumeUntracked_contains?: InputMaybe; + dailyVolumeUntracked_containsInsensitive?: InputMaybe; + dailyVolumeUntracked_endsWith?: InputMaybe; + dailyVolumeUntracked_eq?: InputMaybe; + dailyVolumeUntracked_gt?: InputMaybe; + dailyVolumeUntracked_gte?: InputMaybe; + dailyVolumeUntracked_in?: InputMaybe>; + dailyVolumeUntracked_isNull?: InputMaybe; + dailyVolumeUntracked_lt?: InputMaybe; + dailyVolumeUntracked_lte?: InputMaybe; + dailyVolumeUntracked_not_contains?: InputMaybe; + dailyVolumeUntracked_not_containsInsensitive?: InputMaybe; + dailyVolumeUntracked_not_endsWith?: InputMaybe; + dailyVolumeUntracked_not_eq?: InputMaybe; + dailyVolumeUntracked_not_in?: InputMaybe>; + dailyVolumeUntracked_not_startsWith?: InputMaybe; + dailyVolumeUntracked_startsWith?: InputMaybe; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + totalLiquidityETH_contains?: InputMaybe; + totalLiquidityETH_containsInsensitive?: InputMaybe; + totalLiquidityETH_endsWith?: InputMaybe; + totalLiquidityETH_eq?: InputMaybe; + totalLiquidityETH_gt?: InputMaybe; + totalLiquidityETH_gte?: InputMaybe; + totalLiquidityETH_in?: InputMaybe>; + totalLiquidityETH_isNull?: InputMaybe; + totalLiquidityETH_lt?: InputMaybe; + totalLiquidityETH_lte?: InputMaybe; + totalLiquidityETH_not_contains?: InputMaybe; + totalLiquidityETH_not_containsInsensitive?: InputMaybe; + totalLiquidityETH_not_endsWith?: InputMaybe; + totalLiquidityETH_not_eq?: InputMaybe; + totalLiquidityETH_not_in?: InputMaybe>; + totalLiquidityETH_not_startsWith?: InputMaybe; + totalLiquidityETH_startsWith?: InputMaybe; + totalLiquidityUSD_contains?: InputMaybe; + totalLiquidityUSD_containsInsensitive?: InputMaybe; + totalLiquidityUSD_endsWith?: InputMaybe; + totalLiquidityUSD_eq?: InputMaybe; + totalLiquidityUSD_gt?: InputMaybe; + totalLiquidityUSD_gte?: InputMaybe; + totalLiquidityUSD_in?: InputMaybe>; + totalLiquidityUSD_isNull?: InputMaybe; + totalLiquidityUSD_lt?: InputMaybe; + totalLiquidityUSD_lte?: InputMaybe; + totalLiquidityUSD_not_contains?: InputMaybe; + totalLiquidityUSD_not_containsInsensitive?: InputMaybe; + totalLiquidityUSD_not_endsWith?: InputMaybe; + totalLiquidityUSD_not_eq?: InputMaybe; + totalLiquidityUSD_not_in?: InputMaybe>; + totalLiquidityUSD_not_startsWith?: InputMaybe; + totalLiquidityUSD_startsWith?: InputMaybe; + totalVolumeETH_contains?: InputMaybe; + totalVolumeETH_containsInsensitive?: InputMaybe; + totalVolumeETH_endsWith?: InputMaybe; + totalVolumeETH_eq?: InputMaybe; + totalVolumeETH_gt?: InputMaybe; + totalVolumeETH_gte?: InputMaybe; + totalVolumeETH_in?: InputMaybe>; + totalVolumeETH_isNull?: InputMaybe; + totalVolumeETH_lt?: InputMaybe; + totalVolumeETH_lte?: InputMaybe; + totalVolumeETH_not_contains?: InputMaybe; + totalVolumeETH_not_containsInsensitive?: InputMaybe; + totalVolumeETH_not_endsWith?: InputMaybe; + totalVolumeETH_not_eq?: InputMaybe; + totalVolumeETH_not_in?: InputMaybe>; + totalVolumeETH_not_startsWith?: InputMaybe; + totalVolumeETH_startsWith?: InputMaybe; + totalVolumeUSD_contains?: InputMaybe; + totalVolumeUSD_containsInsensitive?: InputMaybe; + totalVolumeUSD_endsWith?: InputMaybe; + totalVolumeUSD_eq?: InputMaybe; + totalVolumeUSD_gt?: InputMaybe; + totalVolumeUSD_gte?: InputMaybe; + totalVolumeUSD_in?: InputMaybe>; + totalVolumeUSD_isNull?: InputMaybe; + totalVolumeUSD_lt?: InputMaybe; + totalVolumeUSD_lte?: InputMaybe; + totalVolumeUSD_not_contains?: InputMaybe; + totalVolumeUSD_not_containsInsensitive?: InputMaybe; + totalVolumeUSD_not_endsWith?: InputMaybe; + totalVolumeUSD_not_eq?: InputMaybe; + totalVolumeUSD_not_in?: InputMaybe>; + totalVolumeUSD_not_startsWith?: InputMaybe; + totalVolumeUSD_startsWith?: InputMaybe; + txCount_eq?: InputMaybe; + txCount_gt?: InputMaybe; + txCount_gte?: InputMaybe; + txCount_in?: InputMaybe>; + txCount_isNull?: InputMaybe; + txCount_lt?: InputMaybe; + txCount_lte?: InputMaybe; + txCount_not_eq?: InputMaybe; + txCount_not_in?: InputMaybe>; +}; + +export type FactoryEdge = { + __typename?: 'FactoryEdge'; + cursor: Scalars['String']['output']; + node: Factory; +}; + +export enum FactoryOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + PairCountAsc = 'pairCount_ASC', + PairCountDesc = 'pairCount_DESC', + TotalLiquidityEthAsc = 'totalLiquidityETH_ASC', + TotalLiquidityEthDesc = 'totalLiquidityETH_DESC', + TotalLiquidityUsdAsc = 'totalLiquidityUSD_ASC', + TotalLiquidityUsdDesc = 'totalLiquidityUSD_DESC', + TotalVolumeEthAsc = 'totalVolumeETH_ASC', + TotalVolumeEthDesc = 'totalVolumeETH_DESC', + TotalVolumeUsdAsc = 'totalVolumeUSD_ASC', + TotalVolumeUsdDesc = 'totalVolumeUSD_DESC', + TxCountAsc = 'txCount_ASC', + TxCountDesc = 'txCount_DESC', + UntrackedVolumeUsdAsc = 'untrackedVolumeUSD_ASC', + UntrackedVolumeUsdDesc = 'untrackedVolumeUSD_DESC' +} + +export type FactoryWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + pairCount_eq?: InputMaybe; + pairCount_gt?: InputMaybe; + pairCount_gte?: InputMaybe; + pairCount_in?: InputMaybe>; + pairCount_isNull?: InputMaybe; + pairCount_lt?: InputMaybe; + pairCount_lte?: InputMaybe; + pairCount_not_eq?: InputMaybe; + pairCount_not_in?: InputMaybe>; + totalLiquidityETH_contains?: InputMaybe; + totalLiquidityETH_containsInsensitive?: InputMaybe; + totalLiquidityETH_endsWith?: InputMaybe; + totalLiquidityETH_eq?: InputMaybe; + totalLiquidityETH_gt?: InputMaybe; + totalLiquidityETH_gte?: InputMaybe; + totalLiquidityETH_in?: InputMaybe>; + totalLiquidityETH_isNull?: InputMaybe; + totalLiquidityETH_lt?: InputMaybe; + totalLiquidityETH_lte?: InputMaybe; + totalLiquidityETH_not_contains?: InputMaybe; + totalLiquidityETH_not_containsInsensitive?: InputMaybe; + totalLiquidityETH_not_endsWith?: InputMaybe; + totalLiquidityETH_not_eq?: InputMaybe; + totalLiquidityETH_not_in?: InputMaybe>; + totalLiquidityETH_not_startsWith?: InputMaybe; + totalLiquidityETH_startsWith?: InputMaybe; + totalLiquidityUSD_contains?: InputMaybe; + totalLiquidityUSD_containsInsensitive?: InputMaybe; + totalLiquidityUSD_endsWith?: InputMaybe; + totalLiquidityUSD_eq?: InputMaybe; + totalLiquidityUSD_gt?: InputMaybe; + totalLiquidityUSD_gte?: InputMaybe; + totalLiquidityUSD_in?: InputMaybe>; + totalLiquidityUSD_isNull?: InputMaybe; + totalLiquidityUSD_lt?: InputMaybe; + totalLiquidityUSD_lte?: InputMaybe; + totalLiquidityUSD_not_contains?: InputMaybe; + totalLiquidityUSD_not_containsInsensitive?: InputMaybe; + totalLiquidityUSD_not_endsWith?: InputMaybe; + totalLiquidityUSD_not_eq?: InputMaybe; + totalLiquidityUSD_not_in?: InputMaybe>; + totalLiquidityUSD_not_startsWith?: InputMaybe; + totalLiquidityUSD_startsWith?: InputMaybe; + totalVolumeETH_contains?: InputMaybe; + totalVolumeETH_containsInsensitive?: InputMaybe; + totalVolumeETH_endsWith?: InputMaybe; + totalVolumeETH_eq?: InputMaybe; + totalVolumeETH_gt?: InputMaybe; + totalVolumeETH_gte?: InputMaybe; + totalVolumeETH_in?: InputMaybe>; + totalVolumeETH_isNull?: InputMaybe; + totalVolumeETH_lt?: InputMaybe; + totalVolumeETH_lte?: InputMaybe; + totalVolumeETH_not_contains?: InputMaybe; + totalVolumeETH_not_containsInsensitive?: InputMaybe; + totalVolumeETH_not_endsWith?: InputMaybe; + totalVolumeETH_not_eq?: InputMaybe; + totalVolumeETH_not_in?: InputMaybe>; + totalVolumeETH_not_startsWith?: InputMaybe; + totalVolumeETH_startsWith?: InputMaybe; + totalVolumeUSD_contains?: InputMaybe; + totalVolumeUSD_containsInsensitive?: InputMaybe; + totalVolumeUSD_endsWith?: InputMaybe; + totalVolumeUSD_eq?: InputMaybe; + totalVolumeUSD_gt?: InputMaybe; + totalVolumeUSD_gte?: InputMaybe; + totalVolumeUSD_in?: InputMaybe>; + totalVolumeUSD_isNull?: InputMaybe; + totalVolumeUSD_lt?: InputMaybe; + totalVolumeUSD_lte?: InputMaybe; + totalVolumeUSD_not_contains?: InputMaybe; + totalVolumeUSD_not_containsInsensitive?: InputMaybe; + totalVolumeUSD_not_endsWith?: InputMaybe; + totalVolumeUSD_not_eq?: InputMaybe; + totalVolumeUSD_not_in?: InputMaybe>; + totalVolumeUSD_not_startsWith?: InputMaybe; + totalVolumeUSD_startsWith?: InputMaybe; + txCount_eq?: InputMaybe; + txCount_gt?: InputMaybe; + txCount_gte?: InputMaybe; + txCount_in?: InputMaybe>; + txCount_isNull?: InputMaybe; + txCount_lt?: InputMaybe; + txCount_lte?: InputMaybe; + txCount_not_eq?: InputMaybe; + txCount_not_in?: InputMaybe>; + untrackedVolumeUSD_contains?: InputMaybe; + untrackedVolumeUSD_containsInsensitive?: InputMaybe; + untrackedVolumeUSD_endsWith?: InputMaybe; + untrackedVolumeUSD_eq?: InputMaybe; + untrackedVolumeUSD_gt?: InputMaybe; + untrackedVolumeUSD_gte?: InputMaybe; + untrackedVolumeUSD_in?: InputMaybe>; + untrackedVolumeUSD_isNull?: InputMaybe; + untrackedVolumeUSD_lt?: InputMaybe; + untrackedVolumeUSD_lte?: InputMaybe; + untrackedVolumeUSD_not_contains?: InputMaybe; + untrackedVolumeUSD_not_containsInsensitive?: InputMaybe; + untrackedVolumeUSD_not_endsWith?: InputMaybe; + untrackedVolumeUSD_not_eq?: InputMaybe; + untrackedVolumeUSD_not_in?: InputMaybe>; + untrackedVolumeUSD_not_startsWith?: InputMaybe; + untrackedVolumeUSD_startsWith?: InputMaybe; +}; + +export type Farm = { + __typename?: 'Farm'; + createdAtBlock: Scalars['BigInt']['output']; + createdAtTimestamp: Scalars['BigInt']['output']; + id: Scalars['String']['output']; + incentives: Array; + liquidityStaked: Scalars['BigInt']['output']; + pair?: Maybe; + pid: Scalars['BigInt']['output']; + rewardUSDPerDay: Scalars['String']['output']; + singleTokenLock?: Maybe; + stableSwap?: Maybe; + stakeApr: Scalars['String']['output']; + stakePositions: Array; + stakeToken: Scalars['String']['output']; + stakedUSD: Scalars['String']['output']; +}; + + +export type FarmIncentivesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type FarmStakePositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type FarmEdge = { + __typename?: 'FarmEdge'; + cursor: Scalars['String']['output']; + node: Farm; +}; + +export enum FarmOrderByInput { + CreatedAtBlockAsc = 'createdAtBlock_ASC', + CreatedAtBlockDesc = 'createdAtBlock_DESC', + CreatedAtTimestampAsc = 'createdAtTimestamp_ASC', + CreatedAtTimestampDesc = 'createdAtTimestamp_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityStakedAsc = 'liquidityStaked_ASC', + LiquidityStakedDesc = 'liquidityStaked_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + PidAsc = 'pid_ASC', + PidDesc = 'pid_DESC', + RewardUsdPerDayAsc = 'rewardUSDPerDay_ASC', + RewardUsdPerDayDesc = 'rewardUSDPerDay_DESC', + SingleTokenLockIdAsc = 'singleTokenLock_id_ASC', + SingleTokenLockIdDesc = 'singleTokenLock_id_DESC', + SingleTokenLockTotalLiquidityEthAsc = 'singleTokenLock_totalLiquidityETH_ASC', + SingleTokenLockTotalLiquidityEthDesc = 'singleTokenLock_totalLiquidityETH_DESC', + SingleTokenLockTotalLiquidityUsdAsc = 'singleTokenLock_totalLiquidityUSD_ASC', + SingleTokenLockTotalLiquidityUsdDesc = 'singleTokenLock_totalLiquidityUSD_DESC', + SingleTokenLockTotalLiquidityAsc = 'singleTokenLock_totalLiquidity_ASC', + SingleTokenLockTotalLiquidityDesc = 'singleTokenLock_totalLiquidity_DESC', + StableSwapAAsc = 'stableSwap_a_ASC', + StableSwapADesc = 'stableSwap_a_DESC', + StableSwapAddressAsc = 'stableSwap_address_ASC', + StableSwapAddressDesc = 'stableSwap_address_DESC', + StableSwapAdminFeeAsc = 'stableSwap_adminFee_ASC', + StableSwapAdminFeeDesc = 'stableSwap_adminFee_DESC', + StableSwapBaseSwapAddressAsc = 'stableSwap_baseSwapAddress_ASC', + StableSwapBaseSwapAddressDesc = 'stableSwap_baseSwapAddress_DESC', + StableSwapIdAsc = 'stableSwap_id_ASC', + StableSwapIdDesc = 'stableSwap_id_DESC', + StableSwapLpTokenAsc = 'stableSwap_lpToken_ASC', + StableSwapLpTokenDesc = 'stableSwap_lpToken_DESC', + StableSwapLpTotalSupplyAsc = 'stableSwap_lpTotalSupply_ASC', + StableSwapLpTotalSupplyDesc = 'stableSwap_lpTotalSupply_DESC', + StableSwapNumTokensAsc = 'stableSwap_numTokens_ASC', + StableSwapNumTokensDesc = 'stableSwap_numTokens_DESC', + StableSwapSwapFeeAsc = 'stableSwap_swapFee_ASC', + StableSwapSwapFeeDesc = 'stableSwap_swapFee_DESC', + StableSwapTvlUsdAsc = 'stableSwap_tvlUSD_ASC', + StableSwapTvlUsdDesc = 'stableSwap_tvlUSD_DESC', + StableSwapVirtualPriceAsc = 'stableSwap_virtualPrice_ASC', + StableSwapVirtualPriceDesc = 'stableSwap_virtualPrice_DESC', + StableSwapVolumeUsdAsc = 'stableSwap_volumeUSD_ASC', + StableSwapVolumeUsdDesc = 'stableSwap_volumeUSD_DESC', + StakeAprAsc = 'stakeApr_ASC', + StakeAprDesc = 'stakeApr_DESC', + StakeTokenAsc = 'stakeToken_ASC', + StakeTokenDesc = 'stakeToken_DESC', + StakedUsdAsc = 'stakedUSD_ASC', + StakedUsdDesc = 'stakedUSD_DESC' +} + +export type FarmWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + createdAtBlock_eq?: InputMaybe; + createdAtBlock_gt?: InputMaybe; + createdAtBlock_gte?: InputMaybe; + createdAtBlock_in?: InputMaybe>; + createdAtBlock_isNull?: InputMaybe; + createdAtBlock_lt?: InputMaybe; + createdAtBlock_lte?: InputMaybe; + createdAtBlock_not_eq?: InputMaybe; + createdAtBlock_not_in?: InputMaybe>; + createdAtTimestamp_eq?: InputMaybe; + createdAtTimestamp_gt?: InputMaybe; + createdAtTimestamp_gte?: InputMaybe; + createdAtTimestamp_in?: InputMaybe>; + createdAtTimestamp_isNull?: InputMaybe; + createdAtTimestamp_lt?: InputMaybe; + createdAtTimestamp_lte?: InputMaybe; + createdAtTimestamp_not_eq?: InputMaybe; + createdAtTimestamp_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + incentives_every?: InputMaybe; + incentives_none?: InputMaybe; + incentives_some?: InputMaybe; + liquidityStaked_eq?: InputMaybe; + liquidityStaked_gt?: InputMaybe; + liquidityStaked_gte?: InputMaybe; + liquidityStaked_in?: InputMaybe>; + liquidityStaked_isNull?: InputMaybe; + liquidityStaked_lt?: InputMaybe; + liquidityStaked_lte?: InputMaybe; + liquidityStaked_not_eq?: InputMaybe; + liquidityStaked_not_in?: InputMaybe>; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + pid_eq?: InputMaybe; + pid_gt?: InputMaybe; + pid_gte?: InputMaybe; + pid_in?: InputMaybe>; + pid_isNull?: InputMaybe; + pid_lt?: InputMaybe; + pid_lte?: InputMaybe; + pid_not_eq?: InputMaybe; + pid_not_in?: InputMaybe>; + rewardUSDPerDay_contains?: InputMaybe; + rewardUSDPerDay_containsInsensitive?: InputMaybe; + rewardUSDPerDay_endsWith?: InputMaybe; + rewardUSDPerDay_eq?: InputMaybe; + rewardUSDPerDay_gt?: InputMaybe; + rewardUSDPerDay_gte?: InputMaybe; + rewardUSDPerDay_in?: InputMaybe>; + rewardUSDPerDay_isNull?: InputMaybe; + rewardUSDPerDay_lt?: InputMaybe; + rewardUSDPerDay_lte?: InputMaybe; + rewardUSDPerDay_not_contains?: InputMaybe; + rewardUSDPerDay_not_containsInsensitive?: InputMaybe; + rewardUSDPerDay_not_endsWith?: InputMaybe; + rewardUSDPerDay_not_eq?: InputMaybe; + rewardUSDPerDay_not_in?: InputMaybe>; + rewardUSDPerDay_not_startsWith?: InputMaybe; + rewardUSDPerDay_startsWith?: InputMaybe; + singleTokenLock?: InputMaybe; + singleTokenLock_isNull?: InputMaybe; + stableSwap?: InputMaybe; + stableSwap_isNull?: InputMaybe; + stakeApr_contains?: InputMaybe; + stakeApr_containsInsensitive?: InputMaybe; + stakeApr_endsWith?: InputMaybe; + stakeApr_eq?: InputMaybe; + stakeApr_gt?: InputMaybe; + stakeApr_gte?: InputMaybe; + stakeApr_in?: InputMaybe>; + stakeApr_isNull?: InputMaybe; + stakeApr_lt?: InputMaybe; + stakeApr_lte?: InputMaybe; + stakeApr_not_contains?: InputMaybe; + stakeApr_not_containsInsensitive?: InputMaybe; + stakeApr_not_endsWith?: InputMaybe; + stakeApr_not_eq?: InputMaybe; + stakeApr_not_in?: InputMaybe>; + stakeApr_not_startsWith?: InputMaybe; + stakeApr_startsWith?: InputMaybe; + stakePositions_every?: InputMaybe; + stakePositions_none?: InputMaybe; + stakePositions_some?: InputMaybe; + stakeToken_contains?: InputMaybe; + stakeToken_containsInsensitive?: InputMaybe; + stakeToken_endsWith?: InputMaybe; + stakeToken_eq?: InputMaybe; + stakeToken_gt?: InputMaybe; + stakeToken_gte?: InputMaybe; + stakeToken_in?: InputMaybe>; + stakeToken_isNull?: InputMaybe; + stakeToken_lt?: InputMaybe; + stakeToken_lte?: InputMaybe; + stakeToken_not_contains?: InputMaybe; + stakeToken_not_containsInsensitive?: InputMaybe; + stakeToken_not_endsWith?: InputMaybe; + stakeToken_not_eq?: InputMaybe; + stakeToken_not_in?: InputMaybe>; + stakeToken_not_startsWith?: InputMaybe; + stakeToken_startsWith?: InputMaybe; + stakedUSD_contains?: InputMaybe; + stakedUSD_containsInsensitive?: InputMaybe; + stakedUSD_endsWith?: InputMaybe; + stakedUSD_eq?: InputMaybe; + stakedUSD_gt?: InputMaybe; + stakedUSD_gte?: InputMaybe; + stakedUSD_in?: InputMaybe>; + stakedUSD_isNull?: InputMaybe; + stakedUSD_lt?: InputMaybe; + stakedUSD_lte?: InputMaybe; + stakedUSD_not_contains?: InputMaybe; + stakedUSD_not_containsInsensitive?: InputMaybe; + stakedUSD_not_endsWith?: InputMaybe; + stakedUSD_not_eq?: InputMaybe; + stakedUSD_not_in?: InputMaybe>; + stakedUSD_not_startsWith?: InputMaybe; + stakedUSD_startsWith?: InputMaybe; +}; + +export type FarmsConnection = { + __typename?: 'FarmsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Incentive = { + __typename?: 'Incentive'; + farm: Farm; + id: Scalars['String']['output']; + rewardPerDay: Scalars['String']['output']; + rewardToken: Token; +}; + +export type IncentiveEdge = { + __typename?: 'IncentiveEdge'; + cursor: Scalars['String']['output']; + node: Incentive; +}; + +export enum IncentiveOrderByInput { + FarmCreatedAtBlockAsc = 'farm_createdAtBlock_ASC', + FarmCreatedAtBlockDesc = 'farm_createdAtBlock_DESC', + FarmCreatedAtTimestampAsc = 'farm_createdAtTimestamp_ASC', + FarmCreatedAtTimestampDesc = 'farm_createdAtTimestamp_DESC', + FarmIdAsc = 'farm_id_ASC', + FarmIdDesc = 'farm_id_DESC', + FarmLiquidityStakedAsc = 'farm_liquidityStaked_ASC', + FarmLiquidityStakedDesc = 'farm_liquidityStaked_DESC', + FarmPidAsc = 'farm_pid_ASC', + FarmPidDesc = 'farm_pid_DESC', + FarmRewardUsdPerDayAsc = 'farm_rewardUSDPerDay_ASC', + FarmRewardUsdPerDayDesc = 'farm_rewardUSDPerDay_DESC', + FarmStakeAprAsc = 'farm_stakeApr_ASC', + FarmStakeAprDesc = 'farm_stakeApr_DESC', + FarmStakeTokenAsc = 'farm_stakeToken_ASC', + FarmStakeTokenDesc = 'farm_stakeToken_DESC', + FarmStakedUsdAsc = 'farm_stakedUSD_ASC', + FarmStakedUsdDesc = 'farm_stakedUSD_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + RewardPerDayAsc = 'rewardPerDay_ASC', + RewardPerDayDesc = 'rewardPerDay_DESC', + RewardTokenDecimalsAsc = 'rewardToken_decimals_ASC', + RewardTokenDecimalsDesc = 'rewardToken_decimals_DESC', + RewardTokenDerivedEthAsc = 'rewardToken_derivedETH_ASC', + RewardTokenDerivedEthDesc = 'rewardToken_derivedETH_DESC', + RewardTokenIdAsc = 'rewardToken_id_ASC', + RewardTokenIdDesc = 'rewardToken_id_DESC', + RewardTokenNameAsc = 'rewardToken_name_ASC', + RewardTokenNameDesc = 'rewardToken_name_DESC', + RewardTokenSymbolAsc = 'rewardToken_symbol_ASC', + RewardTokenSymbolDesc = 'rewardToken_symbol_DESC', + RewardTokenTotalLiquidityAsc = 'rewardToken_totalLiquidity_ASC', + RewardTokenTotalLiquidityDesc = 'rewardToken_totalLiquidity_DESC', + RewardTokenTotalSupplyAsc = 'rewardToken_totalSupply_ASC', + RewardTokenTotalSupplyDesc = 'rewardToken_totalSupply_DESC', + RewardTokenTradeVolumeUsdAsc = 'rewardToken_tradeVolumeUSD_ASC', + RewardTokenTradeVolumeUsdDesc = 'rewardToken_tradeVolumeUSD_DESC', + RewardTokenTradeVolumeAsc = 'rewardToken_tradeVolume_ASC', + RewardTokenTradeVolumeDesc = 'rewardToken_tradeVolume_DESC', + RewardTokenTxCountAsc = 'rewardToken_txCount_ASC', + RewardTokenTxCountDesc = 'rewardToken_txCount_DESC', + RewardTokenUntrackedVolumeUsdAsc = 'rewardToken_untrackedVolumeUSD_ASC', + RewardTokenUntrackedVolumeUsdDesc = 'rewardToken_untrackedVolumeUSD_DESC' +} + +export type IncentiveWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + farm?: InputMaybe; + farm_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + rewardPerDay_contains?: InputMaybe; + rewardPerDay_containsInsensitive?: InputMaybe; + rewardPerDay_endsWith?: InputMaybe; + rewardPerDay_eq?: InputMaybe; + rewardPerDay_gt?: InputMaybe; + rewardPerDay_gte?: InputMaybe; + rewardPerDay_in?: InputMaybe>; + rewardPerDay_isNull?: InputMaybe; + rewardPerDay_lt?: InputMaybe; + rewardPerDay_lte?: InputMaybe; + rewardPerDay_not_contains?: InputMaybe; + rewardPerDay_not_containsInsensitive?: InputMaybe; + rewardPerDay_not_endsWith?: InputMaybe; + rewardPerDay_not_eq?: InputMaybe; + rewardPerDay_not_in?: InputMaybe>; + rewardPerDay_not_startsWith?: InputMaybe; + rewardPerDay_startsWith?: InputMaybe; + rewardToken?: InputMaybe; + rewardToken_isNull?: InputMaybe; +}; + +export type IncentivesConnection = { + __typename?: 'IncentivesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type LiquidityPosition = { + __typename?: 'LiquidityPosition'; + id: Scalars['String']['output']; + /** BigDecimal */ + liquidityTokenBalance: Scalars['String']['output']; + pair: Pair; + user: User; +}; + +export type LiquidityPositionEdge = { + __typename?: 'LiquidityPositionEdge'; + cursor: Scalars['String']['output']; + node: LiquidityPosition; +}; + +export enum LiquidityPositionOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityTokenBalanceAsc = 'liquidityTokenBalance_ASC', + LiquidityTokenBalanceDesc = 'liquidityTokenBalance_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + UserIdAsc = 'user_id_ASC', + UserIdDesc = 'user_id_DESC', + UserUsdSwappedAsc = 'user_usdSwapped_ASC', + UserUsdSwappedDesc = 'user_usdSwapped_DESC' +} + +export type LiquidityPositionSnapshot = { + __typename?: 'LiquidityPositionSnapshot'; + block: Scalars['Int']['output']; + id: Scalars['String']['output']; + liquidityPosition: LiquidityPosition; + /** BigDecimal */ + liquidityTokenBalance: Scalars['String']['output']; + /** BigDecimal */ + liquidityTokenTotalSupply: Scalars['String']['output']; + pair: Pair; + /** BigDecimal */ + reserve0: Scalars['String']['output']; + /** BigDecimal */ + reserve1: Scalars['String']['output']; + /** BigDecimal */ + reserveUSD: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + /** BigDecimal */ + token0PriceUSD: Scalars['String']['output']; + /** BigDecimal */ + token1PriceUSD: Scalars['String']['output']; + user: User; +}; + +export type LiquidityPositionSnapshotEdge = { + __typename?: 'LiquidityPositionSnapshotEdge'; + cursor: Scalars['String']['output']; + node: LiquidityPositionSnapshot; +}; + +export enum LiquidityPositionSnapshotOrderByInput { + BlockAsc = 'block_ASC', + BlockDesc = 'block_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityPositionIdAsc = 'liquidityPosition_id_ASC', + LiquidityPositionIdDesc = 'liquidityPosition_id_DESC', + LiquidityPositionLiquidityTokenBalanceAsc = 'liquidityPosition_liquidityTokenBalance_ASC', + LiquidityPositionLiquidityTokenBalanceDesc = 'liquidityPosition_liquidityTokenBalance_DESC', + LiquidityTokenBalanceAsc = 'liquidityTokenBalance_ASC', + LiquidityTokenBalanceDesc = 'liquidityTokenBalance_DESC', + LiquidityTokenTotalSupplyAsc = 'liquidityTokenTotalSupply_ASC', + LiquidityTokenTotalSupplyDesc = 'liquidityTokenTotalSupply_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + Reserve0Asc = 'reserve0_ASC', + Reserve0Desc = 'reserve0_DESC', + Reserve1Asc = 'reserve1_ASC', + Reserve1Desc = 'reserve1_DESC', + ReserveUsdAsc = 'reserveUSD_ASC', + ReserveUsdDesc = 'reserveUSD_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + Token0PriceUsdAsc = 'token0PriceUSD_ASC', + Token0PriceUsdDesc = 'token0PriceUSD_DESC', + Token1PriceUsdAsc = 'token1PriceUSD_ASC', + Token1PriceUsdDesc = 'token1PriceUSD_DESC', + UserIdAsc = 'user_id_ASC', + UserIdDesc = 'user_id_DESC', + UserUsdSwappedAsc = 'user_usdSwapped_ASC', + UserUsdSwappedDesc = 'user_usdSwapped_DESC' +} + +export type LiquidityPositionSnapshotWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + block_eq?: InputMaybe; + block_gt?: InputMaybe; + block_gte?: InputMaybe; + block_in?: InputMaybe>; + block_isNull?: InputMaybe; + block_lt?: InputMaybe; + block_lte?: InputMaybe; + block_not_eq?: InputMaybe; + block_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidityPosition?: InputMaybe; + liquidityPosition_isNull?: InputMaybe; + liquidityTokenBalance_contains?: InputMaybe; + liquidityTokenBalance_containsInsensitive?: InputMaybe; + liquidityTokenBalance_endsWith?: InputMaybe; + liquidityTokenBalance_eq?: InputMaybe; + liquidityTokenBalance_gt?: InputMaybe; + liquidityTokenBalance_gte?: InputMaybe; + liquidityTokenBalance_in?: InputMaybe>; + liquidityTokenBalance_isNull?: InputMaybe; + liquidityTokenBalance_lt?: InputMaybe; + liquidityTokenBalance_lte?: InputMaybe; + liquidityTokenBalance_not_contains?: InputMaybe; + liquidityTokenBalance_not_containsInsensitive?: InputMaybe; + liquidityTokenBalance_not_endsWith?: InputMaybe; + liquidityTokenBalance_not_eq?: InputMaybe; + liquidityTokenBalance_not_in?: InputMaybe>; + liquidityTokenBalance_not_startsWith?: InputMaybe; + liquidityTokenBalance_startsWith?: InputMaybe; + liquidityTokenTotalSupply_contains?: InputMaybe; + liquidityTokenTotalSupply_containsInsensitive?: InputMaybe; + liquidityTokenTotalSupply_endsWith?: InputMaybe; + liquidityTokenTotalSupply_eq?: InputMaybe; + liquidityTokenTotalSupply_gt?: InputMaybe; + liquidityTokenTotalSupply_gte?: InputMaybe; + liquidityTokenTotalSupply_in?: InputMaybe>; + liquidityTokenTotalSupply_isNull?: InputMaybe; + liquidityTokenTotalSupply_lt?: InputMaybe; + liquidityTokenTotalSupply_lte?: InputMaybe; + liquidityTokenTotalSupply_not_contains?: InputMaybe; + liquidityTokenTotalSupply_not_containsInsensitive?: InputMaybe; + liquidityTokenTotalSupply_not_endsWith?: InputMaybe; + liquidityTokenTotalSupply_not_eq?: InputMaybe; + liquidityTokenTotalSupply_not_in?: InputMaybe>; + liquidityTokenTotalSupply_not_startsWith?: InputMaybe; + liquidityTokenTotalSupply_startsWith?: InputMaybe; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + reserve0_contains?: InputMaybe; + reserve0_containsInsensitive?: InputMaybe; + reserve0_endsWith?: InputMaybe; + reserve0_eq?: InputMaybe; + reserve0_gt?: InputMaybe; + reserve0_gte?: InputMaybe; + reserve0_in?: InputMaybe>; + reserve0_isNull?: InputMaybe; + reserve0_lt?: InputMaybe; + reserve0_lte?: InputMaybe; + reserve0_not_contains?: InputMaybe; + reserve0_not_containsInsensitive?: InputMaybe; + reserve0_not_endsWith?: InputMaybe; + reserve0_not_eq?: InputMaybe; + reserve0_not_in?: InputMaybe>; + reserve0_not_startsWith?: InputMaybe; + reserve0_startsWith?: InputMaybe; + reserve1_contains?: InputMaybe; + reserve1_containsInsensitive?: InputMaybe; + reserve1_endsWith?: InputMaybe; + reserve1_eq?: InputMaybe; + reserve1_gt?: InputMaybe; + reserve1_gte?: InputMaybe; + reserve1_in?: InputMaybe>; + reserve1_isNull?: InputMaybe; + reserve1_lt?: InputMaybe; + reserve1_lte?: InputMaybe; + reserve1_not_contains?: InputMaybe; + reserve1_not_containsInsensitive?: InputMaybe; + reserve1_not_endsWith?: InputMaybe; + reserve1_not_eq?: InputMaybe; + reserve1_not_in?: InputMaybe>; + reserve1_not_startsWith?: InputMaybe; + reserve1_startsWith?: InputMaybe; + reserveUSD_contains?: InputMaybe; + reserveUSD_containsInsensitive?: InputMaybe; + reserveUSD_endsWith?: InputMaybe; + reserveUSD_eq?: InputMaybe; + reserveUSD_gt?: InputMaybe; + reserveUSD_gte?: InputMaybe; + reserveUSD_in?: InputMaybe>; + reserveUSD_isNull?: InputMaybe; + reserveUSD_lt?: InputMaybe; + reserveUSD_lte?: InputMaybe; + reserveUSD_not_contains?: InputMaybe; + reserveUSD_not_containsInsensitive?: InputMaybe; + reserveUSD_not_endsWith?: InputMaybe; + reserveUSD_not_eq?: InputMaybe; + reserveUSD_not_in?: InputMaybe>; + reserveUSD_not_startsWith?: InputMaybe; + reserveUSD_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + token0PriceUSD_contains?: InputMaybe; + token0PriceUSD_containsInsensitive?: InputMaybe; + token0PriceUSD_endsWith?: InputMaybe; + token0PriceUSD_eq?: InputMaybe; + token0PriceUSD_gt?: InputMaybe; + token0PriceUSD_gte?: InputMaybe; + token0PriceUSD_in?: InputMaybe>; + token0PriceUSD_isNull?: InputMaybe; + token0PriceUSD_lt?: InputMaybe; + token0PriceUSD_lte?: InputMaybe; + token0PriceUSD_not_contains?: InputMaybe; + token0PriceUSD_not_containsInsensitive?: InputMaybe; + token0PriceUSD_not_endsWith?: InputMaybe; + token0PriceUSD_not_eq?: InputMaybe; + token0PriceUSD_not_in?: InputMaybe>; + token0PriceUSD_not_startsWith?: InputMaybe; + token0PriceUSD_startsWith?: InputMaybe; + token1PriceUSD_contains?: InputMaybe; + token1PriceUSD_containsInsensitive?: InputMaybe; + token1PriceUSD_endsWith?: InputMaybe; + token1PriceUSD_eq?: InputMaybe; + token1PriceUSD_gt?: InputMaybe; + token1PriceUSD_gte?: InputMaybe; + token1PriceUSD_in?: InputMaybe>; + token1PriceUSD_isNull?: InputMaybe; + token1PriceUSD_lt?: InputMaybe; + token1PriceUSD_lte?: InputMaybe; + token1PriceUSD_not_contains?: InputMaybe; + token1PriceUSD_not_containsInsensitive?: InputMaybe; + token1PriceUSD_not_endsWith?: InputMaybe; + token1PriceUSD_not_eq?: InputMaybe; + token1PriceUSD_not_in?: InputMaybe>; + token1PriceUSD_not_startsWith?: InputMaybe; + token1PriceUSD_startsWith?: InputMaybe; + user?: InputMaybe; + user_isNull?: InputMaybe; +}; + +export type LiquidityPositionSnapshotsConnection = { + __typename?: 'LiquidityPositionSnapshotsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type LiquidityPositionWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidityTokenBalance_contains?: InputMaybe; + liquidityTokenBalance_containsInsensitive?: InputMaybe; + liquidityTokenBalance_endsWith?: InputMaybe; + liquidityTokenBalance_eq?: InputMaybe; + liquidityTokenBalance_gt?: InputMaybe; + liquidityTokenBalance_gte?: InputMaybe; + liquidityTokenBalance_in?: InputMaybe>; + liquidityTokenBalance_isNull?: InputMaybe; + liquidityTokenBalance_lt?: InputMaybe; + liquidityTokenBalance_lte?: InputMaybe; + liquidityTokenBalance_not_contains?: InputMaybe; + liquidityTokenBalance_not_containsInsensitive?: InputMaybe; + liquidityTokenBalance_not_endsWith?: InputMaybe; + liquidityTokenBalance_not_eq?: InputMaybe; + liquidityTokenBalance_not_in?: InputMaybe>; + liquidityTokenBalance_not_startsWith?: InputMaybe; + liquidityTokenBalance_startsWith?: InputMaybe; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + user?: InputMaybe; + user_isNull?: InputMaybe; +}; + +export type LiquidityPositionsConnection = { + __typename?: 'LiquidityPositionsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Mint = { + __typename?: 'Mint'; + amount0?: Maybe; + amount1?: Maybe; + amountUSD?: Maybe; + feeLiquidity?: Maybe; + feeTo?: Maybe; + id: Scalars['String']['output']; + liquidity: Scalars['String']['output']; + logIndex?: Maybe; + pair: Pair; + sender?: Maybe; + timestamp: Scalars['DateTime']['output']; + to: Scalars['String']['output']; + transaction: Transaction; +}; + +export type MintEdge = { + __typename?: 'MintEdge'; + cursor: Scalars['String']['output']; + node: Mint; +}; + +export enum MintOrderByInput { + Amount0Asc = 'amount0_ASC', + Amount0Desc = 'amount0_DESC', + Amount1Asc = 'amount1_ASC', + Amount1Desc = 'amount1_DESC', + AmountUsdAsc = 'amountUSD_ASC', + AmountUsdDesc = 'amountUSD_DESC', + FeeLiquidityAsc = 'feeLiquidity_ASC', + FeeLiquidityDesc = 'feeLiquidity_DESC', + FeeToAsc = 'feeTo_ASC', + FeeToDesc = 'feeTo_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityAsc = 'liquidity_ASC', + LiquidityDesc = 'liquidity_DESC', + LogIndexAsc = 'logIndex_ASC', + LogIndexDesc = 'logIndex_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + SenderAsc = 'sender_ASC', + SenderDesc = 'sender_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + ToAsc = 'to_ASC', + ToDesc = 'to_DESC', + TransactionBlockNumberAsc = 'transaction_blockNumber_ASC', + TransactionBlockNumberDesc = 'transaction_blockNumber_DESC', + TransactionIdAsc = 'transaction_id_ASC', + TransactionIdDesc = 'transaction_id_DESC', + TransactionTimestampAsc = 'transaction_timestamp_ASC', + TransactionTimestampDesc = 'transaction_timestamp_DESC' +} + +export type MintWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount0_contains?: InputMaybe; + amount0_containsInsensitive?: InputMaybe; + amount0_endsWith?: InputMaybe; + amount0_eq?: InputMaybe; + amount0_gt?: InputMaybe; + amount0_gte?: InputMaybe; + amount0_in?: InputMaybe>; + amount0_isNull?: InputMaybe; + amount0_lt?: InputMaybe; + amount0_lte?: InputMaybe; + amount0_not_contains?: InputMaybe; + amount0_not_containsInsensitive?: InputMaybe; + amount0_not_endsWith?: InputMaybe; + amount0_not_eq?: InputMaybe; + amount0_not_in?: InputMaybe>; + amount0_not_startsWith?: InputMaybe; + amount0_startsWith?: InputMaybe; + amount1_contains?: InputMaybe; + amount1_containsInsensitive?: InputMaybe; + amount1_endsWith?: InputMaybe; + amount1_eq?: InputMaybe; + amount1_gt?: InputMaybe; + amount1_gte?: InputMaybe; + amount1_in?: InputMaybe>; + amount1_isNull?: InputMaybe; + amount1_lt?: InputMaybe; + amount1_lte?: InputMaybe; + amount1_not_contains?: InputMaybe; + amount1_not_containsInsensitive?: InputMaybe; + amount1_not_endsWith?: InputMaybe; + amount1_not_eq?: InputMaybe; + amount1_not_in?: InputMaybe>; + amount1_not_startsWith?: InputMaybe; + amount1_startsWith?: InputMaybe; + amountUSD_contains?: InputMaybe; + amountUSD_containsInsensitive?: InputMaybe; + amountUSD_endsWith?: InputMaybe; + amountUSD_eq?: InputMaybe; + amountUSD_gt?: InputMaybe; + amountUSD_gte?: InputMaybe; + amountUSD_in?: InputMaybe>; + amountUSD_isNull?: InputMaybe; + amountUSD_lt?: InputMaybe; + amountUSD_lte?: InputMaybe; + amountUSD_not_contains?: InputMaybe; + amountUSD_not_containsInsensitive?: InputMaybe; + amountUSD_not_endsWith?: InputMaybe; + amountUSD_not_eq?: InputMaybe; + amountUSD_not_in?: InputMaybe>; + amountUSD_not_startsWith?: InputMaybe; + amountUSD_startsWith?: InputMaybe; + feeLiquidity_contains?: InputMaybe; + feeLiquidity_containsInsensitive?: InputMaybe; + feeLiquidity_endsWith?: InputMaybe; + feeLiquidity_eq?: InputMaybe; + feeLiquidity_gt?: InputMaybe; + feeLiquidity_gte?: InputMaybe; + feeLiquidity_in?: InputMaybe>; + feeLiquidity_isNull?: InputMaybe; + feeLiquidity_lt?: InputMaybe; + feeLiquidity_lte?: InputMaybe; + feeLiquidity_not_contains?: InputMaybe; + feeLiquidity_not_containsInsensitive?: InputMaybe; + feeLiquidity_not_endsWith?: InputMaybe; + feeLiquidity_not_eq?: InputMaybe; + feeLiquidity_not_in?: InputMaybe>; + feeLiquidity_not_startsWith?: InputMaybe; + feeLiquidity_startsWith?: InputMaybe; + feeTo_contains?: InputMaybe; + feeTo_containsInsensitive?: InputMaybe; + feeTo_endsWith?: InputMaybe; + feeTo_eq?: InputMaybe; + feeTo_gt?: InputMaybe; + feeTo_gte?: InputMaybe; + feeTo_in?: InputMaybe>; + feeTo_isNull?: InputMaybe; + feeTo_lt?: InputMaybe; + feeTo_lte?: InputMaybe; + feeTo_not_contains?: InputMaybe; + feeTo_not_containsInsensitive?: InputMaybe; + feeTo_not_endsWith?: InputMaybe; + feeTo_not_eq?: InputMaybe; + feeTo_not_in?: InputMaybe>; + feeTo_not_startsWith?: InputMaybe; + feeTo_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidity_contains?: InputMaybe; + liquidity_containsInsensitive?: InputMaybe; + liquidity_endsWith?: InputMaybe; + liquidity_eq?: InputMaybe; + liquidity_gt?: InputMaybe; + liquidity_gte?: InputMaybe; + liquidity_in?: InputMaybe>; + liquidity_isNull?: InputMaybe; + liquidity_lt?: InputMaybe; + liquidity_lte?: InputMaybe; + liquidity_not_contains?: InputMaybe; + liquidity_not_containsInsensitive?: InputMaybe; + liquidity_not_endsWith?: InputMaybe; + liquidity_not_eq?: InputMaybe; + liquidity_not_in?: InputMaybe>; + liquidity_not_startsWith?: InputMaybe; + liquidity_startsWith?: InputMaybe; + logIndex_eq?: InputMaybe; + logIndex_gt?: InputMaybe; + logIndex_gte?: InputMaybe; + logIndex_in?: InputMaybe>; + logIndex_isNull?: InputMaybe; + logIndex_lt?: InputMaybe; + logIndex_lte?: InputMaybe; + logIndex_not_eq?: InputMaybe; + logIndex_not_in?: InputMaybe>; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + sender_contains?: InputMaybe; + sender_containsInsensitive?: InputMaybe; + sender_endsWith?: InputMaybe; + sender_eq?: InputMaybe; + sender_gt?: InputMaybe; + sender_gte?: InputMaybe; + sender_in?: InputMaybe>; + sender_isNull?: InputMaybe; + sender_lt?: InputMaybe; + sender_lte?: InputMaybe; + sender_not_contains?: InputMaybe; + sender_not_containsInsensitive?: InputMaybe; + sender_not_endsWith?: InputMaybe; + sender_not_eq?: InputMaybe; + sender_not_in?: InputMaybe>; + sender_not_startsWith?: InputMaybe; + sender_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_containsInsensitive?: InputMaybe; + to_endsWith?: InputMaybe; + to_eq?: InputMaybe; + to_gt?: InputMaybe; + to_gte?: InputMaybe; + to_in?: InputMaybe>; + to_isNull?: InputMaybe; + to_lt?: InputMaybe; + to_lte?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_containsInsensitive?: InputMaybe; + to_not_endsWith?: InputMaybe; + to_not_eq?: InputMaybe; + to_not_in?: InputMaybe>; + to_not_startsWith?: InputMaybe; + to_startsWith?: InputMaybe; + transaction?: InputMaybe; + transaction_isNull?: InputMaybe; +}; + +export type MintsConnection = { + __typename?: 'MintsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type NablaToken = { + __typename?: 'NablaToken'; + decimals: Scalars['Int']['output']; + id: Scalars['String']['output']; + name: Scalars['String']['output']; + symbol: Scalars['String']['output']; +}; + +export type NablaTokenEdge = { + __typename?: 'NablaTokenEdge'; + cursor: Scalars['String']['output']; + node: NablaToken; +}; + +export enum NablaTokenOrderByInput { + DecimalsAsc = 'decimals_ASC', + DecimalsDesc = 'decimals_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + NameAsc = 'name_ASC', + NameDesc = 'name_DESC', + SymbolAsc = 'symbol_ASC', + SymbolDesc = 'symbol_DESC' +} + +export type NablaTokenWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + decimals_eq?: InputMaybe; + decimals_gt?: InputMaybe; + decimals_gte?: InputMaybe; + decimals_in?: InputMaybe>; + decimals_isNull?: InputMaybe; + decimals_lt?: InputMaybe; + decimals_lte?: InputMaybe; + decimals_not_eq?: InputMaybe; + decimals_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + name_contains?: InputMaybe; + name_containsInsensitive?: InputMaybe; + name_endsWith?: InputMaybe; + name_eq?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_isNull?: InputMaybe; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_containsInsensitive?: InputMaybe; + name_not_endsWith?: InputMaybe; + name_not_eq?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_startsWith?: InputMaybe; + name_startsWith?: InputMaybe; + symbol_contains?: InputMaybe; + symbol_containsInsensitive?: InputMaybe; + symbol_endsWith?: InputMaybe; + symbol_eq?: InputMaybe; + symbol_gt?: InputMaybe; + symbol_gte?: InputMaybe; + symbol_in?: InputMaybe>; + symbol_isNull?: InputMaybe; + symbol_lt?: InputMaybe; + symbol_lte?: InputMaybe; + symbol_not_contains?: InputMaybe; + symbol_not_containsInsensitive?: InputMaybe; + symbol_not_endsWith?: InputMaybe; + symbol_not_eq?: InputMaybe; + symbol_not_in?: InputMaybe>; + symbol_not_startsWith?: InputMaybe; + symbol_startsWith?: InputMaybe; +}; + +export type NablaTokensConnection = { + __typename?: 'NablaTokensConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type OraclePrice = { + __typename?: 'OraclePrice'; + blockchain: Scalars['String']['output']; + id: Scalars['String']['output']; + name: Scalars['String']['output']; + /** BigDecimal */ + price: Scalars['String']['output']; + /** BigDecimal */ + supply: Scalars['String']['output']; + symbol: Scalars['String']['output']; + timestamp: Scalars['BigInt']['output']; +}; + +export type OraclePriceEdge = { + __typename?: 'OraclePriceEdge'; + cursor: Scalars['String']['output']; + node: OraclePrice; +}; + +export enum OraclePriceOrderByInput { + BlockchainAsc = 'blockchain_ASC', + BlockchainDesc = 'blockchain_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + NameAsc = 'name_ASC', + NameDesc = 'name_DESC', + PriceAsc = 'price_ASC', + PriceDesc = 'price_DESC', + SupplyAsc = 'supply_ASC', + SupplyDesc = 'supply_DESC', + SymbolAsc = 'symbol_ASC', + SymbolDesc = 'symbol_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC' +} + +export type OraclePriceWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + blockchain_contains?: InputMaybe; + blockchain_containsInsensitive?: InputMaybe; + blockchain_endsWith?: InputMaybe; + blockchain_eq?: InputMaybe; + blockchain_gt?: InputMaybe; + blockchain_gte?: InputMaybe; + blockchain_in?: InputMaybe>; + blockchain_isNull?: InputMaybe; + blockchain_lt?: InputMaybe; + blockchain_lte?: InputMaybe; + blockchain_not_contains?: InputMaybe; + blockchain_not_containsInsensitive?: InputMaybe; + blockchain_not_endsWith?: InputMaybe; + blockchain_not_eq?: InputMaybe; + blockchain_not_in?: InputMaybe>; + blockchain_not_startsWith?: InputMaybe; + blockchain_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + name_contains?: InputMaybe; + name_containsInsensitive?: InputMaybe; + name_endsWith?: InputMaybe; + name_eq?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_isNull?: InputMaybe; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_containsInsensitive?: InputMaybe; + name_not_endsWith?: InputMaybe; + name_not_eq?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_startsWith?: InputMaybe; + name_startsWith?: InputMaybe; + price_contains?: InputMaybe; + price_containsInsensitive?: InputMaybe; + price_endsWith?: InputMaybe; + price_eq?: InputMaybe; + price_gt?: InputMaybe; + price_gte?: InputMaybe; + price_in?: InputMaybe>; + price_isNull?: InputMaybe; + price_lt?: InputMaybe; + price_lte?: InputMaybe; + price_not_contains?: InputMaybe; + price_not_containsInsensitive?: InputMaybe; + price_not_endsWith?: InputMaybe; + price_not_eq?: InputMaybe; + price_not_in?: InputMaybe>; + price_not_startsWith?: InputMaybe; + price_startsWith?: InputMaybe; + supply_contains?: InputMaybe; + supply_containsInsensitive?: InputMaybe; + supply_endsWith?: InputMaybe; + supply_eq?: InputMaybe; + supply_gt?: InputMaybe; + supply_gte?: InputMaybe; + supply_in?: InputMaybe>; + supply_isNull?: InputMaybe; + supply_lt?: InputMaybe; + supply_lte?: InputMaybe; + supply_not_contains?: InputMaybe; + supply_not_containsInsensitive?: InputMaybe; + supply_not_endsWith?: InputMaybe; + supply_not_eq?: InputMaybe; + supply_not_in?: InputMaybe>; + supply_not_startsWith?: InputMaybe; + supply_startsWith?: InputMaybe; + symbol_contains?: InputMaybe; + symbol_containsInsensitive?: InputMaybe; + symbol_endsWith?: InputMaybe; + symbol_eq?: InputMaybe; + symbol_gt?: InputMaybe; + symbol_gte?: InputMaybe; + symbol_in?: InputMaybe>; + symbol_isNull?: InputMaybe; + symbol_lt?: InputMaybe; + symbol_lte?: InputMaybe; + symbol_not_contains?: InputMaybe; + symbol_not_containsInsensitive?: InputMaybe; + symbol_not_endsWith?: InputMaybe; + symbol_not_eq?: InputMaybe; + symbol_not_in?: InputMaybe>; + symbol_not_startsWith?: InputMaybe; + symbol_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; +}; + +export type OraclePricesConnection = { + __typename?: 'OraclePricesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + endCursor: Scalars['String']['output']; + hasNextPage: Scalars['Boolean']['output']; + hasPreviousPage: Scalars['Boolean']['output']; + startCursor: Scalars['String']['output']; +}; + +export type Pair = { + __typename?: 'Pair'; + burns: Array; + createdAtBlockNumber: Scalars['BigInt']['output']; + createdAtTimestamp: Scalars['DateTime']['output']; + farm: Array; + id: Scalars['String']['output']; + liquidityPositionSnapshots: Array; + liquidityPositions: Array; + /** APR */ + liquidityProviderCount: Scalars['Int']['output']; + mints: Array; + pairDayData: Array; + pairHourData: Array; + /** BigDecimal */ + reserve0: Scalars['String']['output']; + /** BigDecimal */ + reserve1: Scalars['String']['output']; + /** BigDecimal */ + reserveETH: Scalars['String']['output']; + /** BigDecimal */ + reserveUSD: Scalars['String']['output']; + swaps: Array; + token0: Token; + /** BigDecimal */ + token0Price: Scalars['String']['output']; + token1: Token; + /** BigDecimal */ + token1Price: Scalars['String']['output']; + /** BigDecimal */ + totalSupply: Scalars['String']['output']; + /** BigDecimal */ + trackedReserveETH: Scalars['String']['output']; + txCount: Scalars['Int']['output']; + /** BigDecimal */ + untrackedVolumeUSD: Scalars['String']['output']; + /** BigDecimal */ + volumeToken0: Scalars['String']['output']; + /** BigDecimal */ + volumeToken1: Scalars['String']['output']; + /** BigDecimal */ + volumeUSD: Scalars['String']['output']; +}; + + +export type PairBurnsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairFarmArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairLiquidityPositionSnapshotsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairMintsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairPairDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairPairHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type PairSwapsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type PairDayData = { + __typename?: 'PairDayData'; + dailyTxns: Scalars['Int']['output']; + dailyVolumeToken0: Scalars['String']['output']; + dailyVolumeToken1: Scalars['String']['output']; + dailyVolumeUSD: Scalars['String']['output']; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + pair: Pair; + pairAddress: Scalars['String']['output']; + reserve0: Scalars['String']['output']; + reserve1: Scalars['String']['output']; + reserveUSD: Scalars['String']['output']; + token0: Token; + token1: Token; + totalSupply: Scalars['String']['output']; +}; + +export type PairDayDataConnection = { + __typename?: 'PairDayDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type PairDayDataEdge = { + __typename?: 'PairDayDataEdge'; + cursor: Scalars['String']['output']; + node: PairDayData; +}; + +export enum PairDayDataOrderByInput { + DailyTxnsAsc = 'dailyTxns_ASC', + DailyTxnsDesc = 'dailyTxns_DESC', + DailyVolumeToken0Asc = 'dailyVolumeToken0_ASC', + DailyVolumeToken0Desc = 'dailyVolumeToken0_DESC', + DailyVolumeToken1Asc = 'dailyVolumeToken1_ASC', + DailyVolumeToken1Desc = 'dailyVolumeToken1_DESC', + DailyVolumeUsdAsc = 'dailyVolumeUSD_ASC', + DailyVolumeUsdDesc = 'dailyVolumeUSD_DESC', + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + PairAddressAsc = 'pairAddress_ASC', + PairAddressDesc = 'pairAddress_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + Reserve0Asc = 'reserve0_ASC', + Reserve0Desc = 'reserve0_DESC', + Reserve1Asc = 'reserve1_ASC', + Reserve1Desc = 'reserve1_DESC', + ReserveUsdAsc = 'reserveUSD_ASC', + ReserveUsdDesc = 'reserveUSD_DESC', + Token0DecimalsAsc = 'token0_decimals_ASC', + Token0DecimalsDesc = 'token0_decimals_DESC', + Token0DerivedEthAsc = 'token0_derivedETH_ASC', + Token0DerivedEthDesc = 'token0_derivedETH_DESC', + Token0IdAsc = 'token0_id_ASC', + Token0IdDesc = 'token0_id_DESC', + Token0NameAsc = 'token0_name_ASC', + Token0NameDesc = 'token0_name_DESC', + Token0SymbolAsc = 'token0_symbol_ASC', + Token0SymbolDesc = 'token0_symbol_DESC', + Token0TotalLiquidityAsc = 'token0_totalLiquidity_ASC', + Token0TotalLiquidityDesc = 'token0_totalLiquidity_DESC', + Token0TotalSupplyAsc = 'token0_totalSupply_ASC', + Token0TotalSupplyDesc = 'token0_totalSupply_DESC', + Token0TradeVolumeUsdAsc = 'token0_tradeVolumeUSD_ASC', + Token0TradeVolumeUsdDesc = 'token0_tradeVolumeUSD_DESC', + Token0TradeVolumeAsc = 'token0_tradeVolume_ASC', + Token0TradeVolumeDesc = 'token0_tradeVolume_DESC', + Token0TxCountAsc = 'token0_txCount_ASC', + Token0TxCountDesc = 'token0_txCount_DESC', + Token0UntrackedVolumeUsdAsc = 'token0_untrackedVolumeUSD_ASC', + Token0UntrackedVolumeUsdDesc = 'token0_untrackedVolumeUSD_DESC', + Token1DecimalsAsc = 'token1_decimals_ASC', + Token1DecimalsDesc = 'token1_decimals_DESC', + Token1DerivedEthAsc = 'token1_derivedETH_ASC', + Token1DerivedEthDesc = 'token1_derivedETH_DESC', + Token1IdAsc = 'token1_id_ASC', + Token1IdDesc = 'token1_id_DESC', + Token1NameAsc = 'token1_name_ASC', + Token1NameDesc = 'token1_name_DESC', + Token1SymbolAsc = 'token1_symbol_ASC', + Token1SymbolDesc = 'token1_symbol_DESC', + Token1TotalLiquidityAsc = 'token1_totalLiquidity_ASC', + Token1TotalLiquidityDesc = 'token1_totalLiquidity_DESC', + Token1TotalSupplyAsc = 'token1_totalSupply_ASC', + Token1TotalSupplyDesc = 'token1_totalSupply_DESC', + Token1TradeVolumeUsdAsc = 'token1_tradeVolumeUSD_ASC', + Token1TradeVolumeUsdDesc = 'token1_tradeVolumeUSD_DESC', + Token1TradeVolumeAsc = 'token1_tradeVolume_ASC', + Token1TradeVolumeDesc = 'token1_tradeVolume_DESC', + Token1TxCountAsc = 'token1_txCount_ASC', + Token1TxCountDesc = 'token1_txCount_DESC', + Token1UntrackedVolumeUsdAsc = 'token1_untrackedVolumeUSD_ASC', + Token1UntrackedVolumeUsdDesc = 'token1_untrackedVolumeUSD_DESC', + TotalSupplyAsc = 'totalSupply_ASC', + TotalSupplyDesc = 'totalSupply_DESC' +} + +export type PairDayDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + dailyTxns_eq?: InputMaybe; + dailyTxns_gt?: InputMaybe; + dailyTxns_gte?: InputMaybe; + dailyTxns_in?: InputMaybe>; + dailyTxns_isNull?: InputMaybe; + dailyTxns_lt?: InputMaybe; + dailyTxns_lte?: InputMaybe; + dailyTxns_not_eq?: InputMaybe; + dailyTxns_not_in?: InputMaybe>; + dailyVolumeToken0_contains?: InputMaybe; + dailyVolumeToken0_containsInsensitive?: InputMaybe; + dailyVolumeToken0_endsWith?: InputMaybe; + dailyVolumeToken0_eq?: InputMaybe; + dailyVolumeToken0_gt?: InputMaybe; + dailyVolumeToken0_gte?: InputMaybe; + dailyVolumeToken0_in?: InputMaybe>; + dailyVolumeToken0_isNull?: InputMaybe; + dailyVolumeToken0_lt?: InputMaybe; + dailyVolumeToken0_lte?: InputMaybe; + dailyVolumeToken0_not_contains?: InputMaybe; + dailyVolumeToken0_not_containsInsensitive?: InputMaybe; + dailyVolumeToken0_not_endsWith?: InputMaybe; + dailyVolumeToken0_not_eq?: InputMaybe; + dailyVolumeToken0_not_in?: InputMaybe>; + dailyVolumeToken0_not_startsWith?: InputMaybe; + dailyVolumeToken0_startsWith?: InputMaybe; + dailyVolumeToken1_contains?: InputMaybe; + dailyVolumeToken1_containsInsensitive?: InputMaybe; + dailyVolumeToken1_endsWith?: InputMaybe; + dailyVolumeToken1_eq?: InputMaybe; + dailyVolumeToken1_gt?: InputMaybe; + dailyVolumeToken1_gte?: InputMaybe; + dailyVolumeToken1_in?: InputMaybe>; + dailyVolumeToken1_isNull?: InputMaybe; + dailyVolumeToken1_lt?: InputMaybe; + dailyVolumeToken1_lte?: InputMaybe; + dailyVolumeToken1_not_contains?: InputMaybe; + dailyVolumeToken1_not_containsInsensitive?: InputMaybe; + dailyVolumeToken1_not_endsWith?: InputMaybe; + dailyVolumeToken1_not_eq?: InputMaybe; + dailyVolumeToken1_not_in?: InputMaybe>; + dailyVolumeToken1_not_startsWith?: InputMaybe; + dailyVolumeToken1_startsWith?: InputMaybe; + dailyVolumeUSD_contains?: InputMaybe; + dailyVolumeUSD_containsInsensitive?: InputMaybe; + dailyVolumeUSD_endsWith?: InputMaybe; + dailyVolumeUSD_eq?: InputMaybe; + dailyVolumeUSD_gt?: InputMaybe; + dailyVolumeUSD_gte?: InputMaybe; + dailyVolumeUSD_in?: InputMaybe>; + dailyVolumeUSD_isNull?: InputMaybe; + dailyVolumeUSD_lt?: InputMaybe; + dailyVolumeUSD_lte?: InputMaybe; + dailyVolumeUSD_not_contains?: InputMaybe; + dailyVolumeUSD_not_containsInsensitive?: InputMaybe; + dailyVolumeUSD_not_endsWith?: InputMaybe; + dailyVolumeUSD_not_eq?: InputMaybe; + dailyVolumeUSD_not_in?: InputMaybe>; + dailyVolumeUSD_not_startsWith?: InputMaybe; + dailyVolumeUSD_startsWith?: InputMaybe; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + pair?: InputMaybe; + pairAddress_contains?: InputMaybe; + pairAddress_containsInsensitive?: InputMaybe; + pairAddress_endsWith?: InputMaybe; + pairAddress_eq?: InputMaybe; + pairAddress_gt?: InputMaybe; + pairAddress_gte?: InputMaybe; + pairAddress_in?: InputMaybe>; + pairAddress_isNull?: InputMaybe; + pairAddress_lt?: InputMaybe; + pairAddress_lte?: InputMaybe; + pairAddress_not_contains?: InputMaybe; + pairAddress_not_containsInsensitive?: InputMaybe; + pairAddress_not_endsWith?: InputMaybe; + pairAddress_not_eq?: InputMaybe; + pairAddress_not_in?: InputMaybe>; + pairAddress_not_startsWith?: InputMaybe; + pairAddress_startsWith?: InputMaybe; + pair_isNull?: InputMaybe; + reserve0_contains?: InputMaybe; + reserve0_containsInsensitive?: InputMaybe; + reserve0_endsWith?: InputMaybe; + reserve0_eq?: InputMaybe; + reserve0_gt?: InputMaybe; + reserve0_gte?: InputMaybe; + reserve0_in?: InputMaybe>; + reserve0_isNull?: InputMaybe; + reserve0_lt?: InputMaybe; + reserve0_lte?: InputMaybe; + reserve0_not_contains?: InputMaybe; + reserve0_not_containsInsensitive?: InputMaybe; + reserve0_not_endsWith?: InputMaybe; + reserve0_not_eq?: InputMaybe; + reserve0_not_in?: InputMaybe>; + reserve0_not_startsWith?: InputMaybe; + reserve0_startsWith?: InputMaybe; + reserve1_contains?: InputMaybe; + reserve1_containsInsensitive?: InputMaybe; + reserve1_endsWith?: InputMaybe; + reserve1_eq?: InputMaybe; + reserve1_gt?: InputMaybe; + reserve1_gte?: InputMaybe; + reserve1_in?: InputMaybe>; + reserve1_isNull?: InputMaybe; + reserve1_lt?: InputMaybe; + reserve1_lte?: InputMaybe; + reserve1_not_contains?: InputMaybe; + reserve1_not_containsInsensitive?: InputMaybe; + reserve1_not_endsWith?: InputMaybe; + reserve1_not_eq?: InputMaybe; + reserve1_not_in?: InputMaybe>; + reserve1_not_startsWith?: InputMaybe; + reserve1_startsWith?: InputMaybe; + reserveUSD_contains?: InputMaybe; + reserveUSD_containsInsensitive?: InputMaybe; + reserveUSD_endsWith?: InputMaybe; + reserveUSD_eq?: InputMaybe; + reserveUSD_gt?: InputMaybe; + reserveUSD_gte?: InputMaybe; + reserveUSD_in?: InputMaybe>; + reserveUSD_isNull?: InputMaybe; + reserveUSD_lt?: InputMaybe; + reserveUSD_lte?: InputMaybe; + reserveUSD_not_contains?: InputMaybe; + reserveUSD_not_containsInsensitive?: InputMaybe; + reserveUSD_not_endsWith?: InputMaybe; + reserveUSD_not_eq?: InputMaybe; + reserveUSD_not_in?: InputMaybe>; + reserveUSD_not_startsWith?: InputMaybe; + reserveUSD_startsWith?: InputMaybe; + token0?: InputMaybe; + token0_isNull?: InputMaybe; + token1?: InputMaybe; + token1_isNull?: InputMaybe; + totalSupply_contains?: InputMaybe; + totalSupply_containsInsensitive?: InputMaybe; + totalSupply_endsWith?: InputMaybe; + totalSupply_eq?: InputMaybe; + totalSupply_gt?: InputMaybe; + totalSupply_gte?: InputMaybe; + totalSupply_in?: InputMaybe>; + totalSupply_isNull?: InputMaybe; + totalSupply_lt?: InputMaybe; + totalSupply_lte?: InputMaybe; + totalSupply_not_contains?: InputMaybe; + totalSupply_not_containsInsensitive?: InputMaybe; + totalSupply_not_endsWith?: InputMaybe; + totalSupply_not_eq?: InputMaybe; + totalSupply_not_in?: InputMaybe>; + totalSupply_not_startsWith?: InputMaybe; + totalSupply_startsWith?: InputMaybe; +}; + +export type PairEdge = { + __typename?: 'PairEdge'; + cursor: Scalars['String']['output']; + node: Pair; +}; + +export type PairHourData = { + __typename?: 'PairHourData'; + hourStartUnix: Scalars['BigInt']['output']; + hourlyTxns: Scalars['Int']['output']; + hourlyVolumeToken0: Scalars['String']['output']; + hourlyVolumeToken1: Scalars['String']['output']; + hourlyVolumeUSD: Scalars['String']['output']; + id: Scalars['String']['output']; + pair: Pair; + reserve0: Scalars['String']['output']; + reserve1: Scalars['String']['output']; + reserveUSD: Scalars['String']['output']; + totalSupply: Scalars['String']['output']; +}; + +export type PairHourDataConnection = { + __typename?: 'PairHourDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type PairHourDataEdge = { + __typename?: 'PairHourDataEdge'; + cursor: Scalars['String']['output']; + node: PairHourData; +}; + +export enum PairHourDataOrderByInput { + HourStartUnixAsc = 'hourStartUnix_ASC', + HourStartUnixDesc = 'hourStartUnix_DESC', + HourlyTxnsAsc = 'hourlyTxns_ASC', + HourlyTxnsDesc = 'hourlyTxns_DESC', + HourlyVolumeToken0Asc = 'hourlyVolumeToken0_ASC', + HourlyVolumeToken0Desc = 'hourlyVolumeToken0_DESC', + HourlyVolumeToken1Asc = 'hourlyVolumeToken1_ASC', + HourlyVolumeToken1Desc = 'hourlyVolumeToken1_DESC', + HourlyVolumeUsdAsc = 'hourlyVolumeUSD_ASC', + HourlyVolumeUsdDesc = 'hourlyVolumeUSD_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + Reserve0Asc = 'reserve0_ASC', + Reserve0Desc = 'reserve0_DESC', + Reserve1Asc = 'reserve1_ASC', + Reserve1Desc = 'reserve1_DESC', + ReserveUsdAsc = 'reserveUSD_ASC', + ReserveUsdDesc = 'reserveUSD_DESC', + TotalSupplyAsc = 'totalSupply_ASC', + TotalSupplyDesc = 'totalSupply_DESC' +} + +export type PairHourDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + hourStartUnix_eq?: InputMaybe; + hourStartUnix_gt?: InputMaybe; + hourStartUnix_gte?: InputMaybe; + hourStartUnix_in?: InputMaybe>; + hourStartUnix_isNull?: InputMaybe; + hourStartUnix_lt?: InputMaybe; + hourStartUnix_lte?: InputMaybe; + hourStartUnix_not_eq?: InputMaybe; + hourStartUnix_not_in?: InputMaybe>; + hourlyTxns_eq?: InputMaybe; + hourlyTxns_gt?: InputMaybe; + hourlyTxns_gte?: InputMaybe; + hourlyTxns_in?: InputMaybe>; + hourlyTxns_isNull?: InputMaybe; + hourlyTxns_lt?: InputMaybe; + hourlyTxns_lte?: InputMaybe; + hourlyTxns_not_eq?: InputMaybe; + hourlyTxns_not_in?: InputMaybe>; + hourlyVolumeToken0_contains?: InputMaybe; + hourlyVolumeToken0_containsInsensitive?: InputMaybe; + hourlyVolumeToken0_endsWith?: InputMaybe; + hourlyVolumeToken0_eq?: InputMaybe; + hourlyVolumeToken0_gt?: InputMaybe; + hourlyVolumeToken0_gte?: InputMaybe; + hourlyVolumeToken0_in?: InputMaybe>; + hourlyVolumeToken0_isNull?: InputMaybe; + hourlyVolumeToken0_lt?: InputMaybe; + hourlyVolumeToken0_lte?: InputMaybe; + hourlyVolumeToken0_not_contains?: InputMaybe; + hourlyVolumeToken0_not_containsInsensitive?: InputMaybe; + hourlyVolumeToken0_not_endsWith?: InputMaybe; + hourlyVolumeToken0_not_eq?: InputMaybe; + hourlyVolumeToken0_not_in?: InputMaybe>; + hourlyVolumeToken0_not_startsWith?: InputMaybe; + hourlyVolumeToken0_startsWith?: InputMaybe; + hourlyVolumeToken1_contains?: InputMaybe; + hourlyVolumeToken1_containsInsensitive?: InputMaybe; + hourlyVolumeToken1_endsWith?: InputMaybe; + hourlyVolumeToken1_eq?: InputMaybe; + hourlyVolumeToken1_gt?: InputMaybe; + hourlyVolumeToken1_gte?: InputMaybe; + hourlyVolumeToken1_in?: InputMaybe>; + hourlyVolumeToken1_isNull?: InputMaybe; + hourlyVolumeToken1_lt?: InputMaybe; + hourlyVolumeToken1_lte?: InputMaybe; + hourlyVolumeToken1_not_contains?: InputMaybe; + hourlyVolumeToken1_not_containsInsensitive?: InputMaybe; + hourlyVolumeToken1_not_endsWith?: InputMaybe; + hourlyVolumeToken1_not_eq?: InputMaybe; + hourlyVolumeToken1_not_in?: InputMaybe>; + hourlyVolumeToken1_not_startsWith?: InputMaybe; + hourlyVolumeToken1_startsWith?: InputMaybe; + hourlyVolumeUSD_contains?: InputMaybe; + hourlyVolumeUSD_containsInsensitive?: InputMaybe; + hourlyVolumeUSD_endsWith?: InputMaybe; + hourlyVolumeUSD_eq?: InputMaybe; + hourlyVolumeUSD_gt?: InputMaybe; + hourlyVolumeUSD_gte?: InputMaybe; + hourlyVolumeUSD_in?: InputMaybe>; + hourlyVolumeUSD_isNull?: InputMaybe; + hourlyVolumeUSD_lt?: InputMaybe; + hourlyVolumeUSD_lte?: InputMaybe; + hourlyVolumeUSD_not_contains?: InputMaybe; + hourlyVolumeUSD_not_containsInsensitive?: InputMaybe; + hourlyVolumeUSD_not_endsWith?: InputMaybe; + hourlyVolumeUSD_not_eq?: InputMaybe; + hourlyVolumeUSD_not_in?: InputMaybe>; + hourlyVolumeUSD_not_startsWith?: InputMaybe; + hourlyVolumeUSD_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + reserve0_contains?: InputMaybe; + reserve0_containsInsensitive?: InputMaybe; + reserve0_endsWith?: InputMaybe; + reserve0_eq?: InputMaybe; + reserve0_gt?: InputMaybe; + reserve0_gte?: InputMaybe; + reserve0_in?: InputMaybe>; + reserve0_isNull?: InputMaybe; + reserve0_lt?: InputMaybe; + reserve0_lte?: InputMaybe; + reserve0_not_contains?: InputMaybe; + reserve0_not_containsInsensitive?: InputMaybe; + reserve0_not_endsWith?: InputMaybe; + reserve0_not_eq?: InputMaybe; + reserve0_not_in?: InputMaybe>; + reserve0_not_startsWith?: InputMaybe; + reserve0_startsWith?: InputMaybe; + reserve1_contains?: InputMaybe; + reserve1_containsInsensitive?: InputMaybe; + reserve1_endsWith?: InputMaybe; + reserve1_eq?: InputMaybe; + reserve1_gt?: InputMaybe; + reserve1_gte?: InputMaybe; + reserve1_in?: InputMaybe>; + reserve1_isNull?: InputMaybe; + reserve1_lt?: InputMaybe; + reserve1_lte?: InputMaybe; + reserve1_not_contains?: InputMaybe; + reserve1_not_containsInsensitive?: InputMaybe; + reserve1_not_endsWith?: InputMaybe; + reserve1_not_eq?: InputMaybe; + reserve1_not_in?: InputMaybe>; + reserve1_not_startsWith?: InputMaybe; + reserve1_startsWith?: InputMaybe; + reserveUSD_contains?: InputMaybe; + reserveUSD_containsInsensitive?: InputMaybe; + reserveUSD_endsWith?: InputMaybe; + reserveUSD_eq?: InputMaybe; + reserveUSD_gt?: InputMaybe; + reserveUSD_gte?: InputMaybe; + reserveUSD_in?: InputMaybe>; + reserveUSD_isNull?: InputMaybe; + reserveUSD_lt?: InputMaybe; + reserveUSD_lte?: InputMaybe; + reserveUSD_not_contains?: InputMaybe; + reserveUSD_not_containsInsensitive?: InputMaybe; + reserveUSD_not_endsWith?: InputMaybe; + reserveUSD_not_eq?: InputMaybe; + reserveUSD_not_in?: InputMaybe>; + reserveUSD_not_startsWith?: InputMaybe; + reserveUSD_startsWith?: InputMaybe; + totalSupply_contains?: InputMaybe; + totalSupply_containsInsensitive?: InputMaybe; + totalSupply_endsWith?: InputMaybe; + totalSupply_eq?: InputMaybe; + totalSupply_gt?: InputMaybe; + totalSupply_gte?: InputMaybe; + totalSupply_in?: InputMaybe>; + totalSupply_isNull?: InputMaybe; + totalSupply_lt?: InputMaybe; + totalSupply_lte?: InputMaybe; + totalSupply_not_contains?: InputMaybe; + totalSupply_not_containsInsensitive?: InputMaybe; + totalSupply_not_endsWith?: InputMaybe; + totalSupply_not_eq?: InputMaybe; + totalSupply_not_in?: InputMaybe>; + totalSupply_not_startsWith?: InputMaybe; + totalSupply_startsWith?: InputMaybe; +}; + +export enum PairOrderByInput { + CreatedAtBlockNumberAsc = 'createdAtBlockNumber_ASC', + CreatedAtBlockNumberDesc = 'createdAtBlockNumber_DESC', + CreatedAtTimestampAsc = 'createdAtTimestamp_ASC', + CreatedAtTimestampDesc = 'createdAtTimestamp_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityProviderCountAsc = 'liquidityProviderCount_ASC', + LiquidityProviderCountDesc = 'liquidityProviderCount_DESC', + Reserve0Asc = 'reserve0_ASC', + Reserve0Desc = 'reserve0_DESC', + Reserve1Asc = 'reserve1_ASC', + Reserve1Desc = 'reserve1_DESC', + ReserveEthAsc = 'reserveETH_ASC', + ReserveEthDesc = 'reserveETH_DESC', + ReserveUsdAsc = 'reserveUSD_ASC', + ReserveUsdDesc = 'reserveUSD_DESC', + Token0PriceAsc = 'token0Price_ASC', + Token0PriceDesc = 'token0Price_DESC', + Token0DecimalsAsc = 'token0_decimals_ASC', + Token0DecimalsDesc = 'token0_decimals_DESC', + Token0DerivedEthAsc = 'token0_derivedETH_ASC', + Token0DerivedEthDesc = 'token0_derivedETH_DESC', + Token0IdAsc = 'token0_id_ASC', + Token0IdDesc = 'token0_id_DESC', + Token0NameAsc = 'token0_name_ASC', + Token0NameDesc = 'token0_name_DESC', + Token0SymbolAsc = 'token0_symbol_ASC', + Token0SymbolDesc = 'token0_symbol_DESC', + Token0TotalLiquidityAsc = 'token0_totalLiquidity_ASC', + Token0TotalLiquidityDesc = 'token0_totalLiquidity_DESC', + Token0TotalSupplyAsc = 'token0_totalSupply_ASC', + Token0TotalSupplyDesc = 'token0_totalSupply_DESC', + Token0TradeVolumeUsdAsc = 'token0_tradeVolumeUSD_ASC', + Token0TradeVolumeUsdDesc = 'token0_tradeVolumeUSD_DESC', + Token0TradeVolumeAsc = 'token0_tradeVolume_ASC', + Token0TradeVolumeDesc = 'token0_tradeVolume_DESC', + Token0TxCountAsc = 'token0_txCount_ASC', + Token0TxCountDesc = 'token0_txCount_DESC', + Token0UntrackedVolumeUsdAsc = 'token0_untrackedVolumeUSD_ASC', + Token0UntrackedVolumeUsdDesc = 'token0_untrackedVolumeUSD_DESC', + Token1PriceAsc = 'token1Price_ASC', + Token1PriceDesc = 'token1Price_DESC', + Token1DecimalsAsc = 'token1_decimals_ASC', + Token1DecimalsDesc = 'token1_decimals_DESC', + Token1DerivedEthAsc = 'token1_derivedETH_ASC', + Token1DerivedEthDesc = 'token1_derivedETH_DESC', + Token1IdAsc = 'token1_id_ASC', + Token1IdDesc = 'token1_id_DESC', + Token1NameAsc = 'token1_name_ASC', + Token1NameDesc = 'token1_name_DESC', + Token1SymbolAsc = 'token1_symbol_ASC', + Token1SymbolDesc = 'token1_symbol_DESC', + Token1TotalLiquidityAsc = 'token1_totalLiquidity_ASC', + Token1TotalLiquidityDesc = 'token1_totalLiquidity_DESC', + Token1TotalSupplyAsc = 'token1_totalSupply_ASC', + Token1TotalSupplyDesc = 'token1_totalSupply_DESC', + Token1TradeVolumeUsdAsc = 'token1_tradeVolumeUSD_ASC', + Token1TradeVolumeUsdDesc = 'token1_tradeVolumeUSD_DESC', + Token1TradeVolumeAsc = 'token1_tradeVolume_ASC', + Token1TradeVolumeDesc = 'token1_tradeVolume_DESC', + Token1TxCountAsc = 'token1_txCount_ASC', + Token1TxCountDesc = 'token1_txCount_DESC', + Token1UntrackedVolumeUsdAsc = 'token1_untrackedVolumeUSD_ASC', + Token1UntrackedVolumeUsdDesc = 'token1_untrackedVolumeUSD_DESC', + TotalSupplyAsc = 'totalSupply_ASC', + TotalSupplyDesc = 'totalSupply_DESC', + TrackedReserveEthAsc = 'trackedReserveETH_ASC', + TrackedReserveEthDesc = 'trackedReserveETH_DESC', + TxCountAsc = 'txCount_ASC', + TxCountDesc = 'txCount_DESC', + UntrackedVolumeUsdAsc = 'untrackedVolumeUSD_ASC', + UntrackedVolumeUsdDesc = 'untrackedVolumeUSD_DESC', + VolumeToken0Asc = 'volumeToken0_ASC', + VolumeToken0Desc = 'volumeToken0_DESC', + VolumeToken1Asc = 'volumeToken1_ASC', + VolumeToken1Desc = 'volumeToken1_DESC', + VolumeUsdAsc = 'volumeUSD_ASC', + VolumeUsdDesc = 'volumeUSD_DESC' +} + +export type PairWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + burns_every?: InputMaybe; + burns_none?: InputMaybe; + burns_some?: InputMaybe; + createdAtBlockNumber_eq?: InputMaybe; + createdAtBlockNumber_gt?: InputMaybe; + createdAtBlockNumber_gte?: InputMaybe; + createdAtBlockNumber_in?: InputMaybe>; + createdAtBlockNumber_isNull?: InputMaybe; + createdAtBlockNumber_lt?: InputMaybe; + createdAtBlockNumber_lte?: InputMaybe; + createdAtBlockNumber_not_eq?: InputMaybe; + createdAtBlockNumber_not_in?: InputMaybe>; + createdAtTimestamp_eq?: InputMaybe; + createdAtTimestamp_gt?: InputMaybe; + createdAtTimestamp_gte?: InputMaybe; + createdAtTimestamp_in?: InputMaybe>; + createdAtTimestamp_isNull?: InputMaybe; + createdAtTimestamp_lt?: InputMaybe; + createdAtTimestamp_lte?: InputMaybe; + createdAtTimestamp_not_eq?: InputMaybe; + createdAtTimestamp_not_in?: InputMaybe>; + farm_every?: InputMaybe; + farm_none?: InputMaybe; + farm_some?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidityPositionSnapshots_every?: InputMaybe; + liquidityPositionSnapshots_none?: InputMaybe; + liquidityPositionSnapshots_some?: InputMaybe; + liquidityPositions_every?: InputMaybe; + liquidityPositions_none?: InputMaybe; + liquidityPositions_some?: InputMaybe; + liquidityProviderCount_eq?: InputMaybe; + liquidityProviderCount_gt?: InputMaybe; + liquidityProviderCount_gte?: InputMaybe; + liquidityProviderCount_in?: InputMaybe>; + liquidityProviderCount_isNull?: InputMaybe; + liquidityProviderCount_lt?: InputMaybe; + liquidityProviderCount_lte?: InputMaybe; + liquidityProviderCount_not_eq?: InputMaybe; + liquidityProviderCount_not_in?: InputMaybe>; + mints_every?: InputMaybe; + mints_none?: InputMaybe; + mints_some?: InputMaybe; + pairDayData_every?: InputMaybe; + pairDayData_none?: InputMaybe; + pairDayData_some?: InputMaybe; + pairHourData_every?: InputMaybe; + pairHourData_none?: InputMaybe; + pairHourData_some?: InputMaybe; + reserve0_contains?: InputMaybe; + reserve0_containsInsensitive?: InputMaybe; + reserve0_endsWith?: InputMaybe; + reserve0_eq?: InputMaybe; + reserve0_gt?: InputMaybe; + reserve0_gte?: InputMaybe; + reserve0_in?: InputMaybe>; + reserve0_isNull?: InputMaybe; + reserve0_lt?: InputMaybe; + reserve0_lte?: InputMaybe; + reserve0_not_contains?: InputMaybe; + reserve0_not_containsInsensitive?: InputMaybe; + reserve0_not_endsWith?: InputMaybe; + reserve0_not_eq?: InputMaybe; + reserve0_not_in?: InputMaybe>; + reserve0_not_startsWith?: InputMaybe; + reserve0_startsWith?: InputMaybe; + reserve1_contains?: InputMaybe; + reserve1_containsInsensitive?: InputMaybe; + reserve1_endsWith?: InputMaybe; + reserve1_eq?: InputMaybe; + reserve1_gt?: InputMaybe; + reserve1_gte?: InputMaybe; + reserve1_in?: InputMaybe>; + reserve1_isNull?: InputMaybe; + reserve1_lt?: InputMaybe; + reserve1_lte?: InputMaybe; + reserve1_not_contains?: InputMaybe; + reserve1_not_containsInsensitive?: InputMaybe; + reserve1_not_endsWith?: InputMaybe; + reserve1_not_eq?: InputMaybe; + reserve1_not_in?: InputMaybe>; + reserve1_not_startsWith?: InputMaybe; + reserve1_startsWith?: InputMaybe; + reserveETH_contains?: InputMaybe; + reserveETH_containsInsensitive?: InputMaybe; + reserveETH_endsWith?: InputMaybe; + reserveETH_eq?: InputMaybe; + reserveETH_gt?: InputMaybe; + reserveETH_gte?: InputMaybe; + reserveETH_in?: InputMaybe>; + reserveETH_isNull?: InputMaybe; + reserveETH_lt?: InputMaybe; + reserveETH_lte?: InputMaybe; + reserveETH_not_contains?: InputMaybe; + reserveETH_not_containsInsensitive?: InputMaybe; + reserveETH_not_endsWith?: InputMaybe; + reserveETH_not_eq?: InputMaybe; + reserveETH_not_in?: InputMaybe>; + reserveETH_not_startsWith?: InputMaybe; + reserveETH_startsWith?: InputMaybe; + reserveUSD_contains?: InputMaybe; + reserveUSD_containsInsensitive?: InputMaybe; + reserveUSD_endsWith?: InputMaybe; + reserveUSD_eq?: InputMaybe; + reserveUSD_gt?: InputMaybe; + reserveUSD_gte?: InputMaybe; + reserveUSD_in?: InputMaybe>; + reserveUSD_isNull?: InputMaybe; + reserveUSD_lt?: InputMaybe; + reserveUSD_lte?: InputMaybe; + reserveUSD_not_contains?: InputMaybe; + reserveUSD_not_containsInsensitive?: InputMaybe; + reserveUSD_not_endsWith?: InputMaybe; + reserveUSD_not_eq?: InputMaybe; + reserveUSD_not_in?: InputMaybe>; + reserveUSD_not_startsWith?: InputMaybe; + reserveUSD_startsWith?: InputMaybe; + swaps_every?: InputMaybe; + swaps_none?: InputMaybe; + swaps_some?: InputMaybe; + token0?: InputMaybe; + token0Price_contains?: InputMaybe; + token0Price_containsInsensitive?: InputMaybe; + token0Price_endsWith?: InputMaybe; + token0Price_eq?: InputMaybe; + token0Price_gt?: InputMaybe; + token0Price_gte?: InputMaybe; + token0Price_in?: InputMaybe>; + token0Price_isNull?: InputMaybe; + token0Price_lt?: InputMaybe; + token0Price_lte?: InputMaybe; + token0Price_not_contains?: InputMaybe; + token0Price_not_containsInsensitive?: InputMaybe; + token0Price_not_endsWith?: InputMaybe; + token0Price_not_eq?: InputMaybe; + token0Price_not_in?: InputMaybe>; + token0Price_not_startsWith?: InputMaybe; + token0Price_startsWith?: InputMaybe; + token0_isNull?: InputMaybe; + token1?: InputMaybe; + token1Price_contains?: InputMaybe; + token1Price_containsInsensitive?: InputMaybe; + token1Price_endsWith?: InputMaybe; + token1Price_eq?: InputMaybe; + token1Price_gt?: InputMaybe; + token1Price_gte?: InputMaybe; + token1Price_in?: InputMaybe>; + token1Price_isNull?: InputMaybe; + token1Price_lt?: InputMaybe; + token1Price_lte?: InputMaybe; + token1Price_not_contains?: InputMaybe; + token1Price_not_containsInsensitive?: InputMaybe; + token1Price_not_endsWith?: InputMaybe; + token1Price_not_eq?: InputMaybe; + token1Price_not_in?: InputMaybe>; + token1Price_not_startsWith?: InputMaybe; + token1Price_startsWith?: InputMaybe; + token1_isNull?: InputMaybe; + totalSupply_contains?: InputMaybe; + totalSupply_containsInsensitive?: InputMaybe; + totalSupply_endsWith?: InputMaybe; + totalSupply_eq?: InputMaybe; + totalSupply_gt?: InputMaybe; + totalSupply_gte?: InputMaybe; + totalSupply_in?: InputMaybe>; + totalSupply_isNull?: InputMaybe; + totalSupply_lt?: InputMaybe; + totalSupply_lte?: InputMaybe; + totalSupply_not_contains?: InputMaybe; + totalSupply_not_containsInsensitive?: InputMaybe; + totalSupply_not_endsWith?: InputMaybe; + totalSupply_not_eq?: InputMaybe; + totalSupply_not_in?: InputMaybe>; + totalSupply_not_startsWith?: InputMaybe; + totalSupply_startsWith?: InputMaybe; + trackedReserveETH_contains?: InputMaybe; + trackedReserveETH_containsInsensitive?: InputMaybe; + trackedReserveETH_endsWith?: InputMaybe; + trackedReserveETH_eq?: InputMaybe; + trackedReserveETH_gt?: InputMaybe; + trackedReserveETH_gte?: InputMaybe; + trackedReserveETH_in?: InputMaybe>; + trackedReserveETH_isNull?: InputMaybe; + trackedReserveETH_lt?: InputMaybe; + trackedReserveETH_lte?: InputMaybe; + trackedReserveETH_not_contains?: InputMaybe; + trackedReserveETH_not_containsInsensitive?: InputMaybe; + trackedReserveETH_not_endsWith?: InputMaybe; + trackedReserveETH_not_eq?: InputMaybe; + trackedReserveETH_not_in?: InputMaybe>; + trackedReserveETH_not_startsWith?: InputMaybe; + trackedReserveETH_startsWith?: InputMaybe; + txCount_eq?: InputMaybe; + txCount_gt?: InputMaybe; + txCount_gte?: InputMaybe; + txCount_in?: InputMaybe>; + txCount_isNull?: InputMaybe; + txCount_lt?: InputMaybe; + txCount_lte?: InputMaybe; + txCount_not_eq?: InputMaybe; + txCount_not_in?: InputMaybe>; + untrackedVolumeUSD_contains?: InputMaybe; + untrackedVolumeUSD_containsInsensitive?: InputMaybe; + untrackedVolumeUSD_endsWith?: InputMaybe; + untrackedVolumeUSD_eq?: InputMaybe; + untrackedVolumeUSD_gt?: InputMaybe; + untrackedVolumeUSD_gte?: InputMaybe; + untrackedVolumeUSD_in?: InputMaybe>; + untrackedVolumeUSD_isNull?: InputMaybe; + untrackedVolumeUSD_lt?: InputMaybe; + untrackedVolumeUSD_lte?: InputMaybe; + untrackedVolumeUSD_not_contains?: InputMaybe; + untrackedVolumeUSD_not_containsInsensitive?: InputMaybe; + untrackedVolumeUSD_not_endsWith?: InputMaybe; + untrackedVolumeUSD_not_eq?: InputMaybe; + untrackedVolumeUSD_not_in?: InputMaybe>; + untrackedVolumeUSD_not_startsWith?: InputMaybe; + untrackedVolumeUSD_startsWith?: InputMaybe; + volumeToken0_contains?: InputMaybe; + volumeToken0_containsInsensitive?: InputMaybe; + volumeToken0_endsWith?: InputMaybe; + volumeToken0_eq?: InputMaybe; + volumeToken0_gt?: InputMaybe; + volumeToken0_gte?: InputMaybe; + volumeToken0_in?: InputMaybe>; + volumeToken0_isNull?: InputMaybe; + volumeToken0_lt?: InputMaybe; + volumeToken0_lte?: InputMaybe; + volumeToken0_not_contains?: InputMaybe; + volumeToken0_not_containsInsensitive?: InputMaybe; + volumeToken0_not_endsWith?: InputMaybe; + volumeToken0_not_eq?: InputMaybe; + volumeToken0_not_in?: InputMaybe>; + volumeToken0_not_startsWith?: InputMaybe; + volumeToken0_startsWith?: InputMaybe; + volumeToken1_contains?: InputMaybe; + volumeToken1_containsInsensitive?: InputMaybe; + volumeToken1_endsWith?: InputMaybe; + volumeToken1_eq?: InputMaybe; + volumeToken1_gt?: InputMaybe; + volumeToken1_gte?: InputMaybe; + volumeToken1_in?: InputMaybe>; + volumeToken1_isNull?: InputMaybe; + volumeToken1_lt?: InputMaybe; + volumeToken1_lte?: InputMaybe; + volumeToken1_not_contains?: InputMaybe; + volumeToken1_not_containsInsensitive?: InputMaybe; + volumeToken1_not_endsWith?: InputMaybe; + volumeToken1_not_eq?: InputMaybe; + volumeToken1_not_in?: InputMaybe>; + volumeToken1_not_startsWith?: InputMaybe; + volumeToken1_startsWith?: InputMaybe; + volumeUSD_contains?: InputMaybe; + volumeUSD_containsInsensitive?: InputMaybe; + volumeUSD_endsWith?: InputMaybe; + volumeUSD_eq?: InputMaybe; + volumeUSD_gt?: InputMaybe; + volumeUSD_gte?: InputMaybe; + volumeUSD_in?: InputMaybe>; + volumeUSD_isNull?: InputMaybe; + volumeUSD_lt?: InputMaybe; + volumeUSD_lte?: InputMaybe; + volumeUSD_not_contains?: InputMaybe; + volumeUSD_not_containsInsensitive?: InputMaybe; + volumeUSD_not_endsWith?: InputMaybe; + volumeUSD_not_eq?: InputMaybe; + volumeUSD_not_in?: InputMaybe>; + volumeUSD_not_startsWith?: InputMaybe; + volumeUSD_startsWith?: InputMaybe; +}; + +export type PairsConnection = { + __typename?: 'PairsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Query = { + __typename?: 'Query'; + backstopPoolById?: Maybe; + /** @deprecated Use backstopPoolById */ + backstopPoolByUniqueInput?: Maybe; + backstopPools: Array; + backstopPoolsConnection: BackstopPoolsConnection; + bundleById?: Maybe; + /** @deprecated Use bundleById */ + bundleByUniqueInput?: Maybe; + bundles: Array; + bundlesConnection: BundlesConnection; + burnById?: Maybe; + /** @deprecated Use burnById */ + burnByUniqueInput?: Maybe; + burns: Array; + burnsConnection: BurnsConnection; + factories: Array; + factoriesConnection: FactoriesConnection; + factoryById?: Maybe; + /** @deprecated Use factoryById */ + factoryByUniqueInput?: Maybe; + factoryDayData: Array; + factoryDayDataById?: Maybe; + /** @deprecated Use factoryDayDataById */ + factoryDayDataByUniqueInput?: Maybe; + factoryDayDataConnection: FactoryDayDataConnection; + farmById?: Maybe; + /** @deprecated Use farmById */ + farmByUniqueInput?: Maybe; + farms: Array; + farmsConnection: FarmsConnection; + incentiveById?: Maybe; + /** @deprecated Use incentiveById */ + incentiveByUniqueInput?: Maybe; + incentives: Array; + incentivesConnection: IncentivesConnection; + liquidityPositionById?: Maybe; + /** @deprecated Use liquidityPositionById */ + liquidityPositionByUniqueInput?: Maybe; + liquidityPositionSnapshotById?: Maybe; + /** @deprecated Use liquidityPositionSnapshotById */ + liquidityPositionSnapshotByUniqueInput?: Maybe; + liquidityPositionSnapshots: Array; + liquidityPositionSnapshotsConnection: LiquidityPositionSnapshotsConnection; + liquidityPositions: Array; + liquidityPositionsConnection: LiquidityPositionsConnection; + mintById?: Maybe; + /** @deprecated Use mintById */ + mintByUniqueInput?: Maybe; + mints: Array; + mintsConnection: MintsConnection; + nablaTokenById?: Maybe; + /** @deprecated Use nablaTokenById */ + nablaTokenByUniqueInput?: Maybe; + nablaTokens: Array; + nablaTokensConnection: NablaTokensConnection; + oraclePriceById?: Maybe; + /** @deprecated Use oraclePriceById */ + oraclePriceByUniqueInput?: Maybe; + oraclePrices: Array; + oraclePricesConnection: OraclePricesConnection; + pairById?: Maybe; + /** @deprecated Use pairById */ + pairByUniqueInput?: Maybe; + pairDayData: Array; + pairDayDataById?: Maybe; + /** @deprecated Use pairDayDataById */ + pairDayDataByUniqueInput?: Maybe; + pairDayDataConnection: PairDayDataConnection; + pairHourData: Array; + pairHourDataById?: Maybe; + /** @deprecated Use pairHourDataById */ + pairHourDataByUniqueInput?: Maybe; + pairHourDataConnection: PairHourDataConnection; + pairs: Array; + pairsConnection: PairsConnection; + routerById?: Maybe; + /** @deprecated Use routerById */ + routerByUniqueInput?: Maybe; + routers: Array; + routersConnection: RoutersConnection; + singleTokenLockById?: Maybe; + /** @deprecated Use singleTokenLockById */ + singleTokenLockByUniqueInput?: Maybe; + singleTokenLockDayData: Array; + singleTokenLockDayDataById?: Maybe; + /** @deprecated Use singleTokenLockDayDataById */ + singleTokenLockDayDataByUniqueInput?: Maybe; + singleTokenLockDayDataConnection: SingleTokenLockDayDataConnection; + singleTokenLockHourData: Array; + singleTokenLockHourDataById?: Maybe; + /** @deprecated Use singleTokenLockHourDataById */ + singleTokenLockHourDataByUniqueInput?: Maybe; + singleTokenLockHourDataConnection: SingleTokenLockHourDataConnection; + singleTokenLocks: Array; + singleTokenLocksConnection: SingleTokenLocksConnection; + squidStatus?: Maybe; + stableDayData: Array; + stableDayDataById?: Maybe; + /** @deprecated Use stableDayDataById */ + stableDayDataByUniqueInput?: Maybe; + stableDayDataConnection: StableDayDataConnection; + stableSwapById?: Maybe; + /** @deprecated Use stableSwapById */ + stableSwapByUniqueInput?: Maybe; + stableSwapDayData: Array; + stableSwapDayDataById?: Maybe; + /** @deprecated Use stableSwapDayDataById */ + stableSwapDayDataByUniqueInput?: Maybe; + stableSwapDayDataConnection: StableSwapDayDataConnection; + stableSwapEventById?: Maybe; + /** @deprecated Use stableSwapEventById */ + stableSwapEventByUniqueInput?: Maybe; + stableSwapEvents: Array; + stableSwapEventsConnection: StableSwapEventsConnection; + stableSwapExchangeById?: Maybe; + /** @deprecated Use stableSwapExchangeById */ + stableSwapExchangeByUniqueInput?: Maybe; + stableSwapExchanges: Array; + stableSwapExchangesConnection: StableSwapExchangesConnection; + stableSwapHourData: Array; + stableSwapHourDataById?: Maybe; + /** @deprecated Use stableSwapHourDataById */ + stableSwapHourDataByUniqueInput?: Maybe; + stableSwapHourDataConnection: StableSwapHourDataConnection; + stableSwapInfoById?: Maybe; + /** @deprecated Use stableSwapInfoById */ + stableSwapInfoByUniqueInput?: Maybe; + stableSwapInfos: Array; + stableSwapInfosConnection: StableSwapInfosConnection; + stableSwapLiquidityPositionById?: Maybe; + /** @deprecated Use stableSwapLiquidityPositionById */ + stableSwapLiquidityPositionByUniqueInput?: Maybe; + stableSwapLiquidityPositions: Array; + stableSwapLiquidityPositionsConnection: StableSwapLiquidityPositionsConnection; + stableSwaps: Array; + stableSwapsConnection: StableSwapsConnection; + stakePositionById?: Maybe; + /** @deprecated Use stakePositionById */ + stakePositionByUniqueInput?: Maybe; + stakePositions: Array; + stakePositionsConnection: StakePositionsConnection; + swapById?: Maybe; + /** @deprecated Use swapById */ + swapByUniqueInput?: Maybe; + swapPoolById?: Maybe; + /** @deprecated Use swapPoolById */ + swapPoolByUniqueInput?: Maybe; + swapPools: Array; + swapPoolsConnection: SwapPoolsConnection; + swaps: Array; + swapsConnection: SwapsConnection; + tokenById?: Maybe; + /** @deprecated Use tokenById */ + tokenByUniqueInput?: Maybe; + tokenDayData: Array; + tokenDayDataById?: Maybe; + /** @deprecated Use tokenDayDataById */ + tokenDayDataByUniqueInput?: Maybe; + tokenDayDataConnection: TokenDayDataConnection; + tokens: Array; + tokensConnection: TokensConnection; + transactionById?: Maybe; + /** @deprecated Use transactionById */ + transactionByUniqueInput?: Maybe; + transactions: Array; + transactionsConnection: TransactionsConnection; + transferById?: Maybe; + /** @deprecated Use transferById */ + transferByUniqueInput?: Maybe; + transfers: Array; + transfersConnection: TransfersConnection; + userById?: Maybe; + /** @deprecated Use userById */ + userByUniqueInput?: Maybe; + users: Array; + usersConnection: UsersConnection; + zenlinkDayInfoById?: Maybe; + /** @deprecated Use zenlinkDayInfoById */ + zenlinkDayInfoByUniqueInput?: Maybe; + zenlinkDayInfos: Array; + zenlinkDayInfosConnection: ZenlinkDayInfosConnection; + zenlinkInfoById?: Maybe; + /** @deprecated Use zenlinkInfoById */ + zenlinkInfoByUniqueInput?: Maybe; + zenlinkInfos: Array; + zenlinkInfosConnection: ZenlinkInfosConnection; + zlkInfoById?: Maybe; + /** @deprecated Use zlkInfoById */ + zlkInfoByUniqueInput?: Maybe; + zlkInfos: Array; + zlkInfosConnection: ZlkInfosConnection; +}; + + +export type QueryBackstopPoolByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryBackstopPoolByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryBackstopPoolsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryBackstopPoolsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryBundleByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryBundleByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryBundlesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryBundlesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryBurnByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryBurnByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryBurnsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryBurnsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryFactoriesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryFactoriesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryFactoryByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryFactoryByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryFactoryDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryFactoryDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryFactoryDayDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryFactoryDayDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryFarmByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryFarmByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryFarmsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryFarmsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryIncentiveByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryIncentiveByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryIncentivesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryIncentivesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryLiquidityPositionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryLiquidityPositionByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryLiquidityPositionSnapshotByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryLiquidityPositionSnapshotByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryLiquidityPositionSnapshotsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryLiquidityPositionSnapshotsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryLiquidityPositionsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryMintByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryMintByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryMintsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryMintsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryNablaTokenByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryNablaTokenByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryNablaTokensArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryNablaTokensConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryOraclePriceByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryOraclePriceByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryOraclePricesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryOraclePricesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryPairByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryPairByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryPairDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryPairDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryPairDayDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryPairDayDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryPairHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryPairHourDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryPairHourDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryPairHourDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryPairsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryPairsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryRouterByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryRouterByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryRoutersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryRoutersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QuerySingleTokenLockByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QuerySingleTokenLockByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QuerySingleTokenLockDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QuerySingleTokenLockDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QuerySingleTokenLockDayDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QuerySingleTokenLockDayDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QuerySingleTokenLockHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QuerySingleTokenLockHourDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QuerySingleTokenLockHourDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QuerySingleTokenLockHourDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QuerySingleTokenLocksArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QuerySingleTokenLocksConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableDayDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableDayDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapDayDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapDayDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapEventByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapEventByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapEventsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapEventsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapExchangeByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapExchangeByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapExchangesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapExchangesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapHourDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapHourDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapHourDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapInfoByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapInfosConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapLiquidityPositionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStableSwapLiquidityPositionByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStableSwapLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapLiquidityPositionsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStableSwapsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStableSwapsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryStakePositionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryStakePositionByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryStakePositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryStakePositionsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QuerySwapByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QuerySwapByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QuerySwapPoolByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QuerySwapPoolByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QuerySwapPoolsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QuerySwapPoolsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QuerySwapsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QuerySwapsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryTokenByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTokenByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTokenDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTokenDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTokenDayDataByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTokenDayDataConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryTokensArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTokensConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryTransactionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTransactionByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTransactionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTransactionsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryTransferByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTransferByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTransfersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryUserByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryUserByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryUsersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryUsersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryZenlinkDayInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryZenlinkDayInfoByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryZenlinkDayInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryZenlinkDayInfosConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryZenlinkInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryZenlinkInfoByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryZenlinkInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryZenlinkInfosConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryZlkInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryZlkInfoByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryZlkInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryZlkInfosConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type Router = { + __typename?: 'Router'; + backstopPools: Array; + id: Scalars['String']['output']; + paused: Scalars['Boolean']['output']; + swapPools: Array; +}; + + +export type RouterBackstopPoolsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type RouterSwapPoolsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type RouterEdge = { + __typename?: 'RouterEdge'; + cursor: Scalars['String']['output']; + node: Router; +}; + +export enum RouterOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + PausedAsc = 'paused_ASC', + PausedDesc = 'paused_DESC' +} + +export type RouterWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + backstopPools_every?: InputMaybe; + backstopPools_none?: InputMaybe; + backstopPools_some?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + paused_eq?: InputMaybe; + paused_isNull?: InputMaybe; + paused_not_eq?: InputMaybe; + swapPools_every?: InputMaybe; + swapPools_none?: InputMaybe; + swapPools_some?: InputMaybe; +}; + +export type RoutersConnection = { + __typename?: 'RoutersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SingleTokenLock = { + __typename?: 'SingleTokenLock'; + farm: Array; + id: Scalars['String']['output']; + singleTokenLockDayData: Array; + singleTokenLockHourData: Array; + token: Token; + /** BigDecimal */ + totalLiquidity: Scalars['String']['output']; + totalLiquidityETH: Scalars['String']['output']; + /** BigDecimal */ + totalLiquidityUSD: Scalars['String']['output']; +}; + + +export type SingleTokenLockFarmArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SingleTokenLockSingleTokenLockDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SingleTokenLockSingleTokenLockHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type SingleTokenLockDayData = { + __typename?: 'SingleTokenLockDayData'; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + singleTokenLock: SingleTokenLock; + totalLiquidity: Scalars['String']['output']; + totalLiquidityETH: Scalars['String']['output']; + totalLiquidityUSD: Scalars['String']['output']; +}; + +export type SingleTokenLockDayDataConnection = { + __typename?: 'SingleTokenLockDayDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SingleTokenLockDayDataEdge = { + __typename?: 'SingleTokenLockDayDataEdge'; + cursor: Scalars['String']['output']; + node: SingleTokenLockDayData; +}; + +export enum SingleTokenLockDayDataOrderByInput { + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + SingleTokenLockIdAsc = 'singleTokenLock_id_ASC', + SingleTokenLockIdDesc = 'singleTokenLock_id_DESC', + SingleTokenLockTotalLiquidityEthAsc = 'singleTokenLock_totalLiquidityETH_ASC', + SingleTokenLockTotalLiquidityEthDesc = 'singleTokenLock_totalLiquidityETH_DESC', + SingleTokenLockTotalLiquidityUsdAsc = 'singleTokenLock_totalLiquidityUSD_ASC', + SingleTokenLockTotalLiquidityUsdDesc = 'singleTokenLock_totalLiquidityUSD_DESC', + SingleTokenLockTotalLiquidityAsc = 'singleTokenLock_totalLiquidity_ASC', + SingleTokenLockTotalLiquidityDesc = 'singleTokenLock_totalLiquidity_DESC', + TotalLiquidityEthAsc = 'totalLiquidityETH_ASC', + TotalLiquidityEthDesc = 'totalLiquidityETH_DESC', + TotalLiquidityUsdAsc = 'totalLiquidityUSD_ASC', + TotalLiquidityUsdDesc = 'totalLiquidityUSD_DESC', + TotalLiquidityAsc = 'totalLiquidity_ASC', + TotalLiquidityDesc = 'totalLiquidity_DESC' +} + +export type SingleTokenLockDayDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + singleTokenLock?: InputMaybe; + singleTokenLock_isNull?: InputMaybe; + totalLiquidityETH_contains?: InputMaybe; + totalLiquidityETH_containsInsensitive?: InputMaybe; + totalLiquidityETH_endsWith?: InputMaybe; + totalLiquidityETH_eq?: InputMaybe; + totalLiquidityETH_gt?: InputMaybe; + totalLiquidityETH_gte?: InputMaybe; + totalLiquidityETH_in?: InputMaybe>; + totalLiquidityETH_isNull?: InputMaybe; + totalLiquidityETH_lt?: InputMaybe; + totalLiquidityETH_lte?: InputMaybe; + totalLiquidityETH_not_contains?: InputMaybe; + totalLiquidityETH_not_containsInsensitive?: InputMaybe; + totalLiquidityETH_not_endsWith?: InputMaybe; + totalLiquidityETH_not_eq?: InputMaybe; + totalLiquidityETH_not_in?: InputMaybe>; + totalLiquidityETH_not_startsWith?: InputMaybe; + totalLiquidityETH_startsWith?: InputMaybe; + totalLiquidityUSD_contains?: InputMaybe; + totalLiquidityUSD_containsInsensitive?: InputMaybe; + totalLiquidityUSD_endsWith?: InputMaybe; + totalLiquidityUSD_eq?: InputMaybe; + totalLiquidityUSD_gt?: InputMaybe; + totalLiquidityUSD_gte?: InputMaybe; + totalLiquidityUSD_in?: InputMaybe>; + totalLiquidityUSD_isNull?: InputMaybe; + totalLiquidityUSD_lt?: InputMaybe; + totalLiquidityUSD_lte?: InputMaybe; + totalLiquidityUSD_not_contains?: InputMaybe; + totalLiquidityUSD_not_containsInsensitive?: InputMaybe; + totalLiquidityUSD_not_endsWith?: InputMaybe; + totalLiquidityUSD_not_eq?: InputMaybe; + totalLiquidityUSD_not_in?: InputMaybe>; + totalLiquidityUSD_not_startsWith?: InputMaybe; + totalLiquidityUSD_startsWith?: InputMaybe; + totalLiquidity_contains?: InputMaybe; + totalLiquidity_containsInsensitive?: InputMaybe; + totalLiquidity_endsWith?: InputMaybe; + totalLiquidity_eq?: InputMaybe; + totalLiquidity_gt?: InputMaybe; + totalLiquidity_gte?: InputMaybe; + totalLiquidity_in?: InputMaybe>; + totalLiquidity_isNull?: InputMaybe; + totalLiquidity_lt?: InputMaybe; + totalLiquidity_lte?: InputMaybe; + totalLiquidity_not_contains?: InputMaybe; + totalLiquidity_not_containsInsensitive?: InputMaybe; + totalLiquidity_not_endsWith?: InputMaybe; + totalLiquidity_not_eq?: InputMaybe; + totalLiquidity_not_in?: InputMaybe>; + totalLiquidity_not_startsWith?: InputMaybe; + totalLiquidity_startsWith?: InputMaybe; +}; + +export type SingleTokenLockEdge = { + __typename?: 'SingleTokenLockEdge'; + cursor: Scalars['String']['output']; + node: SingleTokenLock; +}; + +export type SingleTokenLockHourData = { + __typename?: 'SingleTokenLockHourData'; + hourStartUnix: Scalars['BigInt']['output']; + id: Scalars['String']['output']; + singleTokenLock: SingleTokenLock; + totalLiquidity: Scalars['String']['output']; + totalLiquidityETH: Scalars['String']['output']; + totalLiquidityUSD: Scalars['String']['output']; +}; + +export type SingleTokenLockHourDataConnection = { + __typename?: 'SingleTokenLockHourDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SingleTokenLockHourDataEdge = { + __typename?: 'SingleTokenLockHourDataEdge'; + cursor: Scalars['String']['output']; + node: SingleTokenLockHourData; +}; + +export enum SingleTokenLockHourDataOrderByInput { + HourStartUnixAsc = 'hourStartUnix_ASC', + HourStartUnixDesc = 'hourStartUnix_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + SingleTokenLockIdAsc = 'singleTokenLock_id_ASC', + SingleTokenLockIdDesc = 'singleTokenLock_id_DESC', + SingleTokenLockTotalLiquidityEthAsc = 'singleTokenLock_totalLiquidityETH_ASC', + SingleTokenLockTotalLiquidityEthDesc = 'singleTokenLock_totalLiquidityETH_DESC', + SingleTokenLockTotalLiquidityUsdAsc = 'singleTokenLock_totalLiquidityUSD_ASC', + SingleTokenLockTotalLiquidityUsdDesc = 'singleTokenLock_totalLiquidityUSD_DESC', + SingleTokenLockTotalLiquidityAsc = 'singleTokenLock_totalLiquidity_ASC', + SingleTokenLockTotalLiquidityDesc = 'singleTokenLock_totalLiquidity_DESC', + TotalLiquidityEthAsc = 'totalLiquidityETH_ASC', + TotalLiquidityEthDesc = 'totalLiquidityETH_DESC', + TotalLiquidityUsdAsc = 'totalLiquidityUSD_ASC', + TotalLiquidityUsdDesc = 'totalLiquidityUSD_DESC', + TotalLiquidityAsc = 'totalLiquidity_ASC', + TotalLiquidityDesc = 'totalLiquidity_DESC' +} + +export type SingleTokenLockHourDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + hourStartUnix_eq?: InputMaybe; + hourStartUnix_gt?: InputMaybe; + hourStartUnix_gte?: InputMaybe; + hourStartUnix_in?: InputMaybe>; + hourStartUnix_isNull?: InputMaybe; + hourStartUnix_lt?: InputMaybe; + hourStartUnix_lte?: InputMaybe; + hourStartUnix_not_eq?: InputMaybe; + hourStartUnix_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + singleTokenLock?: InputMaybe; + singleTokenLock_isNull?: InputMaybe; + totalLiquidityETH_contains?: InputMaybe; + totalLiquidityETH_containsInsensitive?: InputMaybe; + totalLiquidityETH_endsWith?: InputMaybe; + totalLiquidityETH_eq?: InputMaybe; + totalLiquidityETH_gt?: InputMaybe; + totalLiquidityETH_gte?: InputMaybe; + totalLiquidityETH_in?: InputMaybe>; + totalLiquidityETH_isNull?: InputMaybe; + totalLiquidityETH_lt?: InputMaybe; + totalLiquidityETH_lte?: InputMaybe; + totalLiquidityETH_not_contains?: InputMaybe; + totalLiquidityETH_not_containsInsensitive?: InputMaybe; + totalLiquidityETH_not_endsWith?: InputMaybe; + totalLiquidityETH_not_eq?: InputMaybe; + totalLiquidityETH_not_in?: InputMaybe>; + totalLiquidityETH_not_startsWith?: InputMaybe; + totalLiquidityETH_startsWith?: InputMaybe; + totalLiquidityUSD_contains?: InputMaybe; + totalLiquidityUSD_containsInsensitive?: InputMaybe; + totalLiquidityUSD_endsWith?: InputMaybe; + totalLiquidityUSD_eq?: InputMaybe; + totalLiquidityUSD_gt?: InputMaybe; + totalLiquidityUSD_gte?: InputMaybe; + totalLiquidityUSD_in?: InputMaybe>; + totalLiquidityUSD_isNull?: InputMaybe; + totalLiquidityUSD_lt?: InputMaybe; + totalLiquidityUSD_lte?: InputMaybe; + totalLiquidityUSD_not_contains?: InputMaybe; + totalLiquidityUSD_not_containsInsensitive?: InputMaybe; + totalLiquidityUSD_not_endsWith?: InputMaybe; + totalLiquidityUSD_not_eq?: InputMaybe; + totalLiquidityUSD_not_in?: InputMaybe>; + totalLiquidityUSD_not_startsWith?: InputMaybe; + totalLiquidityUSD_startsWith?: InputMaybe; + totalLiquidity_contains?: InputMaybe; + totalLiquidity_containsInsensitive?: InputMaybe; + totalLiquidity_endsWith?: InputMaybe; + totalLiquidity_eq?: InputMaybe; + totalLiquidity_gt?: InputMaybe; + totalLiquidity_gte?: InputMaybe; + totalLiquidity_in?: InputMaybe>; + totalLiquidity_isNull?: InputMaybe; + totalLiquidity_lt?: InputMaybe; + totalLiquidity_lte?: InputMaybe; + totalLiquidity_not_contains?: InputMaybe; + totalLiquidity_not_containsInsensitive?: InputMaybe; + totalLiquidity_not_endsWith?: InputMaybe; + totalLiquidity_not_eq?: InputMaybe; + totalLiquidity_not_in?: InputMaybe>; + totalLiquidity_not_startsWith?: InputMaybe; + totalLiquidity_startsWith?: InputMaybe; +}; + +export enum SingleTokenLockOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TokenDecimalsAsc = 'token_decimals_ASC', + TokenDecimalsDesc = 'token_decimals_DESC', + TokenDerivedEthAsc = 'token_derivedETH_ASC', + TokenDerivedEthDesc = 'token_derivedETH_DESC', + TokenIdAsc = 'token_id_ASC', + TokenIdDesc = 'token_id_DESC', + TokenNameAsc = 'token_name_ASC', + TokenNameDesc = 'token_name_DESC', + TokenSymbolAsc = 'token_symbol_ASC', + TokenSymbolDesc = 'token_symbol_DESC', + TokenTotalLiquidityAsc = 'token_totalLiquidity_ASC', + TokenTotalLiquidityDesc = 'token_totalLiquidity_DESC', + TokenTotalSupplyAsc = 'token_totalSupply_ASC', + TokenTotalSupplyDesc = 'token_totalSupply_DESC', + TokenTradeVolumeUsdAsc = 'token_tradeVolumeUSD_ASC', + TokenTradeVolumeUsdDesc = 'token_tradeVolumeUSD_DESC', + TokenTradeVolumeAsc = 'token_tradeVolume_ASC', + TokenTradeVolumeDesc = 'token_tradeVolume_DESC', + TokenTxCountAsc = 'token_txCount_ASC', + TokenTxCountDesc = 'token_txCount_DESC', + TokenUntrackedVolumeUsdAsc = 'token_untrackedVolumeUSD_ASC', + TokenUntrackedVolumeUsdDesc = 'token_untrackedVolumeUSD_DESC', + TotalLiquidityEthAsc = 'totalLiquidityETH_ASC', + TotalLiquidityEthDesc = 'totalLiquidityETH_DESC', + TotalLiquidityUsdAsc = 'totalLiquidityUSD_ASC', + TotalLiquidityUsdDesc = 'totalLiquidityUSD_DESC', + TotalLiquidityAsc = 'totalLiquidity_ASC', + TotalLiquidityDesc = 'totalLiquidity_DESC' +} + +export type SingleTokenLockWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + farm_every?: InputMaybe; + farm_none?: InputMaybe; + farm_some?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + singleTokenLockDayData_every?: InputMaybe; + singleTokenLockDayData_none?: InputMaybe; + singleTokenLockDayData_some?: InputMaybe; + singleTokenLockHourData_every?: InputMaybe; + singleTokenLockHourData_none?: InputMaybe; + singleTokenLockHourData_some?: InputMaybe; + token?: InputMaybe; + token_isNull?: InputMaybe; + totalLiquidityETH_contains?: InputMaybe; + totalLiquidityETH_containsInsensitive?: InputMaybe; + totalLiquidityETH_endsWith?: InputMaybe; + totalLiquidityETH_eq?: InputMaybe; + totalLiquidityETH_gt?: InputMaybe; + totalLiquidityETH_gte?: InputMaybe; + totalLiquidityETH_in?: InputMaybe>; + totalLiquidityETH_isNull?: InputMaybe; + totalLiquidityETH_lt?: InputMaybe; + totalLiquidityETH_lte?: InputMaybe; + totalLiquidityETH_not_contains?: InputMaybe; + totalLiquidityETH_not_containsInsensitive?: InputMaybe; + totalLiquidityETH_not_endsWith?: InputMaybe; + totalLiquidityETH_not_eq?: InputMaybe; + totalLiquidityETH_not_in?: InputMaybe>; + totalLiquidityETH_not_startsWith?: InputMaybe; + totalLiquidityETH_startsWith?: InputMaybe; + totalLiquidityUSD_contains?: InputMaybe; + totalLiquidityUSD_containsInsensitive?: InputMaybe; + totalLiquidityUSD_endsWith?: InputMaybe; + totalLiquidityUSD_eq?: InputMaybe; + totalLiquidityUSD_gt?: InputMaybe; + totalLiquidityUSD_gte?: InputMaybe; + totalLiquidityUSD_in?: InputMaybe>; + totalLiquidityUSD_isNull?: InputMaybe; + totalLiquidityUSD_lt?: InputMaybe; + totalLiquidityUSD_lte?: InputMaybe; + totalLiquidityUSD_not_contains?: InputMaybe; + totalLiquidityUSD_not_containsInsensitive?: InputMaybe; + totalLiquidityUSD_not_endsWith?: InputMaybe; + totalLiquidityUSD_not_eq?: InputMaybe; + totalLiquidityUSD_not_in?: InputMaybe>; + totalLiquidityUSD_not_startsWith?: InputMaybe; + totalLiquidityUSD_startsWith?: InputMaybe; + totalLiquidity_contains?: InputMaybe; + totalLiquidity_containsInsensitive?: InputMaybe; + totalLiquidity_endsWith?: InputMaybe; + totalLiquidity_eq?: InputMaybe; + totalLiquidity_gt?: InputMaybe; + totalLiquidity_gte?: InputMaybe; + totalLiquidity_in?: InputMaybe>; + totalLiquidity_isNull?: InputMaybe; + totalLiquidity_lt?: InputMaybe; + totalLiquidity_lte?: InputMaybe; + totalLiquidity_not_contains?: InputMaybe; + totalLiquidity_not_containsInsensitive?: InputMaybe; + totalLiquidity_not_endsWith?: InputMaybe; + totalLiquidity_not_eq?: InputMaybe; + totalLiquidity_not_in?: InputMaybe>; + totalLiquidity_not_startsWith?: InputMaybe; + totalLiquidity_startsWith?: InputMaybe; +}; + +export type SingleTokenLocksConnection = { + __typename?: 'SingleTokenLocksConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SquidStatus = { + __typename?: 'SquidStatus'; + /** The height of the processed part of the chain */ + height?: Maybe; +}; + +export type StableDayData = { + __typename?: 'StableDayData'; + dailyVolumeUSD: Scalars['String']['output']; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + tvlUSD: Scalars['String']['output']; +}; + +export type StableDayDataConnection = { + __typename?: 'StableDayDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableDayDataEdge = { + __typename?: 'StableDayDataEdge'; + cursor: Scalars['String']['output']; + node: StableDayData; +}; + +export enum StableDayDataOrderByInput { + DailyVolumeUsdAsc = 'dailyVolumeUSD_ASC', + DailyVolumeUsdDesc = 'dailyVolumeUSD_DESC', + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TvlUsdAsc = 'tvlUSD_ASC', + TvlUsdDesc = 'tvlUSD_DESC' +} + +export type StableDayDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + dailyVolumeUSD_contains?: InputMaybe; + dailyVolumeUSD_containsInsensitive?: InputMaybe; + dailyVolumeUSD_endsWith?: InputMaybe; + dailyVolumeUSD_eq?: InputMaybe; + dailyVolumeUSD_gt?: InputMaybe; + dailyVolumeUSD_gte?: InputMaybe; + dailyVolumeUSD_in?: InputMaybe>; + dailyVolumeUSD_isNull?: InputMaybe; + dailyVolumeUSD_lt?: InputMaybe; + dailyVolumeUSD_lte?: InputMaybe; + dailyVolumeUSD_not_contains?: InputMaybe; + dailyVolumeUSD_not_containsInsensitive?: InputMaybe; + dailyVolumeUSD_not_endsWith?: InputMaybe; + dailyVolumeUSD_not_eq?: InputMaybe; + dailyVolumeUSD_not_in?: InputMaybe>; + dailyVolumeUSD_not_startsWith?: InputMaybe; + dailyVolumeUSD_startsWith?: InputMaybe; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + tvlUSD_contains?: InputMaybe; + tvlUSD_containsInsensitive?: InputMaybe; + tvlUSD_endsWith?: InputMaybe; + tvlUSD_eq?: InputMaybe; + tvlUSD_gt?: InputMaybe; + tvlUSD_gte?: InputMaybe; + tvlUSD_in?: InputMaybe>; + tvlUSD_isNull?: InputMaybe; + tvlUSD_lt?: InputMaybe; + tvlUSD_lte?: InputMaybe; + tvlUSD_not_contains?: InputMaybe; + tvlUSD_not_containsInsensitive?: InputMaybe; + tvlUSD_not_endsWith?: InputMaybe; + tvlUSD_not_eq?: InputMaybe; + tvlUSD_not_in?: InputMaybe>; + tvlUSD_not_startsWith?: InputMaybe; + tvlUSD_startsWith?: InputMaybe; +}; + +export type StableSwap = { + __typename?: 'StableSwap'; + a: Scalars['BigInt']['output']; + address: Scalars['String']['output']; + adminFee: Scalars['BigInt']['output']; + allTokens: Array; + balances: Array; + baseSwapAddress: Scalars['String']['output']; + baseTokens: Array; + events: Array; + exchanges: Array; + farm: Array; + id: Scalars['String']['output']; + lpToken: Scalars['String']['output']; + lpTotalSupply: Scalars['String']['output']; + numTokens: Scalars['Int']['output']; + stableSwapDayData: Array; + stableSwapHourData: Array; + stableSwapInfo: StableSwapInfo; + swapFee: Scalars['BigInt']['output']; + tokens: Array; + /** BigDecimal */ + tvlUSD: Scalars['String']['output']; + virtualPrice: Scalars['BigInt']['output']; + /** BigDecimal */ + volumeUSD: Scalars['String']['output']; +}; + + +export type StableSwapEventsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type StableSwapExchangesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type StableSwapFarmArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type StableSwapStableSwapDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type StableSwapStableSwapHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type StableSwapAddLiquidityEventData = { + __typename?: 'StableSwapAddLiquidityEventData'; + fees: Array; + invariant?: Maybe; + lpTokenSupply: Scalars['BigInt']['output']; + provider: Scalars['Bytes']['output']; + tokenAmounts: Array; +}; + +export type StableSwapDayData = { + __typename?: 'StableSwapDayData'; + dailyVolumeUSD: Scalars['String']['output']; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + stableSwap: StableSwap; + tvlUSD: Scalars['String']['output']; +}; + +export type StableSwapDayDataConnection = { + __typename?: 'StableSwapDayDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableSwapDayDataEdge = { + __typename?: 'StableSwapDayDataEdge'; + cursor: Scalars['String']['output']; + node: StableSwapDayData; +}; + +export enum StableSwapDayDataOrderByInput { + DailyVolumeUsdAsc = 'dailyVolumeUSD_ASC', + DailyVolumeUsdDesc = 'dailyVolumeUSD_DESC', + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + StableSwapAAsc = 'stableSwap_a_ASC', + StableSwapADesc = 'stableSwap_a_DESC', + StableSwapAddressAsc = 'stableSwap_address_ASC', + StableSwapAddressDesc = 'stableSwap_address_DESC', + StableSwapAdminFeeAsc = 'stableSwap_adminFee_ASC', + StableSwapAdminFeeDesc = 'stableSwap_adminFee_DESC', + StableSwapBaseSwapAddressAsc = 'stableSwap_baseSwapAddress_ASC', + StableSwapBaseSwapAddressDesc = 'stableSwap_baseSwapAddress_DESC', + StableSwapIdAsc = 'stableSwap_id_ASC', + StableSwapIdDesc = 'stableSwap_id_DESC', + StableSwapLpTokenAsc = 'stableSwap_lpToken_ASC', + StableSwapLpTokenDesc = 'stableSwap_lpToken_DESC', + StableSwapLpTotalSupplyAsc = 'stableSwap_lpTotalSupply_ASC', + StableSwapLpTotalSupplyDesc = 'stableSwap_lpTotalSupply_DESC', + StableSwapNumTokensAsc = 'stableSwap_numTokens_ASC', + StableSwapNumTokensDesc = 'stableSwap_numTokens_DESC', + StableSwapSwapFeeAsc = 'stableSwap_swapFee_ASC', + StableSwapSwapFeeDesc = 'stableSwap_swapFee_DESC', + StableSwapTvlUsdAsc = 'stableSwap_tvlUSD_ASC', + StableSwapTvlUsdDesc = 'stableSwap_tvlUSD_DESC', + StableSwapVirtualPriceAsc = 'stableSwap_virtualPrice_ASC', + StableSwapVirtualPriceDesc = 'stableSwap_virtualPrice_DESC', + StableSwapVolumeUsdAsc = 'stableSwap_volumeUSD_ASC', + StableSwapVolumeUsdDesc = 'stableSwap_volumeUSD_DESC', + TvlUsdAsc = 'tvlUSD_ASC', + TvlUsdDesc = 'tvlUSD_DESC' +} + +export type StableSwapDayDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + dailyVolumeUSD_contains?: InputMaybe; + dailyVolumeUSD_containsInsensitive?: InputMaybe; + dailyVolumeUSD_endsWith?: InputMaybe; + dailyVolumeUSD_eq?: InputMaybe; + dailyVolumeUSD_gt?: InputMaybe; + dailyVolumeUSD_gte?: InputMaybe; + dailyVolumeUSD_in?: InputMaybe>; + dailyVolumeUSD_isNull?: InputMaybe; + dailyVolumeUSD_lt?: InputMaybe; + dailyVolumeUSD_lte?: InputMaybe; + dailyVolumeUSD_not_contains?: InputMaybe; + dailyVolumeUSD_not_containsInsensitive?: InputMaybe; + dailyVolumeUSD_not_endsWith?: InputMaybe; + dailyVolumeUSD_not_eq?: InputMaybe; + dailyVolumeUSD_not_in?: InputMaybe>; + dailyVolumeUSD_not_startsWith?: InputMaybe; + dailyVolumeUSD_startsWith?: InputMaybe; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stableSwap?: InputMaybe; + stableSwap_isNull?: InputMaybe; + tvlUSD_contains?: InputMaybe; + tvlUSD_containsInsensitive?: InputMaybe; + tvlUSD_endsWith?: InputMaybe; + tvlUSD_eq?: InputMaybe; + tvlUSD_gt?: InputMaybe; + tvlUSD_gte?: InputMaybe; + tvlUSD_in?: InputMaybe>; + tvlUSD_isNull?: InputMaybe; + tvlUSD_lt?: InputMaybe; + tvlUSD_lte?: InputMaybe; + tvlUSD_not_contains?: InputMaybe; + tvlUSD_not_containsInsensitive?: InputMaybe; + tvlUSD_not_endsWith?: InputMaybe; + tvlUSD_not_eq?: InputMaybe; + tvlUSD_not_in?: InputMaybe>; + tvlUSD_not_startsWith?: InputMaybe; + tvlUSD_startsWith?: InputMaybe; +}; + +export type StableSwapEdge = { + __typename?: 'StableSwapEdge'; + cursor: Scalars['String']['output']; + node: StableSwap; +}; + +export type StableSwapEvent = { + __typename?: 'StableSwapEvent'; + block: Scalars['BigInt']['output']; + data?: Maybe; + id: Scalars['String']['output']; + stableSwap: StableSwap; + timestamp: Scalars['BigInt']['output']; + transaction: Scalars['Bytes']['output']; +}; + +export type StableSwapEventData = StableSwapAddLiquidityEventData | StableSwapFlashLoanEventData | StableSwapNewFeeEventData | StableSwapRampAEventData | StableSwapRemoveLiquidityEventData | StableSwapStopRampAEventData; + +export type StableSwapEventDataWhereInput = { + adminFee_eq?: InputMaybe; + adminFee_gt?: InputMaybe; + adminFee_gte?: InputMaybe; + adminFee_in?: InputMaybe>; + adminFee_isNull?: InputMaybe; + adminFee_lt?: InputMaybe; + adminFee_lte?: InputMaybe; + adminFee_not_eq?: InputMaybe; + adminFee_not_in?: InputMaybe>; + amountsOut_containsAll?: InputMaybe>; + amountsOut_containsAny?: InputMaybe>; + amountsOut_containsNone?: InputMaybe>; + amountsOut_isNull?: InputMaybe; + caller_eq?: InputMaybe; + caller_isNull?: InputMaybe; + caller_not_eq?: InputMaybe; + currentA_eq?: InputMaybe; + currentA_gt?: InputMaybe; + currentA_gte?: InputMaybe; + currentA_in?: InputMaybe>; + currentA_isNull?: InputMaybe; + currentA_lt?: InputMaybe; + currentA_lte?: InputMaybe; + currentA_not_eq?: InputMaybe; + currentA_not_in?: InputMaybe>; + fees_containsAll?: InputMaybe>; + fees_containsAny?: InputMaybe>; + fees_containsNone?: InputMaybe>; + fees_isNull?: InputMaybe; + futureTime_eq?: InputMaybe; + futureTime_gt?: InputMaybe; + futureTime_gte?: InputMaybe; + futureTime_in?: InputMaybe>; + futureTime_isNull?: InputMaybe; + futureTime_lt?: InputMaybe; + futureTime_lte?: InputMaybe; + futureTime_not_eq?: InputMaybe; + futureTime_not_in?: InputMaybe>; + initialTime_eq?: InputMaybe; + initialTime_gt?: InputMaybe; + initialTime_gte?: InputMaybe; + initialTime_in?: InputMaybe>; + initialTime_isNull?: InputMaybe; + initialTime_lt?: InputMaybe; + initialTime_lte?: InputMaybe; + initialTime_not_eq?: InputMaybe; + initialTime_not_in?: InputMaybe>; + invariant_eq?: InputMaybe; + invariant_gt?: InputMaybe; + invariant_gte?: InputMaybe; + invariant_in?: InputMaybe>; + invariant_isNull?: InputMaybe; + invariant_lt?: InputMaybe; + invariant_lte?: InputMaybe; + invariant_not_eq?: InputMaybe; + invariant_not_in?: InputMaybe>; + isTypeOf_contains?: InputMaybe; + isTypeOf_containsInsensitive?: InputMaybe; + isTypeOf_endsWith?: InputMaybe; + isTypeOf_eq?: InputMaybe; + isTypeOf_gt?: InputMaybe; + isTypeOf_gte?: InputMaybe; + isTypeOf_in?: InputMaybe>; + isTypeOf_isNull?: InputMaybe; + isTypeOf_lt?: InputMaybe; + isTypeOf_lte?: InputMaybe; + isTypeOf_not_contains?: InputMaybe; + isTypeOf_not_containsInsensitive?: InputMaybe; + isTypeOf_not_endsWith?: InputMaybe; + isTypeOf_not_eq?: InputMaybe; + isTypeOf_not_in?: InputMaybe>; + isTypeOf_not_startsWith?: InputMaybe; + isTypeOf_startsWith?: InputMaybe; + lpTokenSupply_eq?: InputMaybe; + lpTokenSupply_gt?: InputMaybe; + lpTokenSupply_gte?: InputMaybe; + lpTokenSupply_in?: InputMaybe>; + lpTokenSupply_isNull?: InputMaybe; + lpTokenSupply_lt?: InputMaybe; + lpTokenSupply_lte?: InputMaybe; + lpTokenSupply_not_eq?: InputMaybe; + lpTokenSupply_not_in?: InputMaybe>; + newA_eq?: InputMaybe; + newA_gt?: InputMaybe; + newA_gte?: InputMaybe; + newA_in?: InputMaybe>; + newA_isNull?: InputMaybe; + newA_lt?: InputMaybe; + newA_lte?: InputMaybe; + newA_not_eq?: InputMaybe; + newA_not_in?: InputMaybe>; + oldA_eq?: InputMaybe; + oldA_gt?: InputMaybe; + oldA_gte?: InputMaybe; + oldA_in?: InputMaybe>; + oldA_isNull?: InputMaybe; + oldA_lt?: InputMaybe; + oldA_lte?: InputMaybe; + oldA_not_eq?: InputMaybe; + oldA_not_in?: InputMaybe>; + provider_eq?: InputMaybe; + provider_isNull?: InputMaybe; + provider_not_eq?: InputMaybe; + receiver_eq?: InputMaybe; + receiver_isNull?: InputMaybe; + receiver_not_eq?: InputMaybe; + swapFee_eq?: InputMaybe; + swapFee_gt?: InputMaybe; + swapFee_gte?: InputMaybe; + swapFee_in?: InputMaybe>; + swapFee_isNull?: InputMaybe; + swapFee_lt?: InputMaybe; + swapFee_lte?: InputMaybe; + swapFee_not_eq?: InputMaybe; + swapFee_not_in?: InputMaybe>; + time_eq?: InputMaybe; + time_gt?: InputMaybe; + time_gte?: InputMaybe; + time_in?: InputMaybe>; + time_isNull?: InputMaybe; + time_lt?: InputMaybe; + time_lte?: InputMaybe; + time_not_eq?: InputMaybe; + time_not_in?: InputMaybe>; + tokenAmounts_containsAll?: InputMaybe>; + tokenAmounts_containsAny?: InputMaybe>; + tokenAmounts_containsNone?: InputMaybe>; + tokenAmounts_isNull?: InputMaybe; +}; + +export type StableSwapEventEdge = { + __typename?: 'StableSwapEventEdge'; + cursor: Scalars['String']['output']; + node: StableSwapEvent; +}; + +export enum StableSwapEventOrderByInput { + BlockAsc = 'block_ASC', + BlockDesc = 'block_DESC', + DataAdminFeeAsc = 'data_adminFee_ASC', + DataAdminFeeDesc = 'data_adminFee_DESC', + DataCallerAsc = 'data_caller_ASC', + DataCallerDesc = 'data_caller_DESC', + DataCurrentAAsc = 'data_currentA_ASC', + DataCurrentADesc = 'data_currentA_DESC', + DataFutureTimeAsc = 'data_futureTime_ASC', + DataFutureTimeDesc = 'data_futureTime_DESC', + DataInitialTimeAsc = 'data_initialTime_ASC', + DataInitialTimeDesc = 'data_initialTime_DESC', + DataInvariantAsc = 'data_invariant_ASC', + DataInvariantDesc = 'data_invariant_DESC', + DataIsTypeOfAsc = 'data_isTypeOf_ASC', + DataIsTypeOfDesc = 'data_isTypeOf_DESC', + DataLpTokenSupplyAsc = 'data_lpTokenSupply_ASC', + DataLpTokenSupplyDesc = 'data_lpTokenSupply_DESC', + DataNewAAsc = 'data_newA_ASC', + DataNewADesc = 'data_newA_DESC', + DataOldAAsc = 'data_oldA_ASC', + DataOldADesc = 'data_oldA_DESC', + DataProviderAsc = 'data_provider_ASC', + DataProviderDesc = 'data_provider_DESC', + DataReceiverAsc = 'data_receiver_ASC', + DataReceiverDesc = 'data_receiver_DESC', + DataSwapFeeAsc = 'data_swapFee_ASC', + DataSwapFeeDesc = 'data_swapFee_DESC', + DataTimeAsc = 'data_time_ASC', + DataTimeDesc = 'data_time_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + StableSwapAAsc = 'stableSwap_a_ASC', + StableSwapADesc = 'stableSwap_a_DESC', + StableSwapAddressAsc = 'stableSwap_address_ASC', + StableSwapAddressDesc = 'stableSwap_address_DESC', + StableSwapAdminFeeAsc = 'stableSwap_adminFee_ASC', + StableSwapAdminFeeDesc = 'stableSwap_adminFee_DESC', + StableSwapBaseSwapAddressAsc = 'stableSwap_baseSwapAddress_ASC', + StableSwapBaseSwapAddressDesc = 'stableSwap_baseSwapAddress_DESC', + StableSwapIdAsc = 'stableSwap_id_ASC', + StableSwapIdDesc = 'stableSwap_id_DESC', + StableSwapLpTokenAsc = 'stableSwap_lpToken_ASC', + StableSwapLpTokenDesc = 'stableSwap_lpToken_DESC', + StableSwapLpTotalSupplyAsc = 'stableSwap_lpTotalSupply_ASC', + StableSwapLpTotalSupplyDesc = 'stableSwap_lpTotalSupply_DESC', + StableSwapNumTokensAsc = 'stableSwap_numTokens_ASC', + StableSwapNumTokensDesc = 'stableSwap_numTokens_DESC', + StableSwapSwapFeeAsc = 'stableSwap_swapFee_ASC', + StableSwapSwapFeeDesc = 'stableSwap_swapFee_DESC', + StableSwapTvlUsdAsc = 'stableSwap_tvlUSD_ASC', + StableSwapTvlUsdDesc = 'stableSwap_tvlUSD_DESC', + StableSwapVirtualPriceAsc = 'stableSwap_virtualPrice_ASC', + StableSwapVirtualPriceDesc = 'stableSwap_virtualPrice_DESC', + StableSwapVolumeUsdAsc = 'stableSwap_volumeUSD_ASC', + StableSwapVolumeUsdDesc = 'stableSwap_volumeUSD_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + TransactionAsc = 'transaction_ASC', + TransactionDesc = 'transaction_DESC' +} + +export type StableSwapEventWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + block_eq?: InputMaybe; + block_gt?: InputMaybe; + block_gte?: InputMaybe; + block_in?: InputMaybe>; + block_isNull?: InputMaybe; + block_lt?: InputMaybe; + block_lte?: InputMaybe; + block_not_eq?: InputMaybe; + block_not_in?: InputMaybe>; + data?: InputMaybe; + data_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stableSwap?: InputMaybe; + stableSwap_isNull?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + transaction_eq?: InputMaybe; + transaction_isNull?: InputMaybe; + transaction_not_eq?: InputMaybe; +}; + +export type StableSwapEventsConnection = { + __typename?: 'StableSwapEventsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableSwapExchange = { + __typename?: 'StableSwapExchange'; + block: Scalars['BigInt']['output']; + data?: Maybe; + id: Scalars['String']['output']; + stableSwap: StableSwap; + timestamp: Scalars['BigInt']['output']; + transaction: Scalars['Bytes']['output']; +}; + +export type StableSwapExchangeData = StableSwapTokenExchangeData | StableSwapTokenExchangeUnderlyingData; + +export type StableSwapExchangeDataWhereInput = { + boughtId_eq?: InputMaybe; + boughtId_gt?: InputMaybe; + boughtId_gte?: InputMaybe; + boughtId_in?: InputMaybe>; + boughtId_isNull?: InputMaybe; + boughtId_lt?: InputMaybe; + boughtId_lte?: InputMaybe; + boughtId_not_eq?: InputMaybe; + boughtId_not_in?: InputMaybe>; + buyer_eq?: InputMaybe; + buyer_isNull?: InputMaybe; + buyer_not_eq?: InputMaybe; + isTypeOf_contains?: InputMaybe; + isTypeOf_containsInsensitive?: InputMaybe; + isTypeOf_endsWith?: InputMaybe; + isTypeOf_eq?: InputMaybe; + isTypeOf_gt?: InputMaybe; + isTypeOf_gte?: InputMaybe; + isTypeOf_in?: InputMaybe>; + isTypeOf_isNull?: InputMaybe; + isTypeOf_lt?: InputMaybe; + isTypeOf_lte?: InputMaybe; + isTypeOf_not_contains?: InputMaybe; + isTypeOf_not_containsInsensitive?: InputMaybe; + isTypeOf_not_endsWith?: InputMaybe; + isTypeOf_not_eq?: InputMaybe; + isTypeOf_not_in?: InputMaybe>; + isTypeOf_not_startsWith?: InputMaybe; + isTypeOf_startsWith?: InputMaybe; + soldId_eq?: InputMaybe; + soldId_gt?: InputMaybe; + soldId_gte?: InputMaybe; + soldId_in?: InputMaybe>; + soldId_isNull?: InputMaybe; + soldId_lt?: InputMaybe; + soldId_lte?: InputMaybe; + soldId_not_eq?: InputMaybe; + soldId_not_in?: InputMaybe>; + tokensBought_eq?: InputMaybe; + tokensBought_gt?: InputMaybe; + tokensBought_gte?: InputMaybe; + tokensBought_in?: InputMaybe>; + tokensBought_isNull?: InputMaybe; + tokensBought_lt?: InputMaybe; + tokensBought_lte?: InputMaybe; + tokensBought_not_eq?: InputMaybe; + tokensBought_not_in?: InputMaybe>; + tokensSold_eq?: InputMaybe; + tokensSold_gt?: InputMaybe; + tokensSold_gte?: InputMaybe; + tokensSold_in?: InputMaybe>; + tokensSold_isNull?: InputMaybe; + tokensSold_lt?: InputMaybe; + tokensSold_lte?: InputMaybe; + tokensSold_not_eq?: InputMaybe; + tokensSold_not_in?: InputMaybe>; +}; + +export type StableSwapExchangeEdge = { + __typename?: 'StableSwapExchangeEdge'; + cursor: Scalars['String']['output']; + node: StableSwapExchange; +}; + +export enum StableSwapExchangeOrderByInput { + BlockAsc = 'block_ASC', + BlockDesc = 'block_DESC', + DataBoughtIdAsc = 'data_boughtId_ASC', + DataBoughtIdDesc = 'data_boughtId_DESC', + DataBuyerAsc = 'data_buyer_ASC', + DataBuyerDesc = 'data_buyer_DESC', + DataIsTypeOfAsc = 'data_isTypeOf_ASC', + DataIsTypeOfDesc = 'data_isTypeOf_DESC', + DataSoldIdAsc = 'data_soldId_ASC', + DataSoldIdDesc = 'data_soldId_DESC', + DataTokensBoughtAsc = 'data_tokensBought_ASC', + DataTokensBoughtDesc = 'data_tokensBought_DESC', + DataTokensSoldAsc = 'data_tokensSold_ASC', + DataTokensSoldDesc = 'data_tokensSold_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + StableSwapAAsc = 'stableSwap_a_ASC', + StableSwapADesc = 'stableSwap_a_DESC', + StableSwapAddressAsc = 'stableSwap_address_ASC', + StableSwapAddressDesc = 'stableSwap_address_DESC', + StableSwapAdminFeeAsc = 'stableSwap_adminFee_ASC', + StableSwapAdminFeeDesc = 'stableSwap_adminFee_DESC', + StableSwapBaseSwapAddressAsc = 'stableSwap_baseSwapAddress_ASC', + StableSwapBaseSwapAddressDesc = 'stableSwap_baseSwapAddress_DESC', + StableSwapIdAsc = 'stableSwap_id_ASC', + StableSwapIdDesc = 'stableSwap_id_DESC', + StableSwapLpTokenAsc = 'stableSwap_lpToken_ASC', + StableSwapLpTokenDesc = 'stableSwap_lpToken_DESC', + StableSwapLpTotalSupplyAsc = 'stableSwap_lpTotalSupply_ASC', + StableSwapLpTotalSupplyDesc = 'stableSwap_lpTotalSupply_DESC', + StableSwapNumTokensAsc = 'stableSwap_numTokens_ASC', + StableSwapNumTokensDesc = 'stableSwap_numTokens_DESC', + StableSwapSwapFeeAsc = 'stableSwap_swapFee_ASC', + StableSwapSwapFeeDesc = 'stableSwap_swapFee_DESC', + StableSwapTvlUsdAsc = 'stableSwap_tvlUSD_ASC', + StableSwapTvlUsdDesc = 'stableSwap_tvlUSD_DESC', + StableSwapVirtualPriceAsc = 'stableSwap_virtualPrice_ASC', + StableSwapVirtualPriceDesc = 'stableSwap_virtualPrice_DESC', + StableSwapVolumeUsdAsc = 'stableSwap_volumeUSD_ASC', + StableSwapVolumeUsdDesc = 'stableSwap_volumeUSD_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + TransactionAsc = 'transaction_ASC', + TransactionDesc = 'transaction_DESC' +} + +export type StableSwapExchangeWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + block_eq?: InputMaybe; + block_gt?: InputMaybe; + block_gte?: InputMaybe; + block_in?: InputMaybe>; + block_isNull?: InputMaybe; + block_lt?: InputMaybe; + block_lte?: InputMaybe; + block_not_eq?: InputMaybe; + block_not_in?: InputMaybe>; + data?: InputMaybe; + data_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stableSwap?: InputMaybe; + stableSwap_isNull?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + transaction_eq?: InputMaybe; + transaction_isNull?: InputMaybe; + transaction_not_eq?: InputMaybe; +}; + +export type StableSwapExchangesConnection = { + __typename?: 'StableSwapExchangesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableSwapFlashLoanEventData = { + __typename?: 'StableSwapFlashLoanEventData'; + amountsOut: Array; + caller: Scalars['Bytes']['output']; + receiver: Scalars['Bytes']['output']; +}; + +export type StableSwapHourData = { + __typename?: 'StableSwapHourData'; + hourStartUnix: Scalars['BigInt']['output']; + hourlyVolumeUSD: Scalars['String']['output']; + id: Scalars['String']['output']; + stableSwap: StableSwap; + tvlUSD: Scalars['String']['output']; +}; + +export type StableSwapHourDataConnection = { + __typename?: 'StableSwapHourDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableSwapHourDataEdge = { + __typename?: 'StableSwapHourDataEdge'; + cursor: Scalars['String']['output']; + node: StableSwapHourData; +}; + +export enum StableSwapHourDataOrderByInput { + HourStartUnixAsc = 'hourStartUnix_ASC', + HourStartUnixDesc = 'hourStartUnix_DESC', + HourlyVolumeUsdAsc = 'hourlyVolumeUSD_ASC', + HourlyVolumeUsdDesc = 'hourlyVolumeUSD_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + StableSwapAAsc = 'stableSwap_a_ASC', + StableSwapADesc = 'stableSwap_a_DESC', + StableSwapAddressAsc = 'stableSwap_address_ASC', + StableSwapAddressDesc = 'stableSwap_address_DESC', + StableSwapAdminFeeAsc = 'stableSwap_adminFee_ASC', + StableSwapAdminFeeDesc = 'stableSwap_adminFee_DESC', + StableSwapBaseSwapAddressAsc = 'stableSwap_baseSwapAddress_ASC', + StableSwapBaseSwapAddressDesc = 'stableSwap_baseSwapAddress_DESC', + StableSwapIdAsc = 'stableSwap_id_ASC', + StableSwapIdDesc = 'stableSwap_id_DESC', + StableSwapLpTokenAsc = 'stableSwap_lpToken_ASC', + StableSwapLpTokenDesc = 'stableSwap_lpToken_DESC', + StableSwapLpTotalSupplyAsc = 'stableSwap_lpTotalSupply_ASC', + StableSwapLpTotalSupplyDesc = 'stableSwap_lpTotalSupply_DESC', + StableSwapNumTokensAsc = 'stableSwap_numTokens_ASC', + StableSwapNumTokensDesc = 'stableSwap_numTokens_DESC', + StableSwapSwapFeeAsc = 'stableSwap_swapFee_ASC', + StableSwapSwapFeeDesc = 'stableSwap_swapFee_DESC', + StableSwapTvlUsdAsc = 'stableSwap_tvlUSD_ASC', + StableSwapTvlUsdDesc = 'stableSwap_tvlUSD_DESC', + StableSwapVirtualPriceAsc = 'stableSwap_virtualPrice_ASC', + StableSwapVirtualPriceDesc = 'stableSwap_virtualPrice_DESC', + StableSwapVolumeUsdAsc = 'stableSwap_volumeUSD_ASC', + StableSwapVolumeUsdDesc = 'stableSwap_volumeUSD_DESC', + TvlUsdAsc = 'tvlUSD_ASC', + TvlUsdDesc = 'tvlUSD_DESC' +} + +export type StableSwapHourDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + hourStartUnix_eq?: InputMaybe; + hourStartUnix_gt?: InputMaybe; + hourStartUnix_gte?: InputMaybe; + hourStartUnix_in?: InputMaybe>; + hourStartUnix_isNull?: InputMaybe; + hourStartUnix_lt?: InputMaybe; + hourStartUnix_lte?: InputMaybe; + hourStartUnix_not_eq?: InputMaybe; + hourStartUnix_not_in?: InputMaybe>; + hourlyVolumeUSD_contains?: InputMaybe; + hourlyVolumeUSD_containsInsensitive?: InputMaybe; + hourlyVolumeUSD_endsWith?: InputMaybe; + hourlyVolumeUSD_eq?: InputMaybe; + hourlyVolumeUSD_gt?: InputMaybe; + hourlyVolumeUSD_gte?: InputMaybe; + hourlyVolumeUSD_in?: InputMaybe>; + hourlyVolumeUSD_isNull?: InputMaybe; + hourlyVolumeUSD_lt?: InputMaybe; + hourlyVolumeUSD_lte?: InputMaybe; + hourlyVolumeUSD_not_contains?: InputMaybe; + hourlyVolumeUSD_not_containsInsensitive?: InputMaybe; + hourlyVolumeUSD_not_endsWith?: InputMaybe; + hourlyVolumeUSD_not_eq?: InputMaybe; + hourlyVolumeUSD_not_in?: InputMaybe>; + hourlyVolumeUSD_not_startsWith?: InputMaybe; + hourlyVolumeUSD_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stableSwap?: InputMaybe; + stableSwap_isNull?: InputMaybe; + tvlUSD_contains?: InputMaybe; + tvlUSD_containsInsensitive?: InputMaybe; + tvlUSD_endsWith?: InputMaybe; + tvlUSD_eq?: InputMaybe; + tvlUSD_gt?: InputMaybe; + tvlUSD_gte?: InputMaybe; + tvlUSD_in?: InputMaybe>; + tvlUSD_isNull?: InputMaybe; + tvlUSD_lt?: InputMaybe; + tvlUSD_lte?: InputMaybe; + tvlUSD_not_contains?: InputMaybe; + tvlUSD_not_containsInsensitive?: InputMaybe; + tvlUSD_not_endsWith?: InputMaybe; + tvlUSD_not_eq?: InputMaybe; + tvlUSD_not_in?: InputMaybe>; + tvlUSD_not_startsWith?: InputMaybe; + tvlUSD_startsWith?: InputMaybe; +}; + +export type StableSwapInfo = { + __typename?: 'StableSwapInfo'; + id: Scalars['String']['output']; + poolCount: Scalars['Int']['output']; + swaps: Array; + /** BigDecimal */ + totalTvlUSD: Scalars['String']['output']; + /** BigDecimal */ + totalVolumeUSD: Scalars['String']['output']; + txCount: Scalars['Int']['output']; +}; + + +export type StableSwapInfoSwapsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type StableSwapInfoEdge = { + __typename?: 'StableSwapInfoEdge'; + cursor: Scalars['String']['output']; + node: StableSwapInfo; +}; + +export enum StableSwapInfoOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + PoolCountAsc = 'poolCount_ASC', + PoolCountDesc = 'poolCount_DESC', + TotalTvlUsdAsc = 'totalTvlUSD_ASC', + TotalTvlUsdDesc = 'totalTvlUSD_DESC', + TotalVolumeUsdAsc = 'totalVolumeUSD_ASC', + TotalVolumeUsdDesc = 'totalVolumeUSD_DESC', + TxCountAsc = 'txCount_ASC', + TxCountDesc = 'txCount_DESC' +} + +export type StableSwapInfoWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + poolCount_eq?: InputMaybe; + poolCount_gt?: InputMaybe; + poolCount_gte?: InputMaybe; + poolCount_in?: InputMaybe>; + poolCount_isNull?: InputMaybe; + poolCount_lt?: InputMaybe; + poolCount_lte?: InputMaybe; + poolCount_not_eq?: InputMaybe; + poolCount_not_in?: InputMaybe>; + swaps_every?: InputMaybe; + swaps_none?: InputMaybe; + swaps_some?: InputMaybe; + totalTvlUSD_contains?: InputMaybe; + totalTvlUSD_containsInsensitive?: InputMaybe; + totalTvlUSD_endsWith?: InputMaybe; + totalTvlUSD_eq?: InputMaybe; + totalTvlUSD_gt?: InputMaybe; + totalTvlUSD_gte?: InputMaybe; + totalTvlUSD_in?: InputMaybe>; + totalTvlUSD_isNull?: InputMaybe; + totalTvlUSD_lt?: InputMaybe; + totalTvlUSD_lte?: InputMaybe; + totalTvlUSD_not_contains?: InputMaybe; + totalTvlUSD_not_containsInsensitive?: InputMaybe; + totalTvlUSD_not_endsWith?: InputMaybe; + totalTvlUSD_not_eq?: InputMaybe; + totalTvlUSD_not_in?: InputMaybe>; + totalTvlUSD_not_startsWith?: InputMaybe; + totalTvlUSD_startsWith?: InputMaybe; + totalVolumeUSD_contains?: InputMaybe; + totalVolumeUSD_containsInsensitive?: InputMaybe; + totalVolumeUSD_endsWith?: InputMaybe; + totalVolumeUSD_eq?: InputMaybe; + totalVolumeUSD_gt?: InputMaybe; + totalVolumeUSD_gte?: InputMaybe; + totalVolumeUSD_in?: InputMaybe>; + totalVolumeUSD_isNull?: InputMaybe; + totalVolumeUSD_lt?: InputMaybe; + totalVolumeUSD_lte?: InputMaybe; + totalVolumeUSD_not_contains?: InputMaybe; + totalVolumeUSD_not_containsInsensitive?: InputMaybe; + totalVolumeUSD_not_endsWith?: InputMaybe; + totalVolumeUSD_not_eq?: InputMaybe; + totalVolumeUSD_not_in?: InputMaybe>; + totalVolumeUSD_not_startsWith?: InputMaybe; + totalVolumeUSD_startsWith?: InputMaybe; + txCount_eq?: InputMaybe; + txCount_gt?: InputMaybe; + txCount_gte?: InputMaybe; + txCount_in?: InputMaybe>; + txCount_isNull?: InputMaybe; + txCount_lt?: InputMaybe; + txCount_lte?: InputMaybe; + txCount_not_eq?: InputMaybe; + txCount_not_in?: InputMaybe>; +}; + +export type StableSwapInfosConnection = { + __typename?: 'StableSwapInfosConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableSwapLiquidityPosition = { + __typename?: 'StableSwapLiquidityPosition'; + id: Scalars['String']['output']; + liquidityTokenBalance: Scalars['String']['output']; + stableSwap: StableSwap; + user: User; +}; + +export type StableSwapLiquidityPositionEdge = { + __typename?: 'StableSwapLiquidityPositionEdge'; + cursor: Scalars['String']['output']; + node: StableSwapLiquidityPosition; +}; + +export enum StableSwapLiquidityPositionOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityTokenBalanceAsc = 'liquidityTokenBalance_ASC', + LiquidityTokenBalanceDesc = 'liquidityTokenBalance_DESC', + StableSwapAAsc = 'stableSwap_a_ASC', + StableSwapADesc = 'stableSwap_a_DESC', + StableSwapAddressAsc = 'stableSwap_address_ASC', + StableSwapAddressDesc = 'stableSwap_address_DESC', + StableSwapAdminFeeAsc = 'stableSwap_adminFee_ASC', + StableSwapAdminFeeDesc = 'stableSwap_adminFee_DESC', + StableSwapBaseSwapAddressAsc = 'stableSwap_baseSwapAddress_ASC', + StableSwapBaseSwapAddressDesc = 'stableSwap_baseSwapAddress_DESC', + StableSwapIdAsc = 'stableSwap_id_ASC', + StableSwapIdDesc = 'stableSwap_id_DESC', + StableSwapLpTokenAsc = 'stableSwap_lpToken_ASC', + StableSwapLpTokenDesc = 'stableSwap_lpToken_DESC', + StableSwapLpTotalSupplyAsc = 'stableSwap_lpTotalSupply_ASC', + StableSwapLpTotalSupplyDesc = 'stableSwap_lpTotalSupply_DESC', + StableSwapNumTokensAsc = 'stableSwap_numTokens_ASC', + StableSwapNumTokensDesc = 'stableSwap_numTokens_DESC', + StableSwapSwapFeeAsc = 'stableSwap_swapFee_ASC', + StableSwapSwapFeeDesc = 'stableSwap_swapFee_DESC', + StableSwapTvlUsdAsc = 'stableSwap_tvlUSD_ASC', + StableSwapTvlUsdDesc = 'stableSwap_tvlUSD_DESC', + StableSwapVirtualPriceAsc = 'stableSwap_virtualPrice_ASC', + StableSwapVirtualPriceDesc = 'stableSwap_virtualPrice_DESC', + StableSwapVolumeUsdAsc = 'stableSwap_volumeUSD_ASC', + StableSwapVolumeUsdDesc = 'stableSwap_volumeUSD_DESC', + UserIdAsc = 'user_id_ASC', + UserIdDesc = 'user_id_DESC', + UserUsdSwappedAsc = 'user_usdSwapped_ASC', + UserUsdSwappedDesc = 'user_usdSwapped_DESC' +} + +export type StableSwapLiquidityPositionWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidityTokenBalance_contains?: InputMaybe; + liquidityTokenBalance_containsInsensitive?: InputMaybe; + liquidityTokenBalance_endsWith?: InputMaybe; + liquidityTokenBalance_eq?: InputMaybe; + liquidityTokenBalance_gt?: InputMaybe; + liquidityTokenBalance_gte?: InputMaybe; + liquidityTokenBalance_in?: InputMaybe>; + liquidityTokenBalance_isNull?: InputMaybe; + liquidityTokenBalance_lt?: InputMaybe; + liquidityTokenBalance_lte?: InputMaybe; + liquidityTokenBalance_not_contains?: InputMaybe; + liquidityTokenBalance_not_containsInsensitive?: InputMaybe; + liquidityTokenBalance_not_endsWith?: InputMaybe; + liquidityTokenBalance_not_eq?: InputMaybe; + liquidityTokenBalance_not_in?: InputMaybe>; + liquidityTokenBalance_not_startsWith?: InputMaybe; + liquidityTokenBalance_startsWith?: InputMaybe; + stableSwap?: InputMaybe; + stableSwap_isNull?: InputMaybe; + user?: InputMaybe; + user_isNull?: InputMaybe; +}; + +export type StableSwapLiquidityPositionsConnection = { + __typename?: 'StableSwapLiquidityPositionsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StableSwapNewFeeEventData = { + __typename?: 'StableSwapNewFeeEventData'; + adminFee: Scalars['BigInt']['output']; + swapFee: Scalars['BigInt']['output']; +}; + +export enum StableSwapOrderByInput { + AAsc = 'a_ASC', + ADesc = 'a_DESC', + AddressAsc = 'address_ASC', + AddressDesc = 'address_DESC', + AdminFeeAsc = 'adminFee_ASC', + AdminFeeDesc = 'adminFee_DESC', + BaseSwapAddressAsc = 'baseSwapAddress_ASC', + BaseSwapAddressDesc = 'baseSwapAddress_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LpTokenAsc = 'lpToken_ASC', + LpTokenDesc = 'lpToken_DESC', + LpTotalSupplyAsc = 'lpTotalSupply_ASC', + LpTotalSupplyDesc = 'lpTotalSupply_DESC', + NumTokensAsc = 'numTokens_ASC', + NumTokensDesc = 'numTokens_DESC', + StableSwapInfoIdAsc = 'stableSwapInfo_id_ASC', + StableSwapInfoIdDesc = 'stableSwapInfo_id_DESC', + StableSwapInfoPoolCountAsc = 'stableSwapInfo_poolCount_ASC', + StableSwapInfoPoolCountDesc = 'stableSwapInfo_poolCount_DESC', + StableSwapInfoTotalTvlUsdAsc = 'stableSwapInfo_totalTvlUSD_ASC', + StableSwapInfoTotalTvlUsdDesc = 'stableSwapInfo_totalTvlUSD_DESC', + StableSwapInfoTotalVolumeUsdAsc = 'stableSwapInfo_totalVolumeUSD_ASC', + StableSwapInfoTotalVolumeUsdDesc = 'stableSwapInfo_totalVolumeUSD_DESC', + StableSwapInfoTxCountAsc = 'stableSwapInfo_txCount_ASC', + StableSwapInfoTxCountDesc = 'stableSwapInfo_txCount_DESC', + SwapFeeAsc = 'swapFee_ASC', + SwapFeeDesc = 'swapFee_DESC', + TvlUsdAsc = 'tvlUSD_ASC', + TvlUsdDesc = 'tvlUSD_DESC', + VirtualPriceAsc = 'virtualPrice_ASC', + VirtualPriceDesc = 'virtualPrice_DESC', + VolumeUsdAsc = 'volumeUSD_ASC', + VolumeUsdDesc = 'volumeUSD_DESC' +} + +export type StableSwapRampAEventData = { + __typename?: 'StableSwapRampAEventData'; + futureTime: Scalars['BigInt']['output']; + initialTime: Scalars['BigInt']['output']; + newA: Scalars['BigInt']['output']; + oldA: Scalars['BigInt']['output']; +}; + +export type StableSwapRemoveLiquidityEventData = { + __typename?: 'StableSwapRemoveLiquidityEventData'; + fees?: Maybe>; + lpTokenSupply?: Maybe; + provider: Scalars['Bytes']['output']; + tokenAmounts: Array; +}; + +export type StableSwapStopRampAEventData = { + __typename?: 'StableSwapStopRampAEventData'; + currentA: Scalars['BigInt']['output']; + time: Scalars['BigInt']['output']; +}; + +export type StableSwapTokenExchangeData = { + __typename?: 'StableSwapTokenExchangeData'; + boughtId: Scalars['BigInt']['output']; + buyer: Scalars['Bytes']['output']; + soldId: Scalars['BigInt']['output']; + tokensBought: Scalars['BigInt']['output']; + tokensSold: Scalars['BigInt']['output']; +}; + +export type StableSwapTokenExchangeUnderlyingData = { + __typename?: 'StableSwapTokenExchangeUnderlyingData'; + boughtId: Scalars['BigInt']['output']; + buyer: Scalars['Bytes']['output']; + soldId: Scalars['BigInt']['output']; + tokensBought: Scalars['BigInt']['output']; + tokensSold: Scalars['BigInt']['output']; +}; + +export type StableSwapWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + a_eq?: InputMaybe; + a_gt?: InputMaybe; + a_gte?: InputMaybe; + a_in?: InputMaybe>; + a_isNull?: InputMaybe; + a_lt?: InputMaybe; + a_lte?: InputMaybe; + a_not_eq?: InputMaybe; + a_not_in?: InputMaybe>; + address_contains?: InputMaybe; + address_containsInsensitive?: InputMaybe; + address_endsWith?: InputMaybe; + address_eq?: InputMaybe; + address_gt?: InputMaybe; + address_gte?: InputMaybe; + address_in?: InputMaybe>; + address_isNull?: InputMaybe; + address_lt?: InputMaybe; + address_lte?: InputMaybe; + address_not_contains?: InputMaybe; + address_not_containsInsensitive?: InputMaybe; + address_not_endsWith?: InputMaybe; + address_not_eq?: InputMaybe; + address_not_in?: InputMaybe>; + address_not_startsWith?: InputMaybe; + address_startsWith?: InputMaybe; + adminFee_eq?: InputMaybe; + adminFee_gt?: InputMaybe; + adminFee_gte?: InputMaybe; + adminFee_in?: InputMaybe>; + adminFee_isNull?: InputMaybe; + adminFee_lt?: InputMaybe; + adminFee_lte?: InputMaybe; + adminFee_not_eq?: InputMaybe; + adminFee_not_in?: InputMaybe>; + allTokens_containsAll?: InputMaybe>; + allTokens_containsAny?: InputMaybe>; + allTokens_containsNone?: InputMaybe>; + allTokens_isNull?: InputMaybe; + balances_containsAll?: InputMaybe>; + balances_containsAny?: InputMaybe>; + balances_containsNone?: InputMaybe>; + balances_isNull?: InputMaybe; + baseSwapAddress_contains?: InputMaybe; + baseSwapAddress_containsInsensitive?: InputMaybe; + baseSwapAddress_endsWith?: InputMaybe; + baseSwapAddress_eq?: InputMaybe; + baseSwapAddress_gt?: InputMaybe; + baseSwapAddress_gte?: InputMaybe; + baseSwapAddress_in?: InputMaybe>; + baseSwapAddress_isNull?: InputMaybe; + baseSwapAddress_lt?: InputMaybe; + baseSwapAddress_lte?: InputMaybe; + baseSwapAddress_not_contains?: InputMaybe; + baseSwapAddress_not_containsInsensitive?: InputMaybe; + baseSwapAddress_not_endsWith?: InputMaybe; + baseSwapAddress_not_eq?: InputMaybe; + baseSwapAddress_not_in?: InputMaybe>; + baseSwapAddress_not_startsWith?: InputMaybe; + baseSwapAddress_startsWith?: InputMaybe; + baseTokens_containsAll?: InputMaybe>; + baseTokens_containsAny?: InputMaybe>; + baseTokens_containsNone?: InputMaybe>; + baseTokens_isNull?: InputMaybe; + events_every?: InputMaybe; + events_none?: InputMaybe; + events_some?: InputMaybe; + exchanges_every?: InputMaybe; + exchanges_none?: InputMaybe; + exchanges_some?: InputMaybe; + farm_every?: InputMaybe; + farm_none?: InputMaybe; + farm_some?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + lpToken_contains?: InputMaybe; + lpToken_containsInsensitive?: InputMaybe; + lpToken_endsWith?: InputMaybe; + lpToken_eq?: InputMaybe; + lpToken_gt?: InputMaybe; + lpToken_gte?: InputMaybe; + lpToken_in?: InputMaybe>; + lpToken_isNull?: InputMaybe; + lpToken_lt?: InputMaybe; + lpToken_lte?: InputMaybe; + lpToken_not_contains?: InputMaybe; + lpToken_not_containsInsensitive?: InputMaybe; + lpToken_not_endsWith?: InputMaybe; + lpToken_not_eq?: InputMaybe; + lpToken_not_in?: InputMaybe>; + lpToken_not_startsWith?: InputMaybe; + lpToken_startsWith?: InputMaybe; + lpTotalSupply_contains?: InputMaybe; + lpTotalSupply_containsInsensitive?: InputMaybe; + lpTotalSupply_endsWith?: InputMaybe; + lpTotalSupply_eq?: InputMaybe; + lpTotalSupply_gt?: InputMaybe; + lpTotalSupply_gte?: InputMaybe; + lpTotalSupply_in?: InputMaybe>; + lpTotalSupply_isNull?: InputMaybe; + lpTotalSupply_lt?: InputMaybe; + lpTotalSupply_lte?: InputMaybe; + lpTotalSupply_not_contains?: InputMaybe; + lpTotalSupply_not_containsInsensitive?: InputMaybe; + lpTotalSupply_not_endsWith?: InputMaybe; + lpTotalSupply_not_eq?: InputMaybe; + lpTotalSupply_not_in?: InputMaybe>; + lpTotalSupply_not_startsWith?: InputMaybe; + lpTotalSupply_startsWith?: InputMaybe; + numTokens_eq?: InputMaybe; + numTokens_gt?: InputMaybe; + numTokens_gte?: InputMaybe; + numTokens_in?: InputMaybe>; + numTokens_isNull?: InputMaybe; + numTokens_lt?: InputMaybe; + numTokens_lte?: InputMaybe; + numTokens_not_eq?: InputMaybe; + numTokens_not_in?: InputMaybe>; + stableSwapDayData_every?: InputMaybe; + stableSwapDayData_none?: InputMaybe; + stableSwapDayData_some?: InputMaybe; + stableSwapHourData_every?: InputMaybe; + stableSwapHourData_none?: InputMaybe; + stableSwapHourData_some?: InputMaybe; + stableSwapInfo?: InputMaybe; + stableSwapInfo_isNull?: InputMaybe; + swapFee_eq?: InputMaybe; + swapFee_gt?: InputMaybe; + swapFee_gte?: InputMaybe; + swapFee_in?: InputMaybe>; + swapFee_isNull?: InputMaybe; + swapFee_lt?: InputMaybe; + swapFee_lte?: InputMaybe; + swapFee_not_eq?: InputMaybe; + swapFee_not_in?: InputMaybe>; + tokens_containsAll?: InputMaybe>; + tokens_containsAny?: InputMaybe>; + tokens_containsNone?: InputMaybe>; + tokens_isNull?: InputMaybe; + tvlUSD_contains?: InputMaybe; + tvlUSD_containsInsensitive?: InputMaybe; + tvlUSD_endsWith?: InputMaybe; + tvlUSD_eq?: InputMaybe; + tvlUSD_gt?: InputMaybe; + tvlUSD_gte?: InputMaybe; + tvlUSD_in?: InputMaybe>; + tvlUSD_isNull?: InputMaybe; + tvlUSD_lt?: InputMaybe; + tvlUSD_lte?: InputMaybe; + tvlUSD_not_contains?: InputMaybe; + tvlUSD_not_containsInsensitive?: InputMaybe; + tvlUSD_not_endsWith?: InputMaybe; + tvlUSD_not_eq?: InputMaybe; + tvlUSD_not_in?: InputMaybe>; + tvlUSD_not_startsWith?: InputMaybe; + tvlUSD_startsWith?: InputMaybe; + virtualPrice_eq?: InputMaybe; + virtualPrice_gt?: InputMaybe; + virtualPrice_gte?: InputMaybe; + virtualPrice_in?: InputMaybe>; + virtualPrice_isNull?: InputMaybe; + virtualPrice_lt?: InputMaybe; + virtualPrice_lte?: InputMaybe; + virtualPrice_not_eq?: InputMaybe; + virtualPrice_not_in?: InputMaybe>; + volumeUSD_contains?: InputMaybe; + volumeUSD_containsInsensitive?: InputMaybe; + volumeUSD_endsWith?: InputMaybe; + volumeUSD_eq?: InputMaybe; + volumeUSD_gt?: InputMaybe; + volumeUSD_gte?: InputMaybe; + volumeUSD_in?: InputMaybe>; + volumeUSD_isNull?: InputMaybe; + volumeUSD_lt?: InputMaybe; + volumeUSD_lte?: InputMaybe; + volumeUSD_not_contains?: InputMaybe; + volumeUSD_not_containsInsensitive?: InputMaybe; + volumeUSD_not_endsWith?: InputMaybe; + volumeUSD_not_eq?: InputMaybe; + volumeUSD_not_in?: InputMaybe>; + volumeUSD_not_startsWith?: InputMaybe; + volumeUSD_startsWith?: InputMaybe; +}; + +export type StableSwapsConnection = { + __typename?: 'StableSwapsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StakePosition = { + __typename?: 'StakePosition'; + farm: Farm; + id: Scalars['String']['output']; + liquidityStakedBalance: Scalars['BigInt']['output']; + user: User; +}; + +export type StakePositionEdge = { + __typename?: 'StakePositionEdge'; + cursor: Scalars['String']['output']; + node: StakePosition; +}; + +export enum StakePositionOrderByInput { + FarmCreatedAtBlockAsc = 'farm_createdAtBlock_ASC', + FarmCreatedAtBlockDesc = 'farm_createdAtBlock_DESC', + FarmCreatedAtTimestampAsc = 'farm_createdAtTimestamp_ASC', + FarmCreatedAtTimestampDesc = 'farm_createdAtTimestamp_DESC', + FarmIdAsc = 'farm_id_ASC', + FarmIdDesc = 'farm_id_DESC', + FarmLiquidityStakedAsc = 'farm_liquidityStaked_ASC', + FarmLiquidityStakedDesc = 'farm_liquidityStaked_DESC', + FarmPidAsc = 'farm_pid_ASC', + FarmPidDesc = 'farm_pid_DESC', + FarmRewardUsdPerDayAsc = 'farm_rewardUSDPerDay_ASC', + FarmRewardUsdPerDayDesc = 'farm_rewardUSDPerDay_DESC', + FarmStakeAprAsc = 'farm_stakeApr_ASC', + FarmStakeAprDesc = 'farm_stakeApr_DESC', + FarmStakeTokenAsc = 'farm_stakeToken_ASC', + FarmStakeTokenDesc = 'farm_stakeToken_DESC', + FarmStakedUsdAsc = 'farm_stakedUSD_ASC', + FarmStakedUsdDesc = 'farm_stakedUSD_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiquidityStakedBalanceAsc = 'liquidityStakedBalance_ASC', + LiquidityStakedBalanceDesc = 'liquidityStakedBalance_DESC', + UserIdAsc = 'user_id_ASC', + UserIdDesc = 'user_id_DESC', + UserUsdSwappedAsc = 'user_usdSwapped_ASC', + UserUsdSwappedDesc = 'user_usdSwapped_DESC' +} + +export type StakePositionWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + farm?: InputMaybe; + farm_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidityStakedBalance_eq?: InputMaybe; + liquidityStakedBalance_gt?: InputMaybe; + liquidityStakedBalance_gte?: InputMaybe; + liquidityStakedBalance_in?: InputMaybe>; + liquidityStakedBalance_isNull?: InputMaybe; + liquidityStakedBalance_lt?: InputMaybe; + liquidityStakedBalance_lte?: InputMaybe; + liquidityStakedBalance_not_eq?: InputMaybe; + liquidityStakedBalance_not_in?: InputMaybe>; + user?: InputMaybe; + user_isNull?: InputMaybe; +}; + +export type StakePositionsConnection = { + __typename?: 'StakePositionsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Swap = { + __typename?: 'Swap'; + amount0In: Scalars['String']['output']; + amount0Out: Scalars['String']['output']; + amount1In: Scalars['String']['output']; + amount1Out: Scalars['String']['output']; + amountUSD: Scalars['String']['output']; + from: Scalars['String']['output']; + id: Scalars['String']['output']; + logIndex?: Maybe; + pair: Pair; + sender: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + to: Scalars['String']['output']; + transaction: Transaction; +}; + +export type SwapEdge = { + __typename?: 'SwapEdge'; + cursor: Scalars['String']['output']; + node: Swap; +}; + +export enum SwapOrderByInput { + Amount0InAsc = 'amount0In_ASC', + Amount0InDesc = 'amount0In_DESC', + Amount0OutAsc = 'amount0Out_ASC', + Amount0OutDesc = 'amount0Out_DESC', + Amount1InAsc = 'amount1In_ASC', + Amount1InDesc = 'amount1In_DESC', + Amount1OutAsc = 'amount1Out_ASC', + Amount1OutDesc = 'amount1Out_DESC', + AmountUsdAsc = 'amountUSD_ASC', + AmountUsdDesc = 'amountUSD_DESC', + FromAsc = 'from_ASC', + FromDesc = 'from_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LogIndexAsc = 'logIndex_ASC', + LogIndexDesc = 'logIndex_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + SenderAsc = 'sender_ASC', + SenderDesc = 'sender_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + ToAsc = 'to_ASC', + ToDesc = 'to_DESC', + TransactionBlockNumberAsc = 'transaction_blockNumber_ASC', + TransactionBlockNumberDesc = 'transaction_blockNumber_DESC', + TransactionIdAsc = 'transaction_id_ASC', + TransactionIdDesc = 'transaction_id_DESC', + TransactionTimestampAsc = 'transaction_timestamp_ASC', + TransactionTimestampDesc = 'transaction_timestamp_DESC' +} + +export type SwapPool = { + __typename?: 'SwapPool'; + backstop: BackstopPool; + id: Scalars['String']['output']; + liabilities: Scalars['BigInt']['output']; + paused: Scalars['Boolean']['output']; + reserves: Scalars['BigInt']['output']; + router: Router; + token: NablaToken; + totalSupply: Scalars['BigInt']['output']; +}; + +export type SwapPoolEdge = { + __typename?: 'SwapPoolEdge'; + cursor: Scalars['String']['output']; + node: SwapPool; +}; + +export enum SwapPoolOrderByInput { + BackstopIdAsc = 'backstop_id_ASC', + BackstopIdDesc = 'backstop_id_DESC', + BackstopLiabilitiesAsc = 'backstop_liabilities_ASC', + BackstopLiabilitiesDesc = 'backstop_liabilities_DESC', + BackstopPausedAsc = 'backstop_paused_ASC', + BackstopPausedDesc = 'backstop_paused_DESC', + BackstopReservesAsc = 'backstop_reserves_ASC', + BackstopReservesDesc = 'backstop_reserves_DESC', + BackstopTotalSupplyAsc = 'backstop_totalSupply_ASC', + BackstopTotalSupplyDesc = 'backstop_totalSupply_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LiabilitiesAsc = 'liabilities_ASC', + LiabilitiesDesc = 'liabilities_DESC', + PausedAsc = 'paused_ASC', + PausedDesc = 'paused_DESC', + ReservesAsc = 'reserves_ASC', + ReservesDesc = 'reserves_DESC', + RouterIdAsc = 'router_id_ASC', + RouterIdDesc = 'router_id_DESC', + RouterPausedAsc = 'router_paused_ASC', + RouterPausedDesc = 'router_paused_DESC', + TokenDecimalsAsc = 'token_decimals_ASC', + TokenDecimalsDesc = 'token_decimals_DESC', + TokenIdAsc = 'token_id_ASC', + TokenIdDesc = 'token_id_DESC', + TokenNameAsc = 'token_name_ASC', + TokenNameDesc = 'token_name_DESC', + TokenSymbolAsc = 'token_symbol_ASC', + TokenSymbolDesc = 'token_symbol_DESC', + TotalSupplyAsc = 'totalSupply_ASC', + TotalSupplyDesc = 'totalSupply_DESC' +} + +export type SwapPoolWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + backstop?: InputMaybe; + backstop_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liabilities_eq?: InputMaybe; + liabilities_gt?: InputMaybe; + liabilities_gte?: InputMaybe; + liabilities_in?: InputMaybe>; + liabilities_isNull?: InputMaybe; + liabilities_lt?: InputMaybe; + liabilities_lte?: InputMaybe; + liabilities_not_eq?: InputMaybe; + liabilities_not_in?: InputMaybe>; + paused_eq?: InputMaybe; + paused_isNull?: InputMaybe; + paused_not_eq?: InputMaybe; + reserves_eq?: InputMaybe; + reserves_gt?: InputMaybe; + reserves_gte?: InputMaybe; + reserves_in?: InputMaybe>; + reserves_isNull?: InputMaybe; + reserves_lt?: InputMaybe; + reserves_lte?: InputMaybe; + reserves_not_eq?: InputMaybe; + reserves_not_in?: InputMaybe>; + router?: InputMaybe; + router_isNull?: InputMaybe; + token?: InputMaybe; + token_isNull?: InputMaybe; + totalSupply_eq?: InputMaybe; + totalSupply_gt?: InputMaybe; + totalSupply_gte?: InputMaybe; + totalSupply_in?: InputMaybe>; + totalSupply_isNull?: InputMaybe; + totalSupply_lt?: InputMaybe; + totalSupply_lte?: InputMaybe; + totalSupply_not_eq?: InputMaybe; + totalSupply_not_in?: InputMaybe>; +}; + +export type SwapPoolsConnection = { + __typename?: 'SwapPoolsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SwapWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount0In_contains?: InputMaybe; + amount0In_containsInsensitive?: InputMaybe; + amount0In_endsWith?: InputMaybe; + amount0In_eq?: InputMaybe; + amount0In_gt?: InputMaybe; + amount0In_gte?: InputMaybe; + amount0In_in?: InputMaybe>; + amount0In_isNull?: InputMaybe; + amount0In_lt?: InputMaybe; + amount0In_lte?: InputMaybe; + amount0In_not_contains?: InputMaybe; + amount0In_not_containsInsensitive?: InputMaybe; + amount0In_not_endsWith?: InputMaybe; + amount0In_not_eq?: InputMaybe; + amount0In_not_in?: InputMaybe>; + amount0In_not_startsWith?: InputMaybe; + amount0In_startsWith?: InputMaybe; + amount0Out_contains?: InputMaybe; + amount0Out_containsInsensitive?: InputMaybe; + amount0Out_endsWith?: InputMaybe; + amount0Out_eq?: InputMaybe; + amount0Out_gt?: InputMaybe; + amount0Out_gte?: InputMaybe; + amount0Out_in?: InputMaybe>; + amount0Out_isNull?: InputMaybe; + amount0Out_lt?: InputMaybe; + amount0Out_lte?: InputMaybe; + amount0Out_not_contains?: InputMaybe; + amount0Out_not_containsInsensitive?: InputMaybe; + amount0Out_not_endsWith?: InputMaybe; + amount0Out_not_eq?: InputMaybe; + amount0Out_not_in?: InputMaybe>; + amount0Out_not_startsWith?: InputMaybe; + amount0Out_startsWith?: InputMaybe; + amount1In_contains?: InputMaybe; + amount1In_containsInsensitive?: InputMaybe; + amount1In_endsWith?: InputMaybe; + amount1In_eq?: InputMaybe; + amount1In_gt?: InputMaybe; + amount1In_gte?: InputMaybe; + amount1In_in?: InputMaybe>; + amount1In_isNull?: InputMaybe; + amount1In_lt?: InputMaybe; + amount1In_lte?: InputMaybe; + amount1In_not_contains?: InputMaybe; + amount1In_not_containsInsensitive?: InputMaybe; + amount1In_not_endsWith?: InputMaybe; + amount1In_not_eq?: InputMaybe; + amount1In_not_in?: InputMaybe>; + amount1In_not_startsWith?: InputMaybe; + amount1In_startsWith?: InputMaybe; + amount1Out_contains?: InputMaybe; + amount1Out_containsInsensitive?: InputMaybe; + amount1Out_endsWith?: InputMaybe; + amount1Out_eq?: InputMaybe; + amount1Out_gt?: InputMaybe; + amount1Out_gte?: InputMaybe; + amount1Out_in?: InputMaybe>; + amount1Out_isNull?: InputMaybe; + amount1Out_lt?: InputMaybe; + amount1Out_lte?: InputMaybe; + amount1Out_not_contains?: InputMaybe; + amount1Out_not_containsInsensitive?: InputMaybe; + amount1Out_not_endsWith?: InputMaybe; + amount1Out_not_eq?: InputMaybe; + amount1Out_not_in?: InputMaybe>; + amount1Out_not_startsWith?: InputMaybe; + amount1Out_startsWith?: InputMaybe; + amountUSD_contains?: InputMaybe; + amountUSD_containsInsensitive?: InputMaybe; + amountUSD_endsWith?: InputMaybe; + amountUSD_eq?: InputMaybe; + amountUSD_gt?: InputMaybe; + amountUSD_gte?: InputMaybe; + amountUSD_in?: InputMaybe>; + amountUSD_isNull?: InputMaybe; + amountUSD_lt?: InputMaybe; + amountUSD_lte?: InputMaybe; + amountUSD_not_contains?: InputMaybe; + amountUSD_not_containsInsensitive?: InputMaybe; + amountUSD_not_endsWith?: InputMaybe; + amountUSD_not_eq?: InputMaybe; + amountUSD_not_in?: InputMaybe>; + amountUSD_not_startsWith?: InputMaybe; + amountUSD_startsWith?: InputMaybe; + from_contains?: InputMaybe; + from_containsInsensitive?: InputMaybe; + from_endsWith?: InputMaybe; + from_eq?: InputMaybe; + from_gt?: InputMaybe; + from_gte?: InputMaybe; + from_in?: InputMaybe>; + from_isNull?: InputMaybe; + from_lt?: InputMaybe; + from_lte?: InputMaybe; + from_not_contains?: InputMaybe; + from_not_containsInsensitive?: InputMaybe; + from_not_endsWith?: InputMaybe; + from_not_eq?: InputMaybe; + from_not_in?: InputMaybe>; + from_not_startsWith?: InputMaybe; + from_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + logIndex_eq?: InputMaybe; + logIndex_gt?: InputMaybe; + logIndex_gte?: InputMaybe; + logIndex_in?: InputMaybe>; + logIndex_isNull?: InputMaybe; + logIndex_lt?: InputMaybe; + logIndex_lte?: InputMaybe; + logIndex_not_eq?: InputMaybe; + logIndex_not_in?: InputMaybe>; + pair?: InputMaybe; + pair_isNull?: InputMaybe; + sender_contains?: InputMaybe; + sender_containsInsensitive?: InputMaybe; + sender_endsWith?: InputMaybe; + sender_eq?: InputMaybe; + sender_gt?: InputMaybe; + sender_gte?: InputMaybe; + sender_in?: InputMaybe>; + sender_isNull?: InputMaybe; + sender_lt?: InputMaybe; + sender_lte?: InputMaybe; + sender_not_contains?: InputMaybe; + sender_not_containsInsensitive?: InputMaybe; + sender_not_endsWith?: InputMaybe; + sender_not_eq?: InputMaybe; + sender_not_in?: InputMaybe>; + sender_not_startsWith?: InputMaybe; + sender_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_containsInsensitive?: InputMaybe; + to_endsWith?: InputMaybe; + to_eq?: InputMaybe; + to_gt?: InputMaybe; + to_gte?: InputMaybe; + to_in?: InputMaybe>; + to_isNull?: InputMaybe; + to_lt?: InputMaybe; + to_lte?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_containsInsensitive?: InputMaybe; + to_not_endsWith?: InputMaybe; + to_not_eq?: InputMaybe; + to_not_in?: InputMaybe>; + to_not_startsWith?: InputMaybe; + to_startsWith?: InputMaybe; + transaction?: InputMaybe; + transaction_isNull?: InputMaybe; +}; + +export type SwapsConnection = { + __typename?: 'SwapsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Token = { + __typename?: 'Token'; + decimals: Scalars['Int']['output']; + /** BigDecimal */ + derivedETH: Scalars['String']['output']; + id: Scalars['String']['output']; + name: Scalars['String']['output']; + pairBase: Array; + pairDayDataBase: Array; + pairDayDataQuote: Array; + pairQuote: Array; + symbol: Scalars['String']['output']; + tokenDayData: Array; + /** BigDecimal */ + totalLiquidity: Scalars['String']['output']; + totalSupply: Scalars['String']['output']; + /** BigDecimal */ + tradeVolume: Scalars['String']['output']; + /** BigDecimal */ + tradeVolumeUSD: Scalars['String']['output']; + txCount: Scalars['Int']['output']; + /** BigDecimal */ + untrackedVolumeUSD: Scalars['String']['output']; +}; + + +export type TokenPairBaseArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type TokenPairDayDataBaseArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type TokenPairDayDataQuoteArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type TokenPairQuoteArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type TokenTokenDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type TokenDayData = { + __typename?: 'TokenDayData'; + dailyTxns: Scalars['Int']['output']; + dailyVolumeETH: Scalars['String']['output']; + dailyVolumeToken: Scalars['String']['output']; + dailyVolumeUSD: Scalars['String']['output']; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + priceUSD: Scalars['String']['output']; + token: Token; + totalLiquidityETH: Scalars['String']['output']; + totalLiquidityToken: Scalars['String']['output']; + totalLiquidityUSD: Scalars['String']['output']; +}; + +export type TokenDayDataConnection = { + __typename?: 'TokenDayDataConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type TokenDayDataEdge = { + __typename?: 'TokenDayDataEdge'; + cursor: Scalars['String']['output']; + node: TokenDayData; +}; + +export enum TokenDayDataOrderByInput { + DailyTxnsAsc = 'dailyTxns_ASC', + DailyTxnsDesc = 'dailyTxns_DESC', + DailyVolumeEthAsc = 'dailyVolumeETH_ASC', + DailyVolumeEthDesc = 'dailyVolumeETH_DESC', + DailyVolumeTokenAsc = 'dailyVolumeToken_ASC', + DailyVolumeTokenDesc = 'dailyVolumeToken_DESC', + DailyVolumeUsdAsc = 'dailyVolumeUSD_ASC', + DailyVolumeUsdDesc = 'dailyVolumeUSD_DESC', + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + PriceUsdAsc = 'priceUSD_ASC', + PriceUsdDesc = 'priceUSD_DESC', + TokenDecimalsAsc = 'token_decimals_ASC', + TokenDecimalsDesc = 'token_decimals_DESC', + TokenDerivedEthAsc = 'token_derivedETH_ASC', + TokenDerivedEthDesc = 'token_derivedETH_DESC', + TokenIdAsc = 'token_id_ASC', + TokenIdDesc = 'token_id_DESC', + TokenNameAsc = 'token_name_ASC', + TokenNameDesc = 'token_name_DESC', + TokenSymbolAsc = 'token_symbol_ASC', + TokenSymbolDesc = 'token_symbol_DESC', + TokenTotalLiquidityAsc = 'token_totalLiquidity_ASC', + TokenTotalLiquidityDesc = 'token_totalLiquidity_DESC', + TokenTotalSupplyAsc = 'token_totalSupply_ASC', + TokenTotalSupplyDesc = 'token_totalSupply_DESC', + TokenTradeVolumeUsdAsc = 'token_tradeVolumeUSD_ASC', + TokenTradeVolumeUsdDesc = 'token_tradeVolumeUSD_DESC', + TokenTradeVolumeAsc = 'token_tradeVolume_ASC', + TokenTradeVolumeDesc = 'token_tradeVolume_DESC', + TokenTxCountAsc = 'token_txCount_ASC', + TokenTxCountDesc = 'token_txCount_DESC', + TokenUntrackedVolumeUsdAsc = 'token_untrackedVolumeUSD_ASC', + TokenUntrackedVolumeUsdDesc = 'token_untrackedVolumeUSD_DESC', + TotalLiquidityEthAsc = 'totalLiquidityETH_ASC', + TotalLiquidityEthDesc = 'totalLiquidityETH_DESC', + TotalLiquidityTokenAsc = 'totalLiquidityToken_ASC', + TotalLiquidityTokenDesc = 'totalLiquidityToken_DESC', + TotalLiquidityUsdAsc = 'totalLiquidityUSD_ASC', + TotalLiquidityUsdDesc = 'totalLiquidityUSD_DESC' +} + +export type TokenDayDataWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + dailyTxns_eq?: InputMaybe; + dailyTxns_gt?: InputMaybe; + dailyTxns_gte?: InputMaybe; + dailyTxns_in?: InputMaybe>; + dailyTxns_isNull?: InputMaybe; + dailyTxns_lt?: InputMaybe; + dailyTxns_lte?: InputMaybe; + dailyTxns_not_eq?: InputMaybe; + dailyTxns_not_in?: InputMaybe>; + dailyVolumeETH_contains?: InputMaybe; + dailyVolumeETH_containsInsensitive?: InputMaybe; + dailyVolumeETH_endsWith?: InputMaybe; + dailyVolumeETH_eq?: InputMaybe; + dailyVolumeETH_gt?: InputMaybe; + dailyVolumeETH_gte?: InputMaybe; + dailyVolumeETH_in?: InputMaybe>; + dailyVolumeETH_isNull?: InputMaybe; + dailyVolumeETH_lt?: InputMaybe; + dailyVolumeETH_lte?: InputMaybe; + dailyVolumeETH_not_contains?: InputMaybe; + dailyVolumeETH_not_containsInsensitive?: InputMaybe; + dailyVolumeETH_not_endsWith?: InputMaybe; + dailyVolumeETH_not_eq?: InputMaybe; + dailyVolumeETH_not_in?: InputMaybe>; + dailyVolumeETH_not_startsWith?: InputMaybe; + dailyVolumeETH_startsWith?: InputMaybe; + dailyVolumeToken_contains?: InputMaybe; + dailyVolumeToken_containsInsensitive?: InputMaybe; + dailyVolumeToken_endsWith?: InputMaybe; + dailyVolumeToken_eq?: InputMaybe; + dailyVolumeToken_gt?: InputMaybe; + dailyVolumeToken_gte?: InputMaybe; + dailyVolumeToken_in?: InputMaybe>; + dailyVolumeToken_isNull?: InputMaybe; + dailyVolumeToken_lt?: InputMaybe; + dailyVolumeToken_lte?: InputMaybe; + dailyVolumeToken_not_contains?: InputMaybe; + dailyVolumeToken_not_containsInsensitive?: InputMaybe; + dailyVolumeToken_not_endsWith?: InputMaybe; + dailyVolumeToken_not_eq?: InputMaybe; + dailyVolumeToken_not_in?: InputMaybe>; + dailyVolumeToken_not_startsWith?: InputMaybe; + dailyVolumeToken_startsWith?: InputMaybe; + dailyVolumeUSD_contains?: InputMaybe; + dailyVolumeUSD_containsInsensitive?: InputMaybe; + dailyVolumeUSD_endsWith?: InputMaybe; + dailyVolumeUSD_eq?: InputMaybe; + dailyVolumeUSD_gt?: InputMaybe; + dailyVolumeUSD_gte?: InputMaybe; + dailyVolumeUSD_in?: InputMaybe>; + dailyVolumeUSD_isNull?: InputMaybe; + dailyVolumeUSD_lt?: InputMaybe; + dailyVolumeUSD_lte?: InputMaybe; + dailyVolumeUSD_not_contains?: InputMaybe; + dailyVolumeUSD_not_containsInsensitive?: InputMaybe; + dailyVolumeUSD_not_endsWith?: InputMaybe; + dailyVolumeUSD_not_eq?: InputMaybe; + dailyVolumeUSD_not_in?: InputMaybe>; + dailyVolumeUSD_not_startsWith?: InputMaybe; + dailyVolumeUSD_startsWith?: InputMaybe; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + priceUSD_contains?: InputMaybe; + priceUSD_containsInsensitive?: InputMaybe; + priceUSD_endsWith?: InputMaybe; + priceUSD_eq?: InputMaybe; + priceUSD_gt?: InputMaybe; + priceUSD_gte?: InputMaybe; + priceUSD_in?: InputMaybe>; + priceUSD_isNull?: InputMaybe; + priceUSD_lt?: InputMaybe; + priceUSD_lte?: InputMaybe; + priceUSD_not_contains?: InputMaybe; + priceUSD_not_containsInsensitive?: InputMaybe; + priceUSD_not_endsWith?: InputMaybe; + priceUSD_not_eq?: InputMaybe; + priceUSD_not_in?: InputMaybe>; + priceUSD_not_startsWith?: InputMaybe; + priceUSD_startsWith?: InputMaybe; + token?: InputMaybe; + token_isNull?: InputMaybe; + totalLiquidityETH_contains?: InputMaybe; + totalLiquidityETH_containsInsensitive?: InputMaybe; + totalLiquidityETH_endsWith?: InputMaybe; + totalLiquidityETH_eq?: InputMaybe; + totalLiquidityETH_gt?: InputMaybe; + totalLiquidityETH_gte?: InputMaybe; + totalLiquidityETH_in?: InputMaybe>; + totalLiquidityETH_isNull?: InputMaybe; + totalLiquidityETH_lt?: InputMaybe; + totalLiquidityETH_lte?: InputMaybe; + totalLiquidityETH_not_contains?: InputMaybe; + totalLiquidityETH_not_containsInsensitive?: InputMaybe; + totalLiquidityETH_not_endsWith?: InputMaybe; + totalLiquidityETH_not_eq?: InputMaybe; + totalLiquidityETH_not_in?: InputMaybe>; + totalLiquidityETH_not_startsWith?: InputMaybe; + totalLiquidityETH_startsWith?: InputMaybe; + totalLiquidityToken_contains?: InputMaybe; + totalLiquidityToken_containsInsensitive?: InputMaybe; + totalLiquidityToken_endsWith?: InputMaybe; + totalLiquidityToken_eq?: InputMaybe; + totalLiquidityToken_gt?: InputMaybe; + totalLiquidityToken_gte?: InputMaybe; + totalLiquidityToken_in?: InputMaybe>; + totalLiquidityToken_isNull?: InputMaybe; + totalLiquidityToken_lt?: InputMaybe; + totalLiquidityToken_lte?: InputMaybe; + totalLiquidityToken_not_contains?: InputMaybe; + totalLiquidityToken_not_containsInsensitive?: InputMaybe; + totalLiquidityToken_not_endsWith?: InputMaybe; + totalLiquidityToken_not_eq?: InputMaybe; + totalLiquidityToken_not_in?: InputMaybe>; + totalLiquidityToken_not_startsWith?: InputMaybe; + totalLiquidityToken_startsWith?: InputMaybe; + totalLiquidityUSD_contains?: InputMaybe; + totalLiquidityUSD_containsInsensitive?: InputMaybe; + totalLiquidityUSD_endsWith?: InputMaybe; + totalLiquidityUSD_eq?: InputMaybe; + totalLiquidityUSD_gt?: InputMaybe; + totalLiquidityUSD_gte?: InputMaybe; + totalLiquidityUSD_in?: InputMaybe>; + totalLiquidityUSD_isNull?: InputMaybe; + totalLiquidityUSD_lt?: InputMaybe; + totalLiquidityUSD_lte?: InputMaybe; + totalLiquidityUSD_not_contains?: InputMaybe; + totalLiquidityUSD_not_containsInsensitive?: InputMaybe; + totalLiquidityUSD_not_endsWith?: InputMaybe; + totalLiquidityUSD_not_eq?: InputMaybe; + totalLiquidityUSD_not_in?: InputMaybe>; + totalLiquidityUSD_not_startsWith?: InputMaybe; + totalLiquidityUSD_startsWith?: InputMaybe; +}; + +export type TokenEdge = { + __typename?: 'TokenEdge'; + cursor: Scalars['String']['output']; + node: Token; +}; + +export enum TokenOrderByInput { + DecimalsAsc = 'decimals_ASC', + DecimalsDesc = 'decimals_DESC', + DerivedEthAsc = 'derivedETH_ASC', + DerivedEthDesc = 'derivedETH_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + NameAsc = 'name_ASC', + NameDesc = 'name_DESC', + SymbolAsc = 'symbol_ASC', + SymbolDesc = 'symbol_DESC', + TotalLiquidityAsc = 'totalLiquidity_ASC', + TotalLiquidityDesc = 'totalLiquidity_DESC', + TotalSupplyAsc = 'totalSupply_ASC', + TotalSupplyDesc = 'totalSupply_DESC', + TradeVolumeUsdAsc = 'tradeVolumeUSD_ASC', + TradeVolumeUsdDesc = 'tradeVolumeUSD_DESC', + TradeVolumeAsc = 'tradeVolume_ASC', + TradeVolumeDesc = 'tradeVolume_DESC', + TxCountAsc = 'txCount_ASC', + TxCountDesc = 'txCount_DESC', + UntrackedVolumeUsdAsc = 'untrackedVolumeUSD_ASC', + UntrackedVolumeUsdDesc = 'untrackedVolumeUSD_DESC' +} + +export type TokenWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + decimals_eq?: InputMaybe; + decimals_gt?: InputMaybe; + decimals_gte?: InputMaybe; + decimals_in?: InputMaybe>; + decimals_isNull?: InputMaybe; + decimals_lt?: InputMaybe; + decimals_lte?: InputMaybe; + decimals_not_eq?: InputMaybe; + decimals_not_in?: InputMaybe>; + derivedETH_contains?: InputMaybe; + derivedETH_containsInsensitive?: InputMaybe; + derivedETH_endsWith?: InputMaybe; + derivedETH_eq?: InputMaybe; + derivedETH_gt?: InputMaybe; + derivedETH_gte?: InputMaybe; + derivedETH_in?: InputMaybe>; + derivedETH_isNull?: InputMaybe; + derivedETH_lt?: InputMaybe; + derivedETH_lte?: InputMaybe; + derivedETH_not_contains?: InputMaybe; + derivedETH_not_containsInsensitive?: InputMaybe; + derivedETH_not_endsWith?: InputMaybe; + derivedETH_not_eq?: InputMaybe; + derivedETH_not_in?: InputMaybe>; + derivedETH_not_startsWith?: InputMaybe; + derivedETH_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + name_contains?: InputMaybe; + name_containsInsensitive?: InputMaybe; + name_endsWith?: InputMaybe; + name_eq?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_isNull?: InputMaybe; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_containsInsensitive?: InputMaybe; + name_not_endsWith?: InputMaybe; + name_not_eq?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_startsWith?: InputMaybe; + name_startsWith?: InputMaybe; + pairBase_every?: InputMaybe; + pairBase_none?: InputMaybe; + pairBase_some?: InputMaybe; + pairDayDataBase_every?: InputMaybe; + pairDayDataBase_none?: InputMaybe; + pairDayDataBase_some?: InputMaybe; + pairDayDataQuote_every?: InputMaybe; + pairDayDataQuote_none?: InputMaybe; + pairDayDataQuote_some?: InputMaybe; + pairQuote_every?: InputMaybe; + pairQuote_none?: InputMaybe; + pairQuote_some?: InputMaybe; + symbol_contains?: InputMaybe; + symbol_containsInsensitive?: InputMaybe; + symbol_endsWith?: InputMaybe; + symbol_eq?: InputMaybe; + symbol_gt?: InputMaybe; + symbol_gte?: InputMaybe; + symbol_in?: InputMaybe>; + symbol_isNull?: InputMaybe; + symbol_lt?: InputMaybe; + symbol_lte?: InputMaybe; + symbol_not_contains?: InputMaybe; + symbol_not_containsInsensitive?: InputMaybe; + symbol_not_endsWith?: InputMaybe; + symbol_not_eq?: InputMaybe; + symbol_not_in?: InputMaybe>; + symbol_not_startsWith?: InputMaybe; + symbol_startsWith?: InputMaybe; + tokenDayData_every?: InputMaybe; + tokenDayData_none?: InputMaybe; + tokenDayData_some?: InputMaybe; + totalLiquidity_contains?: InputMaybe; + totalLiquidity_containsInsensitive?: InputMaybe; + totalLiquidity_endsWith?: InputMaybe; + totalLiquidity_eq?: InputMaybe; + totalLiquidity_gt?: InputMaybe; + totalLiquidity_gte?: InputMaybe; + totalLiquidity_in?: InputMaybe>; + totalLiquidity_isNull?: InputMaybe; + totalLiquidity_lt?: InputMaybe; + totalLiquidity_lte?: InputMaybe; + totalLiquidity_not_contains?: InputMaybe; + totalLiquidity_not_containsInsensitive?: InputMaybe; + totalLiquidity_not_endsWith?: InputMaybe; + totalLiquidity_not_eq?: InputMaybe; + totalLiquidity_not_in?: InputMaybe>; + totalLiquidity_not_startsWith?: InputMaybe; + totalLiquidity_startsWith?: InputMaybe; + totalSupply_contains?: InputMaybe; + totalSupply_containsInsensitive?: InputMaybe; + totalSupply_endsWith?: InputMaybe; + totalSupply_eq?: InputMaybe; + totalSupply_gt?: InputMaybe; + totalSupply_gte?: InputMaybe; + totalSupply_in?: InputMaybe>; + totalSupply_isNull?: InputMaybe; + totalSupply_lt?: InputMaybe; + totalSupply_lte?: InputMaybe; + totalSupply_not_contains?: InputMaybe; + totalSupply_not_containsInsensitive?: InputMaybe; + totalSupply_not_endsWith?: InputMaybe; + totalSupply_not_eq?: InputMaybe; + totalSupply_not_in?: InputMaybe>; + totalSupply_not_startsWith?: InputMaybe; + totalSupply_startsWith?: InputMaybe; + tradeVolumeUSD_contains?: InputMaybe; + tradeVolumeUSD_containsInsensitive?: InputMaybe; + tradeVolumeUSD_endsWith?: InputMaybe; + tradeVolumeUSD_eq?: InputMaybe; + tradeVolumeUSD_gt?: InputMaybe; + tradeVolumeUSD_gte?: InputMaybe; + tradeVolumeUSD_in?: InputMaybe>; + tradeVolumeUSD_isNull?: InputMaybe; + tradeVolumeUSD_lt?: InputMaybe; + tradeVolumeUSD_lte?: InputMaybe; + tradeVolumeUSD_not_contains?: InputMaybe; + tradeVolumeUSD_not_containsInsensitive?: InputMaybe; + tradeVolumeUSD_not_endsWith?: InputMaybe; + tradeVolumeUSD_not_eq?: InputMaybe; + tradeVolumeUSD_not_in?: InputMaybe>; + tradeVolumeUSD_not_startsWith?: InputMaybe; + tradeVolumeUSD_startsWith?: InputMaybe; + tradeVolume_contains?: InputMaybe; + tradeVolume_containsInsensitive?: InputMaybe; + tradeVolume_endsWith?: InputMaybe; + tradeVolume_eq?: InputMaybe; + tradeVolume_gt?: InputMaybe; + tradeVolume_gte?: InputMaybe; + tradeVolume_in?: InputMaybe>; + tradeVolume_isNull?: InputMaybe; + tradeVolume_lt?: InputMaybe; + tradeVolume_lte?: InputMaybe; + tradeVolume_not_contains?: InputMaybe; + tradeVolume_not_containsInsensitive?: InputMaybe; + tradeVolume_not_endsWith?: InputMaybe; + tradeVolume_not_eq?: InputMaybe; + tradeVolume_not_in?: InputMaybe>; + tradeVolume_not_startsWith?: InputMaybe; + tradeVolume_startsWith?: InputMaybe; + txCount_eq?: InputMaybe; + txCount_gt?: InputMaybe; + txCount_gte?: InputMaybe; + txCount_in?: InputMaybe>; + txCount_isNull?: InputMaybe; + txCount_lt?: InputMaybe; + txCount_lte?: InputMaybe; + txCount_not_eq?: InputMaybe; + txCount_not_in?: InputMaybe>; + untrackedVolumeUSD_contains?: InputMaybe; + untrackedVolumeUSD_containsInsensitive?: InputMaybe; + untrackedVolumeUSD_endsWith?: InputMaybe; + untrackedVolumeUSD_eq?: InputMaybe; + untrackedVolumeUSD_gt?: InputMaybe; + untrackedVolumeUSD_gte?: InputMaybe; + untrackedVolumeUSD_in?: InputMaybe>; + untrackedVolumeUSD_isNull?: InputMaybe; + untrackedVolumeUSD_lt?: InputMaybe; + untrackedVolumeUSD_lte?: InputMaybe; + untrackedVolumeUSD_not_contains?: InputMaybe; + untrackedVolumeUSD_not_containsInsensitive?: InputMaybe; + untrackedVolumeUSD_not_endsWith?: InputMaybe; + untrackedVolumeUSD_not_eq?: InputMaybe; + untrackedVolumeUSD_not_in?: InputMaybe>; + untrackedVolumeUSD_not_startsWith?: InputMaybe; + untrackedVolumeUSD_startsWith?: InputMaybe; +}; + +export type TokensConnection = { + __typename?: 'TokensConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Transaction = { + __typename?: 'Transaction'; + blockNumber: Scalars['BigInt']['output']; + burns: Array; + id: Scalars['String']['output']; + mints: Array; + swaps: Array; + timestamp: Scalars['DateTime']['output']; +}; + +export type TransactionEdge = { + __typename?: 'TransactionEdge'; + cursor: Scalars['String']['output']; + node: Transaction; +}; + +export enum TransactionOrderByInput { + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberDesc = 'blockNumber_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC' +} + +export type TransactionWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + burns_containsAll?: InputMaybe>; + burns_containsAny?: InputMaybe>; + burns_containsNone?: InputMaybe>; + burns_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + mints_containsAll?: InputMaybe>; + mints_containsAny?: InputMaybe>; + mints_containsNone?: InputMaybe>; + mints_isNull?: InputMaybe; + swaps_containsAll?: InputMaybe>; + swaps_containsAny?: InputMaybe>; + swaps_containsNone?: InputMaybe>; + swaps_isNull?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; +}; + +export type TransactionsConnection = { + __typename?: 'TransactionsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Transfer = { + __typename?: 'Transfer'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + extrinsicHash?: Maybe; + fee: Scalars['BigInt']['output']; + from: Scalars['String']['output']; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + to: Scalars['String']['output']; +}; + +export type TransferEdge = { + __typename?: 'TransferEdge'; + cursor: Scalars['String']['output']; + node: Transfer; +}; + +export enum TransferOrderByInput { + AmountAsc = 'amount_ASC', + AmountDesc = 'amount_DESC', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberDesc = 'blockNumber_DESC', + ExtrinsicHashAsc = 'extrinsicHash_ASC', + ExtrinsicHashDesc = 'extrinsicHash_DESC', + FeeAsc = 'fee_ASC', + FeeDesc = 'fee_DESC', + FromAsc = 'from_ASC', + FromDesc = 'from_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + ToAsc = 'to_ASC', + ToDesc = 'to_DESC' +} + +export type TransferWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + extrinsicHash_contains?: InputMaybe; + extrinsicHash_containsInsensitive?: InputMaybe; + extrinsicHash_endsWith?: InputMaybe; + extrinsicHash_eq?: InputMaybe; + extrinsicHash_gt?: InputMaybe; + extrinsicHash_gte?: InputMaybe; + extrinsicHash_in?: InputMaybe>; + extrinsicHash_isNull?: InputMaybe; + extrinsicHash_lt?: InputMaybe; + extrinsicHash_lte?: InputMaybe; + extrinsicHash_not_contains?: InputMaybe; + extrinsicHash_not_containsInsensitive?: InputMaybe; + extrinsicHash_not_endsWith?: InputMaybe; + extrinsicHash_not_eq?: InputMaybe; + extrinsicHash_not_in?: InputMaybe>; + extrinsicHash_not_startsWith?: InputMaybe; + extrinsicHash_startsWith?: InputMaybe; + fee_eq?: InputMaybe; + fee_gt?: InputMaybe; + fee_gte?: InputMaybe; + fee_in?: InputMaybe>; + fee_isNull?: InputMaybe; + fee_lt?: InputMaybe; + fee_lte?: InputMaybe; + fee_not_eq?: InputMaybe; + fee_not_in?: InputMaybe>; + from_contains?: InputMaybe; + from_containsInsensitive?: InputMaybe; + from_endsWith?: InputMaybe; + from_eq?: InputMaybe; + from_gt?: InputMaybe; + from_gte?: InputMaybe; + from_in?: InputMaybe>; + from_isNull?: InputMaybe; + from_lt?: InputMaybe; + from_lte?: InputMaybe; + from_not_contains?: InputMaybe; + from_not_containsInsensitive?: InputMaybe; + from_not_endsWith?: InputMaybe; + from_not_eq?: InputMaybe; + from_not_in?: InputMaybe>; + from_not_startsWith?: InputMaybe; + from_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_containsInsensitive?: InputMaybe; + to_endsWith?: InputMaybe; + to_eq?: InputMaybe; + to_gt?: InputMaybe; + to_gte?: InputMaybe; + to_in?: InputMaybe>; + to_isNull?: InputMaybe; + to_lt?: InputMaybe; + to_lte?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_containsInsensitive?: InputMaybe; + to_not_endsWith?: InputMaybe; + to_not_eq?: InputMaybe; + to_not_in?: InputMaybe>; + to_not_startsWith?: InputMaybe; + to_startsWith?: InputMaybe; +}; + +export type TransfersConnection = { + __typename?: 'TransfersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type User = { + __typename?: 'User'; + id: Scalars['String']['output']; + liquidityPositions: Array; + stableSwapLiquidityPositions: Array; + stakePositions: Array; + /** BigDecimal */ + usdSwapped: Scalars['String']['output']; +}; + + +export type UserLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type UserStableSwapLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type UserStakePositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type UserEdge = { + __typename?: 'UserEdge'; + cursor: Scalars['String']['output']; + node: User; +}; + +export enum UserOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + UsdSwappedAsc = 'usdSwapped_ASC', + UsdSwappedDesc = 'usdSwapped_DESC' +} + +export type UserWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + liquidityPositions_every?: InputMaybe; + liquidityPositions_none?: InputMaybe; + liquidityPositions_some?: InputMaybe; + stableSwapLiquidityPositions_every?: InputMaybe; + stableSwapLiquidityPositions_none?: InputMaybe; + stableSwapLiquidityPositions_some?: InputMaybe; + stakePositions_every?: InputMaybe; + stakePositions_none?: InputMaybe; + stakePositions_some?: InputMaybe; + usdSwapped_contains?: InputMaybe; + usdSwapped_containsInsensitive?: InputMaybe; + usdSwapped_endsWith?: InputMaybe; + usdSwapped_eq?: InputMaybe; + usdSwapped_gt?: InputMaybe; + usdSwapped_gte?: InputMaybe; + usdSwapped_in?: InputMaybe>; + usdSwapped_isNull?: InputMaybe; + usdSwapped_lt?: InputMaybe; + usdSwapped_lte?: InputMaybe; + usdSwapped_not_contains?: InputMaybe; + usdSwapped_not_containsInsensitive?: InputMaybe; + usdSwapped_not_endsWith?: InputMaybe; + usdSwapped_not_eq?: InputMaybe; + usdSwapped_not_in?: InputMaybe>; + usdSwapped_not_startsWith?: InputMaybe; + usdSwapped_startsWith?: InputMaybe; +}; + +export type UsersConnection = { + __typename?: 'UsersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type WhereIdInput = { + id: Scalars['String']['input']; +}; + +export type ZlkInfo = { + __typename?: 'ZLKInfo'; + burn: Scalars['BigInt']['output']; + id: Scalars['String']['output']; + updatedDate: Scalars['DateTime']['output']; +}; + +export type ZlkInfoEdge = { + __typename?: 'ZLKInfoEdge'; + cursor: Scalars['String']['output']; + node: ZlkInfo; +}; + +export enum ZlkInfoOrderByInput { + BurnAsc = 'burn_ASC', + BurnDesc = 'burn_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + UpdatedDateAsc = 'updatedDate_ASC', + UpdatedDateDesc = 'updatedDate_DESC' +} + +export type ZlkInfoWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + burn_eq?: InputMaybe; + burn_gt?: InputMaybe; + burn_gte?: InputMaybe; + burn_in?: InputMaybe>; + burn_isNull?: InputMaybe; + burn_lt?: InputMaybe; + burn_lte?: InputMaybe; + burn_not_eq?: InputMaybe; + burn_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + updatedDate_eq?: InputMaybe; + updatedDate_gt?: InputMaybe; + updatedDate_gte?: InputMaybe; + updatedDate_in?: InputMaybe>; + updatedDate_isNull?: InputMaybe; + updatedDate_lt?: InputMaybe; + updatedDate_lte?: InputMaybe; + updatedDate_not_eq?: InputMaybe; + updatedDate_not_in?: InputMaybe>; +}; + +export type ZlkInfosConnection = { + __typename?: 'ZLKInfosConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type ZenlinkDayInfo = { + __typename?: 'ZenlinkDayInfo'; + dailyVolumeUSD: Scalars['String']['output']; + date: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + stableInfo: StableSwapDayData; + standardInfo: FactoryDayData; + tvlUSD: Scalars['String']['output']; +}; + +export type ZenlinkDayInfoEdge = { + __typename?: 'ZenlinkDayInfoEdge'; + cursor: Scalars['String']['output']; + node: ZenlinkDayInfo; +}; + +export enum ZenlinkDayInfoOrderByInput { + DailyVolumeUsdAsc = 'dailyVolumeUSD_ASC', + DailyVolumeUsdDesc = 'dailyVolumeUSD_DESC', + DateAsc = 'date_ASC', + DateDesc = 'date_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + StableInfoDailyVolumeUsdAsc = 'stableInfo_dailyVolumeUSD_ASC', + StableInfoDailyVolumeUsdDesc = 'stableInfo_dailyVolumeUSD_DESC', + StableInfoDateAsc = 'stableInfo_date_ASC', + StableInfoDateDesc = 'stableInfo_date_DESC', + StableInfoIdAsc = 'stableInfo_id_ASC', + StableInfoIdDesc = 'stableInfo_id_DESC', + StableInfoTvlUsdAsc = 'stableInfo_tvlUSD_ASC', + StableInfoTvlUsdDesc = 'stableInfo_tvlUSD_DESC', + StandardInfoDailyVolumeEthAsc = 'standardInfo_dailyVolumeETH_ASC', + StandardInfoDailyVolumeEthDesc = 'standardInfo_dailyVolumeETH_DESC', + StandardInfoDailyVolumeUsdAsc = 'standardInfo_dailyVolumeUSD_ASC', + StandardInfoDailyVolumeUsdDesc = 'standardInfo_dailyVolumeUSD_DESC', + StandardInfoDailyVolumeUntrackedAsc = 'standardInfo_dailyVolumeUntracked_ASC', + StandardInfoDailyVolumeUntrackedDesc = 'standardInfo_dailyVolumeUntracked_DESC', + StandardInfoDateAsc = 'standardInfo_date_ASC', + StandardInfoDateDesc = 'standardInfo_date_DESC', + StandardInfoIdAsc = 'standardInfo_id_ASC', + StandardInfoIdDesc = 'standardInfo_id_DESC', + StandardInfoTotalLiquidityEthAsc = 'standardInfo_totalLiquidityETH_ASC', + StandardInfoTotalLiquidityEthDesc = 'standardInfo_totalLiquidityETH_DESC', + StandardInfoTotalLiquidityUsdAsc = 'standardInfo_totalLiquidityUSD_ASC', + StandardInfoTotalLiquidityUsdDesc = 'standardInfo_totalLiquidityUSD_DESC', + StandardInfoTotalVolumeEthAsc = 'standardInfo_totalVolumeETH_ASC', + StandardInfoTotalVolumeEthDesc = 'standardInfo_totalVolumeETH_DESC', + StandardInfoTotalVolumeUsdAsc = 'standardInfo_totalVolumeUSD_ASC', + StandardInfoTotalVolumeUsdDesc = 'standardInfo_totalVolumeUSD_DESC', + StandardInfoTxCountAsc = 'standardInfo_txCount_ASC', + StandardInfoTxCountDesc = 'standardInfo_txCount_DESC', + TvlUsdAsc = 'tvlUSD_ASC', + TvlUsdDesc = 'tvlUSD_DESC' +} + +export type ZenlinkDayInfoWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + dailyVolumeUSD_contains?: InputMaybe; + dailyVolumeUSD_containsInsensitive?: InputMaybe; + dailyVolumeUSD_endsWith?: InputMaybe; + dailyVolumeUSD_eq?: InputMaybe; + dailyVolumeUSD_gt?: InputMaybe; + dailyVolumeUSD_gte?: InputMaybe; + dailyVolumeUSD_in?: InputMaybe>; + dailyVolumeUSD_isNull?: InputMaybe; + dailyVolumeUSD_lt?: InputMaybe; + dailyVolumeUSD_lte?: InputMaybe; + dailyVolumeUSD_not_contains?: InputMaybe; + dailyVolumeUSD_not_containsInsensitive?: InputMaybe; + dailyVolumeUSD_not_endsWith?: InputMaybe; + dailyVolumeUSD_not_eq?: InputMaybe; + dailyVolumeUSD_not_in?: InputMaybe>; + dailyVolumeUSD_not_startsWith?: InputMaybe; + dailyVolumeUSD_startsWith?: InputMaybe; + date_eq?: InputMaybe; + date_gt?: InputMaybe; + date_gte?: InputMaybe; + date_in?: InputMaybe>; + date_isNull?: InputMaybe; + date_lt?: InputMaybe; + date_lte?: InputMaybe; + date_not_eq?: InputMaybe; + date_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stableInfo?: InputMaybe; + stableInfo_isNull?: InputMaybe; + standardInfo?: InputMaybe; + standardInfo_isNull?: InputMaybe; + tvlUSD_contains?: InputMaybe; + tvlUSD_containsInsensitive?: InputMaybe; + tvlUSD_endsWith?: InputMaybe; + tvlUSD_eq?: InputMaybe; + tvlUSD_gt?: InputMaybe; + tvlUSD_gte?: InputMaybe; + tvlUSD_in?: InputMaybe>; + tvlUSD_isNull?: InputMaybe; + tvlUSD_lt?: InputMaybe; + tvlUSD_lte?: InputMaybe; + tvlUSD_not_contains?: InputMaybe; + tvlUSD_not_containsInsensitive?: InputMaybe; + tvlUSD_not_endsWith?: InputMaybe; + tvlUSD_not_eq?: InputMaybe; + tvlUSD_not_in?: InputMaybe>; + tvlUSD_not_startsWith?: InputMaybe; + tvlUSD_startsWith?: InputMaybe; +}; + +export type ZenlinkDayInfosConnection = { + __typename?: 'ZenlinkDayInfosConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type ZenlinkInfo = { + __typename?: 'ZenlinkInfo'; + factory: Factory; + id: Scalars['String']['output']; + stableSwapInfo: StableSwapInfo; + /** BigDecimal */ + totalTvlUSD: Scalars['String']['output']; + /** BigDecimal */ + totalVolumeUSD: Scalars['String']['output']; + txCount: Scalars['Int']['output']; + updatedDate: Scalars['DateTime']['output']; +}; + +export type ZenlinkInfoEdge = { + __typename?: 'ZenlinkInfoEdge'; + cursor: Scalars['String']['output']; + node: ZenlinkInfo; +}; + +export enum ZenlinkInfoOrderByInput { + FactoryIdAsc = 'factory_id_ASC', + FactoryIdDesc = 'factory_id_DESC', + FactoryPairCountAsc = 'factory_pairCount_ASC', + FactoryPairCountDesc = 'factory_pairCount_DESC', + FactoryTotalLiquidityEthAsc = 'factory_totalLiquidityETH_ASC', + FactoryTotalLiquidityEthDesc = 'factory_totalLiquidityETH_DESC', + FactoryTotalLiquidityUsdAsc = 'factory_totalLiquidityUSD_ASC', + FactoryTotalLiquidityUsdDesc = 'factory_totalLiquidityUSD_DESC', + FactoryTotalVolumeEthAsc = 'factory_totalVolumeETH_ASC', + FactoryTotalVolumeEthDesc = 'factory_totalVolumeETH_DESC', + FactoryTotalVolumeUsdAsc = 'factory_totalVolumeUSD_ASC', + FactoryTotalVolumeUsdDesc = 'factory_totalVolumeUSD_DESC', + FactoryTxCountAsc = 'factory_txCount_ASC', + FactoryTxCountDesc = 'factory_txCount_DESC', + FactoryUntrackedVolumeUsdAsc = 'factory_untrackedVolumeUSD_ASC', + FactoryUntrackedVolumeUsdDesc = 'factory_untrackedVolumeUSD_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + StableSwapInfoIdAsc = 'stableSwapInfo_id_ASC', + StableSwapInfoIdDesc = 'stableSwapInfo_id_DESC', + StableSwapInfoPoolCountAsc = 'stableSwapInfo_poolCount_ASC', + StableSwapInfoPoolCountDesc = 'stableSwapInfo_poolCount_DESC', + StableSwapInfoTotalTvlUsdAsc = 'stableSwapInfo_totalTvlUSD_ASC', + StableSwapInfoTotalTvlUsdDesc = 'stableSwapInfo_totalTvlUSD_DESC', + StableSwapInfoTotalVolumeUsdAsc = 'stableSwapInfo_totalVolumeUSD_ASC', + StableSwapInfoTotalVolumeUsdDesc = 'stableSwapInfo_totalVolumeUSD_DESC', + StableSwapInfoTxCountAsc = 'stableSwapInfo_txCount_ASC', + StableSwapInfoTxCountDesc = 'stableSwapInfo_txCount_DESC', + TotalTvlUsdAsc = 'totalTvlUSD_ASC', + TotalTvlUsdDesc = 'totalTvlUSD_DESC', + TotalVolumeUsdAsc = 'totalVolumeUSD_ASC', + TotalVolumeUsdDesc = 'totalVolumeUSD_DESC', + TxCountAsc = 'txCount_ASC', + TxCountDesc = 'txCount_DESC', + UpdatedDateAsc = 'updatedDate_ASC', + UpdatedDateDesc = 'updatedDate_DESC' +} + +export type ZenlinkInfoWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + factory?: InputMaybe; + factory_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stableSwapInfo?: InputMaybe; + stableSwapInfo_isNull?: InputMaybe; + totalTvlUSD_contains?: InputMaybe; + totalTvlUSD_containsInsensitive?: InputMaybe; + totalTvlUSD_endsWith?: InputMaybe; + totalTvlUSD_eq?: InputMaybe; + totalTvlUSD_gt?: InputMaybe; + totalTvlUSD_gte?: InputMaybe; + totalTvlUSD_in?: InputMaybe>; + totalTvlUSD_isNull?: InputMaybe; + totalTvlUSD_lt?: InputMaybe; + totalTvlUSD_lte?: InputMaybe; + totalTvlUSD_not_contains?: InputMaybe; + totalTvlUSD_not_containsInsensitive?: InputMaybe; + totalTvlUSD_not_endsWith?: InputMaybe; + totalTvlUSD_not_eq?: InputMaybe; + totalTvlUSD_not_in?: InputMaybe>; + totalTvlUSD_not_startsWith?: InputMaybe; + totalTvlUSD_startsWith?: InputMaybe; + totalVolumeUSD_contains?: InputMaybe; + totalVolumeUSD_containsInsensitive?: InputMaybe; + totalVolumeUSD_endsWith?: InputMaybe; + totalVolumeUSD_eq?: InputMaybe; + totalVolumeUSD_gt?: InputMaybe; + totalVolumeUSD_gte?: InputMaybe; + totalVolumeUSD_in?: InputMaybe>; + totalVolumeUSD_isNull?: InputMaybe; + totalVolumeUSD_lt?: InputMaybe; + totalVolumeUSD_lte?: InputMaybe; + totalVolumeUSD_not_contains?: InputMaybe; + totalVolumeUSD_not_containsInsensitive?: InputMaybe; + totalVolumeUSD_not_endsWith?: InputMaybe; + totalVolumeUSD_not_eq?: InputMaybe; + totalVolumeUSD_not_in?: InputMaybe>; + totalVolumeUSD_not_startsWith?: InputMaybe; + totalVolumeUSD_startsWith?: InputMaybe; + txCount_eq?: InputMaybe; + txCount_gt?: InputMaybe; + txCount_gte?: InputMaybe; + txCount_in?: InputMaybe>; + txCount_isNull?: InputMaybe; + txCount_lt?: InputMaybe; + txCount_lte?: InputMaybe; + txCount_not_eq?: InputMaybe; + txCount_not_in?: InputMaybe>; + updatedDate_eq?: InputMaybe; + updatedDate_gt?: InputMaybe; + updatedDate_gte?: InputMaybe; + updatedDate_in?: InputMaybe>; + updatedDate_isNull?: InputMaybe; + updatedDate_lt?: InputMaybe; + updatedDate_lte?: InputMaybe; + updatedDate_not_eq?: InputMaybe; + updatedDate_not_in?: InputMaybe>; +}; + +export type ZenlinkInfosConnection = { + __typename?: 'ZenlinkInfosConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type GetBackstopPoolsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetBackstopPoolsQuery = { __typename?: 'Query', backstopPools: Array<{ __typename?: 'BackstopPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any, token: { __typename?: 'NablaToken', id: string, decimals: number, name: string, symbol: string } }> }; + +export type GetSwapPoolsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetSwapPoolsQuery = { __typename?: 'Query', swapPools: Array<{ __typename?: 'SwapPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any, token: { __typename?: 'NablaToken', id: string, name: string, symbol: string, decimals: number }, router: { __typename?: 'Router', id: string, paused: boolean }, backstop: { __typename?: 'BackstopPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any } }> }; + +export type GetTokensQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetTokensQuery = { __typename?: 'Query', nablaTokens: Array<{ __typename?: 'NablaToken', id: string, name: string, symbol: string, decimals: number }> }; + + +export const GetBackstopPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getBackstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"backstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetSwapPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getSwapPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"swapPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}},{"kind":"Field","name":{"kind":"Name","value":"router"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}}]}},{"kind":"Field","name":{"kind":"Name","value":"backstop"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"nablaTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/gql/index.ts b/gql/index.ts new file mode 100644 index 00000000..f5159916 --- /dev/null +++ b/gql/index.ts @@ -0,0 +1,2 @@ +export * from "./fragment-masking"; +export * from "./gql"; \ No newline at end of file diff --git a/package.json b/package.json index 6c856318..80b4783d 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,13 @@ "lint:ts": "tsc --noEmit", "test": "jest", "test:watch": "jest --watchAll=true", + "codegen": "graphql-codegen --config codegen.ts", "format": "prettier . --write", "release": "semantic-release", "verify": "yarn lint && yarn lint:ts && yarn test" }, "dependencies": { - "@heroicons/react": "^2.0.16", + "@heroicons/react": "^2.0.18", "@hookform/resolvers": "^2.9.11", "@pendulum-chain/api": "^0.3.1", "@polkadot/api": "^9.9.1", @@ -35,13 +36,15 @@ "@talismn/connect-components": "^1.1.7", "@talismn/connect-ui": "^1.1.2", "@talismn/connect-wallets": "^1.2.3", - "@tanstack/react-query": "^4.24.10", - "@tanstack/react-table": "^8.7.9", + "@tanstack/react-query": "^4.32.6", + "@tanstack/react-table": "^8.9.3", "@walletconnect/modal": "^2.4.7", "@walletconnect/universal-provider": "^2.8.1", "big.js": "^6.2.1", "bn.js": "^5.2.1", "bs58": "^5.0.0", + "graphql": "~16.6.0", + "graphql-request": "~6.1.0", "lodash": "^4.17.21", "luxon": "^3.2.1", "match-sorter": "^6.3.1", @@ -50,10 +53,10 @@ "react-hook-form": "^7.43.2", "react-router-dom": "^6.8.1", "react-table": "^7.8.0", - "react-toastify": "^9.1.1", + "react-toastify": "^9.1.3", "stellar-sdk": "^10.4.1", "ts-node": "^10.9.1", - "yup": "^1.0.1" + "yup": "^1.2.0" }, "devDependencies": { "@babel/core": "^7.20.12", @@ -62,6 +65,8 @@ "@babel/preset-typescript": "^7.18.6", "@esbuild-plugins/node-globals-polyfill": "^0.1.1", "@esbuild-plugins/node-modules-polyfill": "^0.1.4", + "@graphql-codegen/cli": "~5.0.0", + "@graphql-codegen/client-preset": "~4.1.0", "@pendulum-chain/types": "^0.2.3", "@polkadot/types-augment": "^9.9.1", "@polkadot/types-codec": "^9.9.1", diff --git a/src/components/Asset/Selector/Modal/index.tsx b/src/components/Asset/Selector/Modal/index.tsx index cc1c5578..a0169aee 100644 --- a/src/components/Asset/Selector/Modal/index.tsx +++ b/src/components/Asset/Selector/Modal/index.tsx @@ -2,14 +2,14 @@ import { CheckIcon } from '@heroicons/react/20/solid'; import { matchSorter } from 'match-sorter'; import { ChangeEvent, useMemo, useState } from 'preact/compat'; import { Avatar, Button, Input, Modal, ModalProps } from 'react-daisyui'; +import { Token } from '../../../../../gql/graphql'; import { repeat } from '../../../../helpers/general'; -import { Asset } from '../../../../models/Asset'; import ModalCloseButton from '../../../Button/ModalClose'; import { Skeleton } from '../../../Skeleton'; export interface AssetListProps { - assets?: Asset[]; - onSelect: (asset: Asset) => void; + assets?: Token[]; + onSelect: (asset: Token) => void; selected?: string; } @@ -35,13 +35,13 @@ const AssetList = ({ assets, onSelect, selected }: AssetListProps): JSX.Element type="button" size="lg" variant="secondary" - key={token.address} + key={token.id} onClick={() => onSelect(token)} className="w-full items-center justify-start gap-4 px-3 py-1 border-0 bg-[rgba(0,0,0,.2)] text-left hover:opacity-80 dark:bg-[rgba(255,255,255,.12)]" > - - {selected == token.address && ( + + {selected == token.id && ( )} diff --git a/src/components/Asset/Selector/index.tsx b/src/components/Asset/Selector/index.tsx index acc4eac4..6a10aff6 100644 --- a/src/components/Asset/Selector/index.tsx +++ b/src/components/Asset/Selector/index.tsx @@ -1,14 +1,14 @@ import { ChevronDownIcon } from '@heroicons/react/24/outline'; -import { useCallback, useMemo, useState } from 'preact/compat'; +import { useCallback, useState } from 'preact/compat'; import { Button, ButtonProps } from 'react-daisyui'; +import { Token } from '../../../../gql/graphql'; import pendulumIcon from '../../../assets/pendulum-icon.svg'; -import { useAssets } from '../../../hooks/useAssets'; +import { useTokens } from '../../../hooks/nabla/useTokens'; import useBoolean from '../../../hooks/useBoolean'; -import { Asset } from '../../../models/Asset'; import { AssetSelectorModal } from './Modal'; export type AssetSelectorProps = { - onSelect: (asset: Asset) => void; + onSelect: (asset: Token) => void; selected?: string; } & ButtonProps; @@ -20,14 +20,15 @@ const iconSizes = { }; const AssetSelector = ({ onSelect, selected, size = 'xs', ...rest }: AssetSelectorProps): JSX.Element | null => { - const { isLoading, data: assets } = useAssets(); + const { isLoading, data } = useTokens(); + const { tokens, tokensMap } = data || {}; const [open, { setFalse, setTrue }] = useBoolean(); - const [selectedAsset, setSelectedAsset] = useState(); - const initialSelected = useMemo(() => assets?.find((i) => i.address === selected), [assets, selected]); + const [selectedAsset, setSelectedAsset] = useState(); + const initialSelected = selected ? tokensMap?.[selected] : undefined; const selectedAssetVal = selectedAsset || initialSelected; const internalOnSelect = useCallback( - (asset: Asset) => { + (asset: Token) => { setSelectedAsset(asset); onSelect(asset); setFalse(); @@ -55,10 +56,10 @@ const AssetSelector = ({ onSelect, selected, size = 'xs', ...rest }: AssetSelect diff --git a/src/components/Layout/Versions.tsx b/src/components/Layout/Versions.tsx index 3c1ba15f..59083d50 100644 --- a/src/components/Layout/Versions.tsx +++ b/src/components/Layout/Versions.tsx @@ -28,10 +28,10 @@ const Versions: FC = memo(({ tenantName }: Props) => { return (
- - {indicator} - -

Runtime: {(state.nodeVersion && state.nodeVersion.toString()) || '0.0.0-00000000000'}

+

+ {indicator} + Runtime: {(state.nodeVersion && state.nodeVersion.toString()) || '0.0.0-00000000000'} +

); }); diff --git a/src/components/Pools/Backstop/AddLiquidity/index.tsx b/src/components/Pools/Backstop/AddLiquidity/index.tsx index efa32a1e..7d941606 100644 --- a/src/components/Pools/Backstop/AddLiquidity/index.tsx +++ b/src/components/Pools/Backstop/AddLiquidity/index.tsx @@ -2,8 +2,8 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; +import { BackstopPool } from '../../../../../gql/graphql'; import { calcSharePercentage } from '../../../../helpers/calc'; -import { BackstopPool } from '../../../../models/BackstopPool'; import { nativeToDecimal } from '../../../../shared/parseNumbers'; import TokenApproval from '../../../Asset/Approval'; import { numberLoader } from '../../../Loader'; @@ -21,7 +21,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { balanceQuery, depositQuery, form: { register, handleSubmit, setValue, watch }, - } = useAddLiquidity(data.address, data.asset.address); + } = useAddLiquidity(data.id, data.token.id); const amount = Number(watch('amount') || 0); const balance = balanceQuery.balance || 0; @@ -29,22 +29,22 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { return (
- +
-

Deposit {data.asset.symbol}

+

Deposit {data.token.symbol}

mutation.mutate(data))}>

- Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.asset.symbol}`} + Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`}

- Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.asset.symbol}`} + Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

@@ -92,7 +92,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => {
Total deposit
-
{depositQuery.isLoading ? numberLoader : `${balance + amount} ${data.asset.symbol}`}
+
{depositQuery.isLoading ? numberLoader : `${balance + amount} ${data.token.symbol}`}
Pool Share
@@ -106,8 +106,8 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => {
0} > diff --git a/src/components/Pools/Backstop/Modals/types.ts b/src/components/Pools/Backstop/Modals/types.ts index 515622f2..5324a1f9 100644 --- a/src/components/Pools/Backstop/Modals/types.ts +++ b/src/components/Pools/Backstop/Modals/types.ts @@ -1,4 +1,4 @@ -import { BackstopPool } from '../../../../models/BackstopPool'; +import { BackstopPool } from '../../../../../gql/graphql'; export const ModalTypes = { AddLiquidity: 2, diff --git a/src/components/Pools/Backstop/Withdraw/index.tsx b/src/components/Pools/Backstop/Withdraw/index.tsx index 6ac57aaf..59878816 100644 --- a/src/components/Pools/Backstop/Withdraw/index.tsx +++ b/src/components/Pools/Backstop/Withdraw/index.tsx @@ -2,8 +2,8 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; +import { BackstopPool } from '../../../../../gql/graphql'; import { calcSharePercentage } from '../../../../helpers/calc'; -import { BackstopPool } from '../../../../models/BackstopPool'; import { nativeToDecimal } from '../../../../shared/parseNumbers'; import { numberLoader } from '../../../Loader'; import TransactionProgress from '../../../Transaction/Progress'; @@ -20,7 +20,7 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null balanceQuery, depositQuery, form: { register, handleSubmit, setValue, watch }, - } = useWithdrawLiquidity(data.address, data.asset.address); + } = useWithdrawLiquidity(data.id, data.token.id); const amount = Number(watch('amount') || 0); const balance = balanceQuery.balance || 0; const deposit = depositQuery.balance || 0; @@ -29,22 +29,22 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null return (
- +
-

Withdraw {data.asset.symbol}

+

Withdraw {data.token.symbol}

mutation.mutate(data))}>

- Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.asset.symbol}`} + Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`}

- Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.asset.symbol}`} + Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

diff --git a/src/components/Pools/Backstop/index.tsx b/src/components/Pools/Backstop/index.tsx index 9bd255d6..4f6f3c90 100644 --- a/src/components/Pools/Backstop/index.tsx +++ b/src/components/Pools/Backstop/index.tsx @@ -1,9 +1,5 @@ -import { useQuery } from '@tanstack/react-query'; import { Button, Card } from 'react-daisyui'; -import { useGlobalState } from '../../../GlobalStateProvider'; -import { cacheKeys } from '../../../constants/cache'; -import { BackstopPool } from '../../../models/BackstopPool'; -import { backstopPool } from '../../../services/mocks'; +import { useBackstopPools } from '../../../hooks/nabla/useBackstopPools'; import ModalProvider, { useModalToggle } from '../../../services/modal'; import Balance from '../../Balance'; import { Skeleton } from '../../Skeleton'; @@ -12,10 +8,7 @@ import { LiquidityModalProps, ModalTypes } from './Modals/types'; const BackstopPoolsBody = (): JSX.Element | null => { const toggle = useModalToggle(); - const { tenantName } = useGlobalState(); - const { data, isLoading } = useQuery([cacheKeys.backstopPools, tenantName], () => { - return backstopPool; - }); + const { data, isLoading } = useBackstopPools(); if (isLoading) return ; const pool = data?.[0]; @@ -28,7 +21,7 @@ const BackstopPoolsBody = (): JSX.Element | null => {

My pool balance

- +
diff --git a/src/components/Pools/Swap/AddLiquidity/index.tsx b/src/components/Pools/Swap/AddLiquidity/index.tsx index 665a2da5..4d5dc6eb 100644 --- a/src/components/Pools/Swap/AddLiquidity/index.tsx +++ b/src/components/Pools/Swap/AddLiquidity/index.tsx @@ -20,7 +20,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { balanceQuery, depositQuery, form: { register, handleSubmit, setValue, watch }, - } = useAddLiquidity(data.address, data.asset.address); + } = useAddLiquidity(data.id, data.token.id); const amount = Number(watch('amount') || 0); const balance = balanceQuery.balance || 0; const deposit = depositQuery.balance || 0; @@ -29,7 +29,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { return (
- +
-

Withdraw {data.asset?.symbol}

+

Withdraw {data.token?.symbol}

mutation.mutate(data))}>

- Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.asset.symbol}`} + Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`}

- Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.asset.symbol}`} + Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

diff --git a/src/components/Pools/Swap/columns.tsx b/src/components/Pools/Swap/columns.tsx index 38df16f4..59b78638 100644 --- a/src/components/Pools/Swap/columns.tsx +++ b/src/components/Pools/Swap/columns.tsx @@ -1,6 +1,6 @@ import { CellContext, ColumnDef } from '@tanstack/react-table'; import { Button } from 'react-daisyui'; -import { SwapPool } from '../../../models/SwapPool'; +import { SwapPool } from '../../../../gql/graphql'; import { useModalToggle } from '../../../services/modal'; import { LiquidityModalProps, ModalTypes } from './Modals/types'; @@ -13,7 +13,7 @@ export type SwapPoolColumn = SwapPool & { export const nameColumn: ColumnDef = { header: 'Name', accessorKey: 'name', - accessorFn: (row) => row.asset?.name || '', + accessorFn: (row) => row.token?.name || '', enableSorting: true, } as const; @@ -48,7 +48,7 @@ export const coverageColumn: ColumnDef = { export const aprColumn: ColumnDef = { header: 'APR', accessorKey: 'apr', - accessorFn: (row) => row.apr?.toString(), + accessorFn: (row) => row.reserves?.toString(), // TODO: get apr enableSorting: true, } as const; diff --git a/src/components/Pools/Swap/index.tsx b/src/components/Pools/Swap/index.tsx index d62cf160..2c36c31d 100644 --- a/src/components/Pools/Swap/index.tsx +++ b/src/components/Pools/Swap/index.tsx @@ -1,18 +1,11 @@ -import { useQuery } from '@tanstack/react-query'; -import { cacheKeys } from '../../../constants/cache'; -import { useGlobalState } from '../../../GlobalStateProvider'; -import { swapPools } from '../../../services/mocks'; +import { useSwapPools } from '../../../hooks/nabla/useSwapPools'; import ModalProvider from '../../../services/modal'; import Table from '../../Table'; -import { columns, SwapPoolColumn } from './columns'; +import { columns } from './columns'; import PoolsModals from './Modals'; const SwapPools = (): JSX.Element | null => { - const { tenantName } = useGlobalState(); - // ! TODO: get swap pools and user connected data (user liquidity for all pools) - const { data, isLoading } = useQuery([cacheKeys.swapPools, tenantName], () => { - return swapPools; - }); + const { data, isLoading } = useSwapPools(); return ( diff --git a/src/components/Swap/Approval/index.tsx b/src/components/Swap/Approval/index.tsx index 0f8d6c75..e7e88ed8 100644 --- a/src/components/Swap/Approval/index.tsx +++ b/src/components/Swap/Approval/index.tsx @@ -1,7 +1,6 @@ import { Button } from 'react-daisyui'; import { useFormContext, useWatch } from 'react-hook-form'; -import { nablaConfig } from '../../../config/apps/nabla'; -import { useGetTenantData } from '../../../hooks/useGetTenantData'; +import { useGetAppDataByTenant } from '../../../hooks/useGetAppDataByTenant'; import TokenApproval from '../../Asset/Approval'; import { SwapFormValues } from '../types'; @@ -10,7 +9,7 @@ export interface ApprovalProps { } const ApprovalSubmit = ({ token }: ApprovalProps): JSX.Element | null => { - const { router } = useGetTenantData(nablaConfig) || {}; + const { router } = useGetAppDataByTenant('nabla').data || {}; const { control } = useFormContext(); const amount = Number( useWatch({ diff --git a/src/components/Swap/From/index.tsx b/src/components/Swap/From/index.tsx index c3471906..6b5aef42 100644 --- a/src/components/Swap/From/index.tsx +++ b/src/components/Swap/From/index.tsx @@ -1,12 +1,9 @@ import { ChevronDownIcon } from '@heroicons/react/20/solid'; import { Fragment } from 'preact'; -import { useMemo } from 'preact/compat'; import { Button } from 'react-daisyui'; import { useFormContext, useWatch } from 'react-hook-form'; import pendulumIcon from '../../../assets/pendulum-icon.svg'; -import { nablaConfig } from '../../../config/apps/nabla'; -import { getAssets } from '../../../helpers/array'; -import { useGetTenantData } from '../../../hooks/useGetTenantData'; +import { useTokens } from '../../../hooks/nabla/useTokens'; import { useContractBalance } from '../../../shared/useContractBalance'; import TokenPrice from '../../Asset/Price'; import { SwapFormValues } from '../types'; @@ -17,17 +14,15 @@ export interface FromProps { } const From = ({ onOpenSelector, className }: FromProps): JSX.Element | null => { - const { assets } = useGetTenantData(nablaConfig) || {}; + const { data } = useTokens(); + const { tokensMap } = data || {}; const { register, setValue, control } = useFormContext(); const from = useWatch({ control, name: 'from', }); - const { [from]: token } = useMemo( - () => (from.length > 0 ? getAssets(assets || [], { [from]: true }) : {}), - [assets, from], - ); - const { formatted, balance } = useContractBalance({ contractAddress: token?.address }); + const token = tokensMap?.[from]; + const { formatted, balance } = useContractBalance({ contractAddress: token?.id }); return ( <>
@@ -54,7 +49,7 @@ const From = ({ onOpenSelector, className }: FromProps): JSX.Element | null => {
-
{!!token && }s
+
{!!token && }
{balance !== undefined && ( diff --git a/src/components/Swap/To/index.tsx b/src/components/Swap/To/index.tsx index 333626a1..de047af0 100644 --- a/src/components/Swap/To/index.tsx +++ b/src/components/Swap/To/index.tsx @@ -1,16 +1,13 @@ import { ArrowPathRoundedSquareIcon, ChevronDownIcon } from '@heroicons/react/20/solid'; import { InformationCircleIcon } from '@heroicons/react/24/outline'; -import { useMemo } from 'preact/compat'; import { Button } from 'react-daisyui'; import { useFormContext, useWatch } from 'react-hook-form'; import pendulumIcon from '../../../assets/pendulum-icon.svg'; import { config } from '../../../config'; -import { nablaConfig } from '../../../config/apps/nabla'; -import { getAssets } from '../../../helpers/array'; import { calcPercentage } from '../../../helpers/calc'; +import { useTokens } from '../../../hooks/nabla/useTokens'; import useBoolean from '../../../hooks/useBoolean'; import { useDebouncedValue } from '../../../hooks/useDebouncedValue'; -import { useGetTenantData } from '../../../hooks/useGetTenantData'; import { roundNumber } from '../../../shared/parseNumbers'; import TokenPrice from '../../Asset/Price'; import Balance from '../../Balance'; @@ -23,7 +20,8 @@ export interface ToProps { } const To = ({ onOpenSelector, className }: ToProps): JSX.Element | null => { - const { assets } = useGetTenantData(nablaConfig) || {}; + const tokensQuery = useTokens(); + const { tokensMap } = tokensQuery.data || {}; const [isOpen, { toggle }] = useBoolean(); const { /* setValue, */ control } = useFormContext(); const from = useWatch({ @@ -47,14 +45,8 @@ const To = ({ onOpenSelector, className }: ToProps): JSX.Element | null => { name: 'slippage', }), ); - const { [from]: fromToken, [to]: toToken } = useMemo( - () => - getAssets(assets || [], { - [from]: true, - [to]: true, - }), - [assets, from, to], - ); + const fromToken = tokensMap?.[from]; + const toToken = tokensMap?.[to]; const debouncedFromAmount = useDebouncedValue(fromAmount, 800); const { isLoading, data, refetch } = { data: debouncedFromAmount, @@ -88,7 +80,7 @@ const To = ({ onOpenSelector, className }: ToProps): JSX.Element | null => { ) : ( - <>  + <>0 )}
-
{!!toToken && }
+
{!!toToken && }
- Balance: + Balance:
-
-
-
-
- {fromToken && toToken && value && fromAmount ? ( - <> -
- + {fromAmount > 0 && ( + <> +
+
+
+
+ {fromToken && toToken && value && fromAmount ? ( + <> +
+ +
+ {`1${fromToken.symbol} = ${roundNumber(Number(value) / fromAmount, 6)}${toToken.symbol}`} + + ) : null} +
+
+
+
- {`1${fromToken.symbol} = ${roundNumber(Number(value) / fromAmount, 6)}${toToken.symbol}`} - - ) : null} -
-
-
- -
-
-
-
-
-
-
Expected Output:
-
- - {value} {toToken?.symbol} - +
-
-
-
Minimum received:
-
- - {calcPercentage(Number(value), slippage ?? config.swap.defaults.slippage)} {toToken.symbol} - +
+
+
+
Expected Output:
+
+ + {value} {toToken?.symbol} + +
+
+
+
Minimum received:
+
+ + {calcPercentage(Number(value), slippage ?? config.swap.defaults.slippage)} {toToken?.symbol} + +
+
+
+
Price Impact:
+
{'! TODO'}%
+
+
+
Network Fee:
+
{'! TODO'}
+
-
-
Price Impact:
-
{'! TODO'}%
-
-
-
Network Fee:
-
{'! TODO'}
-
-
-
+ + )}
); diff --git a/src/components/Swap/index.tsx b/src/components/Swap/index.tsx index 58741e22..03073c27 100644 --- a/src/components/Swap/index.tsx +++ b/src/components/Swap/index.tsx @@ -14,7 +14,7 @@ const inputCls = 'bg-neutral-100 dark:bg-neutral-900 text-right text-neutral-600 const Swap = (props: UseSwapComponentProps): JSX.Element | null => { const { - assets, + tokensQuery, tokensModal: [modalType, setModalType], onFromChange, onToChange, @@ -31,17 +31,18 @@ const Swap = (props: UseSwapComponentProps): JSX.Element | null => { getValues, formState: { errors }, } = form; + const { tokens, tokensMap } = tokensQuery.data || {}; const progressUi = useMemo(() => { if (!swapMutation.isLoading) return ''; const { from: fromV, to: toV, fromAmount = 0, toAmount = 0 } = getValues(); // TODO: optimize finding tokens with object map - const fromAsset = assets?.find((x) => x.address === fromV); - const toAsset = assets?.find((x) => x.address === toV); + const fromAsset = tokensMap?.[fromV]; + const toAsset = tokensMap?.[toV]; return (

{`Swapping ${fromAmount} ${fromAsset?.symbol} for ${toAmount} ${toAsset?.symbol}`}

); - }, [assets, getValues, swapMutation.isLoading]); + }, [tokensMap, getValues, swapMutation.isLoading]); return ( <> @@ -148,7 +149,7 @@ const Swap = (props: UseSwapComponentProps): JSX.Element | null => { { const { onChange } = props; - const { assets } = useGetTenantData(nablaConfig) || {}; + const tokensQuery = useTokens(); const hadMountedRef = useRef(false); const queryClient = useQueryClient(); - const { router } = useGetTenantData(nablaConfig) || {}; + const { router } = useGetAppDataByTenant('nabla').data || {}; const tokensModal = useState(); const setTokenModal = tokensModal[1]; const storageState = useRef(getInitialValues()); @@ -106,8 +106,8 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { }); const onFromChange = useCallback( - (a: string | Asset, event = true) => { - const f = typeof a === 'string' ? a : a.address; + (a: string | Token, event = true) => { + const f = typeof a === 'string' ? a : a.id; const prev = getValues(); const updated = { from: f, @@ -123,8 +123,8 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { ); const onToChange = useCallback( - (a: string | Asset, event = true) => { - const t = typeof a === 'string' ? a : a.address; + (a: string | Token, event = true) => { + const t = typeof a === 'string' ? a : a.id; const prev = getValues(); const updated = { to: t, @@ -156,7 +156,7 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { return { form, - assets, + tokensQuery, swapMutation, tokensModal, onFromChange, diff --git a/src/config/apps/index.ts b/src/config/apps/index.ts index 86db7bea..d9a951c9 100644 --- a/src/config/apps/index.ts +++ b/src/config/apps/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { nablaConfig } from './nabla'; import { AppConfig } from './types'; @@ -7,3 +8,5 @@ export type Apps = typeof apps; export const appsConfigs = { nabla: nablaConfig, } satisfies Record; + +export type AppsConfig = typeof appsConfigs; diff --git a/src/config/apps/nabla.ts b/src/config/apps/nabla.ts index aa42b8fd..24d66979 100644 --- a/src/config/apps/nabla.ts +++ b/src/config/apps/nabla.ts @@ -1,68 +1,24 @@ -import { Asset } from '../../models/Asset'; -import { SwapPool } from '../../models/SwapPool'; import { TenantName } from '../../models/Tenant'; -import type { AppConfig } from './types'; - +import { AppConfig } from './types'; export type NablaConfig = AppConfig & Partial< Record< TenantName, { + indexerUrl: string; router: string; oracle: string; curve: string; - backstopPool: string; // ! temporary (should come from indexer) - swapPools: SwapPool[]; // ! temporary (should come from indexer) - assets: Asset[]; // ! temporary (should come from indexer) } > >; -const assets = [ - { - address: '6h6JMHYBV7P6uQekZXzHmmpzx7tzHutTyx448MnFogR6dNde', - name: 'Mock USD', - symbol: 'mUSD', - decimals: 12, - }, - { - address: '6hJHAXrCYNFbuDzgwZb2S1UhamDBtR8Jw1cn9gKQ4QewvSh1', - name: 'Mock EUR', - symbol: 'mEUR', - decimals: 12, - }, - { - address: '6kwiNhGTHAfGb5x3gZBQxhiG2rf9F8W7Da3HhQRdBHQopSHv', - name: 'Mock ETH', - symbol: 'mETH', - decimals: 12, - }, -]; - -export const nablaConfig = { +export const nablaConfig: NablaConfig = { tenants: [TenantName.Foucoco], foucoco: { + indexerUrl: 'https://squid.subsquid.io/foucoco-squid/graphql', router: '6mrTyH54tYXKsVxrahapG1S54cVMqqwqtnmTLLbj3NZT2f1k', oracle: '6n32n4F11qfFXfFYhVj15fChZTXpVP5zJSM98361gK5QKrxW', curve: '6mnENTpY6B5mqtUHsjv3BxwKucT9hqF761QrYGfD22ccLzdC', - backstopPool: '6h7p67AZyzWiN42FSzkWyGZaqMuajo2BAm43LXBQHVXJ8sq7', - assets: assets, - swapPools: [ - { - address: '6gxRBjkhfaWMAhMQmEA1MUvGssc2f9ercXPZrzFUKWTTaCyq', - asset: assets[0], - apr: 0.0, - }, - { - address: '6kauoQTrdZzBCR3RcqJKJwxEGeQyj6zd3yx8H7XBNwbzrcT5', - asset: assets[1], - apr: 0.0, - }, - { - address: '6mMDtTPgghASfTpW4cuwdxSJvuM6mvGMxTHZxXQf9cWVUioS', - asset: assets[2], - apr: 0.0, - }, - ], }, -} satisfies NablaConfig; +}; diff --git a/src/config/apps/types.ts b/src/config/apps/types.ts index f6884153..402685c8 100644 --- a/src/config/apps/types.ts +++ b/src/config/apps/types.ts @@ -2,4 +2,5 @@ import { TenantName } from '../../models/Tenant'; export type AppConfig = { tenants: TenantName[]; -}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any +} & Partial>; diff --git a/src/helpers/array.ts b/src/helpers/array.ts index 03724711..9804078c 100644 --- a/src/helpers/array.ts +++ b/src/helpers/array.ts @@ -1,5 +1,3 @@ -import { Asset } from '../models/Asset'; - export type MapFunction = (item: T) => string | undefined; /** * Join array of objects on key @@ -13,13 +11,3 @@ export const joinOn = ( const mapFunc = typeof mapKey === 'function' ? mapKey : (item: T) => (item[mapKey] ? String(item[mapKey]) : ''); return arr.map(mapFunc).filter(Boolean).join(separator); }; - -export const getAssets = (assets: Asset[], addresses: Record) => { - const result: Record = {}; - for (let i = 0; i < assets.length; i++) { - if (addresses[assets[i].address]) { - result[assets[i].address] = assets[i]; - } - } - return result; -}; diff --git a/src/helpers/general.ts b/src/helpers/general.ts index abfe3185..fb593e6a 100644 --- a/src/helpers/general.ts +++ b/src/helpers/general.ts @@ -9,4 +9,5 @@ export const ofSelect = instanceOf(HTMLSelectElement); export const ofAnchor = instanceOf(HTMLAnchorElement); export const emptyFn = () => undefined; +export const emptyCacheKey = ['']; export const repeat = (value: T, times = 3): T[] => new Array(times).fill(value); diff --git a/src/hooks/nabla/useBackstopPools.ts b/src/hooks/nabla/useBackstopPools.ts new file mode 100644 index 00000000..891a2b20 --- /dev/null +++ b/src/hooks/nabla/useBackstopPools.ts @@ -0,0 +1,42 @@ +import { UseQueryOptions, useQuery } from '@tanstack/react-query'; +import request from 'graphql-request'; +import { graphql } from '../../../gql/gql'; +import { BackstopPool } from '../../../gql/graphql'; +import { cacheKeys, inactiveOptions } from '../../constants/cache'; +import { emptyCacheKey, emptyFn } from '../../helpers/general'; +import { useGetAppDataByTenant } from '../useGetAppDataByTenant'; + +export type UseBackstopPoolsProps = UseQueryOptions; + +export const useBackstopPools = (options?: UseBackstopPoolsProps) => { + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const enabled = !!indexerUrl && options?.enabled !== false; + return useQuery( + enabled ? [cacheKeys.backstopPools, indexerUrl] : emptyCacheKey, + enabled ? async () => (await request(indexerUrl, getBackstopPools))?.backstopPools as BackstopPool[] : emptyFn, + { + ...inactiveOptions['1m'], + refetchInterval: 30000, + ...options, + enabled, + }, + ); +}; + +export const getBackstopPools = graphql(` + query getBackstopPools { + backstopPools { + id + liabilities + paused + reserves + totalSupply + token { + id + decimals + name + symbol + } + } + } +`); diff --git a/src/hooks/nabla/useSwapPools.ts b/src/hooks/nabla/useSwapPools.ts new file mode 100644 index 00000000..128de4d9 --- /dev/null +++ b/src/hooks/nabla/useSwapPools.ts @@ -0,0 +1,53 @@ +import { UseQueryOptions, useQuery } from '@tanstack/react-query'; +import request from 'graphql-request'; +import { graphql } from '../../../gql/gql'; +import { SwapPool } from '../../../gql/graphql'; +import { cacheKeys, inactiveOptions } from '../../constants/cache'; +import { emptyCacheKey, emptyFn } from '../../helpers/general'; +import { useGetAppDataByTenant } from '../useGetAppDataByTenant'; + +export type UseSwapPoolsProps = UseQueryOptions; + +export const useSwapPools = (options?: UseSwapPoolsProps) => { + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const enabled = !!indexerUrl && options?.enabled !== false; + return useQuery( + enabled ? [cacheKeys.swapPools, indexerUrl] : emptyCacheKey, + enabled ? async () => (await request(indexerUrl, getSwapPools))?.swapPools as SwapPool[] : emptyFn, + { + ...inactiveOptions['1m'], + refetchInterval: 30000, + ...options, + enabled, + }, + ); +}; + +export const getSwapPools = graphql(` + query getSwapPools { + swapPools { + id + liabilities + paused + reserves + totalSupply + token { + id + name + symbol + decimals + } + router { + id + paused + } + backstop { + id + liabilities + paused + reserves + totalSupply + } + } + } +`); diff --git a/src/hooks/nabla/useTokens.ts b/src/hooks/nabla/useTokens.ts new file mode 100644 index 00000000..ca171500 --- /dev/null +++ b/src/hooks/nabla/useTokens.ts @@ -0,0 +1,50 @@ +import { useQuery } from '@tanstack/react-query'; +import request from 'graphql-request'; +import { graphql } from '../../../gql/gql'; +import { Token } from '../../../gql/graphql'; +import { QueryOptions, cacheKeys, inactiveOptions } from '../../constants/cache'; +import { emptyCacheKey, emptyFn } from '../../helpers/general'; +import { useGetAppDataByTenant } from '../useGetAppDataByTenant'; + +export type TokensData = { + tokensMap: Record; + tokens: Token[] | undefined; +}; + +export const useTokens = (options?: QueryOptions) => { + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const enabled = !!indexerUrl && options?.enabled !== false; + return useQuery( + enabled ? [cacheKeys.tokens, indexerUrl] : emptyCacheKey, + enabled + ? async () => { + const response = (await request(indexerUrl, getTokens))?.nablaTokens as Token[]; + return response?.reduce( + (acc, curr) => { + acc.tokensMap[curr.id] = curr; + return acc; + }, + { + tokens: response, + tokensMap: {}, + } as TokensData, + ); + } + : emptyFn, + { + ...inactiveOptions['15m'], + ...options, + }, + ); +}; + +const getTokens = graphql(` + query getTokens { + nablaTokens { + id + name + symbol + decimals + } + } +`); diff --git a/src/hooks/useAssets.ts b/src/hooks/useAssets.ts deleted file mode 100644 index f8f71155..00000000 --- a/src/hooks/useAssets.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; -import { appsConfigs } from '../config/apps'; -import { cacheKeys, inactiveOptions } from '../constants/cache'; -import { Asset } from '../models/Asset'; - -// ! TODO: fetch correct tokens -export const useAssets = () => { - return useQuery([cacheKeys.assets], () => appsConfigs.nabla.foucoco.assets, inactiveOptions['15m']); -}; diff --git a/src/hooks/useGetAppDataByTenant.ts b/src/hooks/useGetAppDataByTenant.ts new file mode 100644 index 00000000..4eca16fc --- /dev/null +++ b/src/hooks/useGetAppDataByTenant.ts @@ -0,0 +1,7 @@ +import { useGlobalState } from '../GlobalStateProvider'; +import { Apps, appsConfigs } from '../config/apps'; + +export const useGetAppDataByTenant = (app: T) => { + const tenantName = useGlobalState().tenantName; + return { data: appsConfigs[app]?.[tenantName], tenantName }; +}; diff --git a/src/hooks/useGetTenantData.ts b/src/hooks/useGetTenantData.ts deleted file mode 100644 index 4d81bbe9..00000000 --- a/src/hooks/useGetTenantData.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { useGlobalState } from '../GlobalStateProvider'; -import { TenantName } from '../models/Tenant'; - -export const useGetTenantData = (data: Partial>): T | undefined => { - const tenant = useGlobalState().tenantName; - return data[tenant] as T; -}; diff --git a/src/index.css b/src/index.css index efdd0b7c..62cc2637 100644 --- a/src/index.css +++ b/src/index.css @@ -128,6 +128,7 @@ strong { .pendulum-network-id, .pendulum-versions { + position: relative; text-align: left; font-size: 12px; justify-content: end; diff --git a/src/models/Asset.ts b/src/models/Asset.ts deleted file mode 100644 index 893b4976..00000000 --- a/src/models/Asset.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface Asset { - address: string; - decimals: number; - symbol: string; - name: string; - logoURI?: string; -} diff --git a/src/models/BackstopPool.ts b/src/models/BackstopPool.ts deleted file mode 100644 index 89f5a129..00000000 --- a/src/models/BackstopPool.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Asset } from './Asset'; - -export interface BackstopPool { - address: string; - asset: Asset; - liabilities: number; - totalSupply: number; -} diff --git a/src/models/SwapPool.ts b/src/models/SwapPool.ts deleted file mode 100644 index 7f61f752..00000000 --- a/src/models/SwapPool.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Asset } from './Asset'; - -export interface SwapPool { - address: string; - asset: Asset; - liabilities?: number; - totalSupply?: number; - balance?: number; - apr?: number; -} diff --git a/src/pages/bridge/TransferDialog.tsx b/src/pages/bridge/TransferDialog.tsx index 92739dde..ab70be13 100644 --- a/src/pages/bridge/TransferDialog.tsx +++ b/src/pages/bridge/TransferDialog.tsx @@ -202,7 +202,6 @@ export function CancelledTransferDialog(props: TransferDialogProps) { export function ReimbursedTransferDialog(props: TransferDialogProps) { const { transfer, visible, onClose } = props; - const tenant = useGlobalState().tenantName; const stellarAsset = convertCurrencyToStellarAsset(transfer.original.asset)?.getCode(); const collateralAsset = transfer.original.vault.currencies.collateral; diff --git a/src/pages/nabla/dev/index.tsx b/src/pages/nabla/dev/index.tsx index d9b86c24..95f7646a 100644 --- a/src/pages/nabla/dev/index.tsx +++ b/src/pages/nabla/dev/index.tsx @@ -1,10 +1,9 @@ import { useNavigate } from 'react-router-dom'; +import { Token } from '../../../../gql/graphql'; import { useGlobalState } from '../../../GlobalStateProvider'; import { config } from '../../../config'; -import { nablaConfig } from '../../../config/apps/nabla'; import { mockERC20 } from '../../../contracts/nabla/MockERC20'; -import { useGetTenantData } from '../../../hooks/useGetTenantData'; -import { Asset } from '../../../models/Asset'; +import { useTokens } from '../../../hooks/nabla/useTokens'; import { createOptions } from '../../../services/api/helpers'; import { decimalToNative } from '../../../shared/parseNumbers'; import { UseContractWriteProps, useContractWrite } from '../../../shared/useContractWrite'; @@ -13,18 +12,18 @@ const amount = decimalToNative(1000).toString(); const mintFn: UseContractWriteProps['fn'] = ({ contract, api, address }) => contract.tx.mint(createOptions(api), address, amount); -const TokenItem = ({ token }: { token: Asset }) => { +const TokenItem = ({ token }: { token: Token }) => { const { mutate, isLoading } = useContractWrite({ abi: mockERC20, - address: token.address, + address: token.id, fn: mintFn, onError: console.error, }); return ( -
+

{token.name}

-

{token.address}

+

{token.id}

diff --git a/src/components/ChainSelector.tsx b/src/components/ChainSelector.tsx index d0de3752..27f997b0 100644 --- a/src/components/ChainSelector.tsx +++ b/src/components/ChainSelector.tsx @@ -1,54 +1,44 @@ import { ChevronDownIcon } from '@heroicons/react/20/solid'; import { Button, Dropdown } from 'react-daisyui'; -import { useLocation, useNavigate } from 'react-router-dom'; import AmplitudeLogo from '../assets/AmplitudeLogo'; import PendulumLogo from '../assets/PendulumLogo'; import { toTitle } from '../helpers/string'; -import { buildTenantPath } from '../helpers/url'; +import useSwitchChain from '../hooks/useSwitchChain'; import { TenantName } from '../models/Tenant'; const options = [TenantName.Pendulum, TenantName.Amplitude, TenantName.Foucoco]; -const ChainSelector = ({ tenantName }: { tenantName: TenantName | undefined }): JSX.Element => { - const navigateTo = useNavigate(); - const location = useLocation().pathname; +const ChainSelector = (): JSX.Element => { + const { switchChain, currentTenant } = useSwitchChain(); return ( - <> - - - - {options.map((option, i) => ( - { - navigateTo(buildTenantPath(tenantName, option, location)); - window.location.reload(); - }} - > - {option === TenantName.Pendulum ? ( - - ) : ( - - )} - {toTitle(option)} - - ))} - - - + + + + {options.map((option, i) => ( + switchChain(option)}> + {option === TenantName.Pendulum ? ( + + ) : ( + + )} + {toTitle(option)} + + ))} + + ); }; diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx index 26f7d37e..abad6987 100644 --- a/src/components/Layout/index.tsx +++ b/src/components/Layout/index.tsx @@ -75,7 +75,7 @@ export default function Layout(): JSX.Element | null {
- +
- mutation.mutate(data))}> +

@@ -78,14 +79,25 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => {

Total deposit
-
{depositQuery.isLoading ? numberLoader : `${deposit + amount} ${data.token.symbol}`}
+
{depositQuery.isLoading ? numberLoader : `${roundNumber(deposit)} ${data.token.symbol}`}
+
+
+
Deposit after
+
+ {depositQuery.isLoading ? numberLoader : `${roundNumber(deposit + amount)} ${data.token.symbol}`} +
Pool Share
{depositQuery.isLoading ? numberLoader - : calcSharePercentage(nativeToDecimal(data.totalSupply || 0).toNumber() + amount, deposit + amount)} + : minMax( + calcSharePercentage( + nativeToDecimal(data.totalSupply || deposit).toNumber() + amount, + deposit + amount, + ), + )} %
diff --git a/src/components/Pools/Swap/AddLiquidity/useAddLiquidity.ts b/src/components/Pools/Swap/AddLiquidity/useAddLiquidity.ts index 962fc240..e234a01a 100644 --- a/src/components/Pools/Swap/AddLiquidity/useAddLiquidity.ts +++ b/src/components/Pools/Swap/AddLiquidity/useAddLiquidity.ts @@ -1,7 +1,6 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; import { swapPoolAbi } from '../../../../contracts/nabla/SwapPool'; -import { createWriteOptions } from '../../../../services/api/helpers'; import { useModalToggle } from '../../../../services/modal'; import { decimalToNative } from '../../../../shared/parseNumbers'; import { useContractBalance } from '../../../../shared/useContractBalance'; @@ -23,13 +22,19 @@ export const useAddLiquidity = (poolAddress: string, tokenAddress: string) => { const mutation = useContractWrite({ abi: swapPoolAbi, address: poolAddress, - fn: ({ contract, api }, variables: AddLiquidityValues) => - contract.tx.deposit(createWriteOptions(api), decimalToNative(variables.amount).toString()), + method: 'deposit', + onError: () => { + // ? log error - alert not needed as the transaction modal dispays the error + }, onSuccess: () => { balanceQuery.refetch(); depositQuery.refetch(); }, }); - return { form, mutation, toggle, balanceQuery, depositQuery }; + const onSubmit = form.handleSubmit((variables: AddLiquidityValues) => + mutation.mutate([decimalToNative(variables.amount).toString()]), + ); + + return { form, mutation, onSubmit, toggle, balanceQuery, depositQuery }; }; diff --git a/src/components/Pools/Swap/WithdrawLiquidity/index.tsx b/src/components/Pools/Swap/WithdrawLiquidity/index.tsx index 92098e9b..1d3e0c03 100644 --- a/src/components/Pools/Swap/WithdrawLiquidity/index.tsx +++ b/src/components/Pools/Swap/WithdrawLiquidity/index.tsx @@ -2,8 +2,8 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; -import { calcSharePercentage } from '../../../../helpers/calc'; -import { nativeToDecimal } from '../../../../shared/parseNumbers'; +import { calcSharePercentage, minMax } from '../../../../helpers/calc'; +import { nativeToDecimal, roundNumber } from '../../../../shared/parseNumbers'; import { numberLoader } from '../../../Loader'; import TransactionProgress from '../../../Transaction/Progress'; import { SwapPoolColumn } from '../columns'; @@ -17,9 +17,10 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null const { toggle, mutation, + onSubmit, balanceQuery, depositQuery, - form: { register, handleSubmit, setValue, watch }, + form: { register, setValue, watch }, } = useWithdrawLiquidity(data.id, data.token.id); const amount = Number(watch('amount') || 0); const balance = balanceQuery.balance || 0; @@ -38,7 +39,7 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null

Withdraw {data.token?.symbol}

- mutation.mutate(data))}> +

Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`} @@ -90,14 +91,21 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null

Fee
{'! TODO'}
+
+
Deposit
+
{roundNumber(deposit || 0)}
+
Remaining deposit
-
{deposit - amount || 0}
+
{roundNumber(deposit - amount || 0)}
Remaining pool share
- {calcSharePercentage(nativeToDecimal(data.totalSupply || 0).toNumber() - amount, deposit - amount)}% + {minMax( + calcSharePercentage(nativeToDecimal(data.totalSupply || 0).toNumber() - amount, deposit - amount), + )} + %
diff --git a/src/components/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts b/src/components/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts index e6cb497a..dda7835d 100644 --- a/src/components/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts +++ b/src/components/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts @@ -2,7 +2,6 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; import { swapPoolAbi } from '../../../../contracts/nabla/SwapPool'; import { calcPercentage } from '../../../../helpers/calc'; -import { createWriteOptions } from '../../../../services/api/helpers'; import { useModalToggle } from '../../../../services/modal'; import { decimalToNative } from '../../../../shared/parseNumbers'; import { useContractBalance } from '../../../../shared/useContractBalance'; @@ -25,21 +24,22 @@ export const useWithdrawLiquidity = (poolAddress: string, tokenAddress: string) const mutation = useContractWrite({ abi: swapPoolAbi, address: poolAddress, - fn: ({ contract, api }, variables: WithdrawLiquidityValues) => - contract.tx.withdraw( - createWriteOptions(api), - decimalToNative(calcPercentage(variables.amount, 0.01)).toString(), - decimalToNative(variables.amount).toString(), - ), + method: 'withdraw', onError: () => { - // TODO: handle error + // ? log error - alert not needed as the transaction modal dispays the error }, onSuccess: () => { - // TODO: wait for transaction to complete balanceQuery.refetch(); depositQuery.refetch(); }, }); - return { form, mutation, toggle, balanceQuery, depositQuery }; + const onSubmit = form.handleSubmit((variables: WithdrawLiquidityValues) => + mutation.mutate([ + decimalToNative(variables.amount).toString(), + decimalToNative(calcPercentage(variables.amount, 0.1)).toString(), + ]), + ); + + return { form, mutation, onSubmit, toggle, balanceQuery, depositQuery }; }; diff --git a/src/components/Swap/index.tsx b/src/components/Swap/index.tsx index 03073c27..5b29f91d 100644 --- a/src/components/Swap/index.tsx +++ b/src/components/Swap/index.tsx @@ -19,6 +19,7 @@ const Swap = (props: UseSwapComponentProps): JSX.Element | null => { onFromChange, onToChange, swapMutation, + onSubmit, form, from, updateStorage, @@ -26,7 +27,6 @@ const Swap = (props: UseSwapComponentProps): JSX.Element | null => { } = useSwapComponent(props); const { setValue, - handleSubmit, register, getValues, formState: { errors }, @@ -48,10 +48,7 @@ const Swap = (props: UseSwapComponentProps): JSX.Element | null => { <> - swapMutation.mutate(data))} - > +
Swap diff --git a/src/components/Swap/useSwapComponent.ts b/src/components/Swap/useSwapComponent.ts index 990214ef..9258e90c 100644 --- a/src/components/Swap/useSwapComponent.ts +++ b/src/components/Swap/useSwapComponent.ts @@ -3,6 +3,7 @@ import { useQueryClient } from '@tanstack/react-query'; import { useCallback, useEffect, useRef, useState } from 'preact/compat'; import { Resolver, useForm, useWatch } from 'react-hook-form'; import { Token } from '../../../gql/graphql'; +import { useGlobalState } from '../../GlobalStateProvider'; import { config } from '../../config'; import { cacheKeys } from '../../constants/cache'; import { storageKeys } from '../../constants/localStorage'; @@ -12,7 +13,6 @@ import { debounce } from '../../helpers/function'; import { useTokens } from '../../hooks/nabla/useTokens'; import { useGetAppDataByTenant } from '../../hooks/useGetAppDataByTenant'; import { SwapSettings } from '../../models/Swap'; -import { createWriteOptions } from '../../services/api/helpers'; import { storageService } from '../../services/storage/local'; import { decimalToNative } from '../../shared/parseNumbers'; import { useContractWrite } from '../../shared/useContractWrite'; @@ -35,6 +35,7 @@ const storageSet = debounce(storageService.set, 1000); export const useSwapComponent = (props: UseSwapComponentProps) => { const { onChange } = props; const tokensQuery = useTokens(); + const { address } = useGlobalState().walletAccount || {}; const hadMountedRef = useRef(false); const queryClient = useQueryClient(); const { router } = useGetAppDataByTenant('nabla').data || {}; @@ -75,27 +76,7 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { const swapMutation = useContractWrite({ abi: routerAbi, // ? should be chain specific address: router, - fn: ({ contract, address, api }, variables: SwapFormValues) => { - // ! TODO: complete and test - const time = Math.floor(Date.now() / 1000) + variables.deadline; - const deadline = decimalToNative(time); - const slippage = variables.slippage ?? defaultValues.slippage; - const fromAmount = decimalToNative(variables.fromAmount).toString(); - const toMinAmount = decimalToNative(calcPercentage(variables.toAmount, slippage)).toString(); - const spender = address; - return contract.tx.swapExactTokensForTokens( - createWriteOptions(api), - spender, - fromAmount, - toMinAmount, - [variables.from, variables.to], - address, - deadline, - ); - }, - onError: () => { - // ? log error - }, + method: 'swapExactTokensForTokens', onSuccess: () => { // update token balances queryClient.refetchQueries({ queryKey: [cacheKeys.walletBalance, getValues('from')], type: 'active' }); @@ -105,6 +86,17 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { }, }); + const onSubmit = form.handleSubmit((variables: SwapFormValues) => { + const time = Math.floor(Date.now() / 1000) + variables.deadline; + const deadline = decimalToNative(time); + const slippage = variables.slippage ?? defaultValues.slippage; + const fromAmount = decimalToNative(variables.fromAmount).toString(); + const toMinAmount = decimalToNative(calcPercentage(variables.toAmount, slippage)).toString(); + const spender = address; + + return swapMutation.mutate([spender, fromAmount, toMinAmount, [variables.from, variables.to], address, deadline]); + }); + const onFromChange = useCallback( (a: string | Token, event = true) => { const f = typeof a === 'string' ? a : a.id; @@ -158,6 +150,7 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { form, tokensQuery, swapMutation, + onSubmit, tokensModal, onFromChange, onToChange, diff --git a/src/components/Transaction/Progress/index.tsx b/src/components/Transaction/Progress/index.tsx index 1d6b0dcd..089cc981 100644 --- a/src/components/Transaction/Progress/index.tsx +++ b/src/components/Transaction/Progress/index.tsx @@ -3,6 +3,7 @@ import { UseMutationResult } from '@tanstack/react-query'; import { ComponentChildren } from 'preact'; import { Button } from 'react-daisyui'; import Spinner from '../../../assets/spinner'; +import { useGetTenantConfig } from '../../../hooks/useGetTenantConfig'; import { TransactionsStatus } from '../../../shared/useContractWrite'; export interface TransactionProgressProps { @@ -16,14 +17,19 @@ export interface TransactionProgressProps { } const TransactionProgress = ({ mutation, children, onClose }: TransactionProgressProps): JSX.Element | null => { + const { explorer } = useGetTenantConfig(); if (mutation.isIdle) return null; if (mutation.isLoading) { + const status = mutation.data?.status; + const isPending = !status || status === 'Pending'; return ( <>
-

Waiting for confirmation

-

Please confirm this transaction in your wallet

+

{isPending ? 'Waiting for confirmation' : 'Executing transaction'}

+

+ {isPending ? 'Please confirm this transaction in your wallet' : 'Waiting for transaction to complete'} +

{children} @@ -49,16 +55,19 @@ const TransactionProgress = ({ mutation, children, onClose }: TransactionProgres Close )} - + {!!mutation.data?.hex && ( + + )} ); }; diff --git a/src/config/index.ts b/src/config/index.ts index 1a31f986..05b5f596 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,12 +1,13 @@ import { TenantName } from '../models/Tenant'; import { ThemeName } from '../models/Theme'; -type Tenants = Record< +type TenantConfig = Record< TenantName, { name: string; rpc: string; theme: ThemeName; + explorer: string; } >; @@ -22,13 +23,13 @@ export const config = { name: 'Amplitude', rpc: 'wss://rpc-amplitude.pendulumchain.tech', theme: ThemeName.Amplitude, - explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer/', + explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer', }, [TenantName.Pendulum]: { name: 'Pendulum', rpc: 'wss://rpc-pendulum.prd.pendulumchain.tech', theme: ThemeName.Pendulum, - explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer/', + explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer', }, [TenantName.Foucoco]: { name: 'Foucoco', @@ -40,9 +41,9 @@ export const config = { name: 'Local', rpc: 'ws://localhost:9944', theme: ThemeName.Amplitude, - explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer/', + explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer', }, - } as Tenants, + } satisfies TenantConfig, swap: { defaults: { slippage: 0.5, @@ -58,6 +59,6 @@ export const config = { testUrl: `https://ramptest.alchemypay.org/?appId=f83Is2y7L425rxl8&network=PEN&crypto=PENDULUM&showTable=buy&type=buy`, encodeUrlWithRedirection: (sourceUrl: string, redirectUrl: string) => { return sourceUrl + '&redirectURL=' + encodeURI(redirectUrl); - } - } + }, + }, }; diff --git a/src/helpers/calc.ts b/src/helpers/calc.ts index 23d687f0..c9eed499 100644 --- a/src/helpers/calc.ts +++ b/src/helpers/calc.ts @@ -19,6 +19,10 @@ export const calcPercentage = (value = 0, percent = 0, round = 2) => roundNumber /** Calculate share percentage */ export const calcSharePercentage = (total = 0, share = 0, round = 2) => roundNumber((share / total) * 100, round) || 0; +export const min = (val: number, minNumber = 0) => Math.max(val, minNumber); +export const max = (val: number, maxNumber = 100) => Math.min(val, maxNumber); +export const minMax = (val: number, minNumber = 0, maxNumber = 100) => max(min(val, minNumber), maxNumber); + /** Calculate pool APY (daily fee * 365 / TVL) */ export const calcAPR = (dailyFees: number, tvl: number, round = 2) => roundNumber(((dailyFees * 365) / tvl) * 100, round); diff --git a/src/hooks/useGetTenantConfig.ts b/src/hooks/useGetTenantConfig.ts new file mode 100644 index 00000000..0b78d74d --- /dev/null +++ b/src/hooks/useGetTenantConfig.ts @@ -0,0 +1,7 @@ +import { useGlobalState } from '../GlobalStateProvider'; +import { config } from '../config'; + +export const useGetTenantConfig = () => { + const tenantName = useGlobalState().tenantName; + return config.tenants[tenantName]; +}; diff --git a/src/hooks/useSwitchChain.ts b/src/hooks/useSwitchChain.ts new file mode 100644 index 00000000..86b5e04c --- /dev/null +++ b/src/hooks/useSwitchChain.ts @@ -0,0 +1,20 @@ +import { useCallback } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; +import { useGlobalState } from '../GlobalStateProvider'; +import { buildTenantPath } from '../helpers/url'; +import { TenantName } from '../models/Tenant'; + +const useSwitchChain = () => { + const { tenantName } = useGlobalState(); + const navigateTo = useNavigate(); + const location = useLocation().pathname; + const switchChain = useCallback( + (tenant: TenantName) => { + navigateTo(buildTenantPath(tenantName, tenant, location)); + setTimeout(() => window.location.reload(), 50); + }, + [location, navigateTo, tenantName], + ); + return { switchChain, currentTenant: tenantName }; +}; +export default useSwitchChain; diff --git a/src/pages/nabla/dev/index.tsx b/src/pages/nabla/dev/index.tsx index 95f7646a..334edcbe 100644 --- a/src/pages/nabla/dev/index.tsx +++ b/src/pages/nabla/dev/index.tsx @@ -4,19 +4,18 @@ import { useGlobalState } from '../../../GlobalStateProvider'; import { config } from '../../../config'; import { mockERC20 } from '../../../contracts/nabla/MockERC20'; import { useTokens } from '../../../hooks/nabla/useTokens'; -import { createOptions } from '../../../services/api/helpers'; import { decimalToNative } from '../../../shared/parseNumbers'; -import { UseContractWriteProps, useContractWrite } from '../../../shared/useContractWrite'; +import { useContractWrite } from '../../../shared/useContractWrite'; const amount = decimalToNative(1000).toString(); -const mintFn: UseContractWriteProps['fn'] = ({ contract, api, address }) => - contract.tx.mint(createOptions(api), address, amount); const TokenItem = ({ token }: { token: Token }) => { + const { address } = useGlobalState().walletAccount || {}; const { mutate, isLoading } = useContractWrite({ abi: mockERC20, address: token.id, - fn: mintFn, + method: 'mint', + args: [address, amount], onError: console.error, }); return ( @@ -29,7 +28,7 @@ const TokenItem = ({ token }: { token: Token }) => { diff --git a/src/services/api/helpers.ts b/src/services/api/helpers.ts index ed762c0c..7ab860cf 100644 --- a/src/services/api/helpers.ts +++ b/src/services/api/helpers.ts @@ -2,8 +2,12 @@ /* eslint-disable @typescript-eslint/ban-types */ import type { ApiPromise } from '@polkadot/api'; import { ContractOptions } from '@polkadot/api-contract/types'; +import { BN, BN_ONE } from '@polkadot/util'; import { emptyFn } from '../../helpers/general'; +export const MAX_CALL_WEIGHT = new BN(5_000_000_000_0).isub(BN_ONE); +export const PROOFSIZE = new BN(1_000_000); + export type ApiArgs = [never]> = { api: ApiPromise } & T; export const isApiConnected = (api?: ApiPromise): api is ApiPromise => !!api && api.isConnected; @@ -14,18 +18,18 @@ export const fnOrEmpty = isApiConnected(api) ? () => fn(api, ...args) : emptyFn; // https://substrate.stackexchange.com/questions/6401/smart-contract-function-call-error/6402#6402 -export const createOptions = (api: ApiPromise, opts?: ContractOptions) => ({ +export const createReadOptions = (api: ApiPromise, opts?: ContractOptions) => ({ gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '1000000', + refTime: 100000000000, + proofSize: 1000000, }), storageDepositLimit: null, ...opts, }); export const createWriteOptions = (api: ApiPromise, opts?: ContractOptions) => ({ gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '1000000', + refTime: 18000000000, + proofSize: 1750000, }), storageDepositLimit: null, ...opts, diff --git a/src/services/api/index.ts b/src/services/api/index.ts deleted file mode 100644 index adb2af3c..00000000 --- a/src/services/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const apiService = {}; diff --git a/src/shared/helpers.ts b/src/shared/helpers.ts index 4a495643..bbf9d18a 100644 --- a/src/shared/helpers.ts +++ b/src/shared/helpers.ts @@ -1,3 +1,5 @@ +import { ApiPromise } from '@polkadot/api'; +import { SubmittableResultValue } from '@polkadot/api-base/types'; import type { QueryKey, UseQueryOptions } from '@tanstack/react-query'; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -7,3 +9,17 @@ export type QueryOptions = Partial< export const emptyFn = () => undefined; export const emptyCacheKey = ['']; + +// TODO: complete +export const parseTransactionError = (result: SubmittableResultValue | undefined, api: ApiPromise) => { + if (!result?.dispatchError) return undefined; + if (result.dispatchError.isModule) { + // for module errors, we have the section indexed, lookup + const decoded = api.registry.findMetaError(result.dispatchError.asModule); + const { docs, name, section } = decoded; + console.log(`${section}.${name}: ${docs.join(' ')}`); + } else { + // Other, CannotLookup, BadOrigin, no extra info + console.log(result.dispatchError.toString()); + } +}; diff --git a/src/shared/parseNumbers.ts b/src/shared/parseNumbers.ts index d7d5944d..3bb5ee34 100644 --- a/src/shared/parseNumbers.ts +++ b/src/shared/parseNumbers.ts @@ -18,16 +18,24 @@ BigNumber.NE = -20; // Converts a decimal number to the native representation (a large integer) export const decimalToNative = (value: BigNumber | number | string) => { - const bigIntValue = new BigNumber(value); + let bigIntValue; + try { + bigIntValue = new BigNumber(value); + } catch (error) { + bigIntValue = new BigNumber(0); + } const multiplier = new BigNumber(10).pow(ChainDecimals); - - return bigIntValue.times(multiplier); + return bigIntValue.times(multiplier).round(0); }; export const decimalToStellarNative = (value: BigNumber | number | string) => { - const bigIntValue = new BigNumber(value); + let bigIntValue; + try { + bigIntValue = new BigNumber(value); + } catch (error) { + bigIntValue = new BigNumber(0); + } const multiplier = new BigNumber(10).pow(StellarDecimals); - return bigIntValue.times(multiplier); }; diff --git a/src/shared/useContract.ts b/src/shared/useContract.ts index 7bf3ee19..0ebcca9c 100644 --- a/src/shared/useContract.ts +++ b/src/shared/useContract.ts @@ -1,36 +1,54 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/ban-types */ -import type { ApiPromise } from '@polkadot/api'; +import { ApiPromise } from '@polkadot/api'; import { Abi, ContractPromise } from '@polkadot/api-contract'; +import { ContractOptions } from '@polkadot/api-contract/types'; import { QueryKey, useQuery } from '@tanstack/react-query'; import { useMemo } from 'preact/compat'; import { useSharedState } from './Provider'; import { QueryOptions, emptyCacheKey, emptyFn } from './helpers'; -export type UseContractProps = QueryOptions & { +export type UseContractProps = QueryOptions & { abi: T; address?: string; - fn: TFn; + owner?: string; + method: string; + args?: any[]; + options?: ContractOptions | ((api: ApiPromise) => ContractOptions); }; -export const useContract = < - T extends Abi | Record, - TFn extends (data: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - contract: any; //ContractPromise; // TODO: fix contract type - api: ApiPromise; - }) => () => Promise, ->( +export const useContract = >( key: QueryKey, - { abi, address, fn, ...rest }: UseContractProps, + { abi, address, owner, method, args, options, ...rest }: UseContractProps, ) => { const { api } = useSharedState(); const contract = useMemo( () => (api && address ? new ContractPromise(api, abi, address) : undefined), [abi, address, api], ); - const enabled = !!contract && rest.enabled !== false && !!api; - const query = useQuery(enabled ? key : emptyCacheKey, enabled ? fn({ contract, api }) : emptyFn, { - ...rest, - enabled, - }); + const enabled = !!contract && rest.enabled !== false && !!api && !!owner; + const query = useQuery( + enabled ? key : emptyCacheKey, + enabled + ? async () => { + const opts = + typeof options === 'function' + ? options(api) + : options || { + gasLimit: api.createType('WeightV2', { + refTime: '100000000000', + proofSize: '1000000', + }), + storageDepositLimit: null, + }; + const response = await contract.query[method](owner, opts, ...(args || [])); + if (!response?.result?.isOk || response?.output === undefined) throw response; + return response; + } + : emptyFn, + { + ...rest, + enabled, + }, + ); return { ...query, enabled }; }; diff --git a/src/shared/useContractBalance.ts b/src/shared/useContractBalance.ts index 987827cf..c3836e94 100644 --- a/src/shared/useContractBalance.ts +++ b/src/shared/useContractBalance.ts @@ -1,3 +1,4 @@ +import { Abi } from '@polkadot/api-contract'; import { FrameSystemAccountInfo } from '@polkadot/types/lookup'; import { UseQueryResult } from '@tanstack/react-query'; import { useMemo } from 'preact/compat'; @@ -8,11 +9,13 @@ import { QueryOptions } from './helpers'; import { nativeToDecimal, prettyNumbers } from './parseNumbers'; import { useContract } from './useContract'; -export type UseBalanceProps = { +export type UseBalanceProps = { /** token or contract address */ contractAddress?: string; /** account address */ account?: string; + /** contract abi */ + abi?: TAbi; }; export type UseBalanceResponse = UseQueryResult & { balance?: number; @@ -20,8 +23,8 @@ export type UseBalanceResponse = UseQueryResult( + { contractAddress, account, abi }: UseBalanceProps, options?: QueryOptions, ): UseBalanceResponse => { const { api, address: defAddress } = useSharedState(); @@ -35,27 +38,16 @@ export const useContractBalance = ( refetchOnReconnect: false, refetchOnWindowFocus: false, ...options, - abi: mockERC20, + abi: abi || mockERC20, address: contractAddress, - fn: - ({ contract, api }) => - () => - contract.query.balanceOf( - address, - { - gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '1000000', - }), - storageDepositLimit: null, - }, - address, - ), + owner: address, + method: 'balanceOf', + args: [address], enabled, }); const { data } = query; const val = useMemo(() => { - if (!data?.result?.isOk || data?.output === undefined) return {}; + if (!data?.result?.isOk || data?.output === undefined) return undefined; const balance = nativeToDecimal(parseFloat(data.output.toString()) || 0).toNumber(); return { balance, formatted: prettyNumbers(balance) }; }, [data]); diff --git a/src/shared/useContractWrite.ts b/src/shared/useContractWrite.ts index de4ab546..565b48e3 100644 --- a/src/shared/useContractWrite.ts +++ b/src/shared/useContractWrite.ts @@ -3,40 +3,38 @@ import { ApiPromise } from '@polkadot/api'; import { SubmittableResultValue } from '@polkadot/api-base/types'; import { Abi, ContractPromise } from '@polkadot/api-contract'; +import { ContractOptions } from '@polkadot/api-contract/types'; import { DispatchError, ExtrinsicStatus } from '@polkadot/types/interfaces'; import { MutationOptions, useMutation } from '@tanstack/react-query'; import { useMemo, useState } from 'preact/compat'; +import { createWriteOptions } from '../services/api/helpers'; import { useSharedState } from './Provider'; +import { parseTransactionError } from './helpers'; -// TODO: fix types +// TODO: fix/improve types export type TransactionsStatus = { hex?: string; status?: ExtrinsicStatus['type'] | 'Pending'; }; -export type UseContractWriteProps< - TAbi extends Abi | Record = Record, - TVariables = void, -> = Partial> & { +export type UseContractWriteProps = Record> = Partial< + MutationOptions +> & { abi: TAbi; address?: string; - fn?: ( - data: { - contract: any; //ContractPromise; - api: ApiPromise; - address: string; - signer: unknown; - }, - variables: TVariables, - ) => any; + method: string; + args?: any[]; + options?: ContractOptions | ((api: ApiPromise) => ContractOptions); }; -export const useContractWrite = , TVariables = void>({ +export const useContractWrite = >({ abi, address, - fn, + method, + args, + options, ...rest -}: UseContractWriteProps) => { +}: UseContractWriteProps) => { const { api, signer, address: walletAddress } = useSharedState(); const [transaction, setTransaction] = useState(); @@ -44,12 +42,15 @@ export const useContractWrite = , TVa () => (api && address ? new ContractPromise(api, abi, address) : undefined), [abi, address, api], ); - const isReady = !!contract && !!fn && !!api && !!walletAddress && !!signer; - const submit = async (variables: TVariables) => { + const isReady = !!contract && !!api && !!walletAddress && !!signer; + const submit = async (submitArgs?: any[] | void) => { + if (!isReady) throw undefined; + setTransaction({ status: 'Pending' }); + const fnArgs = submitArgs || args || []; + const contractOptions = (typeof options === 'function' ? options(api) : options) || createWriteOptions(api); + return new Promise((resolve, reject) => { - if (!isReady) return reject(undefined); - setTransaction({ status: 'Pending' }); - const unsubPromise: Promise | undefined = fn({ contract, api, signer, address: walletAddress }, variables) + const unsubPromise = contract.tx[method](contractOptions || {}, ...fnArgs) .signAndSend(walletAddress, { signer }, (result: SubmittableResultValue) => { const tx = { hex: result.txHash.toHex(), @@ -57,17 +58,8 @@ export const useContractWrite = , TVa }; setTransaction(tx); if (result.dispatchError) { - // TODO: improve this part - log and format errors - if (result.dispatchError.isModule) { - // for module errors, we have the section indexed, lookup - const decoded = api.registry.findMetaError(result.dispatchError.asModule); - const { docs, name, section } = decoded; - console.log(`${section}.${name}: ${docs.join(' ')}`); - } else { - // Other, CannotLookup, BadOrigin, no extra info - console.log(result.dispatchError.toString()); - } - reject(result.dispatchError); + parseTransactionError(result, api); + reject(result); } if (result.status.isFinalized) { if (unsubPromise) { @@ -77,7 +69,7 @@ export const useContractWrite = , TVa } }) .catch((err: Error) => { - console.log(err); + console.error(err); setTransaction(undefined); reject(err); }); diff --git a/src/shared/useTokenAllowance.ts b/src/shared/useTokenAllowance.ts index 0a79fe72..52b33cf0 100644 --- a/src/shared/useTokenAllowance.ts +++ b/src/shared/useTokenAllowance.ts @@ -1,16 +1,24 @@ +import { Abi } from '@polkadot/api-contract'; import { mockERC20 } from '../contracts/nabla/MockERC20'; import { cacheKeys } from './constants'; import { QueryOptions } from './helpers'; -import { nativeToDecimal } from './parseNumbers'; import { useContract } from './useContract'; -export type UseTokenAllowance = { +export type UseTokenAllowance = { + /** contract/token address */ token?: string; + /** spender address */ spender: string | undefined; + /** owner address */ owner: string | undefined; + /** contract abi */ + abi?: TAbi; }; -export const useTokenAllowance = ({ token, owner, spender }: UseTokenAllowance, options?: QueryOptions) => { +export const useTokenAllowance = ( + { token, owner, spender, abi }: UseTokenAllowance, + options?: QueryOptions, +) => { const isEnabled = Boolean(token && owner && spender && options?.enabled); return useContract([cacheKeys.tokenAllowance, spender, token, owner], { cacheTime: 180000, @@ -19,26 +27,11 @@ export const useTokenAllowance = ({ token, owner, spender }: UseTokenAllowance, refetchOnReconnect: false, refetchOnWindowFocus: false, ...options, - abi: mockERC20, + abi: abi || mockERC20, address: token, - fn: - ({ contract, api }) => - async () => { - const data = await contract.query.allowance( - owner, - { - gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '1000000', - }), - storageDepositLimit: null, - }, - owner, - spender, - ); - if (!data?.result?.isOk || data?.output === undefined) throw new Error(data); - return nativeToDecimal(parseFloat(data.output.toString()) || 0); - }, + owner, + method: 'allowance', + args: [owner, spender], enabled: isEnabled, }); }; diff --git a/src/shared/useTokenApproval.ts b/src/shared/useTokenApproval.ts index 5b526c23..b2724bac 100644 --- a/src/shared/useTokenApproval.ts +++ b/src/shared/useTokenApproval.ts @@ -2,7 +2,7 @@ import { useMemo, useState } from 'react'; import { mockERC20 } from '../contracts/nabla/MockERC20'; import { useSharedState } from './Provider'; -import { decimalToNative } from './parseNumbers'; +import { decimalToNative, nativeToDecimal } from './parseNumbers'; import { UseContractWriteProps, useContractWrite } from './useContractWrite'; import { useTokenAllowance } from './useTokenAllowance'; @@ -40,7 +40,7 @@ export const useTokenApproval = ({ const amountBI = decimalToNative(amount); const isEnabled = Boolean(token && spender && address && enabled); const { - data: allowance, + data: allowanceData, isLoading: isAllowanceLoading, refetch, } = useTokenAllowance( @@ -55,21 +55,15 @@ export const useTokenApproval = ({ const mutation = useContractWrite({ abi: mockERC20, address: token, - fn: - isEnabled && allowance !== undefined && !isAllowanceLoading - ? ({ contract, api }) => - contract.tx.approve( - { - gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '100000000000', - }), - storageDepositLimit: null, - }, - spender, - approveMax ? maxInt : amountBI.toString(), - ) - : undefined, + method: 'approve', + args: [spender, approveMax ? maxInt : amountBI.toString()], + options: (api) => ({ + gasLimit: api.createType('WeightV2', { + refTime: '100000000000', + proofSize: '1000000', + }), + storageDepositLimit: null, + }), onError: (err) => { setPending(false); if (onError) onError(err); @@ -84,6 +78,11 @@ export const useTokenApproval = ({ }, }); + const allowance = useMemo( + () => nativeToDecimal(parseFloat(allowanceData?.output?.toString() || '0') || 0).toNumber(), + [allowanceData], + ); + return useMemo<[ApprovalState, typeof mutation]>(() => { let state = ApprovalState.UNKNOWN; // if (amount?.currency.isNative) state = ApprovalState.APPROVED; From 3e3c44a9c237c03391424607d5255c8b475788e1 Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Wed, 23 Aug 2023 09:55:50 +0200 Subject: [PATCH 03/33] [feat] 220 add nova wallet support to the mobile version of portal (#234) * detect if mobile and add novawallet button * change icon * Add Nova Wallet integration in Talisman modal * Slightly improved account box * Add disclaimer explaining why we don't need to implement these methods. --- package.json | 5 +- src/assets/nova-wallet.png | Bin 0 -> 490787 bytes src/components/Wallet/NovaWallet/index.tsx | 112 ++++++ src/components/Wallet/index.tsx | 37 +- src/services/walletConnect/index.ts | 12 +- yarn.lock | 399 +++++++++++++++++++-- 6 files changed, 521 insertions(+), 44 deletions(-) create mode 100644 src/assets/nova-wallet.png create mode 100644 src/components/Wallet/NovaWallet/index.tsx diff --git a/package.json b/package.json index 80b4783d..f2332744 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@polkadot/api-base": "^9.9.1", "@polkadot/api-contract": "^9.9.1", "@polkadot/api-derive": "^9.9.1", - "@polkadot/extension-dapp": "^0.44.6", + "@polkadot/extension-dapp": "^0.46.5", "@polkadot/keyring": "^10.1.9", "@polkadot/rpc-augment": "^9.9.1", "@polkadot/rpc-core": "^9.9.1", @@ -50,6 +50,7 @@ "match-sorter": "^6.3.1", "preact": "^10.12.1", "react-daisyui": "^3.0.3", + "react-device-detect": "^2.2.3", "react-hook-form": "^7.43.2", "react-router-dom": "^6.8.1", "react-table": "^7.8.0", @@ -113,4 +114,4 @@ "npm": "please-use-yarn", "yarn": ">=1.22.19" } -} \ No newline at end of file +} diff --git a/src/assets/nova-wallet.png b/src/assets/nova-wallet.png new file mode 100644 index 0000000000000000000000000000000000000000..3de50a9b2ee5d08ef0f5fcc33c6665778530efe0 GIT binary patch literal 490787 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%0AXV?kZ6Bj}L_PH21=$;T6R9|9)eDfQ|NM5N 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 Im0h?CLK^j% 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 VSc==&LID4sqU`67RWfEF{|`IV5Fh{m literal 0 HcmV?d00001 diff --git a/src/components/Wallet/NovaWallet/index.tsx b/src/components/Wallet/NovaWallet/index.tsx new file mode 100644 index 00000000..1eaabefe --- /dev/null +++ b/src/components/Wallet/NovaWallet/index.tsx @@ -0,0 +1,112 @@ +import { web3Accounts, web3Enable, web3FromAddress } from '@polkadot/extension-dapp'; +import { useCallback, useEffect, useState } from 'preact/compat'; +import { Modal } from 'react-daisyui'; +import { GlobalState } from '../../../GlobalStateProvider'; +import logo from '../../../assets/nova-wallet.png'; +import { PublicKey } from '../../PublicKey'; + +export type NovaWalletProps = { + setWalletAccount: GlobalState['setWalletAccount']; +}; + +interface ExtensionAccount { + address: string; + name: string; + source: string; +} + +const NovaWallet = ({ setWalletAccount }: NovaWalletProps) => { + const [openModal, setOpenModal] = useState(false); + const [accounts, setAccounts] = useState([]); + const [selectedAccount, setSelectedAccount] = useState(); + + const onClick = useCallback(async () => { + const allInjected = await web3Enable('Pendulum Chain Portal'); + const allAccounts = await web3Accounts(); + setAccounts( + allAccounts + .filter(({ meta: { source } }) => source === 'polkadot-js') + .map( + ({ address, meta }): ExtensionAccount => ({ + address: address, + name: meta.name || 'My Account', + source: meta.source, + }), + ), + ); + setOpenModal(true); + }, [setOpenModal]); + + useEffect(() => { + async function buildWalletAccount(extAcc: ExtensionAccount) { + const signer = await web3FromAddress(extAcc.address); + return { + address: extAcc.address, + source: extAcc.source, + name: extAcc.name, + signer, + wallet: { + enable: () => undefined, + extensionName: 'polkadot-js', + title: 'Nova Wallet', + installUrl: 'https://novawallet.io/', + logo: { + src: logo, + alt: 'Nova Wallet', + }, + installed: true, + extension: undefined, + signer, + /** + * The following methods are tagged as 'Unused' since they are only required by the @talisman package, + * which we are not using to handle this wallet connection. + */ + getAccounts: () => Promise.resolve([]), // Unused + subscribeAccounts: () => undefined, // Unused + transformError: (err: any) => err, // Unused + }, + }; + } + if (selectedAccount) { + buildWalletAccount(selectedAccount) + .then((account) => setWalletAccount(account)) + .then(() => { + setOpenModal(false); + }) + .catch((error) => console.error(error)); + } + }, [selectedAccount]); + + return ( +

+ ); +}; + +export default NovaWallet; diff --git a/src/components/Wallet/index.tsx b/src/components/Wallet/index.tsx index a2da1ab9..8a74f3b5 100644 --- a/src/components/Wallet/index.tsx +++ b/src/components/Wallet/index.tsx @@ -1,11 +1,14 @@ import { ArrowLeftOnRectangleIcon } from '@heroicons/react/20/solid'; import { WalletSelect } from '@talismn/connect-components'; -import { Button, Dropdown } from 'react-daisyui'; +import { Button, Divider, Dropdown } from 'react-daisyui'; +import { isMobile } from 'react-device-detect'; import { useGlobalState } from '../../GlobalStateProvider'; import { useNodeInfoState } from '../../NodeInfoProvider'; -import { getAddressForFormat, trimAddress } from '../../helpers/addressFormatter'; +import { getAddressForFormat } from '../../helpers/addressFormatter'; import { useAccountBalance } from '../../shared/useAccountBalance'; +import { CopyableAddress } from '../PublicKey'; import { Skeleton } from '../Skeleton'; +import NovaWallet from './NovaWallet'; import WalletConnect from './WalletConnect'; const OpenWallet = ({ dAppName }: { dAppName: string }): JSX.Element => { @@ -14,12 +17,9 @@ const OpenWallet = ({ dAppName }: { dAppName: string }): JSX.Element => { const { query, balance } = useAccountBalance(); const { ss58Format, tokenSymbol } = useNodeInfoState().state; - const trimmedAddress = address - ? trimAddress(ss58Format ? getAddressForFormat(address, ss58Format) : address, 4) - : undefined; return ( <> - {trimmedAddress ? ( + {address ? ( - -
- {trimmedAddress} + +
{walletAccount?.name}
+
+

{balance} {tokenSymbol} @@ -63,7 +68,17 @@ const OpenWallet = ({ dAppName }: { dAppName: string }): JSX.Element => { } onAccountSelected={setWalletAccount} - footer={} + footer={ + <> + {isMobile && ( + <> + + + + )} + + + } /> )} diff --git a/src/services/walletConnect/index.ts b/src/services/walletConnect/index.ts index 720bdaad..7e0e2cce 100644 --- a/src/services/walletConnect/index.ts +++ b/src/services/walletConnect/index.ts @@ -1,8 +1,8 @@ +import { SignerPayloadJSON } from '@polkadot/types/types'; import { WalletAccount } from '@talismn/connect-wallets'; import type { SessionTypes } from '@walletconnect/types/dist/types/sign-client/session'; import UniversalProvider from '@walletconnect/universal-provider'; import logo from '../../assets/wallet-connect.svg'; -import { SignerPayloadJSON } from '@polkadot/types/types'; import { config } from '../../config'; // TODO: improve this @@ -61,9 +61,13 @@ export const walletConnectService = { installed: true, extension: undefined, signer, - getAccounts: () => Promise.resolve([]), // TODO - subscribeAccounts: () => undefined, // TODO - transformError: (err) => err, // TODO + /** + * The following methods are tagged as 'Unused' since they are only required by the @talisman package, + * which we are not using to handle this wallet connection. + */ + getAccounts: () => Promise.resolve([]), // Unused + subscribeAccounts: () => undefined, // Unused + transformError: (err: any) => err, // Unused }, }; }, diff --git a/yarn.lock b/yarn.lock index ede37d39..d89ebae7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2332,6 +2332,13 @@ dependencies: "@noble/hashes" "1.3.0" +"@noble/curves@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + "@noble/hashes@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" @@ -2342,6 +2349,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + "@noble/secp256k1@1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" @@ -2794,6 +2806,19 @@ "@polkadot/util" "^12.1.2" tslib "^2.5.0" +"@polkadot/api-augment@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-10.9.1.tgz#9fc81b81903229bb23b0b16783e97ec52a5d4f1b" + integrity sha512-kRZZvCFVcN4hAH4dJ+Qzfdy27/4EEq3oLDf3ihj0LTVrAezSWcKPGE3EVFy+Mn6Lo4SUc7RVyoKvIUhSk2l4Dg== + dependencies: + "@polkadot/api-base" "10.9.1" + "@polkadot/rpc-augment" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-augment" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + "@polkadot/api-augment@9.14.2": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-9.14.2.tgz#2c49cdcfdf7057523db1dc8d7b0801391a8a2e69" @@ -2818,6 +2843,17 @@ rxjs "^7.8.1" tslib "^2.5.0" +"@polkadot/api-base@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-10.9.1.tgz#27f63c4950814c2f10535f794121fa1384dc2207" + integrity sha512-Q3m2KzlceMK2kX8bhnUZWk3RT6emmijeeFZZQgCePpEcrSeNjnqG4qjuTPgkveaOkUT8MAoDc5Avuzcc2jlW9g== + dependencies: + "@polkadot/rpc-core" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/util" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + "@polkadot/api-base@9.14.2", "@polkadot/api-base@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-9.14.2.tgz#605b44e3692a125bd8d97eed9cea8af9d0c454e2" @@ -2859,6 +2895,22 @@ rxjs "^7.8.1" tslib "^2.5.0" +"@polkadot/api-derive@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-10.9.1.tgz#04a4ca3285fd215c4cd50cfb3f4791d38dd90050" + integrity sha512-mRud1UZCFIc4Z63qAoGSIHh/foyUYADfy1RQYCmPpeFKfIdCIrHpd7xFdJXTOMYOS0BwlM6u4qli/ZT4XigezQ== + dependencies: + "@polkadot/api" "10.9.1" + "@polkadot/api-augment" "10.9.1" + "@polkadot/api-base" "10.9.1" + "@polkadot/rpc-core" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + "@polkadot/api-derive@9.14.2", "@polkadot/api-derive@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-9.14.2.tgz#e8fcd4ee3f2b80b9fe34d4dec96169c3bdb4214d" @@ -2898,6 +2950,29 @@ rxjs "^7.8.1" tslib "^2.5.0" +"@polkadot/api@10.9.1", "@polkadot/api@^10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-10.9.1.tgz#156b3436f45ef18218960804988c1f552d2c4e46" + integrity sha512-ND/2UqZBWvtt4PfV03OStTKg0mxmPk4UpMAgJKutdgsz/wP9CYJ1KbjwFgPNekL9JnzbKQsWyQNPVrcw7kQk8A== + dependencies: + "@polkadot/api-augment" "10.9.1" + "@polkadot/api-base" "10.9.1" + "@polkadot/api-derive" "10.9.1" + "@polkadot/keyring" "^12.3.1" + "@polkadot/rpc-augment" "10.9.1" + "@polkadot/rpc-core" "10.9.1" + "@polkadot/rpc-provider" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-augment" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/types-known" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + eventemitter3 "^5.0.1" + rxjs "^7.8.1" + tslib "^2.5.3" + "@polkadot/api@9.14.2", "@polkadot/api@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-9.14.2.tgz#d5cee02236654c6063d7c4b70c78c290db5aba8d" @@ -2921,27 +2996,28 @@ eventemitter3 "^5.0.0" rxjs "^7.8.0" -"@polkadot/extension-dapp@^0.44.6": - version "0.44.9" - resolved "https://registry.yarnpkg.com/@polkadot/extension-dapp/-/extension-dapp-0.44.9.tgz#0ed8ba7442e36b1dde950c90767a07b13eb2cb81" - integrity sha512-xYY9bg4y2YW1ORWTflrPBypYueCpzajlYsU1CWuPP9fzKsdfd97wwa+dIYYvLbJy7tcivC+uIT3BpaFaJn2mXg== - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/extension-inject" "^0.44.9" - "@polkadot/util" "^10.4.2" - "@polkadot/util-crypto" "^10.4.2" - -"@polkadot/extension-inject@^0.44.9": - version "0.44.9" - resolved "https://registry.yarnpkg.com/@polkadot/extension-inject/-/extension-inject-0.44.9.tgz#5c4486fabdd799387274a62b0628688e162e206c" - integrity sha512-c23vp0C/8R5C3gdqoH2JRlKcvVjJFl9uM3t6rM/uwDs7GEQr9jrsmIOHGhNoI1/M/xBrCm/KuYNYi0dafdm/Vw== - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/rpc-provider" "^9.14.2" - "@polkadot/types" "^9.14.2" - "@polkadot/util" "^10.4.2" - "@polkadot/util-crypto" "^10.4.2" - "@polkadot/x-global" "^10.4.2" +"@polkadot/extension-dapp@^0.46.5": + version "0.46.5" + resolved "https://registry.yarnpkg.com/@polkadot/extension-dapp/-/extension-dapp-0.46.5.tgz#ace9dfda199ddc1e588f3506ac678641392ee41e" + integrity sha512-9Efm3oorx6orq1eue+tTk5rxuGFFCUdRxiZbdQMKiVl3lZnwBn0M61ceE3xXcf/oIwAm8RhUpQdwcbZfupJRgw== + dependencies: + "@polkadot/extension-inject" "0.46.5" + "@polkadot/util" "^12.3.2" + "@polkadot/util-crypto" "^12.3.2" + tslib "^2.5.3" + +"@polkadot/extension-inject@0.46.5": + version "0.46.5" + resolved "https://registry.yarnpkg.com/@polkadot/extension-inject/-/extension-inject-0.46.5.tgz#6abee0eb28a73fd1a9461f257cac5875c2e9fc63" + integrity sha512-QcpkCMuv7iFbWjufkw14JRozpEYFyjP0H8KOJ8IsHGfPd2DPiismQ0NXr+AS7f6U+0I+Rhv9E4dnXxtJPROVMQ== + dependencies: + "@polkadot/api" "^10.9.1" + "@polkadot/rpc-provider" "^10.9.1" + "@polkadot/types" "^10.9.1" + "@polkadot/util" "^12.3.2" + "@polkadot/util-crypto" "^12.3.2" + "@polkadot/x-global" "^12.3.2" + tslib "^2.5.3" "@polkadot/keyring@^10.1.9", "@polkadot/keyring@^10.4.2": version "10.4.2" @@ -2961,6 +3037,15 @@ "@polkadot/util-crypto" "12.1.2" tslib "^2.5.0" +"@polkadot/keyring@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-12.3.2.tgz#112a0c28816a1f47edad6260dc94222c29465a54" + integrity sha512-NTdtDeI0DP9l/45hXynNABeP5VB8piw5YR+CbUxK2e36xpJWVXwbcOepzslg5ghE9rs8UKJb30Z/HqTU4sBY0Q== + dependencies: + "@polkadot/util" "12.3.2" + "@polkadot/util-crypto" "12.3.2" + tslib "^2.5.3" + "@polkadot/networks@10.4.2", "@polkadot/networks@^10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.4.2.tgz#d7878c6aad8173c800a21140bfe5459261724456" @@ -2979,6 +3064,15 @@ "@substrate/ss58-registry" "^1.40.0" tslib "^2.5.0" +"@polkadot/networks@12.3.2", "@polkadot/networks@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-12.3.2.tgz#131b0439c481add159814dd2cf0286c6c3fe5b3b" + integrity sha512-uCkyybKoeEm1daKr0uT/9oNDHDDzCy2/ZdVl346hQqfdR1Ct3BaxMjxqvdmb5N8aCw0cBWSfgsxAYtw8ESmllQ== + dependencies: + "@polkadot/util" "12.3.2" + "@substrate/ss58-registry" "^1.40.0" + tslib "^2.5.3" + "@polkadot/rpc-augment@10.6.1": version "10.6.1" resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-10.6.1.tgz#7be7dcff3b44285cca160a38af907a9a1cda4adb" @@ -2990,6 +3084,17 @@ "@polkadot/util" "^12.1.2" tslib "^2.5.0" +"@polkadot/rpc-augment@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-10.9.1.tgz#214ec3ee145d20caa61ea204041a3aadb89c6b0f" + integrity sha512-MaLHkNlyqN20ZRYr6uNd1BZr1OsrnX9qLAmsl0mcrri1vPGRH6VHjfFH1RBLkikpWD82v17g0l2hLwdV1ZHMcw== + dependencies: + "@polkadot/rpc-core" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + "@polkadot/rpc-augment@9.14.2", "@polkadot/rpc-augment@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-9.14.2.tgz#eb70d5511463dab8d995faeb77d4edfe4952fe26" @@ -3013,6 +3118,18 @@ rxjs "^7.8.1" tslib "^2.5.0" +"@polkadot/rpc-core@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-10.9.1.tgz#798c514dbed6f6c2e43098a494c9f51fb144dc31" + integrity sha512-ZtA8B8SfXSAwVkBlCcKRHw0eSM7ec/sbiNOM5GasXPeRujUgT7lOwSH2GbUZSqe9RfRDMp6DvO9c2JoGc3LLWw== + dependencies: + "@polkadot/rpc-augment" "10.9.1" + "@polkadot/rpc-provider" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/util" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + "@polkadot/rpc-core@9.14.2", "@polkadot/rpc-core@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-9.14.2.tgz#26d4f00ac7abbf880f8280e9b96235880d35794b" @@ -3045,7 +3162,27 @@ optionalDependencies: "@substrate/connect" "0.7.26" -"@polkadot/rpc-provider@9.14.2", "@polkadot/rpc-provider@^9.14.2", "@polkadot/rpc-provider@^9.9.1": +"@polkadot/rpc-provider@10.9.1", "@polkadot/rpc-provider@^10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-10.9.1.tgz#de3a474bbcd26d28d9cd3134acdb3b5ce92b680b" + integrity sha512-4QzT2QzD+320+eT6b79sGAA85Tt3Bb8fQvse4r5Mom2iiBd2SO81vOhxSAOaIe4GUsw25VzFJmsbe7+OObItdg== + dependencies: + "@polkadot/keyring" "^12.3.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-support" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + "@polkadot/x-fetch" "^12.3.1" + "@polkadot/x-global" "^12.3.1" + "@polkadot/x-ws" "^12.3.1" + eventemitter3 "^5.0.1" + mock-socket "^9.2.1" + nock "^13.3.1" + tslib "^2.5.3" + optionalDependencies: + "@substrate/connect" "0.7.26" + +"@polkadot/rpc-provider@9.14.2", "@polkadot/rpc-provider@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-9.14.2.tgz#0dea667f3a03bf530f202cba5cd360df19b32e30" integrity sha512-YTSywjD5PF01V47Ru5tln2LlpUwJiSOdz6rlJXPpMaY53hUp7+xMU01FVAQ1bllSBNisSD1Msv/mYHq84Oai2g== @@ -3075,6 +3212,16 @@ "@polkadot/util" "^12.1.2" tslib "^2.5.0" +"@polkadot/types-augment@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-10.9.1.tgz#5f1c1225c04ffbfe243629a46087c9c9de25a6b3" + integrity sha512-OY9/jTMFRFqYdkUnfcGwqMLC64A0Q25bjvCuVQCVjsPFKE3wl0Kt5rNT01eV2UmLXrR6fY0xWbR2w80bLA7CIQ== + dependencies: + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + "@polkadot/types-augment@9.14.2", "@polkadot/types-augment@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-9.14.2.tgz#1a478e18e713b04038f3e171287ee5abe908f0aa" @@ -3094,6 +3241,15 @@ "@polkadot/x-bigint" "^12.1.2" tslib "^2.5.0" +"@polkadot/types-codec@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-10.9.1.tgz#f30026d3dfeaa69c07c45fa66d1c39318fd232cc" + integrity sha512-mJ5OegKGraY1FLvEa8FopRCr3pQrhDkcn5RNOjmgJQozENVeRaxhk0NwxYz7IojFvSDnKnc6lNQfKaaSe5pLHg== + dependencies: + "@polkadot/util" "^12.3.1" + "@polkadot/x-bigint" "^12.3.1" + tslib "^2.5.3" + "@polkadot/types-codec@9.14.2", "@polkadot/types-codec@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-9.14.2.tgz#d625c80495d7a68237b3d5c0a60ff10d206131fa" @@ -3112,6 +3268,15 @@ "@polkadot/util" "^12.1.2" tslib "^2.5.0" +"@polkadot/types-create@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-10.9.1.tgz#087d7e2af51cce558b67e3859613b932a3bdc0a3" + integrity sha512-OVz50MGTTuiuVnRP/zAx4CTuLioc0hsiwNwqN2lNhmIJGtnQ4Vy/7mQRsIWehiYz6g0Vzzm5B3qWkTXO1NSN5w== + dependencies: + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + "@polkadot/types-create@9.14.2", "@polkadot/types-create@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-9.14.2.tgz#aec515a2d3bc7e7b7802095cdd35ece48dc442bc" @@ -3133,6 +3298,18 @@ "@polkadot/util" "^12.1.2" tslib "^2.5.0" +"@polkadot/types-known@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-10.9.1.tgz#fe0c7e55191aa843119edcaf9abb5d2471463a7d" + integrity sha512-zCMVWc4pJtkbMFPu72bD4IhvV/gkHXPX3C5uu92WdmCfnn0vEIEsMKWlVXVVvQQZKAqvs/awpqIfrUtEViOGEA== + dependencies: + "@polkadot/networks" "^12.3.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + "@polkadot/types-known@9.14.2", "@polkadot/types-known@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-9.14.2.tgz#17fe5034a5b907bd006093a687f112b07edadf10" @@ -3153,6 +3330,14 @@ "@polkadot/util" "^12.1.2" tslib "^2.5.0" +"@polkadot/types-support@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-10.9.1.tgz#17a861aab8e5a225a4e20cefa2d16076ddd51baf" + integrity sha512-XsieuLDsszvMZQlleacQBfx07i/JkwQV/UxH9q8Hz7Okmaz9pEVEW1h3ka2/cPuC7a4l32JhaORBUYshBZNdJg== + dependencies: + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + "@polkadot/types-support@9.14.2": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-9.14.2.tgz#d25e8d4e5ec3deef914cb55fc8bc5448431ddd18" @@ -3175,7 +3360,21 @@ rxjs "^7.8.1" tslib "^2.5.0" -"@polkadot/types@9.14.2", "@polkadot/types@^9.14.2", "@polkadot/types@^9.9.1": +"@polkadot/types@10.9.1", "@polkadot/types@^10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-10.9.1.tgz#f111d00f7278ad3be95deba3d701fafefe080cb2" + integrity sha512-AG33i2ZGGfq7u+5rkAdGrXAQHHl844/Yv+junH5ZzX69xiCoWO1bH/yzDUNBdpki2GlACWvF9nLYh3F2tVF93w== + dependencies: + "@polkadot/keyring" "^12.3.1" + "@polkadot/types-augment" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/types@9.14.2", "@polkadot/types@^9.9.1": version "9.14.2" resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-9.14.2.tgz#5105f41eb9e8ea29938188d21497cbf1753268b8" integrity sha512-hGLddTiJbvowhhUZJ3k+olmmBc1KAjWIQxujIUIYASih8FQ3/YJDKxaofGOzh0VygOKW3jxQBN2VZPofyDP9KQ== @@ -3222,6 +3421,22 @@ "@scure/base" "1.1.1" tslib "^2.5.0" +"@polkadot/util-crypto@12.3.2", "@polkadot/util-crypto@^12.3.1", "@polkadot/util-crypto@^12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-12.3.2.tgz#42d810886904e06fa6e5db254c15f6ef80f4ab72" + integrity sha512-pTpx+YxolY0BDT4RcGmgeKbHHD/dI6Ll9xRsqmVdIjpcVVY20uDNTyXs81ZNtfKgyod1y9JQkfNv2Dz9iEpTkQ== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@polkadot/networks" "12.3.2" + "@polkadot/util" "12.3.2" + "@polkadot/wasm-crypto" "^7.2.1" + "@polkadot/wasm-util" "^7.2.1" + "@polkadot/x-bigint" "12.3.2" + "@polkadot/x-randomvalues" "12.3.2" + "@scure/base" "1.1.1" + tslib "^2.5.3" + "@polkadot/util@10.4.2", "@polkadot/util@^10.1.9", "@polkadot/util@^10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.4.2.tgz#df41805cb27f46b2b4dad24c371fa2a68761baa1" @@ -3248,6 +3463,19 @@ bn.js "^5.2.1" tslib "^2.5.0" +"@polkadot/util@12.3.2", "@polkadot/util@^12.3.1", "@polkadot/util@^12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-12.3.2.tgz#f46e147b0e6a426da5ba59df4ce65de1a3effe4a" + integrity sha512-y/JShcGyOamCUiSIg++XZuLHt1ktSKBaSH2K5Nw5NXlgP0+7am+GZzqPB8fQ4qhYLruEOv+YRiz0GC1Zr9S+wg== + dependencies: + "@polkadot/x-bigint" "12.3.2" + "@polkadot/x-global" "12.3.2" + "@polkadot/x-textdecoder" "12.3.2" + "@polkadot/x-textencoder" "12.3.2" + "@types/bn.js" "^5.1.1" + bn.js "^5.2.1" + tslib "^2.5.3" + "@polkadot/wasm-bridge@6.4.1": version "6.4.1" resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.4.1.tgz#e97915dd67ba543ec3381299c2a5b9330686e27e" @@ -3263,6 +3491,14 @@ "@polkadot/wasm-util" "7.1.2" tslib "^2.5.0" +"@polkadot/wasm-bridge@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-7.2.1.tgz#8464a96552207d2b49c6f32137b24132534b91ee" + integrity sha512-uV/LHREDBGBbHrrv7HTki+Klw0PYZzFomagFWII4lp6Toj/VCvRh5WMzooVC+g/XsBGosAwrvBhoModabyHx+A== + dependencies: + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + "@polkadot/wasm-crypto-asmjs@6.4.1": version "6.4.1" resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.4.1.tgz#3cc76bbda5ea4a7a860982c64f9565907b312253" @@ -3277,6 +3513,13 @@ dependencies: tslib "^2.5.0" +"@polkadot/wasm-crypto-asmjs@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.2.1.tgz#3e7a91e2905ab7354bc37b82f3e151a62bb024db" + integrity sha512-z/d21bmxyVfkzGsKef/FWswKX02x5lK97f4NPBZ9XBeiFkmzlXhdSnu58/+b1sKsRAGdW/Rn/rTNRDhW0GqCAg== + dependencies: + tslib "^2.5.0" + "@polkadot/wasm-crypto-init@6.4.1": version "6.4.1" resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.4.1.tgz#4d9ab0030db52cf177bf707ef8e77aa4ca721668" @@ -3298,6 +3541,17 @@ "@polkadot/wasm-util" "7.1.2" tslib "^2.5.0" +"@polkadot/wasm-crypto-init@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.2.1.tgz#9dbba41ed7d382575240f1483cf5a139ff2787bd" + integrity sha512-GcEXtwN9LcSf32V9zSaYjHImFw16hCyo2Xzg4GLLDPPeaAAfbFr2oQMgwyDbvBrBjLKHVHjsPZyGhXae831amw== + dependencies: + "@polkadot/wasm-bridge" "7.2.1" + "@polkadot/wasm-crypto-asmjs" "7.2.1" + "@polkadot/wasm-crypto-wasm" "7.2.1" + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + "@polkadot/wasm-crypto-wasm@6.4.1": version "6.4.1" resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.4.1.tgz#97180f80583b18f6a13c1054fa5f7e8da40b1028" @@ -3314,6 +3568,14 @@ "@polkadot/wasm-util" "7.1.2" tslib "^2.5.0" +"@polkadot/wasm-crypto-wasm@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.2.1.tgz#d2486322c725f6e5d2cc2d6abcb77ecbbaedc738" + integrity sha512-DqyXE4rSD0CVlLIw88B58+HHNyrvm+JAnYyuEDYZwCvzUWOCNos/DDg9wi/K39VAIsCCKDmwKqkkfIofuOj/lA== + dependencies: + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + "@polkadot/wasm-crypto@^6.4.1": version "6.4.1" resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.4.1.tgz#79310e23ad1ca62362ba893db6a8567154c2536a" @@ -3338,6 +3600,18 @@ "@polkadot/wasm-util" "7.1.2" tslib "^2.5.0" +"@polkadot/wasm-crypto@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-7.2.1.tgz#db671dcb73f1646dc13478b5ffc3be18c64babe1" + integrity sha512-SA2+33S9TAwGhniKgztVN6pxUKpGfN4Tre/eUZGUfpgRkT92wIUT2GpGWQE+fCCqGQgADrNiBcwt6XwdPqMQ4Q== + dependencies: + "@polkadot/wasm-bridge" "7.2.1" + "@polkadot/wasm-crypto-asmjs" "7.2.1" + "@polkadot/wasm-crypto-init" "7.2.1" + "@polkadot/wasm-crypto-wasm" "7.2.1" + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + "@polkadot/wasm-util@6.4.1": version "6.4.1" resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.4.1.tgz#74aecc85bec427a9225d9874685944ea3dc3ab76" @@ -3352,6 +3626,13 @@ dependencies: tslib "^2.5.0" +"@polkadot/wasm-util@7.2.1", "@polkadot/wasm-util@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-7.2.1.tgz#fda233120ec02f77f0d14e4d3c7ad9ce06535fb8" + integrity sha512-FBSn/3aYJzhN0sYAYhHB8y9JL8mVgxLy4M1kUXYbyo+8GLRQEN5rns8Vcb8TAlIzBWgVTOOptYBvxo0oj0h7Og== + dependencies: + tslib "^2.5.0" + "@polkadot/x-bigint@10.4.2", "@polkadot/x-bigint@^10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.4.2.tgz#7eb2ec732259df48b5a00f07879a1331e05606ec" @@ -3368,6 +3649,14 @@ "@polkadot/x-global" "12.1.2" tslib "^2.5.0" +"@polkadot/x-bigint@12.3.2", "@polkadot/x-bigint@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-12.3.2.tgz#0e99489cc7938bed40762aaaed58ded6850ab54b" + integrity sha512-JLqLgfGXe/x+hZJETd5ZqfpVsbwyMsH5Nn1Q20ineMMjXN/ig+kVR8Mc15LXBMuw4g7LldFW6UUrotWnuMI8Yw== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + "@polkadot/x-fetch@^10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-10.4.2.tgz#bc6ba70de71a252472fbe36180511ed920e05f05" @@ -3387,6 +3676,15 @@ node-fetch "^3.3.1" tslib "^2.5.0" +"@polkadot/x-fetch@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-12.3.2.tgz#7e8d2113268e792dd5d1b259ef13839c6aa77996" + integrity sha512-3IEuZ5S+RI/t33NsdPLIIa5COfDCfpUW2sbaByEczn75aD1jLqJZSEDwiBniJ2osyNd4uUxBf6e5jw7LAZeZJg== + dependencies: + "@polkadot/x-global" "12.3.2" + node-fetch "^3.3.1" + tslib "^2.5.3" + "@polkadot/x-global@10.4.2", "@polkadot/x-global@^10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.4.2.tgz#5662366e3deda0b4c8f024b2d902fa838f9e60a4" @@ -3401,6 +3699,13 @@ dependencies: tslib "^2.5.0" +"@polkadot/x-global@12.3.2", "@polkadot/x-global@^12.3.1", "@polkadot/x-global@^12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-12.3.2.tgz#04ac0b0e559a35107f0b95ff7889fcade3796aa3" + integrity sha512-yVZq6oIegjlyh5rUZiTklgu+fL+W/DG1ypEa02683tUCB3avV5cA3PAHKptMSlb6FpweHu37lKKrqfAWrraDxg== + dependencies: + tslib "^2.5.3" + "@polkadot/x-randomvalues@10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.4.2.tgz#895f1220d5a4522a83d8d5014e3c1e03b129893e" @@ -3417,6 +3722,14 @@ "@polkadot/x-global" "12.1.2" tslib "^2.5.0" +"@polkadot/x-randomvalues@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-12.3.2.tgz#43ac489a998098bdd40b3f82f28adb5b542db2a5" + integrity sha512-ywjIs8CWpvOGmq+3cGCNPOHxAjPHdBUiXyDccftx5BRVdmtbt36gK/V84bKr6Xs73FGu0jprUAOSRRsLZX/3dg== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + "@polkadot/x-textdecoder@10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.4.2.tgz#93202f3e5ad0e7f75a3fa02d2b8a3343091b341b" @@ -3433,6 +3746,14 @@ "@polkadot/x-global" "12.1.2" tslib "^2.5.0" +"@polkadot/x-textdecoder@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-12.3.2.tgz#bbd5682744f3552ce5d4d792ff48a3ca525eafcf" + integrity sha512-lY5bfA5xArJRWEJlYOlQQMJeTjWD8s0yMhchirVgf5xj8Id9vPGeUoneH+VFDEwgXxrqBvDFJ4smN4T/r6a/fg== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + "@polkadot/x-textencoder@10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.4.2.tgz#cd2e6c8a66b0b400a73f0164e99c510fb5c83501" @@ -3449,6 +3770,14 @@ "@polkadot/x-global" "12.1.2" tslib "^2.5.0" +"@polkadot/x-textencoder@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-12.3.2.tgz#223e6f6dd78e2d81c6dcc6f244c76ceae7b08e32" + integrity sha512-iP3qEBiHzBckQ9zeY7ZHRWuu7mCEg5SMpOugs6UODRk8sx6KHzGQYlghBbWLit0uppPDVE0ifEwZ2n73djJHWQ== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + "@polkadot/x-ws@^10.4.2": version "10.4.2" resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-10.4.2.tgz#4e9d88f37717570ccf942c6f4f63b06260f45025" @@ -3468,6 +3797,15 @@ tslib "^2.5.0" ws "^8.13.0" +"@polkadot/x-ws@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-12.3.2.tgz#422559dfbdaac4c965d5e1b406b6cc4529214f94" + integrity sha512-yM9Z64pLNlHpJE43+Xtr+iUXmYpFFY5u5hrke2PJt13O48H8f9Vb9cRaIh94appLyICoS0aekGhDkGH+MCspBA== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + ws "^8.13.0" + "@preact/preset-vite@^2.5.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@preact/preset-vite/-/preset-vite-2.5.0.tgz#6ff815558c16062a36e2d5da4b1225d7b216478d" @@ -11300,6 +11638,13 @@ react-daisyui@^3.0.3: resolved "https://registry.yarnpkg.com/react-daisyui/-/react-daisyui-3.1.2.tgz#624ae430ec034db6705117028f9b9273068e8a22" integrity sha512-Wp4L9rpHyI+k7dQpVk4pXqIDubYlavPWiNBREicpJOUVaGhGv5Zm/OokEahtICYokN8nioVdZ/C2bh9981sPGg== +react-device-detect@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/react-device-detect/-/react-device-detect-2.2.3.tgz#97a7ae767cdd004e7c3578260f48cf70c036e7ca" + integrity sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw== + dependencies: + ua-parser-js "^1.0.33" + react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -12758,10 +13103,10 @@ tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@~2.5.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" - integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== +tslib@^2.5.3: + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== tsutils@^3.21.0: version "3.21.0" From ce34996ee4b4f8860e8802672a71ebceb74f4f28 Mon Sep 17 00:00:00 2001 From: Nejc Date: Thu, 24 Aug 2023 17:01:26 +0800 Subject: [PATCH 04/33] fix: release (#236) --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23f76c96..941cac6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: pr +name: ci on: pull_request: branches: [main, staging, develop] @@ -7,7 +7,7 @@ on: jobs: build: - name: Running pr + name: Running ci if: "!contains(toJSON(github.event.commits.*.message), 'chore(release):') && github.event.pull_request.draft != true" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4e3c0725..f5dacea0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,9 +19,6 @@ jobs: steps: - name: 🛒 Checkout code uses: actions/checkout@v3 - with: - fetch-depth: 0 - token: ${{ secrets.GH_TOKEN }} - name: 💿 Setup Nodejs uses: actions/setup-node@v3 From 0fd823b1da8d348933b3f0d4d64dc2225b570039 Mon Sep 17 00:00:00 2001 From: Nejc Date: Thu, 24 Aug 2023 19:50:22 +0800 Subject: [PATCH 05/33] fix: release (#238) --- .github/workflows/release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f5dacea0..4e3c0725 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,6 +19,9 @@ jobs: steps: - name: 🛒 Checkout code uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.GH_TOKEN }} - name: 💿 Setup Nodejs uses: actions/setup-node@v3 From 4625d16b3a03164e516c5852e998b03b27f018f3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 24 Aug 2023 11:52:01 +0000 Subject: [PATCH 06/33] chore(release): 1.1.0 [skip ci] # [1.1.0](https://github.com/pendulum-chain/portal/compare/v1.0.0...v1.1.0) (2023-08-24) ### Bug Fixes * lint issues ([#191](https://github.com/pendulum-chain/portal/issues/191)) ([fd128e4](https://github.com/pendulum-chain/portal/commit/fd128e4a9558bba3286b449f17cd6f32ad272755)) * release ([#236](https://github.com/pendulum-chain/portal/issues/236)) ([ce34996](https://github.com/pendulum-chain/portal/commit/ce34996ee4b4f8860e8802672a71ebceb74f4f28)) * release ([#238](https://github.com/pendulum-chain/portal/issues/238)) ([0fd823b](https://github.com/pendulum-chain/portal/commit/0fd823b1da8d348933b3f0d4d64dc2225b570039)) * table heading overlap ([#202](https://github.com/pendulum-chain/portal/issues/202)) ([061373f](https://github.com/pendulum-chain/portal/commit/061373f22c32a48091be668ffb6ac59c8f4e4c10)) * updated foucoco logo ([#198](https://github.com/pendulum-chain/portal/issues/198)) ([21dad82](https://github.com/pendulum-chain/portal/commit/21dad8288119f88168a0a82f422f7c53dd0c943a)) * wallet connection issues [#204](https://github.com/pendulum-chain/portal/issues/204) ([#209](https://github.com/pendulum-chain/portal/issues/209)) ([fb7a37c](https://github.com/pendulum-chain/portal/commit/fb7a37cc893bc00a6bfb2085d17cc4dcdae4dfe4)) ### Features * balance query ([#205](https://github.com/pendulum-chain/portal/issues/205)) ([b3aa210](https://github.com/pendulum-chain/portal/commit/b3aa210ff0d57cc16482931d0d7184efc2db5b41)) * contract hooks ([#233](https://github.com/pendulum-chain/portal/issues/233)) ([f338f37](https://github.com/pendulum-chain/portal/commit/f338f375ff4698173d45ca2b10aa3ef2949798fc)) * indexer ([#232](https://github.com/pendulum-chain/portal/issues/232)) ([2c58c70](https://github.com/pendulum-chain/portal/commit/2c58c70a31261f4d787961f47621e9210ce5489d)) * redirect on logo click [#178](https://github.com/pendulum-chain/portal/issues/178) ([#199](https://github.com/pendulum-chain/portal/issues/199)) ([9d42e97](https://github.com/pendulum-chain/portal/commit/9d42e9797fec8b89c1115f7091cf384971df3832)) * token approval ([#211](https://github.com/pendulum-chain/portal/issues/211)) ([a4ae2bd](https://github.com/pendulum-chain/portal/commit/a4ae2bd4fbab8812d4695eb76247c9e2035908bb)) * updated backstop pool ui ([#206](https://github.com/pendulum-chain/portal/issues/206)) ([1e23f10](https://github.com/pendulum-chain/portal/commit/1e23f103cae7be2d702c52aa7958e2e6b9b460f2)) * wallet connect ([#195](https://github.com/pendulum-chain/portal/issues/195)) ([5487296](https://github.com/pendulum-chain/portal/commit/5487296487c2cc52047993b5baa3e4f6e783e192)) ### Reverts * disable nabla ([#201](https://github.com/pendulum-chain/portal/issues/201)) ([2e2fe81](https://github.com/pendulum-chain/portal/commit/2e2fe8160c8a2b57a13b1f431cc2c1be887dad8c)) --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80152d81..eab7047d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +# [1.1.0](https://github.com/pendulum-chain/portal/compare/v1.0.0...v1.1.0) (2023-08-24) + + +### Bug Fixes + +* lint issues ([#191](https://github.com/pendulum-chain/portal/issues/191)) ([fd128e4](https://github.com/pendulum-chain/portal/commit/fd128e4a9558bba3286b449f17cd6f32ad272755)) +* release ([#236](https://github.com/pendulum-chain/portal/issues/236)) ([ce34996](https://github.com/pendulum-chain/portal/commit/ce34996ee4b4f8860e8802672a71ebceb74f4f28)) +* release ([#238](https://github.com/pendulum-chain/portal/issues/238)) ([0fd823b](https://github.com/pendulum-chain/portal/commit/0fd823b1da8d348933b3f0d4d64dc2225b570039)) +* table heading overlap ([#202](https://github.com/pendulum-chain/portal/issues/202)) ([061373f](https://github.com/pendulum-chain/portal/commit/061373f22c32a48091be668ffb6ac59c8f4e4c10)) +* updated foucoco logo ([#198](https://github.com/pendulum-chain/portal/issues/198)) ([21dad82](https://github.com/pendulum-chain/portal/commit/21dad8288119f88168a0a82f422f7c53dd0c943a)) +* wallet connection issues [#204](https://github.com/pendulum-chain/portal/issues/204) ([#209](https://github.com/pendulum-chain/portal/issues/209)) ([fb7a37c](https://github.com/pendulum-chain/portal/commit/fb7a37cc893bc00a6bfb2085d17cc4dcdae4dfe4)) + + +### Features + +* balance query ([#205](https://github.com/pendulum-chain/portal/issues/205)) ([b3aa210](https://github.com/pendulum-chain/portal/commit/b3aa210ff0d57cc16482931d0d7184efc2db5b41)) +* contract hooks ([#233](https://github.com/pendulum-chain/portal/issues/233)) ([f338f37](https://github.com/pendulum-chain/portal/commit/f338f375ff4698173d45ca2b10aa3ef2949798fc)) +* indexer ([#232](https://github.com/pendulum-chain/portal/issues/232)) ([2c58c70](https://github.com/pendulum-chain/portal/commit/2c58c70a31261f4d787961f47621e9210ce5489d)) +* redirect on logo click [#178](https://github.com/pendulum-chain/portal/issues/178) ([#199](https://github.com/pendulum-chain/portal/issues/199)) ([9d42e97](https://github.com/pendulum-chain/portal/commit/9d42e9797fec8b89c1115f7091cf384971df3832)) +* token approval ([#211](https://github.com/pendulum-chain/portal/issues/211)) ([a4ae2bd](https://github.com/pendulum-chain/portal/commit/a4ae2bd4fbab8812d4695eb76247c9e2035908bb)) +* updated backstop pool ui ([#206](https://github.com/pendulum-chain/portal/issues/206)) ([1e23f10](https://github.com/pendulum-chain/portal/commit/1e23f103cae7be2d702c52aa7958e2e6b9b460f2)) +* wallet connect ([#195](https://github.com/pendulum-chain/portal/issues/195)) ([5487296](https://github.com/pendulum-chain/portal/commit/5487296487c2cc52047993b5baa3e4f6e783e192)) + + +### Reverts + +* disable nabla ([#201](https://github.com/pendulum-chain/portal/issues/201)) ([2e2fe81](https://github.com/pendulum-chain/portal/commit/2e2fe8160c8a2b57a13b1f431cc2c1be887dad8c)) + # 1.0.0 (2023-05-04) diff --git a/package.json b/package.json index f2332744..66a0bb76 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pendulum-chain-portal", "private": true, - "version": "1.0.0", + "version": "1.1.0", "type": "module", "packageManager": "yarn@3.5.0", "scripts": { From 1b61f413c46be3cbbd07eaa8a40679f02b04c58e Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Tue, 12 Sep 2023 11:10:38 +0200 Subject: [PATCH 07/33] fix loading in claiming steps (#245) --- src/pages/collators/dialogs/ClaimRewardsDialog.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pages/collators/dialogs/ClaimRewardsDialog.tsx b/src/pages/collators/dialogs/ClaimRewardsDialog.tsx index bfe75dfa..2998cf7d 100644 --- a/src/pages/collators/dialogs/ClaimRewardsDialog.tsx +++ b/src/pages/collators/dialogs/ClaimRewardsDialog.tsx @@ -7,7 +7,7 @@ import SuccessDialogIcon from '../../../assets/dialog-status-success'; import { CloseButton } from '../../../components/CloseButton'; import { getErrors } from '../../../helpers/substrate'; import { ParachainStakingInflationInflationInfo, useStakingPallet } from '../../../hooks/staking/staking'; -import { nativeToDecimal, format } from '../../../shared/parseNumbers'; +import { format, nativeToDecimal } from '../../../shared/parseNumbers'; interface Props { userRewardsBalance?: string; @@ -42,6 +42,8 @@ function ClaimRewardsDialog(props: Props) { const submitExtrinsic = useCallback(() => { if (!walletAccount || !api || !amount) return; + setLoading(true); + const extrinsic = createClaimRewardExtrinsic(userRewardsBalance); extrinsic @@ -57,8 +59,7 @@ function ClaimRewardsDialog(props: Props) { toast(errorMessage, { type: 'error' }); } } else if (status.isFinalized) { - setLoading(true); - + setLoading(false); if (errors.length === 0) { setStep(ClaimStep.Success); } From e82b9f2b8bb95c2ef268e3d4878c679a856c10a7 Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Tue, 19 Sep 2023 18:38:15 +0200 Subject: [PATCH 08/33] 145 Show connected accounts token wise breakdown on the dashboard (#240) * Add portfolio table with mock data (WIP) * color change according to new palette * show balance and price for spacewalk assets * improve types in fetcher * comment out mexc api call to stop errors * add USDT to XCM * helper function to add the suffix for wrapped tokens * remove mock data and fetch actual prices and balances * yarn lint fix * Add icons * add total balance * Fix 'DOT' shown instead of 'KSM' on Amplitude * Fix typos * Update src/hooks/usePriceFetcher.ts Co-authored-by: Marcel Ebert * fix amounts formatting * reduce font and icon size * use dia for PEN token --------- Co-authored-by: Marcel Ebert --- src/assets/coins/AMPE.png | Bin 0 -> 60384 bytes src/assets/coins/BRL.png | Bin 0 -> 9117 bytes src/assets/coins/DOT.png | Bin 0 -> 179201 bytes src/assets/coins/KSM.png | Bin 0 -> 117090 bytes src/assets/coins/PEN.png | Bin 0 -> 5582 bytes src/assets/coins/TZS.png | Bin 0 -> 13635 bytes src/assets/coins/USDC.png | Bin 0 -> 95230 bytes src/assets/coins/USDT.png | Bin 0 -> 147412 bytes src/assets/coins/XLM.png | Bin 0 -> 77966 bytes src/assets/coins/placeholder.png | Bin 0 -> 14475 bytes src/components/Table/index.tsx | 11 +- src/helpers/spacewalk.ts | 14 ++ src/hooks/usePriceFetcher.ts | 150 ++++++++++++++++++ src/pages/bridge/Transfers.tsx | 2 +- src/pages/bridge/index.tsx | 3 +- src/pages/collators/CollatorsTable.tsx | 2 +- src/pages/dashboard/Banner.tsx | 21 +++ src/pages/dashboard/Dashboard.tsx | 186 +---------------------- src/pages/dashboard/Portfolio.tsx | 136 +++++++++++++++++ src/pages/dashboard/PortfolioColumns.tsx | 66 ++++++++ src/pages/dashboard/PortfolioIcons.tsx | 30 ++++ src/pages/dashboard/styles.css | 24 --- tailwind.config.cjs | 3 +- 23 files changed, 435 insertions(+), 213 deletions(-) create mode 100644 src/assets/coins/AMPE.png create mode 100644 src/assets/coins/BRL.png create mode 100644 src/assets/coins/DOT.png create mode 100644 src/assets/coins/KSM.png create mode 100644 src/assets/coins/PEN.png create mode 100644 src/assets/coins/TZS.png create mode 100644 src/assets/coins/USDC.png create mode 100644 src/assets/coins/USDT.png create mode 100644 src/assets/coins/XLM.png create mode 100644 src/assets/coins/placeholder.png create mode 100644 src/hooks/usePriceFetcher.ts create mode 100644 src/pages/dashboard/Banner.tsx create mode 100644 src/pages/dashboard/Portfolio.tsx create mode 100644 src/pages/dashboard/PortfolioColumns.tsx create mode 100644 src/pages/dashboard/PortfolioIcons.tsx diff --git a/src/assets/coins/AMPE.png b/src/assets/coins/AMPE.png new file mode 100644 index 0000000000000000000000000000000000000000..89890cd402feb30c6b1c9b50030bbd36ced8f6e4 GIT binary patch literal 60384 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ⅇe9$Y_{*~(q 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

e&{khyQOkA^<-O)!bJ2H35MxZC!YBks{RB> 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 literal 0 HcmV?d00001 diff --git a/src/assets/coins/BRL.png b/src/assets/coins/BRL.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad8b6fbcb2e574fcb1a07dc60180a3a348f415a GIT binary patch literal 9117 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 bSi=23Zxa;t6)#m700000NkvXXu0mjfg3YiO literal 0 HcmV?d00001 diff --git a/src/assets/coins/DOT.png b/src/assets/coins/DOT.png new file mode 100644 index 0000000000000000000000000000000000000000..583f8c906b888d053e1b1a7971b1595c80893af9 GIT binary patch literal 179201 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 Ima_=|Kj~0KB>(^b literal 0 HcmV?d00001 diff --git a/src/assets/coins/USDC.png b/src/assets/coins/USDC.png new file mode 100644 index 0000000000000000000000000000000000000000..61e77a8461bd35bac8119a85cf8ba0856cad8ccb GIT binary patch literal 95230 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

^h=0RBoCbxC}x+MB}yEGU~zB*c?q1q$QN|6u* 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ξ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 Is#x9mAKpH=lmGw# literal 0 HcmV?d00001 diff --git a/src/assets/coins/USDT.png b/src/assets/coins/USDT.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9470020d475e1b171b025ec1c9a3512ea7ba77 GIT binary patch literal 147412 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Ν-OiefjJ2{xGjM6y2`j&yK?&wbwM^rr!#5~U8WV}FTD#1Kf` z)F_d;?wGLB!-gjru*j+=Ss{7-Shz;vYqs^zlH{%-OWoMNOpo3=2H5GDWiWP@Y?2Mk z&NO+mpNI@S-;D!LGGl|AcFW)oRp9G^&p+&-4O^PIoc@!gW&267ODGA-NkFF^09}uR z6SF|W0J3khx-1K@gEOjK`pJJG;^w=UR8HyrN|V)>{Y=430r&-C1XTgy*pq?80UzCc z8~+mB59eszQ{s27aE#Yi4CG^k2zZ`{VPkU^BRT1%VyBgMcJ*7Z?Eg!<@$(vtnon^Q zOg&B?c=Q+rBjE4?z*jR1D4K=N>UlP4G46R03*}?J%!|s~ju35z}_Y5QSq2 zY@f|rFEs8C`|D_{)^XbY=ana~bZDw2b2Y-*Km>6-5P%kVT$&w~%Jw^CrsDefD22tl z{?d}JhoEGltj|tfVqi>VA|Ve|2(y_OkqLyejoA$=#BQhzeOUI_ic;9$U27e&KM^Kh zy|MtO@HT9R1@ZgzU?_z_G&OyD=TFU;WTh)kmZ1;#{T1{|&JVfas{=#aX~d<^8NjQ$ zW%}4bLP&x_PkFytJzD?H*;WbJXMVnM0b$1G-dPfb-aBA;fHNRHrx^pG3=+X;3=>Af z*iN!#Q$}wV|D+1&`aiqDyAt ztj#738TQuS?{xFpdz835{Dt`pC*kU9b-XV^v0pYJG=E(fU2;Kn|M&?ZHa%fR)eMt` z5Fbk8D%Y4~PWT#is5Q4&m7T{Ec zEzM}W?5g*4Ew(W$U}Jv&_TPsL3*izyPcfdmJTOKUyXd4QXy{`~CRtA59?dJT&m-#L z-c0bNtwd*^ev!nT?sjG5bK2oIl)QplxUd|>+O7H4jcN1MNrG-9F?Zki+s~t z9x0h{c$q8zdB8WjGHT__scd8#@;KR;)HQyjKDWxUZUDy|mLRw-bz~hzNXVs9?)X9~ zQAROif<4T6W@TDYHg!B1t(J)7sIbiCVL`73Eo8o*gWlaUs1l{xLe^!1teKGCwPt2< z+VJ6IoxI3mObc@EiG=dJm~VW0F>|a1^$s1X+viNQcCS4=6GlH~L>a&1A?#{C8E{Hp z$OStQvVIadk$Gf5p|f?1xaxdz57GaCI$CwXTT|PHS4>r{;!Cu^1`vTGmFx^KMvgS% zISerR{WO;e|13UsuLvaniLMcoGj9#jG;DtGvlQcA@u&mRWiW=ai-1Cc1`}MW_47qu zZZN+3dHP)eP>;ZuUhdh26Mc>uf=g7IC5AEw#6$A?PyF~#M=asW?$L|_-bAE4jd2R= zX!c&l<2g`mBAx7?dI}w%`U1Qmubio8h{~lcU|S9@v9Roi3!b0LkIA^LnJ!Q?CRSng zhfb577Lo2Avv2BRX~!ae5T=CG0|@JcqRj(Y<2T%mZ0V7rqho)QGay^n_s~gsd2n0V zt!4?_yfqvEsSYpb*2lM%X3z5N6Oy|w8VQwbS%>{IZp1)dkJ2`t)?q8_d-Gy>^;7KP zcw56!7~3T_Aq%E-Vb(z40+3*x5_R3CZ39BCiB=DFY&&>v>c^V$1J2l|`MV&Jk-qc; z>qk*^3CzJ5VGiDH&pm_bB66fHJezsNI-&6Gb9mWd8#T<-dm<&UpU+F6fk5wCl+Pp; zpzvUan_Y9t?sL;s1rWLch9IrM$#+_s_)HLjmwwxEtX5@Dd_IEcBP7^8-6?-_61=5p zDv&;E1xi%u$XfMH=ok^{u%WNNyZ9sLM_t5d4N49>;j<;za*}KF$GQ(SavLigmB?s_ z(;ytK_vrXLOzX#RBNcRm+8sXeLND5M0z)&tnp=$a%TnQ12EcNjeZ2-65#5VCVhH=x5?0aF=-z%RL& z|6506Ek(gy|gxATpC&RT1|8E_ZxSA`1AWimMZjx~xC|&q%%%`B1su=H-q< z^ZJ~lN86J8(om%ZS3U)ZRf*r|pXX2UQXj&mfjjTx2Ve7hI;hD)k)a=NT%CTNdsr%cv(jHyHqu26PO_q}me z1cxloYD9cX*~5h2lOQg}{KGyGDKw%cP6)hhBbuO`#DGz7j>(R**hDFjfKx@EJ^BPg z$3}%noGHb}J|Oapw#9 z*O&l!GBxU@4v#fn_~D^;*j5K;P>ez;UY(^qhM_>Y0#Z!}3M16pOd@_u$qf5?)-WRU zRnI~w%9+Y2J?)93CL7kmG(O(;#iGb|Pt-niyV+HK*rQVIHGBkjgz@PBE$Jn2@jVnE zYB+xLj1T52P-M(OIG&Xz1p~}Gp<#x33Ysg zUv4L)%Ar*A8TMr2+5ITLDZRiJn6K{qg={mx%nFK(U~pSuLp z6cHNfo4^n*YU7K(My+JTvBwu~)(8mCovB;ENGBf0?U!y@KAh-=ezUr~mN1phVp_4Na z;UATdF|^L!gixFe1~MiSPHmd5MV=o)ai&xts(U0jUL|;wG)e^R&s$t~8l>bOv+2s( z|I+^W{o!}d#2ygJ5WoJ;65U;m5=9uylva8jC&f1J2Y={p)-zG`7eCCSS+u*&=Oc*?H$j{bsztnlJ_MovC{wICBoWYf)ZUppwc5d9+Aa#Iz(3D z_GO{=&hHB)XH>-udqL)w0`6z7sGKi;sZ*dDO>X6adVT$cxBDHe zgY2N>ANwuTp@OG30sEe+MWP9I-4r~sr_qqSgkOCVcCL<0jbp!7E?U@c^00T~>sZs* z3Ii& zExiiGUuD}5#^Nm|D7vtrF<%!IqtXVv?<*3+XkKE+>n@&XEB|TYp1*;~a%*I}QR85e zhoMCXe$Qsn!jQoKimo<(Mj}{HaT;Ma{l!Z1-bCGHW!N6F-sm0hV0DmBD z#Vw~FM}86 z>n-c{8%{fyZYM0H0G3vu3flh_+r~-o@rLTZ-Ne3}&w|onms{;JD)t9U^--1_9kp=^*5lCxBi6LroDJMYe45AA}(o0GFN#nu~=IHZ+4pf+QaTo&l#S0q^jz$ z-+S8YJ=*(d^#KH(=_Xbh1-z>TbGFyuh{j>C>|34Y~g#dsKZK~MF&$(TW{>VQF0giS4uYvk~W`x zGYwaUr;yUzyH}>xJ2(`{74LqN#0Upab6J#6hTW|X?pmvhU;SnTm?_VSl|!XSdlni+ zoaUtGX-!6rOD85VusOBiQP#39Uc5w$nCkjL=de^%9X2TJF> zn~yx>_9vf3MrPc*hSQeCD^Ji}ek|HGAR0p)k@7Hs_FZ3XFaj8DIs28aY8T+dbzR{y z+9Gw}Ei*egywf<|+tea``qn;M;JJ4YLVps7;93r;P&Nq-+IJ zC4f7hhGeQ+V}MhLE8_cmq;$(; z_nM*#B&PpR5|eg?!pw4!B`@=XG}nykrB8I2%?-UymK@|DnS0M?_pzO$u4M+OB8=k( z58~(%F1`8j4RwbSa#1ThuEj>YJNT2$FcZT+!!)Oy6wC`{+4k05>4<5FO z08EaaELQuOcj(I2_hW((qHdAupnC7CC zN9ztx1kUxpe2&q?c?;1k!j3KKM05gB#lrq`JwaFy!+K1^JgLgj`sumiD(@kOnQbiE zA0t#I%US?BRmRezaP(m|(;Q&S3J&uTv3YwM89o>c1-U2MkgsJUi$6wfs4vtvw+UJr zG<?qRd|h9h0f~Ws%gS{hy`Q1o*ffQJ0H18-H8ARoq;h|XJm$y#3Lf_$A0Ai zFA+Qh_a2NSyjS#7Q?~I`qGIkt>8@8qWbwoV)KI5_unKlQ5p9gIgKjy0GOq5h8(bkK zGv@zkSu8?x-DhUC0k>Z^3sG$4uXZ|advC*E4JS1|6c3HoRSkf`G zh>!`cgV?&k<;+F;u3bagH8lxmJRbXqr=GCifWn`Gt}UuiUS{;*vig5S(E})M=*aOk z{vKMN1IW*f7dZ*fL<8He=8Ki}^%!L>Rwo^Zm2i9d(qpagS!IgK=&s1y zsM+Mq+J2}oA%=}1(Um`o*{3_Jto~a4Y1#657wzyHNKpW3tErI)!bNiq7hxryk2hV^ zc`k`xcGQijTFq%&c@wNe+DP;O^Lm1Ly{9;?cCp7@g;a#Hv<+GZg^d8| z{9O^e?j9o^!TxV@@P>ZKSwfBl%+ znl&IR;M@h&NH#(hTXWuD8L#pk9MNkrU2%sq*I)kv(INN;-&e|M~bUM)zd8EPo?iCM{k26!lj!w;YVoB zi?kFYSg#2LfgC@b_SF2C%_r@YGNUI?rOojow1YTw!g9WMp7437TFhu^#OpJb4y=>A zXR?6!7b8H^;ML{_2P)@Cn;yHbN=`-sET7qIA0hl7Xf4bZ7qmi7Aie$4t7rB{$Q19s z29zdff-ydIetncS@ka%4b@|VC@ZzgKYlODuc&PVM-bxpK1FC7 z(P7q&ypMpNur)H1Il;s!(AdHI7qDBHB2^<0rgGuodT6vsmssdUililKK^&)QJPo!J zQUXE)!sgCH3~Bwz%C2kxNqxr|ZD9h0) z2@+aZdZtPCjcCT{tdUQmryC#D)ef)fxgGEMdvoiiO(9#xo@?k#`R_cl+2OsDvMcwQ z){wRlHx&+A(Rf)OQp!b4U5_PKaHUX+_2J(i%1;yjh<6tZ+f8iYcrrD4GKN1ORjPB5 zisIF2nN%g7;Rp7=D*tq|0^wr$C*pW!Gv$G&HWW*2-xpz;s@-sZ>0$k%6FyHYq9J;dqIZ zcVsdD`SI=yqdce1-)c3%=N@Dby#SI+h)Y@I1((uPZ~F>tOzLu`lfj!h4ot}{Z=3A; z!73@jptL)<_uTCoZtR<9VQHDwkyUR(3PQ)?C8p&Xe~3-u{Boa~tUMxiv@F9c(r{2v zPR=KbVU6MssKZ@X3UBwsxC9?(7bW_OLACw)2!8W>ez@o4cOXLdf#UK>nZY1$DGAH% zF{Ic5^cS0-CtDufW!T{ckKGW5cpKJYxBNDda5o5~9(5h9lT{ZhEW2~uIFRw-8^7HY z_9+{C{b4)ivc3w*7z)1r#b5@#(ygp;uSHGd!;LxbY`WV5oiBHg^OIABaLK{=HcF#|fen1Aj=7Cf{*lEtjZuTawr3feZ0_Q3zcOno z$}n6}r=RkRSd8B`@N*W#isK0fZ8n;o%`X+twiS1-?H-kgWECcSJY?jq)VqituGyrnUr8xR$%(Qn4L^?DP-$vR5VBJD>%@7bK1 zGor`uNK%l^WnhfUr{yK^F`=9-{%iBp_xQ6aTvDS`QjQOCh70;RMC*x}{>@P^QuR%} zbZ6oR)&sWi_Ib$${N{V|7%WlfpE@hy|NY@`8~ai!4nLyCFx#}jIKZMhK5Xm2sQftY z&qE}{0V=^Y?($mVtnAi4mpR`(Z%62#1X*?W!6<%5#&Gx%t74!(JQkKj2c>Gfg@E z$!MN(>p9ib0%TxXRAI$jqlYsB*wY zEUTbjML>Ig6a#)~Zo@Ric|N@Bv!dCu;8I)%`!1@7ydSS ztt0*WI#LTjF}P|&SC+r+7bo}jwuzwklH^BNu=)s^@nMda8{gASf3jBXtsAtzKRDqQ z_LcF`8DryyvCziGWd&<=ET!FJB#1wP5{3rWA;tKsWKV}c@egqxzdR%3)w6ts$KHt4 zH8Hlt99`WlUpaU@Yg75yWgFrSK!xgWYFEnB9%58Co+XCa9vvUlER|&|?Am|4j3OL! zMCF#TtnAWDy(M|;`$)xuyiT$U8ZDds3oUGjSBH2!4KUNg`lUK4ZY?L$g=Igw5wR2e zj0~0bsdBJ)Wm(_sgo`o6&MI*}pOZ81`c=XcU2q6?)^|teuNv;dVxygx6JC##+sC|$ z$G|u@F1f3}E~tey*^7{8asP`e+9MBX9>x|!Ghorw*mt%-vtMER<(qBeY=CtR)5IORj2#40(p2;wvD%fGjlSz3?`l@%tPeHnI5lvDf z_xX=&<%0J^Lp$HxGf>0jiaG*&Dm^8jj%)5$!roDa$;tzEzQPkj>t6>D;WbQS7IQ1a z3=y`(pXQ6gKIRtZUnLaZ0yXovEkiZ3rIUpbt@1b!2O6H1#CFBQQqcC6R{eo0*E7WS z9^rdFN2#?k5LY$gDb!dwr_JMsyEaBHT0_UBXv*v-!iJW9Bg72;{|l1Q{zQy3x=uSh zT){iC=7mfmht}Y-dRKDuk3(HxoMspN@}yJH_F}@iP`VF+E~$1NCO{)?HQFff%#&qD zbXet$OD>|tz?f(L#h50!w?a#bU{zA9tPXY0RpOp9f?gc`uBDtQH3+BWa?bY(!JsL30V&%6& z^YXo#f_9ZrxtUuEmyyQ;_zL8rjTR%_Tu@soXK4QN-0!by@`kLR#@~x-9e2bh2+P^U zXRzpPs)ywA+B(TItSRJL;sDlnvoR%gnBR6d$h3`RN!PaDzYws>8!a)xhIf{D&NG=~ zY<)}1BR;KAfK+8bmV$Yh2_eP#*gW>aJeq^m(t7tSnN)fp>&f6M@$7HV|E{(nQ$}t; zf0v|b8F^mIpftDsemLoIc=9c=Sy8|L=lSw0oV9E#cJ`3pWOiO{FQuNW6#uoKJ7?*8 zdb_w?+)sJp%?C&qvtQHv@b3nWt6RUDoD3L`yYN_mICLv;wk0kO@ZE%I;a4rg%=p8cChzWAdx#D$ zKUfWlv+VRHv_BmT1-8g*^;mdJs;|kzZb9AzM;7uJfoqk2;PB9hW?A1rV+N6O*WNu_ z;X`Tqvkm0QP@Z=+^Vfe*kW%5gI$XGL!4EyUh&b^NkJ&~pJ0B)E>I6kSgo=bV8;Cz* zX@jN2Ve1YvTiqT@*yEF?w4BY|8hu)C$>@Kt-ZPc`a!uhGh4R4Uf9 zZZ1%|svAHUYA6h_m^dIUX=Cy=RJcaI$}zT-xC~JDYtmr%th4mIby%BQ&}YJ&F1ZCt zkHH^-7h+d?4cVb;uirbdIsDG1r22qB<8Jiz-fh;bwN@j(K3XmtC_;T(U*cfdq`Z%xjNfv>Y)?<|C9(Zb7t$_ zPjTA17%>s~3jmGp*b9p16%(iSn&(87*p#sPCzqRsIY`evY=a=8v8ZXZaI;eD%l<8~ zj*u#-LJ?pzU=+kv?zJB-Y_@#FDnU}KLDuvhwB7DGDL5$k?&ca|zr3YqtERVED;*@T zI`I&yoBJPXfW_PGjmja0>6Hg?x*av*AX8&_Q9Ix#T)5`6C&;1OYGpT#Y?PL zW{H&f%-fMu`RFrFXor2E>9C&NepBm;Wtc|{&q;d65}W|7L4Y~pfmFB2c8%|9&TC~W z;BC+#S@N_-c#7Uzo^-a3l^dvZts)XMF!Up&NX6#$XX3z$GV)J!d`a=QP2wyW4-E-? zhEoLKt4G)+uN|#b;k#pF$ER@h7kNg#khc$uu7n4wFv*P&W`ZCv^kje%Pg8cX@V!^~ zSwj71V7|`qkVX7@<%twm|40E+(jNiT#P7yZiIXKci(+6FMVtI>TkdJsxtuxlD2do4 zXz<=0Yb&zUWXXfk*dqanR^%8M;&tvbQTQvK4r2`8QA=|Xef34JTfBr+nnl<0GbGCf zUs`?AYJR*N>7{}NlYSZzI;qrN^8cGv87+XMiY}2w24xz-R32&AcBriHQbJe~u@x+f z!M&rfNAANXMZL$eoA1sk!Cwb+S8fs;9N)Mh_!z7ey#*$mVbY-qk$dR+DiOIoaiv)@@TvgR6iCNeQ0qGK03=E2Y zR3&RE<4kbh-yv6xoQK~*(3U<@aR!9;Tg7@yvM%r3iQ|!rt#Wc%2c8i|g=+qZ!SjzQ zKSrwJ*-Un;%;$|hh;Sr*fCv>({2z5va%_a($<>E1EhBwI;D_U`|MEod3PNxfv%;4C zx5|r15fx?875}|IX>B=rqzA-$>SlgZ@9|K#=%M$Lb|vj|=@Fa#4ZusxR{50@!!pZh z0XVfY`fG0Q9ht&859Gb>(f4C*w?BV^qq}jRVsz|dNn)>$!4Rsc4NZi&oLPr!|EE2^ z83_kYlS)HrF~q9u3hu+>w3?b4TdldWbgnaPAz-O?oF6*LZ|Cqo-PAfM3mDSd9Kjm8 zq1eK8-?~aP+E=#h%t2ora^9=>?XS2r=gn#&WV9FJI<3jQ0Z~KEFXT26rit~GF{Lc2 zux#|RU+c)5b+_@Wim-1%ebzbC9Z9H%1$?2g`&wmr|B20o^jo~sJjJPQN%-L5;*hv& z8^{TmN`QaF;L1~h4Kgs2F~=}?1^e-lZp-&oySES`vkBsms>loSZ^WitZx3bQWkR4g zsP%|#06M5<@k9Va)R=&jC8jvA*M zq3qEgWhKP;}*JOY3WB|Rr`Qc!)Q8&`m;GW_}0x0dp@xK(6-R zPx{vRyI6J`y}fWS^ZUle0vrCEFD&GjCpb3;M%IMs*^J(B-)F(_Dq{}c(|%{_4^kpI z+XM3pzWgV+;9O=FfP{v5t+E81c`@IJO|d%uiC~4Ihq|C0DT6#z&_PU+K3wD(NJ+{h z*&iFzj_w_>uk11zR_h|JBkL)j{N&Jwr-qu^`?cgwx-x*??Fevdc3*>3HP34hAJ%Ns z%cP{QJEtbf!b*q9^&~DHKIwB-xgxGyaUxiMg1k7?h>PHRNjE%NLx5S-hTCLl&=@M1 z(_@lI&KxFlz~8oQPH@|UC)Ng}l;`@H*WgE#kDIJNoP-`Nsp3|a6}+eeb)jG=x#H6Yi;Sa z+jPD*H24QcvY+if*<~A&%w?m|rUqX#Un=ZPvg>!XpF_@aTqDJ;#ntDYmjr^NZ?LT|Hnmh<4w%@q@a zD;HQ2-7=`Rn7m2@&kcswDI_mH>KH_dR1Pter3OT%w0?6td|%7FYbs?c?ap`dc!)}hWi@!Sd5d1%CAaZ3>q{%&YlVVWRk&3Tts#G(>%Pq` zt+D5g!9~V|i$l@o16L#PxJV1BY$2C`hXn;?%Ep;e+vIT_Ai`Btu(7<$sxs=2#D3BJ zq@rVu+Y5MzhOrds&51vzIzsh%V^F);_SD7=t-gf+0C8h%`IhkcZ&L+xu2`FpH<}vp z5<;6ulSBWJqgJhwsZu*z*d@jGj=r#POEPTcv?8PoOtd;!0#hpi0#Kkv@Q{%~L3T0^ zjSOY7_nWU7cZsfA5pyj7Fr9ldy4b7`t)n zI>N76%wigMHcK!xZ{$OomqB(gxqQ}BQBX=|@k@XR+NlvAm>$RfP$&=#oPiI~Ja|bf z;Nez$ffOXDUf&(j`@n9Tj!w>IO5}xX#PH>ZniuqgMO0im72F9JnMbD~!&YR%yVXgk zTJs}0iW?Uw8?6sfWYUZd5gir!Z?Gv!8@I2V8FU-4>H;UJ+%7^>cgP18{m>v}em2w8 zDgqud<4~DUM&5cu)Hn4%hUg&9wuL-M&h{)w5ddpyJ23`r6`SOp-yTt4HP3r~^*H!y zv=YA+J0-dgM%Ip8Y;}6sAx+Y{;2DYERI}Ch>5xkkA80GDE?fOT!TD?+OVY0N<8zo~ zNfOKQKQ&bF7`8@A8z33(SzlL9K5un;&#&f0{%Qv3f2F|EN8qtc4e{`sS7xMQ-vC-$rIT*A4R&YA=)I`Z;)$*V2E>dhdcD(eeVpJ0njg1 zD$TBG?6~UBj}x(X`|^FZm9wxj9oK#}`N(YXN{!o^K_CCsMVYX|kn@ zjK%jCZ0CnIrFH7Y4niv$HZ%8wu1!A=KB zcYqCe`{KP0DW?neL@29Vpr|JwJ?t!Ky5fVteT-?~w}+xADVhv!J+gllei+oazbIfmYL`wfnbf}C^Zt@5fiymMVp4Cc zXHWT{IQ6wv<1l__(K}-bt<5K$7pst)0k86q*pN)6%cxA~8hksB%+EIXd0u6!N8dv` z{@7EMhWc@4kpL zFW9pQgbMBgq*f$vtr-7LJ333E%qQID{es=N=fo!3ZJg%gzNatSJT}UhI9ZwwxQV9E zT6pMg?RBQr?5e38=hoi!{F=u9!hI9IOr^z+sT=(|O(8X~cbcmS-A}-{oAEz*z;G~n z=Er&_W3TGz={;!g>gX&YNH}bi?oYx$U7r|+J7vyFSxdqk7pXDGCHvLFOP3IFA_53~ zSSQFEX>ktUJ($U}icVK*U$$7lT)LD$KMcO2{Js-dV;W5VaDxr-sIN*`q$IFAJCmL- zDT<~J9!vA-G=%`5j}d$XCj-^3(?+2pwc* zpsZ$qqY-QNfqug5ybc0+Q!fF6I}ax_mnC>WE9d#kb0;tO9IO9A&zPJM_m2FT7Tej# z0m%XT(|$y%hQf)YL_bck&BB!&fR(XG`rYW7o}R$N+>So-T?5)CcE!5*Q%en(Wc5XE zs{c8cIA2g~awZVxX^6>@5FOwF^RJkkRIeONy(g;<=aY*IYZH4<cd9i7u`Eha|A>lC>mjJ2!1t_d!%r+(^LG0m<}!#h&h`J_c- zW)p^Jg2tzg+fUfN(`+HZ_uCKF>enr_TqJW=;Y-C(djbH}tA!4v|F}aXcNHw+d z(Ldz{fq3mn(S)VAw{d1m@{@F$9DG2NC+PrQdV-fLG>hK)bqprU` zfxmj-HwA4NF`KD{kF{J;TrT-eCb7k-2C z47=Ju`AkOA1Lq~0N@B=x_%G0r8c{?-LrYyZrxvltpr%^fi|Y7A?Tmh`+&MEtree}? zQYmtv`o8EHo02JI*?mIRrheCYdSrEbwUCi$Q zH_uGE30^cMc94aKOb`65WC}>cw50Y~nr3k11-Un3dBzM>BH)l_!TNva&F&@dmfvnh zL`aQWjT0T*+lBVqH6SYO>e1S~;4vLu`XOEfv;>?@wPsRp&SrYO7*fqy>lIzjDIauo zI{i!!>lY{?A? z7TGkI61UWy#3cVo=9B8jA*}$ZAEHxWX`v@WvttOnBiFZ5qLiA zi~tGwUxacdfgkh2)qVP^udbbP$d%B=9?V>lowkSSMcKeO$w)B0Gs5zp!GnfE(ty9YM^JShZ4F}v%O{D{i%yU<9p08Y|TU)!k zLK2cVWB70SG&iELK!zC${qK7qHM_Fwt2&X>13FST%V4PDmd^=cN{jED&0B#1QrC5- z>HkWqEqx4TpI3{{<}plQ760Z<>p#Y%CT6deQRLj>iGqZjiTV2Pb2@&P1-JD~GVNjb zL3v0JOzke1qKnsc6G~~ti>hyJ1^51Jd~u)%^@4g>kDcuGT%qDRng9FuDfzI^bgTf} zM?E+cJCPp@tyR|}@8adGAF_NHWPjmS&v9g%Y3g_#|4s za8r_VrJm2X%4Zti^`~JURP#Q_49J&P713o~O^65tI4#m~^aJQygb5IkxcH6!WmaQj zU?Df{PN3f|&YXOMzAx)e1}H9}Jo|VQbyXmAKU*Q0le}Jeq=jq@g{@^2UVyGsvEE1r zuEk$6CWv`(9w%i3-2ey}+Mg!fbs(`qkUqNg!#6rSMbSeDPs<9EkGAcYEIo?T&Dcbq zhgj6CyWR6s@8L5&#-fioK+F+bl0#+|0pvRXK>k_%$Olqaf7KhlV@4we+8*YB?S0vN z!EI(!l6lzZ{;Rems`?*pIW2lHC*Ht67LDrEq)6{yqy0;%*5eCb3NaX$k_*I(lFzK_UflsqOC4WIX_ z!2?0jeMXN;=-=lQzXZ^a*K;+ZR24q*cA#th*1Ha-&w7#XN4PR+>1Kv>QP;pNH@$hBhu*>--Z|gR*HypuWl{yJzezYzzRtqu zm~B+EAxY+Zn>x$;2)x%1>a3jsbMCCkznh_e{iYP>c^0Xe+CGQVG5xD)-DBWJsU2n1 zD;A(^^MY&?)UX=x&^4IvKDoJ1J7(v~$KV`-srlCJO0nz zarme3ZK5k(LBaeu!13>zlY|HLs7W7Ap`N%X+i~Cm06-iVylF2)>wec)*f_N@O1513 zNi$=8r8B&GP-nfLAz??c-;XK&Tdu8-_%qRyJHm_Q0CeMGrAZ77d1f2DqKm^(^sVL0 zBC-INE^`dMnJlHKz^o>BQ51i#M)4mGdL{@ymL9!2dU+KQGFl^bc4W(yt5i6tN3@2Uwo?U@>6)&QwXo>(}wVl@eOa|9f$`MevA5HviN3|)As;?G2f}n&l zmln9AFMB1T@`d7V(SMAU2YG;FNyig{FAM^?e?H(f#s_}tt(^a`o*OHl;k=vg)%faO zPUDxsu2ZH zu3>(xv1st2X3Gn27nf5tNMsB8Ev$3F@hpDTXb+tv<0b~ZpuGwrNUn8J;`Aw$tR--M zpn(qgZ+eWR%f&PDwS1rS-Lr6O{pr)jL&rdnSCTguv>eocbZQDvk&L|d6b(YKUNGgyD+R%g+C z*ks>uC`@(Sd zEx)an&%d{F-F`_Vg{RF&dz&`Quz6#Fk`yoxSJ|XiR;|xexN4VHl8lS;tK(zTxYbrun z70LtI^|LQA+)7HfHCWz>we*Qmv`^3uaC3)Rjg=^DzdjFVIg6)~ZvAW1ot0$t54KSF ze8ku~%#}cA0=s4ya3`fzng7n&@HMIwMCU^P%-?=fs)~tu{xE zis?l@aEY4cgIf>eQ9JSRgeKlZB-Z88LICsl7co2b3Ml6`llebH@rrN)?`J;WerAU2 z>b{OsU^7sBz5}#Vh?WY<=~EQ@#_eO}l;WLoGv4o}Cl#p?c@SAl49F4PSdc;8I8RiH za$Gy9Tzf5MAHXo+Ra-3k@ku$3r{h;CNvokoyh4}{Jxw?1SDkVm_3JBtcwWBD!SNQ; z?m1kn9Ho2yAo<;n%8T@j3Zfapz?bZMDPTqSC8@wTNO|+kX0J~u>l}_DjBh}Z!qmI! z@#VKAQeVn8yIDSQ6P0*kvrlFvxYJHPEjXe)_XBRAYd+j>=!P9D0B4bKqNlW8}%{ zI3x2dWl2T?KR(5uyW6mv;mBBdprK_B)hqHK!#~PNL2foPwn9UYZFSDkACH$JphYB~ z8W|={>0S#f(LX#)zgn|so0)eTsV29Y(39}lyi1@pnE z($u+!qlJGOR|B=j?POpUnJPoBLJJSvuPxQOBmo%~Q$-=@pG$2=dIW485YVn<6_VSn ziE%OwXrYsEVD#I-RLothG(A*ijPnGXfclOF`YKPIOmC(z_~Nr@DH>tLMI6)uA zfw!L+41w2y6g7scOZi|1hG4A2Mvh^XY@+s7M;;xpF>_KCAERCJPe8Ix*=m$AFNdzJ zF3GJUv3pzziZ?PFnmmw&CN#9O={_3rj{x%%?tbgSE+^#rX7Cj$dkoZvDQ$)dfUbGAkuUro;Yr4aH%uW}uVDoS`-zg#>3pjCh=cCyN#^bOAues6=0pKs?;JGSL|UJVCPzr@-tkyXZ|ZuD)bx+l~wOL zbxX_LsXOv1vPSazuc6bt^q;RWj6uNi`JdbF)_snD61{!3n>yBbeLw55w!*zj1nsIg zCXVx*_M{`>pxHzbKJTi8hm1R+j%R!uN4!US(|ust`LoDmuYmbNhA0X3iex{iC;MGu z@KC(xk$(TvmK9Dqvo&Rg^O517oyvKA|2Qi%~EU34$SAiw9My`1K(giRQ@A)#~uemC?ww zR8EM|Sg9ohfs2~Z<)o@uV;R!mjHS$3W(2+p1|u&9Kqe$!Z#zWHgc9yE-|oLsAzD0c z4TF?D7UidGm|4_?X*ofZfwmI5!=6}fr7t3i`X@=eU$7Uw>kSTs-OYMDsa#dN_tCgH z=R0Zaz-Y#W4EKVEy2*5j(R75J%I0$!^48AfcM9^odSPw%a9xowF`R?BOJ*)JNC@7> zkTs!0(h$Ey#@?e(tHb5Rz4E@jpP7Sx-af*z;vYD|bcvjyZElh?HcjTbBOFPx;9@OR z(01_X(v3sakyt@5`umI2cgwGB@C5&)POJInmk+ip^TyHfxY&yYVjdTtF+w0thX5TK zUq~gu9MYnDg-gAAZ{r-mFy{INcZ?$Mh@EN8$P&7SD`7=oX0yH{e&%cPVoP9!xDbsp>W^idmqLl`)l07;r1(UN&X=Qa4Vx@*|H)$vn0J^|8hZbfv2Hbq@H3?XA$ zXu?cArD1N{T56di$ThFD8?gp}CaiQW!zW}-S#Lp)<}3vLlPW*{f`)~~T;2gn|99O_ zOX2IA#b_CV1UD{2fLbx^M%dS=!#IkMrJp-GmcJ70<>z-B+dX2kXuL#(;A>Se6K(K# z#t@wk#_p2@^%oqDloESl8A3$8)B3AxB+ZEtY;Q#g3fy-Et!`<@d2IdT?c1PJDerSL z65IwuT(geTK|t}xOr|q>mk`7Qi5sLVdO6AlrB=SQDn#^wD6|bE^F5y-9ee_7cmo?z zqoY6zHN&l#|6YoDgcVeeP|BW!WQ)XbHn1Q2^hI~zuFD1r-*_*o*lldY9@1W({qzJO z|LChZs#2=S+Y4-rg8koaB5^sKs|&%s^RbLBm52dno_JSY?rU0fZ}3Dzk~VfnxdJwKz<|{Rjim22ud6D|NMt*Ae^9L>5Q9K^^JV`h+_y1DpG_)v6$< z4{K&U!f1%Xdq`qOAsh)bL}OB*WTe-FR*)WIr)GwiQtJMX$|g!bnJ?dnCfO`zSnAFZ zBf+SuL17LP2&xCDi+RE(Awo7}JFTsoQT^+OUDK?MUDV1e&x=Y#+^W z|5eq#R4u^c&D2>@k*!n)F=`%VR3ROh_mn_^Mqf=XlybEDfLY~izmDAXbl}(exfYWK5 zZ+Jd&i)RsmHYeVuOY7>RjuJ0UVOmr{y-?N*SQNVt-*9Jy2CB4#)|SUnQ9oD3GNd38 zl)5urnC|>2+hEXb`kx-0$Kk@@pZS|!FkoVEk2SpSlN?^{7)=N8QR#jkdqt4_qzaSi zG)vC%@^Yu|C6Xwu4Me#R_E={}Az_b@1+Dte;#^oNBuh?#wz1Qz9XlPx)e7Ee>V%izQ{p`GMKkS9%140%U{xfR=HH3r|tp1<(v;Xsge|=(} z%p4@lI5M|JkNoy~Fx*v<-Q%c;8c0tfhJ50ZNTLFasM|vTjvTB5P$?nD)wI?l#yU$2 znj(Go1BMQraAC%_Blvfc_o?JI#&?JNp ztibR~Tp!F){kn$nOSq{n@8nT0(&;W_f6%kvB zSRkU10=Z9fNRds}LC-IBrg5xF!_bUu;;^}Ec#6qN%a_c_8(_be^^`H)|xH4*7AZSkFKX zje&-+7NwxsYFxqVZ#F~HkES#`qYSroYE_)??&uZeqk;cPZgC_rhBcYM3PR1r2N9qf zHry`fTJYSYheJ#aN5AT9wr1jKG$VwgHkY_8a-Druh7*k=b5$kxnZb1pxf>zi zWM2=Kf2rQXX%h-FoD#b(^=ufLc>LFxlSd1I{dmO~{VPg9ia}eHR&g=nQ_O#Qg6UiM zR))qHNikgN*ug+p-Ls`;O;+_@MP^KS%jK&Ku>;XGS2CGbC)R54=w9^g0T)tB9>Y0v7FQ|Q3(6RP zv_|TXhl6miiID7Ct!-m2$sV0jC6A9Oj^;clP)Ixu>$JAJ#61@yzwBfEV#~k`9unkq>|XM zia*tHQcMsz1&VC(WhH1w7Y5W8Qcyra=VYWm-nErqRZeK<-W4Jev?g@;3dtzv%nEc1 zp!EZGd@yT|6$3E|Rj=z1j9|IIR%7`Glg=9aInen6#F)zyeamYN_Qfnq@Q@?F*&WniVD zjts0hjHA<`{46|;IjCv5r8I8Ou@i%6Akg!*ezi`|V>Co)jeMn!Dc+lbZ9DZ(*k-&d;#_oJ2e67;r~sb=c)Hf}Cx3Too{ z@~m@x+0*%^uf@MEy|C|2;XW2Fr9h*!wUxRywL9tbF>$iih;djTu3|bFD&c+M5hT{$BYtDuRD`5ZF|Qa_iH^8f&^D675JX)pqD2 zLcq6{c~R$hCxa)E^5>Qf%%4UcDAl(YDqWOD7E7* zLrC_t41d>PRF7^aft+_mM@Rmq`vzlhbvUy8!Kl2YSrUkhp&&7tv0bS9%YS(KDA_4K$TtVgkZH2+A{Vttu>*YE1d?vjYCria1$sYwsk^>MdG zPltTqV~i?LzJ5(5k4fHFL7g$u0A{<2{jkX>&u4G{b)eljjn(Eoj8K zfVq*cPFK<8L{vS8%Ft=YH0$dQvpQ-=>gDv-j0;t{nc;np8oYx^S6rzbtCKXs=6s$BS0@uoz`E}V7~TV_GCW(cTq6NRkEGhQptbsHSd*tOSWjbr7A z&*XZw)uBJEWEJgZb)8TH2^-MJ742YoBJ&RiUCt&k#7U}8yZ4GS)4k!oz>|jdPwL5u zO?`47n*KPSPjSWh#S?y8rx*wd%)$19bS`fSj4CTw*P7v?lPYX5q83%3cJ{|iYy8*5 zj2-C8f!7IRX#m!$bI~}5#_~mMtL!d&IWpUB>mebms6yUhS*S4 z;De`#GRnd~g+F_PyGw=R=8D*R+5to52ZU2M)ns}+s%oZh>4%PLB$F6_pC(;glngnNKasz-U2K&mTXR$Ozrlj;Yg%0gJpdY`-DZeO_? z>QQM$A2;DXCEO?4TG&q(elJsbRhQ!?2%QM0vg)GI{WaV0t)>5A{;nMh-y=JIVAalC z{(<5B0f~Rv%W?U>By9|k!!I@yIhY+RM&Kti{O!R2Tgp54Z6_DWnoaPZ`qqO{`HJthemLHOv6WsfBM z{(}7)oVg($W(E6g7cKosMtQn+rAR^j`6;&)V*&R}q2Wyk026oaC$TT7R3S)Z%G{qrKb$O zWEJ$u`8+y|Fa5L`=LvMC+xg>rBhb*D9-OQhlHSyNb)u&2X;HlEYI$b?SJO$$-7i%C z!fiP*{18a7msN-vPPTzVc6zB)!+0Hzy9CV>`$Hw7VC9BKgsz?qTbY{N$J7~+%6D5GxrevGP2QT1Z=`{)*gkdj*OrV z-BOSQ%g|Ae(WxD`FE@Y57!2Lnd+HL-mI@tOy}&s<*K)I+dWPQ!mW7tL)eG*-l0bXH0#nyvq=Rc4v(Qv(K;IY@S=Xy5x1y@g| zwr~FP{Nq5ZyDB=n5TO;p_TtNizLw8ND~|LQD_Wi%d7hxLd4^Nrl56#KMZv~hiJx;` z#?rZRsB-;bbLEZMtPnkI>f9vVexGM$PPsn~L~2^z8g}Xbl#ra%9*EAe4~}lITntEO zAY8`_GT50VARFd^d`N!<+q4kAdjkCNqg%qTzEIrx!bA-d$6~#Ll={0e4-L|5`lbRD zjBx?u0_H8eASN2Sw=fW%l->6*Xc;Aic4oJh9?V^Kr9U>vVjy$t(cIl`-)fsln;OoB zO>M{;H4fHo+HKUX$xIz&GE4@2_DGvi$+&9%^^b^goq>qFOv`TxwT!@N4oYr(u0 z%xl5C7R+nGycW!B!MqmCYr(u0%xl5C7W_YJLE@4r&eT3jBY_`4Fs literal 0 HcmV?d00001 diff --git a/src/assets/coins/XLM.png b/src/assets/coins/XLM.png new file mode 100644 index 0000000000000000000000000000000000000000..f419d217ae6c57bbfab1b9dca26c7fec89b0a2ae GIT binary patch literal 77966 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 L-`}RaWcs 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 p$;O=tCdwhNO&spoc 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 = { * */ sortBy?: MultiSort; + /** Gives a className to even rows (2,4,6,8,...), to help table rows readability. */ + evenRowsClassname?: string; + /** Gives a className to odd rows (1,3,5,7,...), to help table rows readability. */ + oddRowsClassname?: string; }; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -57,6 +61,8 @@ const Table = ({ isLoading, className, sortBy, + evenRowsClassname, + oddRowsClassname, }: TableProps): JSX.Element | null => { const totalCount = data.length; @@ -128,12 +134,13 @@ const Table = ({ ))} - {getRowModel().rows.map((row) => { + {getRowModel().rows.map((row, index) => { + const even = index % 2; return ( {row.getVisibleCells().map((cell) => { return ( - + {flexRender(cell.column.columnDef.cell, cell.getContext())} ); diff --git a/src/helpers/spacewalk.ts b/src/helpers/spacewalk.ts index 776abe8a..3d981dcd 100644 --- a/src/helpers/spacewalk.ts +++ b/src/helpers/spacewalk.ts @@ -8,6 +8,10 @@ import { Asset, Keypair } from 'stellar-sdk'; import { TenantName } from '../models/Tenant'; import { convertRawHexKeyToPublicKey } from './stellar'; +export const SpacewalkConstants = { + WrappedCurrencySuffix: '.s', +}; + // Convert a hex string to an ASCII string function hex_to_ascii(hexString: string, leading0x = true) { const hex = hexString.toString(); @@ -52,6 +56,14 @@ export function convertCurrencyToStellarAsset(currency: SpacewalkPrimitivesCurre } } +export function addSuffix(s: string) { + return s + SpacewalkConstants.WrappedCurrencySuffix; +} + +export function currencyToStellarAssetCode(currency: SpacewalkPrimitivesCurrencyId) { + return convertCurrencyToStellarAsset(currency)?.getCode() + SpacewalkConstants.WrappedCurrencySuffix; +} + export function convertStellarAssetToCurrency(asset: Asset, api: ApiPromise): SpacewalkPrimitivesCurrencyId { if (asset.isNative()) { return api.createType('SpacewalkPrimitivesCurrencyId', 'StellarNative'); @@ -84,9 +96,11 @@ export function convertStellarAssetToCurrency(asset: Asset, api: ApiPromise): Sp const XCM_ASSETS: { [network: string]: { [xcmIndex: string]: string } } = { pendulum: { '0': 'DOT', + '1': 'USDT', }, amplitude: { '0': 'KSM', + '1': 'USDT', }, }; diff --git a/src/hooks/usePriceFetcher.ts b/src/hooks/usePriceFetcher.ts new file mode 100644 index 00000000..b7b69e3b --- /dev/null +++ b/src/hooks/usePriceFetcher.ts @@ -0,0 +1,150 @@ +import { useMemo } from 'react'; +import { TenantName } from '../models/Tenant'; + +interface PriceFetcherAsset { + assetName: string; + blockchain: string; + assetId: string | undefined; + exclude?: TenantName[]; + provider: 'dia' | 'diaForeign'; +} + +type PricesCache = { + [key: string]: number; +}; + +const assets: PriceFetcherAsset[] = [ + { + assetName: 'USDC.s', + blockchain: 'Ethereum', + assetId: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + provider: 'dia', + exclude: [TenantName.Pendulum], + }, + { + assetName: 'XLM.s', + blockchain: 'Stellar', + assetId: '0x0000000000000000000000000000000000000000/', + provider: 'dia', + exclude: [TenantName.Pendulum], + }, + { + assetName: 'TZS.s', + blockchain: 'YahooFinance', + assetId: 'TZS-USD', + provider: 'diaForeign', + exclude: [TenantName.Pendulum], + }, + { + assetName: 'BRL.s', + blockchain: 'YahooFinance', + assetId: 'BRL-USD', + provider: 'diaForeign', + exclude: [TenantName.Pendulum], + }, + { + assetName: 'KSM', + blockchain: 'Kusama', + assetId: '0x0000000000000000000000000000000000000000', + provider: 'dia', + exclude: [TenantName.Pendulum], + }, + { + assetName: 'USDT', + blockchain: 'Ethereum', + assetId: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + provider: 'dia', + }, + + { + assetName: 'DOT', + blockchain: 'Polkadot', + assetId: '0x0000000000000000000000000000000000000000', + provider: 'dia', + exclude: [TenantName.Amplitude], + }, + { + assetName: 'AMPE', + blockchain: 'Amplitude', + assetId: undefined, + provider: 'dia', + exclude: [TenantName.Pendulum], + }, + { + assetName: 'PEN', + blockchain: 'Pendulum', + assetId: '0x0000000000000000000000000000000000000000', + provider: 'dia', + exclude: [TenantName.Amplitude], + }, +]; + +const getDIAAssetPrice = async (asset: PriceFetcherAsset): Promise => { + if (!asset.assetId) return 0; + + try { + const data = await fetch(`https://api.diadata.org/v1/assetQuotation/${asset.blockchain}/${asset.assetId}`); + if (data.ok) { + return (await data.json())['Price']; + } + } catch (e) { + console.error(e); + } + + return 0; +}; + +const getDIAAssetForeignPrice = async (asset: PriceFetcherAsset): Promise => { + if (!asset.assetId) return 0; + try { + const data = await fetch(`https://api.diadata.org/v1/foreignQuotation/${asset.blockchain}/${asset.assetId}`); + if (data.ok) { + return (await data.json())['Price']; + } + } catch (e) { + console.error(e); + } + + return 0; +}; + +const providers = { + dia: getDIAAssetPrice, + diaForeign: getDIAAssetForeignPrice, +}; + +const lookup = (assetCode: string) => { + const found = assets.find(({ assetName }) => assetName === assetCode); + + if (!found) throw Error(`Asset ${assetCode} was not found`); + + return found; +}; + +const getPrice = async (asset: PriceFetcherAsset) => { + try { + return await providers[asset.provider](asset); + } catch (e) { + console.error('Not able fetch to price for asset: ', e); + } +}; + +export const usePriceFetcher = () => { + const pricesCache: Promise = useMemo(async () => { + let cache = {}; + for (let i = 0; i < assets.length; i++) { + cache = { ...cache, [assets[i].assetName]: await getPrice(assets[i]) }; + } + return cache; + }, []); + + const fetch = async (assetCode: string) => { + try { + return await getPrice(lookup(assetCode)); + } catch (e) { + console.error(e); + } + }; + + return { fetch, pricesCache }; +}; diff --git a/src/pages/bridge/Transfers.tsx b/src/pages/bridge/Transfers.tsx index accd8dae..1707a09f 100644 --- a/src/pages/bridge/Transfers.tsx +++ b/src/pages/bridge/Transfers.tsx @@ -150,7 +150,7 @@ function Transfers(): JSX.Element { /> )} { if (!chain) return; diff --git a/src/pages/collators/CollatorsTable.tsx b/src/pages/collators/CollatorsTable.tsx index 58267a2e..48ab5e01 100644 --- a/src/pages/collators/CollatorsTable.tsx +++ b/src/pages/collators/CollatorsTable.tsx @@ -130,7 +130,7 @@ function CollatorsTable() { }} />
+ +
+
+

Promo

+

Join now

+
+
+ +
+
+
+ + ); +} + +export default Banner; diff --git a/src/pages/dashboard/Dashboard.tsx b/src/pages/dashboard/Dashboard.tsx index 37af1d2d..9aa2f621 100644 --- a/src/pages/dashboard/Dashboard.tsx +++ b/src/pages/dashboard/Dashboard.tsx @@ -1,190 +1,12 @@ -import { - OrmlTokensAccountData, - PalletBalancesAccountData, - SpacewalkPrimitivesCurrencyId, -} from '@polkadot/types/lookup'; -import _ from 'lodash'; -import { useEffect, useMemo, useState } from 'preact/hooks'; -import { useGlobalState } from '../../GlobalStateProvider'; -import { useNodeInfoState } from '../../NodeInfoProvider'; -import Banner from '../../assets/banner-spacewalk-4x.png'; -import { getAddressForFormat } from '../../helpers/addressFormatter'; -import { currencyToString } from '../../helpers/spacewalk'; -import { useVaultRegistryPallet } from '../../hooks/spacewalk/vaultRegistry'; -import { nativeToDecimal, prettyNumbers } from '../../shared/parseNumbers'; +import Banner from './Banner'; +import Portfolio from './Portfolio'; import './styles.css'; -interface TokenBalances { - [tokenId: string]: OrmlTokensAccountData; -} - function Dashboard() { - const { walletAccount, tenantName, tenantRPC } = useGlobalState(); - const { - state: { api, tokenSymbol, ss58Format }, - } = useNodeInfoState(); - const { getVaults } = useVaultRegistryPallet(); - - const [accountBalance, setAccountBalance] = useState(undefined); - const [accountTokenBalances, setAccountTokenBalances] = useState({}); - - useEffect(() => { - if (!walletAccount?.address || !tenantRPC) { - setAccountBalance(undefined); - return; - } - api?.query.system - .account(walletAccount.address) - .then((data) => { - setAccountBalance(data.data); - }) - .catch((e) => console.error(e)); - }, [api, walletAccount, tenantRPC]); - - const cachedBalance = useMemo(() => { - if (!accountBalance) return undefined; - return prettyNumbers(nativeToDecimal(accountBalance.free.toString()).toNumber()); - }, [accountBalance]); - - const vaults = getVaults(); - - const availableCurrencies = useMemo(() => { - const currencies: SpacewalkPrimitivesCurrencyId[] = []; - vaults.forEach((vault) => { - currencies.push(vault.id.currencies.wrapped); - currencies.push(vault.id.currencies.collateral); - }); - - // Deduplicate assets - return _.uniqBy(currencies, (currencyId: SpacewalkPrimitivesCurrencyId) => currencyId.toHex()); - }, [vaults]); - - useEffect(() => { - if (!walletAccount || !availableCurrencies) return; - - async function fetchBridgedTokens(address: string, asset: SpacewalkPrimitivesCurrencyId) { - if (!api) return; - return api.query.tokens.accounts(address, asset); - } - - availableCurrencies.forEach((currencyId) => { - const walletAddress = ss58Format ? getAddressForFormat(walletAccount.address, ss58Format) : walletAccount.address; - fetchBridgedTokens(walletAddress, currencyId).then((balance) => { - const tokenId = currencyToString(currencyId, tenantName); - setAccountTokenBalances((balances) => { - let newBalances = balances; - if (tokenId && balance) { - newBalances[tokenId] = balance; - newBalances = Object.assign({}, balances); - } - - return newBalances; - }); - }); - }); - }, [availableCurrencies, walletAccount, api, ss58Format, tenantName]); - return (
- -
-
-

Portfolio

-
- {cachedBalance && ( -
-

- {cachedBalance} {tokenSymbol} -

-
- )} -
    -
  • - {Object.entries(accountTokenBalances).map(([tokenId, balance]) => { - if (!balance.free.isZero()) { - // If it's a Stellar asset we are interested in the code which is the first part of the stringified token id - const assetCode = tokenId.split(':')[0]; - return ( -
  • -

    - {nativeToDecimal(balance.free.toString()).toFixed()} {assetCode} -

    -
  • - ); - } - })} -
- {!cachedBalance && ( - <> -

You have to connect a wallet to see your available balance.

- - )} -
-
-
-
-

Total Value Locked

-

$63.231,98

- - - - - - - - - -
-
- vsToken -
- $62M -
-
- vKSM -
- $62M -
-
- vETH -
- $32M -
-
- DEX -
- $7M -
-
-
+ +
); } diff --git a/src/pages/dashboard/Portfolio.tsx b/src/pages/dashboard/Portfolio.tsx new file mode 100644 index 00000000..da2e2700 --- /dev/null +++ b/src/pages/dashboard/Portfolio.tsx @@ -0,0 +1,136 @@ +import { SpacewalkPrimitivesCurrencyId } from '@polkadot/types/lookup'; +import _ from 'lodash'; +import { useEffect, useMemo, useState } from 'react'; +import { useGlobalState } from '../../GlobalStateProvider'; +import { useNodeInfoState } from '../../NodeInfoProvider'; +import Table, { SortingOrder } from '../../components/Table'; +import { getAddressForFormat } from '../../helpers/addressFormatter'; +import { addSuffix, currencyToString } from '../../helpers/spacewalk'; +import { useVaultRegistryPallet } from '../../hooks/spacewalk/vaultRegistry'; +import { usePriceFetcher } from '../../hooks/usePriceFetcher'; +import { nativeToDecimal } from '../../shared/parseNumbers'; +import { PortfolioAsset, amountColumn, priceColumn, tokenColumn, usdValueColumn } from './PortfolioColumns'; + +function Portfolio() { + const { walletAccount, tenantName, tenantRPC } = useGlobalState(); + const { + state: { api, ss58Format, tokenSymbol }, + } = useNodeInfoState(); + const { getVaults } = useVaultRegistryPallet(); + + const [accountTotalBalance, setAccountTotalBalance] = useState(0); + + const [data, setData] = useState(); + const { pricesCache } = usePriceFetcher(); + + const vaults = getVaults(); + + const spacewalkCurrencies = useMemo(() => { + const currencies: SpacewalkPrimitivesCurrencyId[] = []; + vaults.forEach((vault) => { + currencies.push(vault.id.currencies.wrapped); + currencies.push(vault.id.currencies.collateral); + }); + + // Deduplicate assets + return _.uniqBy(currencies, (currencyId: SpacewalkPrimitivesCurrencyId) => currencyId.toHex()); + }, [vaults]); + + useEffect(() => { + if (!walletAccount || !spacewalkCurrencies) return; + + async function fetchBridgedTokens(address: string, asset: SpacewalkPrimitivesCurrencyId) { + if (!api) return; + return api.query.tokens.accounts(address, asset); + } + + function getPortfolioAssetsFromSpacewalk(): Promise[] { + if (!walletAccount || !spacewalkCurrencies) return []; + + return spacewalkCurrencies.map(async (currencyId) => { + let token = currencyToString(currencyId, tenantName)?.split(':')[0]; + if (!token) return; + + token = currencyId.isStellar ? addSuffix(token) : token; + + const walletAddress = ss58Format + ? getAddressForFormat(walletAccount.address, ss58Format) + : walletAccount.address; + + const balance = await fetchBridgedTokens(walletAddress, currencyId); + const amount = nativeToDecimal(balance?.free || '0').toNumber(); + const price: number = (await pricesCache)[token]; + const usdValue = price * amount; + + return { + token, + price, + amount, + usdValue, + }; + }); + } + + async function getPortfolioAssetsNative() { + if (!walletAccount?.address || !tenantRPC) { + return; + } + const balance = (await api?.query.system.account(walletAccount.address))?.data; + + if (!tokenSymbol || !balance) return; + + const price: number = (await pricesCache)[tokenSymbol]; + const usdValue = price * nativeToDecimal(balance.free).toNumber(); + + return { + token: tokenSymbol, + price, + amount: nativeToDecimal(balance.free).toNumber(), + usdValue, + }; + } + + const allPortfolioAssets: Promise[] = getPortfolioAssetsFromSpacewalk().concat([ + getPortfolioAssetsNative(), + ]); + + Promise.all(allPortfolioAssets).then((data) => { + setData(data.filter((e) => e !== undefined) as PortfolioAsset[]); + }); + }, [spacewalkCurrencies, walletAccount, api, ss58Format, tenantName, tenantRPC, tokenSymbol, pricesCache]); + + useEffect(() => { + if (!data) return; + setAccountTotalBalance(data.map(({ usdValue }) => usdValue || 0).reduce((acc, val) => acc + val, 0)); + }, [data]); + + const columns = useMemo(() => { + return [tokenColumn, priceColumn, amountColumn, usdValueColumn]; + }, []); + + return ( +
+
+
Wallet
+
+ $ {accountTotalBalance.toFixed(2)} +
+
+ {walletAccount && ( +
+ )} + {!walletAccount &&
You need to connect a wallet in order to see your Portfolio.
} + + ); +} + +export default Portfolio; diff --git a/src/pages/dashboard/PortfolioColumns.tsx b/src/pages/dashboard/PortfolioColumns.tsx new file mode 100644 index 00000000..2a49d3f0 --- /dev/null +++ b/src/pages/dashboard/PortfolioColumns.tsx @@ -0,0 +1,66 @@ +import { ColumnDef } from '@tanstack/table-core'; +import { getIcon } from './PortfolioIcons'; + +export interface PortfolioAsset { + token: string; + price: number; + amount: number; + usdValue?: number; +} + +export const tokenColumn: ColumnDef = { + header: 'Token', + accessorKey: 'token', + enableMultiSort: true, + cell: ({ row }) => { + return ( +
+ +
{row.original.token}
+
+ ); + }, +}; + +export const priceColumn: ColumnDef = { + header: 'Price', + accessorKey: 'price', + enableMultiSort: true, + cell: ({ row }) => { + return ( +
+ {row.original.price ? '$ ' + row.original.price.toFixed(4) : '-'} +
+ ); + }, +}; + +export const amountColumn: ColumnDef = { + header: 'Amount', + accessorKey: 'amount', + enableMultiSort: true, + cell: ({ row }) => { + return
{row.original.amount.toFixed(3)}
; + }, +}; + +export const usdValueColumn: ColumnDef = { + header: 'USD Value', + accessorKey: 'usdValue', + enableMultiSort: true, + accessorFn: ({ price, amount }) => (price ? '$ ' + (price * amount).toFixed(2) : '-'), + cell: ({ row }) => { + const { price, amount } = row.original; + return ( +
{price ? '$ ' + (price * amount).toFixed(2) : '-'}
+ ); + }, +}; diff --git a/src/pages/dashboard/PortfolioIcons.tsx b/src/pages/dashboard/PortfolioIcons.tsx new file mode 100644 index 00000000..1febef08 --- /dev/null +++ b/src/pages/dashboard/PortfolioIcons.tsx @@ -0,0 +1,30 @@ +import AMPE from '../../assets/coins/AMPE.png'; +import BRL from '../../assets/coins/BRL.png'; +import DOT from '../../assets/coins/DOT.png'; +import KSM from '../../assets/coins/KSM.png'; +import PEN from '../../assets/coins/PEN.png'; +import TZS from '../../assets/coins/TZS.png'; +import USDC from '../../assets/coins/USDC.png'; +import USDT from '../../assets/coins/USDT.png'; +import XLM from '../../assets/coins/XLM.png'; +import DefaultIcon from '../../assets/coins/placeholder.png'; + +type IconMap = { + [key: string]: string; +}; + +const icons: IconMap = { + 'BRL.s': BRL, + 'TZS.s': TZS, + 'XLM.s': XLM, + 'USDC.s': USDC, + DOT, + KSM, + USDT, + PEN, + AMPE, +}; + +export function getIcon(token: string) { + return Object.keys(icons).includes(token) ? icons[token] : DefaultIcon; +} diff --git a/src/pages/dashboard/styles.css b/src/pages/dashboard/styles.css index e34a5bfa..0efc260d 100644 --- a/src/pages/dashboard/styles.css +++ b/src/pages/dashboard/styles.css @@ -30,30 +30,10 @@ } .portfolio { - height: 95%; background-color: var(--portfolio-bg); - border-radius: 5px; border: 1px solid var(--portfolio-border); } -.portfolio.card .card-body { - padding: 1rem; -} - -.portfolio .balance h1 { - font-size: 40px; -} - -.portfolio .balance h2 { - font-size: 20px; -} - -.portfolio > .balance { - padding-top: 20px; - padding-bottom: 15px; - text-align: center; -} - .banner.card-compact .card-title { padding: 1rem; margin: 0; @@ -67,10 +47,6 @@ border-bottom-right-radius: 5px; } -.portfolio > ul li { - display: inline; -} - .graph { float: right; width: 70%; diff --git a/tailwind.config.cjs b/tailwind.config.cjs index 5a0f41e8..b55f79ed 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -32,7 +32,7 @@ module.exports = { 'secondary-content': '#58667E', accent: '#1DE7DF', neutral: '#EFF2F5', - 'base-100': '#fbfcfe', + 'base-100': '#F5F9FA', 'base-200': '#fff', 'base-300': '#eff2f5', 'base-content': '#58667E', @@ -53,7 +53,6 @@ module.exports = { 'base-200': '#1c1c1c', 'base-300': '#2c2c2c', 'base-content': '#fff', - '--rounded-btn': '9px', '--btn-text-case': 'none', }, From c937cde36a6006c1559b0ec3d4499f1c84540f8d Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Tue, 10 Oct 2023 10:23:39 +0200 Subject: [PATCH 09/33] fix remove indicator (#252) --- src/components/Layout/Versions.tsx | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/src/components/Layout/Versions.tsx b/src/components/Layout/Versions.tsx index 59083d50..d58a08cd 100644 --- a/src/components/Layout/Versions.tsx +++ b/src/components/Layout/Versions.tsx @@ -9,29 +9,9 @@ interface Props { const Versions: FC = memo(({ tenantName }: Props) => { const { state } = useNodeInfoState(); - let indicator = ''; - - switch (tenantName) { - case 'amplitude': { - indicator = 'alpha'; - break; - } - case 'pendulum': { - indicator = ''; - break; - } - case 'foucoco': { - indicator = 'Foucoco'; - break; - } - } - return (
-

- {indicator} - Runtime: {(state.nodeVersion && state.nodeVersion.toString()) || '0.0.0-00000000000'} -

+

Runtime: {(state.nodeVersion && state.nodeVersion.toString()) || '0.0.0-00000000000'}

); }); From bdf34e88f6fb6581aa5ba763f0323f46a498fc67 Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Wed, 11 Oct 2023 10:21:51 +0200 Subject: [PATCH 10/33] Update design for Spacewalk Issue and Redeeem (#253) * extract base Form component * separate issue and redeem in folders and use new From input * extract feebox and dialog from issue * issue box restyling with collapsible boxes * fix collapsible styles * tweak asset selector to match designs * move coin icons to shared * mock disclaimer text * remove typo * add stellar logo for tab * fix pen/ampe logos and colors * fixes * settings dialog (wip) * add 'back to stellar' design * yarn lint fix * Add settings Dialog * improve from component * improve settings * Update src/components/Layout/links.tsx * rename hook * remove unused spacewalk app * fix tricky dropdown issue not closing on blur * improve settings dialog * improve collapsible behavior * make tabs slightly bigger * invert buttons order * remove minimum * extract useBalances hook * extract get asset display name * fix redeem validation and max tokens * make balance reload when balances hook is ready * max issuable tokens * fix typo * fix showing errors * add missing dot * remove unused code * show errors according to the design --- src/assets/AmplitudeLogo.tsx | 27 +- src/assets/PendulumLogo.tsx | 21 +- src/assets/SettingsIcon.tsx | 40 ++ src/assets/StellarLogo.tsx | 16 + src/assets/amplitud-logo.svg | 6 - src/assets/amplitude-logo.svg | 10 +- src/assets/bell.tsx | 17 + src/components/Form/From/index.tsx | 90 ++++ src/components/Form/Validation/index.tsx | 2 +- src/components/LabelledInputField/index.tsx | 65 +-- src/components/Layout/index.tsx | 2 +- src/components/Layout/links.tsx | 4 +- src/components/Selector/AssetSelector.tsx | 41 +- src/components/Selector/DropdownSelector.tsx | 63 +-- src/components/Selector/VaultSelector.tsx | 16 +- src/components/Wallet/NovaWallet/index.tsx | 9 +- src/config/apps/index.ts | 3 +- src/helpers/spacewalk.ts | 4 + src/helpers/yup.ts | 4 +- src/hooks/spacewalk/useBridgeSettings.ts | 101 ++++ src/hooks/useBalances.ts | 112 ++++ src/index.css | 9 +- src/pages/bridge/FeeBox.tsx | 101 ++++ src/pages/bridge/Issue.tsx | 488 ------------------ src/pages/bridge/Issue/ConfirmationDialog.tsx | 122 +++++ src/pages/bridge/Issue/Disclaimer.tsx | 36 ++ .../bridge/Issue/IssueValidationSchema.ts | 14 + src/pages/bridge/Issue/SettingsDialog.tsx | 57 ++ src/pages/bridge/Issue/index.tsx | 178 +++++++ src/pages/bridge/Redeem.tsx | 451 ---------------- .../bridge/Redeem/ConfirmationDialog.tsx | 64 +++ .../bridge/Redeem/RedeemValidationSchema.ts | 18 + src/pages/bridge/Redeem/index.tsx | 192 +++++++ src/pages/bridge/index.tsx | 36 +- src/pages/bridge/styles.css | 62 ++- src/pages/dashboard/Portfolio.tsx | 110 +--- src/pages/dashboard/PortfolioColumns.tsx | 2 +- src/pages/dashboard/PortfolioIcons.tsx | 30 -- src/services/walletConnect/index.ts | 2 +- src/shared/AssetIcons.tsx | 34 ++ src/shared/parseNumbers.ts | 8 +- tailwind.config.cjs | 4 +- 42 files changed, 1420 insertions(+), 1251 deletions(-) create mode 100644 src/assets/SettingsIcon.tsx create mode 100644 src/assets/StellarLogo.tsx delete mode 100644 src/assets/amplitud-logo.svg create mode 100644 src/assets/bell.tsx create mode 100644 src/components/Form/From/index.tsx create mode 100644 src/hooks/spacewalk/useBridgeSettings.ts create mode 100644 src/hooks/useBalances.ts create mode 100644 src/pages/bridge/FeeBox.tsx delete mode 100644 src/pages/bridge/Issue.tsx create mode 100644 src/pages/bridge/Issue/ConfirmationDialog.tsx create mode 100644 src/pages/bridge/Issue/Disclaimer.tsx create mode 100644 src/pages/bridge/Issue/IssueValidationSchema.ts create mode 100644 src/pages/bridge/Issue/SettingsDialog.tsx create mode 100644 src/pages/bridge/Issue/index.tsx delete mode 100644 src/pages/bridge/Redeem.tsx create mode 100644 src/pages/bridge/Redeem/ConfirmationDialog.tsx create mode 100644 src/pages/bridge/Redeem/RedeemValidationSchema.ts create mode 100644 src/pages/bridge/Redeem/index.tsx delete mode 100644 src/pages/dashboard/PortfolioIcons.tsx create mode 100644 src/shared/AssetIcons.tsx diff --git a/src/assets/AmplitudeLogo.tsx b/src/assets/AmplitudeLogo.tsx index 27f2d9ee..6f81ff86 100644 --- a/src/assets/AmplitudeLogo.tsx +++ b/src/assets/AmplitudeLogo.tsx @@ -5,31 +5,18 @@ interface Props extends HTMLAttributes { } const AmplitudeLogo = ({ className, ...rest }: Props) => ( - - - - - + + + + + - - + + ); diff --git a/src/assets/PendulumLogo.tsx b/src/assets/PendulumLogo.tsx index d19f779b..eb7b0407 100644 --- a/src/assets/PendulumLogo.tsx +++ b/src/assets/PendulumLogo.tsx @@ -5,14 +5,7 @@ interface Props { const PendulumLogo = ({ className, light }: Props) => light ? ( - + width="18" height="25" viewBox="0 0 18 25" - fill="none" xmlns="http://www.w3.org/2000/svg" className={className} + fill="#32253E" > - - + + ); diff --git a/src/assets/SettingsIcon.tsx b/src/assets/SettingsIcon.tsx new file mode 100644 index 00000000..9b4417b4 --- /dev/null +++ b/src/assets/SettingsIcon.tsx @@ -0,0 +1,40 @@ +const SettingsIcon = () => ( + + + + + + + + + + + + + + + + +); + +export default SettingsIcon; diff --git a/src/assets/StellarLogo.tsx b/src/assets/StellarLogo.tsx new file mode 100644 index 00000000..5b3b6284 --- /dev/null +++ b/src/assets/StellarLogo.tsx @@ -0,0 +1,16 @@ +interface Props { + className?: string; +} + +const StellarLogo = ({ className }: Props) => ( + + + + + + + + +); + +export default StellarLogo; diff --git a/src/assets/amplitud-logo.svg b/src/assets/amplitud-logo.svg deleted file mode 100644 index 4428c9c5..00000000 --- a/src/assets/amplitud-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/assets/amplitude-logo.svg b/src/assets/amplitude-logo.svg index 3577b085..91920776 100644 --- a/src/assets/amplitude-logo.svg +++ b/src/assets/amplitude-logo.svg @@ -1,8 +1,6 @@ - - - - - - + + + + diff --git a/src/assets/bell.tsx b/src/assets/bell.tsx new file mode 100644 index 00000000..67b6a6b3 --- /dev/null +++ b/src/assets/bell.tsx @@ -0,0 +1,17 @@ +interface Props { + color?: string; +} + +const BellIcon = ({ color }: Props) => ( + + + + + + + + + + +); +export default BellIcon; diff --git a/src/components/Form/From/index.tsx b/src/components/Form/From/index.tsx new file mode 100644 index 00000000..fc4f2b59 --- /dev/null +++ b/src/components/Form/From/index.tsx @@ -0,0 +1,90 @@ +import { Fragment } from 'preact'; +import { Input } from 'react-daisyui'; +import { UseFormRegisterReturn } from 'react-hook-form'; +import { Asset } from 'stellar-sdk'; +import AssetSelector from '../../Selector/AssetSelector'; + +export interface FromProps { + className?: string; + max?: number; + min?: number; + register: UseFormRegisterReturn; + setValue: (n: number) => void; + assets?: Asset[]; + selectedAsset?: Asset; + setSelectedAsset: (a: Asset) => void; + network?: string; + assetSuffix?: string; + error?: string; +} + +const From = ({ + setSelectedAsset, + className, + register, + max, + setValue, + assets, + selectedAsset, + network, + assetSuffix, + error, +}: FromProps): JSX.Element | null => { + return ( + <> +
+
+
+ { + if (e.code === 'Minus' || e.code === 'KeyE') { + e.preventDefault(); + } + }} + placeholder="0.0" + {...register} + /> +
+ {assets && ( + + )} +
+
+ {network &&
From {network}
} +
+ {max !== undefined && ( + + Available: {max.toFixed(2)} + + + + )} +
+
+
+ + + ); +}; +export default From; diff --git a/src/components/Form/Validation/index.tsx b/src/components/Form/Validation/index.tsx index 1b9f9ea0..5291b698 100644 --- a/src/components/Form/Validation/index.tsx +++ b/src/components/Form/Validation/index.tsx @@ -9,7 +9,7 @@ const Validation = ({ errors = {}, className }: ValidationProps): JSX.Element | const keys = Object.keys(errors); if (keys.length === 0) return null; return ( -
    +
      {keys.map((key, i) => (errors[key] && errors[key]?.message ?
    • {errors[key]?.message}
    • : null))}
    ); diff --git a/src/components/LabelledInputField/index.tsx b/src/components/LabelledInputField/index.tsx index 86d8b107..5b40ce92 100644 --- a/src/components/LabelledInputField/index.tsx +++ b/src/components/LabelledInputField/index.tsx @@ -1,5 +1,6 @@ import { CSSProperties, ChangeEvent, TargetedEvent, forwardRef } from 'preact/compat'; import { Input, InputProps } from 'react-daisyui'; +import { UseFormRegisterReturn } from 'react-hook-form'; import './styles.css'; interface Props { @@ -14,44 +15,50 @@ interface Props { extraBtnAction?: () => void; onChange?: (value: string) => void; style?: CSSProperties; + register?: UseFormRegisterReturn; } const LabelledInputField = forwardRef((props: Props & InputProps) => { - const { color, error, label, secondaryLabel, onChange, extraBtnAction, extraBtnText, style, ...rest } = props; + const { register, color, error, label, secondaryLabel, onChange, extraBtnAction, extraBtnText, style, ...rest } = + props; const inputColor = error ? 'error' : color; return ( -
    -
    - -
    - { - if (event.target instanceof HTMLInputElement) { - event.target.select(); - } - }} - onInput={(event: ChangeEvent) => { - if (event.target instanceof HTMLInputElement) { - onChange?.(event.target.value); - } - }} - /> - {extraBtnText && extraBtnAction && ( - - )} + <> +
    +
    + +
    + { + if (event.target instanceof HTMLInputElement) { + event.target.select(); + } + }} + onInput={(event: ChangeEvent) => { + if (event.target instanceof HTMLInputElement) { + onChange?.(event.target.value); + } + }} + {...register} + /> + {extraBtnText && extraBtnAction && ( + + )} +
    -
    + + ); }); diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx index abad6987..ff3a01cf 100644 --- a/src/components/Layout/index.tsx +++ b/src/components/Layout/index.tsx @@ -2,7 +2,7 @@ import { Bars3Icon } from '@heroicons/react/20/solid'; import { memo, useState } from 'preact/compat'; import { Outlet } from 'react-router-dom'; import { useGlobalState } from '../../GlobalStateProvider'; -import AmplitudeLogo from '../../assets/amplitud-logo.svg'; +import AmplitudeLogo from '../../assets/amplitude-logo.svg'; import PendulumLogo from '../../assets/pendulum-logo.png'; import { TenantName } from '../../models/Tenant'; import ChainSelector from '../ChainSelector'; diff --git a/src/components/Layout/links.tsx b/src/components/Layout/links.tsx index e872c044..7cb52fcb 100644 --- a/src/components/Layout/links.tsx +++ b/src/components/Layout/links.tsx @@ -54,7 +54,7 @@ export const links: Links = ({ tenantName }) => [ link: './spacewalk', title: 'Spacewalk', props: { - className: ({ isActive } = {}) => (isActive ? 'active' : tenantName === TenantName.Pendulum ? 'coming-soon' : ''), + className: ({ isActive } = {}) => (isActive ? 'active' : tenantName === TenantName.Pendulum ? 'active' : ''), }, prefix: , suffix: tenantName === TenantName.Pendulum ? : <>, @@ -96,8 +96,6 @@ export const links: Links = ({ tenantName }) => [ link: '/nabla', title: 'Nabla', prefix: , - suffix: , - hidden: true, props: { className: ({ isActive } = {}) => (isActive ? 'active' : ''), }, diff --git a/src/components/Selector/AssetSelector.tsx b/src/components/Selector/AssetSelector.tsx index 77084d35..39428386 100644 --- a/src/components/Selector/AssetSelector.tsx +++ b/src/components/Selector/AssetSelector.tsx @@ -1,7 +1,10 @@ +import { ChevronDownIcon } from '@heroicons/react/20/solid'; import { CSSProperties } from 'preact/compat'; +import { Button } from 'react-daisyui'; import { Asset } from 'stellar-sdk'; -import { stringifyStellarAsset } from '../../helpers/stellar'; -import LabelledSelector from './LabelledSelector'; +import { assetDisplayName } from '../../helpers/spacewalk'; +import { getIcon } from '../../shared/AssetIcons'; +import DropdownSelector from './DropdownSelector'; interface AssetSelectorProps { selectedAsset?: Asset; @@ -12,40 +15,46 @@ interface AssetSelectorProps { assetSuffix?: string; } -function getDisplayName(asset: Asset, assetPrefix?: string, assetSuffix?: string): string { - return `${assetPrefix || ''}${asset.getCode()}${assetSuffix || ''}`; -} - function AssetSelector(props: AssetSelectorProps): JSX.Element { const { assets, selectedAsset, assetPrefix, assetSuffix } = props; const items = assets.map((asset) => { return { - displayName: getDisplayName(asset, assetPrefix, assetSuffix), - id: stringifyStellarAsset(asset), + displayName: assetDisplayName(asset, assetPrefix, assetSuffix), + id: asset.getCode(), }; }); const selectedAssetItem = selectedAsset ? { - displayName: getDisplayName(selectedAsset, assetPrefix, assetSuffix), - id: stringifyStellarAsset(selectedAsset), + displayName: assetDisplayName(selectedAsset, assetPrefix, assetSuffix), + id: selectedAsset.getCode(), } : undefined; return ( - { const newAsset = assets.find((asset) => { - return stringifyStellarAsset(asset) === newItem.id; + return asset.getCode() === newItem.id; }); newAsset && props.onChange(newAsset); }} - value={selectedAssetItem} - style={props.style} - /> + > + + ); } diff --git a/src/components/Selector/DropdownSelector.tsx b/src/components/Selector/DropdownSelector.tsx index 277c7e0c..7b2c0a62 100644 --- a/src/components/Selector/DropdownSelector.tsx +++ b/src/components/Selector/DropdownSelector.tsx @@ -1,53 +1,36 @@ -import { Button, Dropdown } from 'react-daisyui'; - -function ArrowIcon() { - return ( - - - - ); -} +import { Dropdown } from 'react-daisyui'; interface Props { items: T[]; onChange: (item: T) => void; value?: T; + children: JSX.Element; } function DropdownSelector(props: Props) { - const { items, onChange, value } = props; - + const { items, onChange, children } = props; return ( -
    -
    - - - - - - {items.map((item) => ( - onChange(item)}> - {item.displayName} - - ))} - - -
    +
    +
    + {children} + + {items.map((item) => ( + { + const elem = document.activeElement; + if (elem && elem instanceof HTMLElement) { + elem?.blur(); + } + onChange(item); + }} + > + {item.displayName} + + ))} +
    +
    ); } diff --git a/src/components/Selector/VaultSelector.tsx b/src/components/Selector/VaultSelector.tsx index 5103cf7c..dfb5c40e 100644 --- a/src/components/Selector/VaultSelector.tsx +++ b/src/components/Selector/VaultSelector.tsx @@ -15,20 +15,26 @@ interface VaultSelectorProps { function VaultSelector(props: VaultSelectorProps): JSX.Element { const { vaults, selectedVault, showMaxTokensFor, onChange } = props; return ( - +
    - + {vaults.map((vault) => ( onChange(vault)} + onClick={() => { + const elem = document.activeElement; + if (elem && elem instanceof HTMLElement) { + elem.blur(); + } + onChange(vault); + }} className="w-full rounded-md" > @@ -45,7 +51,7 @@ function VaultSelector(props: VaultSelectorProps): JSX.Element { ))} - +
    ); } diff --git a/src/components/Wallet/NovaWallet/index.tsx b/src/components/Wallet/NovaWallet/index.tsx index 1eaabefe..e30eed0c 100644 --- a/src/components/Wallet/NovaWallet/index.tsx +++ b/src/components/Wallet/NovaWallet/index.tsx @@ -21,7 +21,7 @@ const NovaWallet = ({ setWalletAccount }: NovaWalletProps) => { const [selectedAccount, setSelectedAccount] = useState(); const onClick = useCallback(async () => { - const allInjected = await web3Enable('Pendulum Chain Portal'); + const _ = await web3Enable('Pendulum Chain Portal'); const allAccounts = await web3Accounts(); setAccounts( allAccounts @@ -63,7 +63,7 @@ const NovaWallet = ({ setWalletAccount }: NovaWalletProps) => { */ getAccounts: () => Promise.resolve([]), // Unused subscribeAccounts: () => undefined, // Unused - transformError: (err: any) => err, // Unused + transformError: (err: Error) => err, // Unused }, }; } @@ -75,15 +75,16 @@ const NovaWallet = ({ setWalletAccount }: NovaWalletProps) => { }) .catch((error) => console.error(error)); } - }, [selectedAccount]); + }, [selectedAccount, setWalletAccount]); return (

    Select your Nova account

    - {accounts.map((a) => ( + {accounts.map((a, i) => ( - -
    -
    - Send {totalAmount} {asset?.getCode()} -
    -
    - {asset && asset.getIssuer() && ( - <> - issued by - - )} -
    -
    With the text memo
    - {issueRequest && } -
    In a single transaction to
    - -
    Within {issueRequest && }
    -
    - -
    - {asset?.getAssetType() !== 'native' && ( -
    - Warning: Make sure that the {asset?.code} you are sending are issued by the correct issuer. -
    - )} -
    -
    - Note: If you have already made the payment, please wait for a few minutes for it to be confirmed. -
    -
    - - - - - - ); -} - -interface IssueFormInputs { - amount: string; -} - -interface IssueProps { - network: string; - wrappedCurrencySuffix: string; - nativeCurrency: string; -} - -function Issue(props: IssueProps): JSX.Element { - const { network, wrappedCurrencySuffix, nativeCurrency } = props; - - const [selectedVault, setSelectedVault] = useState(); - const [selectedAsset, setSelectedAsset] = useState(); - const [manualVaultSelection, setManualVaultSelection] = useState(false); - const [confirmationDialogVisible, setConfirmationDialogVisible] = useState(false); - const [submissionPending, setSubmissionPending] = useState(false); - const [submittedIssueRequest, setSubmittedIssueRequest] = useState(undefined); - const [vaults, setExtendedVaults] = useState(); - - const { createIssueRequestExtrinsic, getIssueRequest } = useIssuePallet(); - const { getVaults, getVaultsWithIssuableTokens } = useVaultRegistryPallet(); - const { walletAccount, dAppName } = useGlobalState(); - - const { api } = useNodeInfoState().state; - - const { control, handleSubmit, watch } = useForm({ - defaultValues: { - amount: '0', - }, - }); - - // We watch the amount because we need to re-render the FeeBox constantly - const amount = watch('amount'); - - useEffect(() => { - const combinedVaults: ExtendedRegistryVault[] = []; - getVaultsWithIssuableTokens().then((vaultsWithIssuableTokens) => { - getVaults().forEach((vaultFromRegistry) => { - const found = vaultsWithIssuableTokens?.find(([id, _]) => id.eq(vaultFromRegistry.id)); - const extended: ExtendedRegistryVault = vaultFromRegistry; - extended.issuableTokens = found ? found[1] : undefined; - combinedVaults.push(extended); - }); - setExtendedVaults(combinedVaults); - }); - }, [getVaults, setExtendedVaults, getVaultsWithIssuableTokens]); - - // The amount represented in the units of the native currency (as integer) - const amountNative = useMemo(() => { - return amount ? decimalToStellarNative(amount) : Big(0); - }, [amount]); - - const wrappedAssets = useMemo(() => { - if (!vaults) return; - const assets = vaults - .map((vault) => { - const currency = vault.id.currencies.wrapped; - return convertCurrencyToStellarAsset(currency); - }) - .filter((asset): asset is Asset => { - return asset != null; - }); - // Deduplicate assets - return _.uniqBy(assets, (asset: Asset) => stringifyStellarAsset(asset)); - }, [vaults]); - - const vaultsForCurrency = useMemo(() => { - if (!vaults) return; - - return vaults.filter((vault) => { - if (!selectedAsset) { - return false; - } - - const vaultCurrencyAsAsset = convertCurrencyToStellarAsset(vault.id.currencies.wrapped); - return vaultCurrencyAsAsset && vaultCurrencyAsAsset.equals(selectedAsset); - }); - }, [selectedAsset, vaults]); - - useEffect(() => { - if (vaultsForCurrency && wrappedAssets) { - if (!manualVaultSelection) { - // TODO build a better algorithm for automatically selecting a vault - if (vaultsForCurrency.length > 0) { - setSelectedVault(vaultsForCurrency[0]); - } - if (!selectedAsset && wrappedAssets.length > 0) { - setSelectedAsset(wrappedAssets[0]); - } - } else { - // If the user manually selected a vault, but it's not available anymore, we reset the selection - if (selectedVault && !vaultsForCurrency.includes(selectedVault) && vaultsForCurrency.length > 0) { - setSelectedVault(vaultsForCurrency[0]); - } - } - } - }, [manualVaultSelection, selectedAsset, selectedVault, vaultsForCurrency, wrappedAssets]); - - const requestIssueExtrinsic = useMemo(() => { - if (!selectedVault || !api) { - return undefined; - } - - return createIssueRequestExtrinsic(amountNative.toString(), selectedVault.id); - }, [amountNative, api, createIssueRequestExtrinsic, selectedVault]); - - const submitRequestIssueExtrinsic = useCallback(() => { - if (!requestIssueExtrinsic || !api || !selectedVault) { - return; - } - - if (!walletAccount) { - toast('No wallet account selected', { type: 'error' }); - return; - } - - setSubmissionPending(true); - - requestIssueExtrinsic - .signAndSend(walletAccount.address, { signer: walletAccount.signer as any }, (result) => { - const { status, events } = result; - - const errors = getErrors(events, api); - if (status.isInBlock) { - if (errors.length > 0) { - const errorMessage = `Transaction failed with errors: ${errors.join('\n')}`; - console.error(errorMessage); - toast(errorMessage, { type: 'error' }); - } - } else if (status.isFinalized) { - const requestIssueEvents = getEventBySectionAndMethod(events, 'issue', 'RequestIssue'); - - // We only expect one event but loop over all of them just in case - for (const requestIssueEvent of requestIssueEvents) { - // We do not have a proper type for this event, so we have to cast it to any - const issueId = (requestIssueEvent.data as any).issueId; - - getIssueRequest(issueId).then((issueRequest) => { - setSubmittedIssueRequest(issueRequest); - }); - } - - setSubmissionPending(false); - - if (errors.length === 0) { - setConfirmationDialogVisible(true); - } - } - }) - .catch((error) => { - console.error('Transaction submission failed', error); - toast('Transaction submission failed: ' + error.toString(), { - type: 'error', - }); - setSubmissionPending(false); - }); - }, [api, getIssueRequest, requestIssueExtrinsic, selectedVault, walletAccount]); - - return ( -
    - setConfirmationDialogVisible(false)} - /> -
    - -
    - { - if (!isCompatibleStellarAmount(value)) { - return 'Max 7 decimals'; - } - if (selectedVault?.issuableTokens) { - const bigValue = new Big(value); - const maxIssuable = nativeToDecimal(selectedVault?.issuableTokens?.toString()); - if (bigValue.gt(maxIssuable)) { - return 'Amount is higher than the vault can issue.'; - } - } - if (parseFloat(value) <= 0) { - return 'Amount should be a positive number.'; - } - }, - }} - name="amount" - render={({ field, fieldState: { error } }) => ( - { - if (e.code === 'Minus' || e.code === 'KeyE') { - e.preventDefault(); - } - }} - {...field} - /> - )} - /> - {wrappedAssets && ( - - )} -
    -
    - {`Max issuable: ${nativeToDecimal( - selectedVault?.issuableTokens?.toString() || 0, - ).toFixed(2)} - ${selectedAsset?.code}`} -
    -
    - ) => { - if (e.target instanceof HTMLInputElement) { - setManualVaultSelection(e.target.checked); - } - }} - checked={manualVaultSelection} - /> - Manually select vault -
    - {manualVaultSelection && vaultsForCurrency && ( - - )} - - {walletAccount ? ( - - ) : ( - - )} - -
    -
    - ); -} - -export default Issue; diff --git a/src/pages/bridge/Issue/ConfirmationDialog.tsx b/src/pages/bridge/Issue/ConfirmationDialog.tsx new file mode 100644 index 00000000..164d6b49 --- /dev/null +++ b/src/pages/bridge/Issue/ConfirmationDialog.tsx @@ -0,0 +1,122 @@ +import { VoidFn } from '@polkadot/api-base/types'; +import { DateTime } from 'luxon'; +import { useEffect, useMemo, useState } from 'react'; +import { Button, Divider, Modal } from 'react-daisyui'; +import { CopyableAddress, PublicKey } from '../../../components/PublicKey'; +import TransferCountdown from '../../../components/TransferCountdown'; +import { calculateDeadline, convertCurrencyToStellarAsset, deriveShortenedRequestId } from '../../../helpers/spacewalk'; +import { convertRawHexKeyToPublicKey } from '../../../helpers/stellar'; +import { RichIssueRequest } from '../../../hooks/spacewalk/issue'; +import { useSecurityPallet } from '../../../hooks/spacewalk/security'; +import { nativeStellarToDecimal } from '../../../shared/parseNumbers'; + +interface ConfirmationDialogProps { + issueRequest: RichIssueRequest | undefined; + onClose: () => void; + visible: boolean; +} + +export function ConfirmationDialog(props: ConfirmationDialogProps): JSX.Element { + const { issueRequest, visible, onClose } = props; + + const { subscribeActiveBlockNumber } = useSecurityPallet(); + const [activeBlockNumber, setActiveBlockNumber] = useState(0); + const [_, setRemainingDurationString] = useState(''); + + const totalAmount = useMemo( + () => + issueRequest + ? nativeStellarToDecimal(issueRequest.request.amount.add(issueRequest.request.fee).toString()).toString() + : '', + [issueRequest], + ); + + const asset = useMemo(() => { + const currency = issueRequest?.request.asset; + return currency && convertCurrencyToStellarAsset(currency); + }, [issueRequest?.request.asset]); + + const destination = useMemo(() => { + const rawDestinationAddress = issueRequest?.request.stellarAddress; + return rawDestinationAddress ? convertRawHexKeyToPublicKey(rawDestinationAddress.toHex()).publicKey() : ''; + }, [issueRequest?.request.stellarAddress]); + + const expectedStellarMemo = useMemo(() => { + if (!issueRequest) { + return ''; + } + // For issue requests we use a shorter identifier for the memo + return deriveShortenedRequestId(issueRequest.id); + }, [issueRequest]); + + useEffect(() => { + let unsub: VoidFn = () => undefined; + subscribeActiveBlockNumber((blockNumber) => { + setActiveBlockNumber(blockNumber); + }).then((u) => (unsub = u)); + + return unsub; + }, [subscribeActiveBlockNumber]); + + const deadline = useMemo(() => { + const openTime = issueRequest?.request.opentime.toNumber() || 0; + const period = issueRequest?.request.period.toNumber() || 0; + const end = calculateDeadline(activeBlockNumber, openTime, period, 12); + + return end; + }, [activeBlockNumber, issueRequest]); + + useEffect(() => { + const interval = setInterval(() => { + const newDeadlineString = deadline.diff(DateTime.now()).toFormat('hh:mm:ss'); + setRemainingDurationString(newDeadlineString); + }); + + return () => clearInterval(interval); + }, [deadline]); + + return ( + + Deposit + + +
    +
    + Send {totalAmount} {asset?.getCode()} +
    +
    + {asset && asset.getIssuer() && ( + <> + issued by + + )} +
    +
    With the text memo
    + {issueRequest && } +
    In a single transaction to
    + +
    Within {issueRequest && }
    +
    + +
    + {asset?.getAssetType() !== 'native' && ( +
    + Warning: Make sure that the {asset?.code} you are sending are issued by the correct issuer. +
    + )} +
    +
    + Note: If you have already made the payment, please wait for a few minutes for it to be confirmed. +
    +
    + + + + +
    + ); +} diff --git a/src/pages/bridge/Issue/Disclaimer.tsx b/src/pages/bridge/Issue/Disclaimer.tsx new file mode 100644 index 00000000..9e97d47b --- /dev/null +++ b/src/pages/bridge/Issue/Disclaimer.tsx @@ -0,0 +1,36 @@ +import { useCallback, useState } from 'react'; +import BellIcon from '../../../assets/bell'; + +type Props = { + text: string; +}; + +export default function Disclaimer({ text }: Props) { + const [collapseVisibility, setCollapseVisibility] = useState(''); + + const toggle = useCallback(() => { + if (collapseVisibility === '') { + setCollapseVisibility('collapse-open'); + } else { + setCollapseVisibility(''); + const elem = document.activeElement; + if (elem && elem instanceof HTMLElement) { + elem.blur(); + } + } + }, [collapseVisibility, setCollapseVisibility]); + + return ( +
    +
    + + Disclaimer +
    +

    {text}

    +
    + ); +} diff --git a/src/pages/bridge/Issue/IssueValidationSchema.ts b/src/pages/bridge/Issue/IssueValidationSchema.ts new file mode 100644 index 00000000..0a1607bc --- /dev/null +++ b/src/pages/bridge/Issue/IssueValidationSchema.ts @@ -0,0 +1,14 @@ +import * as Yup from 'yup'; +import { IssueFormValues } from '.'; +import { transformNumber } from '../../../helpers/yup'; + +export function getIssueValidationSchema(maxIssuable: number) { + return Yup.object().shape({ + amount: Yup.number() + .typeError('Value is invalid.') + .transform(transformNumber) + .positive('You need to enter a positive number.') + .required('This field is required.') + .max(maxIssuable, 'The vault cannot issue that amount of the selected asset.'), + }); +} diff --git a/src/pages/bridge/Issue/SettingsDialog.tsx b/src/pages/bridge/Issue/SettingsDialog.tsx new file mode 100644 index 00000000..799ea594 --- /dev/null +++ b/src/pages/bridge/Issue/SettingsDialog.tsx @@ -0,0 +1,57 @@ +import { Button, Checkbox, Modal } from 'react-daisyui'; +import { CloseButton } from '../../../components/CloseButton'; +import VaultSelector from '../../../components/Selector/VaultSelector'; +import useBridgeSettings from '../../../hooks/spacewalk/useBridgeSettings'; + +interface Props { + onClose?: () => void; + visible?: boolean; +} + +export function SettingsDialog({ visible, onClose }: Props) { + const { manualVaultSelection, vaultsForCurrency, setManualVaultSelection, selectedVault, setSelectedVault } = + useBridgeSettings(); + return ( + + Select Vault + + +
    +
    + ) => { + if (e.target instanceof HTMLInputElement) { + setManualVaultSelection(e.target.checked); + } + }} + className="checkbox rounded" + checked={manualVaultSelection} + /> + Manually select vault +
    + {manualVaultSelection && vaultsForCurrency && ( +
    +
    Select Vault
    + +
    + )} +
    +
    + + + + +
    + ); +} + +export default SettingsDialog; diff --git a/src/pages/bridge/Issue/index.tsx b/src/pages/bridge/Issue/index.tsx new file mode 100644 index 00000000..9986d82e --- /dev/null +++ b/src/pages/bridge/Issue/index.tsx @@ -0,0 +1,178 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { yupResolver } from '@hookform/resolvers/yup'; +import Big from 'big.js'; +import { useCallback, useMemo, useState } from 'preact/hooks'; +import { Button } from 'react-daisyui'; +import { useForm } from 'react-hook-form'; +import { toast } from 'react-toastify'; +import { useGlobalState } from '../../../GlobalStateProvider'; +import { useNodeInfoState } from '../../../NodeInfoProvider'; +import From from '../../../components/Form/From'; +import Validation from '../../../components/Form/Validation'; +import OpenWallet from '../../../components/Wallet'; +import { getErrors, getEventBySectionAndMethod } from '../../../helpers/substrate'; +import { RichIssueRequest, useIssuePallet } from '../../../hooks/spacewalk/issue'; +import useBridgeSettings from '../../../hooks/spacewalk/useBridgeSettings'; +import { decimalToStellarNative, nativeToDecimal } from '../../../shared/parseNumbers'; +import { FeeBox } from '../FeeBox'; +import { ConfirmationDialog } from './ConfirmationDialog'; +import Disclaimer from './Disclaimer'; +import { getIssueValidationSchema } from './IssueValidationSchema'; + +const disclaimerText = + '1. Sed ut perspiciatis unde omnis iste natus error sit voluptatem\n2. accusantium doloremque laudantium, totam rem aperiam eaque \n3. quae ab illo inventore veritatis et quasi architecto beatae vitae dicta\n4. explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspe'; + +interface IssueProps { + network: string; + wrappedCurrencySuffix: string; + nativeCurrency: string; +} + +export type IssueFormValues = { + amount: number; + to: number; +}; + +function Issue(props: IssueProps): JSX.Element { + const { network, wrappedCurrencySuffix, nativeCurrency } = props; + + const [confirmationDialogVisible, setConfirmationDialogVisible] = useState(false); + const [submissionPending, setSubmissionPending] = useState(false); + const [submittedIssueRequest, setSubmittedIssueRequest] = useState(undefined); + + const { createIssueRequestExtrinsic, getIssueRequest } = useIssuePallet(); + const { walletAccount, dAppName } = useGlobalState(); + const { api } = useNodeInfoState().state; + const { selectedVault, selectedAsset, setSelectedAsset, wrappedAssets } = useBridgeSettings(); + + const maxIssuable = nativeToDecimal(selectedVault?.issuableTokens).toNumber(); + + const { handleSubmit, watch, register, formState, setValue } = useForm({ + resolver: yupResolver(getIssueValidationSchema(maxIssuable)), + }); + + // We watch the amount because we need to re-render the FeeBox constantly + const amount = watch('amount'); + + // The amount represented in the units of the native currency (as integer) + const amountNative = useMemo(() => { + return amount ? decimalToStellarNative(amount) : Big(0); + }, [amount]); + + const requestIssueExtrinsic = useMemo(() => { + if (!selectedVault || !api) { + return undefined; + } + + return createIssueRequestExtrinsic(amountNative.toString(), selectedVault.id); + }, [amountNative, api, createIssueRequestExtrinsic, selectedVault]); + + const submitRequestIssueExtrinsic = useCallback( + (values: IssueFormValues) => { + if (!requestIssueExtrinsic || !api || !selectedVault) { + return; + } + + if (!walletAccount) { + toast('No wallet account selected', { type: 'error' }); + return; + } + + setSubmissionPending(true); + + requestIssueExtrinsic + .signAndSend(walletAccount.address, { signer: walletAccount.signer as any }, (result) => { + const { status, events } = result; + + const errors = getErrors(events, api); + if (status.isInBlock) { + if (errors.length > 0) { + const errorMessage = `Transaction failed with errors: ${errors.join('\n')}`; + console.error(errorMessage); + toast(errorMessage, { type: 'error' }); + } + } else if (status.isFinalized) { + const requestIssueEvents = getEventBySectionAndMethod(events, 'issue', 'RequestIssue'); + + // We only expect one event but loop over all of them just in case + for (const requestIssueEvent of requestIssueEvents) { + // We do not have a proper type for this event, so we have to cast it to any + const issueId = (requestIssueEvent.data as any).issueId; + + getIssueRequest(issueId).then((issueRequest) => { + setSubmittedIssueRequest(issueRequest); + }); + } + + setSubmissionPending(false); + + if (errors.length === 0) { + setConfirmationDialogVisible(true); + } + } + }) + .catch((error) => { + console.error('Transaction submission failed', error); + toast('Transaction submission failed: ' + error.toString(), { + type: 'error', + }); + setSubmissionPending(false); + }); + }, + [api, getIssueRequest, requestIssueExtrinsic, selectedVault, walletAccount], + ); + + return ( +
    + setConfirmationDialogVisible(false)} + /> +
    +
    {})}> + setValue('amount', n)} + assets={wrappedAssets} + setSelectedAsset={setSelectedAsset} + selectedAsset={selectedAsset} + network="Stellar" + error={formState.errors.amount?.message?.toString()} + /> + + + + {walletAccount ? ( + + ) : ( + + )} + + +
    +
    + ); +} + +export default Issue; diff --git a/src/pages/bridge/Redeem.tsx b/src/pages/bridge/Redeem.tsx deleted file mode 100644 index 6a7ccd58..00000000 --- a/src/pages/bridge/Redeem.tsx +++ /dev/null @@ -1,451 +0,0 @@ -import { SubmittableExtrinsic } from '@polkadot/api/promise/types'; -import Big from 'big.js'; -import _ from 'lodash'; -import { useCallback, useEffect, useMemo, useState } from 'preact/hooks'; -import { Button, Checkbox, Modal } from 'react-daisyui'; -import { Controller, useForm } from 'react-hook-form'; -import { toast } from 'react-toastify'; -import { Asset } from 'stellar-sdk'; -import { useGlobalState } from '../../GlobalStateProvider'; -import { useNodeInfoState } from '../../NodeInfoProvider'; -import LabelledInputField from '../../components/LabelledInputField'; -import { CopyableAddress, PublicKey } from '../../components/PublicKey'; -import { AssetSelector, VaultSelector } from '../../components/Selector'; -import OpenWallet from '../../components/Wallet'; -import { convertCurrencyToStellarAsset } from '../../helpers/spacewalk'; -import { - StellarPublicKeyPattern, - convertRawHexKeyToPublicKey, - isCompatibleStellarAmount, - isPublicKey, - stringifyStellarAsset, -} from '../../helpers/stellar'; -import { getErrors, getEventBySectionAndMethod } from '../../helpers/substrate'; -import { useFeePallet } from '../../hooks/spacewalk/fee'; -import { RichRedeemRequest, useRedeemPallet } from '../../hooks/spacewalk/redeem'; -import { ExtendedRegistryVault, useVaultRegistryPallet } from '../../hooks/spacewalk/vaultRegistry'; -import { decimalToStellarNative, nativeStellarToDecimal, nativeToDecimal } from '../../shared/parseNumbers'; - -interface FeeBoxProps { - bridgedAsset?: Asset; - // The amount of the bridged asset denoted in the smallest unit of the asset - amountNative: Big; - extrinsic?: SubmittableExtrinsic; - network: string; - nativeCurrency: string; - wrappedCurrencySuffix?: string; -} - -function FeeBox(props: FeeBoxProps): JSX.Element { - const { bridgedAsset, extrinsic, nativeCurrency, wrappedCurrencySuffix, network } = props; - const amount = props.amountNative; - - const wrappedCurrencyName = bridgedAsset ? (wrappedCurrencySuffix || '') + bridgedAsset.getCode() : ''; - - const { getFees, getTransactionFee } = useFeePallet(); - const fees = getFees(); - - const [transactionFee, setTransactionFee] = useState(Big(0)); - - useEffect(() => { - if (!extrinsic) { - return; - } - - getTransactionFee(extrinsic).then((fee) => { - setTransactionFee(nativeToDecimal(fee)); - }); - }, [extrinsic, getTransactionFee, setTransactionFee]); - - const bridgeFee = useMemo(() => { - return nativeStellarToDecimal(amount.mul(fees.redeemFee)); - }, [amount, fees]); - - const totalAmount = useMemo(() => { - if (amount.cmp(0) === 0) { - return 0; - } - - return nativeStellarToDecimal(amount).sub(bridgeFee); - }, [amount, bridgeFee]); - - return ( -
    -
    - To {network} - - {totalAmount.toString()} {wrappedCurrencyName} - -
    -
    - Bridge Fee - - {bridgeFee.toString()} {bridgedAsset?.getCode()} - -
    -
    - Transaction Fee - - {transactionFee.toFixed(12)} {nativeCurrency} - -
    -
    - ); -} - -interface ConfirmationDialogProps { - redeemRequest: RichRedeemRequest | undefined; - onClose: () => void; - visible: boolean; -} - -function ConfirmationDialog(props: ConfirmationDialogProps): JSX.Element { - const { redeemRequest, visible, onClose } = props; - - const totalAmount = redeemRequest ? nativeStellarToDecimal(redeemRequest.request.amount.toString()).toString() : ''; - const currency = redeemRequest?.request.asset; - const asset = currency && convertCurrencyToStellarAsset(currency); - - const destination = useMemo(() => { - const rawDestinationAddress = redeemRequest?.request.stellarAddress; - return rawDestinationAddress ? convertRawHexKeyToPublicKey(rawDestinationAddress.toHex()).publicKey() : ''; - }, [redeemRequest?.request.stellarAddress]); - - return ( - - Back to Stellar - - -
    -
    - You will receive {totalAmount} {asset?.getCode()} -
    - {asset && asset.getIssuer() && ( - <> - issued by - - )} -
    Your request is being processed
    -
    -
    -
    - Stellar destination address - -
    -
    - We will inform you when the PEN payment is executed. This typically takes only a few minutes but may - sometimes take up to 6 hours. -
    -
    -
    - - - - -
    - ); -} - -interface RedeemFormInputs { - amount: string; - stellarAddress: string; -} - -interface RedeemProps { - network: string; - wrappedCurrencySuffix: string; - nativeCurrency: string; -} - -function Redeem(props: RedeemProps): JSX.Element { - const [selectedVault, setSelectedVault] = useState(); - const [selectedAsset, setSelectedAsset] = useState(); - const [confirmationDialogVisible, setConfirmationDialogVisible] = useState(false); - const [submissionPending, setSubmissionPending] = useState(false); - const [submittedRedeemRequest, setSubmittedRedeemRequest] = useState(undefined); - const [manualVaultSelection, setManualVaultSelection] = useState(false); - const [vaults, setExtendedVaults] = useState(); - - const { createRedeemRequestExtrinsic, getRedeemRequest } = useRedeemPallet(); - const { getVaults, getVaultsWithRedeemableTokens } = useVaultRegistryPallet(); - const { walletAccount, dAppName } = useGlobalState(); - const { api } = useNodeInfoState().state; - - const { control, handleSubmit, watch } = useForm({ - defaultValues: { - amount: '0', - stellarAddress: '', - }, - }); - - const { wrappedCurrencySuffix, nativeCurrency } = props; - - // We watch the amount because we need to re-render the FeeBox constantly - const amount = watch('amount'); - const stellarAddress = watch('stellarAddress'); - - useEffect(() => { - const combinedVaults: ExtendedRegistryVault[] = []; - getVaultsWithRedeemableTokens().then((vaultsWithRedeemableTokens) => { - getVaults().forEach((vaultFromRegistry) => { - const found = vaultsWithRedeemableTokens?.find(([id, _]) => id.eq(vaultFromRegistry.id)); - const extended: ExtendedRegistryVault = vaultFromRegistry; - extended.redeemableTokens = found ? found[1] : undefined; - combinedVaults.push(extended); - }); - setExtendedVaults(combinedVaults); - }); - }, [getVaults, setExtendedVaults, getVaultsWithRedeemableTokens]); - - // The amount represented in the units of the native currency (as integer) - const amountNative = useMemo(() => { - return amount ? decimalToStellarNative(amount) : Big(0); - }, [amount]); - - const wrappedAssets = useMemo(() => { - if (!vaults) return; - - const assets = vaults - .map((vault) => { - const currency = vault.id.currencies.wrapped; - return convertCurrencyToStellarAsset(currency); - }) - .filter((asset): asset is Asset => { - return asset != null; - }); - // Deduplicate assets - return _.uniqBy(assets, (asset: Asset) => stringifyStellarAsset(asset)); - }, [vaults]); - - const vaultsForCurrency = useMemo(() => { - if (!vaults) return; - - return vaults.filter((vault) => { - if (!selectedAsset) { - return false; - } - - const vaultCurrencyAsAsset = convertCurrencyToStellarAsset(vault.id.currencies.wrapped); - return vaultCurrencyAsAsset && vaultCurrencyAsAsset.equals(selectedAsset); - }); - }, [selectedAsset, vaults]); - - useEffect(() => { - if (vaultsForCurrency && wrappedAssets) { - if (!manualVaultSelection) { - // TODO build a better algorithm for automatically selecting a vault - if (vaultsForCurrency.length > 0) { - setSelectedVault(vaultsForCurrency[0]); - } - if (!selectedAsset && wrappedAssets.length > 0) { - setSelectedAsset(wrappedAssets[0]); - } - } else { - // If the user manually selected a vault, but it's not available anymore, we reset the selection - if (selectedVault && vaultsForCurrency.length > 0 && !vaultsForCurrency.includes(selectedVault)) { - setSelectedVault(vaultsForCurrency[0]); - } - } - } - }, [manualVaultSelection, selectedAsset, selectedVault, vaultsForCurrency, wrappedAssets]); - - const requestRedeemExtrinsic = useMemo(() => { - if (!selectedVault || !api || !stellarAddress || !isPublicKey(stellarAddress)) { - return undefined; - } - - return createRedeemRequestExtrinsic(amountNative.toString(), stellarAddress, selectedVault.id); - }, [amountNative, api, createRedeemRequestExtrinsic, selectedVault, stellarAddress]); - - const submitRequestRedeemExtrinsic = useCallback(() => { - if (!requestRedeemExtrinsic || !api || !selectedVault) { - return; - } - - if (!walletAccount) { - return; - } - - setSubmissionPending(true); - - requestRedeemExtrinsic - // eslint-disable-next-line @typescript-eslint/no-explicit-any - .signAndSend(walletAccount.address, { signer: walletAccount.signer as any }, (result) => { - const { status, events } = result; - - const errors = getErrors(events, api); - if (status.isInBlock) { - if (errors.length > 0) { - const errorMessage = `Transaction failed with errors: ${errors.join('\n')}`; - console.error(errorMessage); - toast(errorMessage, { type: 'error' }); - } - } else if (status.isFinalized) { - const requestRedeemEvents = getEventBySectionAndMethod(events, 'redeem', 'RequestRedeem'); - - // We only expect one event but loop over all of them just in case - for (const requestRedeemEvent of requestRedeemEvents) { - // We do not have a proper type for this event, so we have to cast it to any - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const redeemId = (requestRedeemEvent.data as any).redeemId; - - getRedeemRequest(redeemId).then((redeemRequest) => { - setSubmittedRedeemRequest(redeemRequest); - }); - } - - setSubmissionPending(false); - - if (errors.length === 0) { - setConfirmationDialogVisible(true); - } - } - }) - .catch((error) => { - console.error('Transaction submission failed', error); - toast('Transaction submission failed:' + error.toString(), { - type: 'error', - }); - setSubmissionPending(false); - }); - }, [api, getRedeemRequest, requestRedeemExtrinsic, selectedVault, walletAccount]); - - return ( -
    - setConfirmationDialogVisible(false)} - /> -
    -
    -
    - { - if (!isCompatibleStellarAmount(value)) { - return 'Max 7 decimals'; - } - if (selectedVault?.issuableTokens) { - const bigValue = new Big(value); - const maxIssuable = nativeToDecimal(selectedVault?.issuableTokens?.toString()); - if (bigValue.gt(maxIssuable)) { - return 'Amount is higher than the vault can issue.'; - } - } - if (parseFloat(value) <= 0) { - return 'Amount should be a positive number.'; - } - }, - }} - name="amount" - render={({ field, fieldState: { error } }) => ( - { - if (e.code === 'Minus' || e.code === 'KeyE') { - e.preventDefault(); - } - }} - {...field} - /> - )} - /> -
    - {wrappedAssets && ( - - )} -
    -
    - {`Max redeemable: ${nativeToDecimal( - selectedVault?.redeemableTokens?.toString() || 0, - ).toFixed(2)} - ${selectedAsset?.code}`} -
    - -
    - ) => { - if (e.target instanceof HTMLInputElement) { - setManualVaultSelection(e.target.checked); - } - }} - checked={manualVaultSelection} - /> - Manually select vault -
    - {manualVaultSelection && vaultsForCurrency && ( - - )} - ( - - )} - name="stellarAddress" - /> - - {walletAccount ? ( - - ) : ( - - )} - -
    -
    - ); -} - -export default Redeem; diff --git a/src/pages/bridge/Redeem/ConfirmationDialog.tsx b/src/pages/bridge/Redeem/ConfirmationDialog.tsx new file mode 100644 index 00000000..eb4a9365 --- /dev/null +++ b/src/pages/bridge/Redeem/ConfirmationDialog.tsx @@ -0,0 +1,64 @@ +import { useMemo } from 'react'; +import { Button, Modal } from 'react-daisyui'; +import { CopyableAddress, PublicKey } from '../../../components/PublicKey'; +import { convertCurrencyToStellarAsset } from '../../../helpers/spacewalk'; +import { convertRawHexKeyToPublicKey } from '../../../helpers/stellar'; +import { RichRedeemRequest } from '../../../hooks/spacewalk/redeem'; +import { nativeStellarToDecimal } from '../../../shared/parseNumbers'; + +interface ConfirmationDialogProps { + redeemRequest: RichRedeemRequest | undefined; + onClose: () => void; + visible: boolean; +} + +export function ConfirmationDialog(props: ConfirmationDialogProps): JSX.Element { + const { redeemRequest, visible, onClose } = props; + + const totalAmount = redeemRequest ? nativeStellarToDecimal(redeemRequest.request.amount.toString()).toString() : ''; + const currency = redeemRequest?.request.asset; + const asset = currency && convertCurrencyToStellarAsset(currency); + + const destination = useMemo(() => { + const rawDestinationAddress = redeemRequest?.request.stellarAddress; + return rawDestinationAddress ? convertRawHexKeyToPublicKey(rawDestinationAddress.toHex()).publicKey() : ''; + }, [redeemRequest?.request.stellarAddress]); + + return ( + + Back to Stellar + + +
    +
    + You will receive {totalAmount} {asset?.getCode()} +
    + {asset && asset.getIssuer() && ( + <> + issued by + + )} +
    Your request is being processed
    +
    +
    +
    + Stellar destination address + +
    +
    + We will inform you when the PEN payment is executed. This typically takes only a few minutes but may + sometimes take up to 6 hours. +
    +
    +
    + + + + +
    + ); +} diff --git a/src/pages/bridge/Redeem/RedeemValidationSchema.ts b/src/pages/bridge/Redeem/RedeemValidationSchema.ts new file mode 100644 index 00000000..f006d931 --- /dev/null +++ b/src/pages/bridge/Redeem/RedeemValidationSchema.ts @@ -0,0 +1,18 @@ +import * as Yup from 'yup'; +import { RedeemFormValues } from '.'; +import { StellarPublicKeyPattern } from '../../../helpers/stellar'; +import { transformNumber } from '../../../helpers/yup'; + +export function getRedeemValidationSchema(maxRedeemable: number, balance: number) { + return Yup.object().shape({ + amount: Yup.number() + .typeError('Value is invalid.') + .transform(transformNumber) + .positive('You need to enter a positive number.') + .max(maxRedeemable, "The vault doesn't have enough redeemable tokens.") + .max(balance, "You don't have enough balance."), + to: Yup.string() + .required('This field is required.') + .matches(StellarPublicKeyPattern, 'The supplied address is not a valid Stellar address.'), + }); +} diff --git a/src/pages/bridge/Redeem/index.tsx b/src/pages/bridge/Redeem/index.tsx new file mode 100644 index 00000000..49e922d4 --- /dev/null +++ b/src/pages/bridge/Redeem/index.tsx @@ -0,0 +1,192 @@ +import { yupResolver } from '@hookform/resolvers/yup'; +import Big from 'big.js'; +import { useCallback, useMemo, useState } from 'preact/hooks'; +import { useEffect } from 'react'; +import { Button } from 'react-daisyui'; +import { useForm } from 'react-hook-form'; +import { toast } from 'react-toastify'; +import { useGlobalState } from '../../../GlobalStateProvider'; +import { useNodeInfoState } from '../../../NodeInfoProvider'; +import From from '../../../components/Form/From'; +import LabelledInputField from '../../../components/LabelledInputField'; +import OpenWallet from '../../../components/Wallet'; +import { assetDisplayName } from '../../../helpers/spacewalk'; +import { isPublicKey } from '../../../helpers/stellar'; +import { getErrors, getEventBySectionAndMethod } from '../../../helpers/substrate'; +import { RichRedeemRequest, useRedeemPallet } from '../../../hooks/spacewalk/redeem'; +import useBridgeSettings from '../../../hooks/spacewalk/useBridgeSettings'; +import useBalances from '../../../hooks/useBalances'; +import { decimalToStellarNative, nativeToDecimal } from '../../../shared/parseNumbers'; +import { FeeBox } from '../FeeBox'; +import { ConfirmationDialog } from './ConfirmationDialog'; +import { getRedeemValidationSchema } from './RedeemValidationSchema'; + +export type RedeemFormValues = { + amount: number; + to: string; +}; + +interface RedeemProps { + network: string; + wrappedCurrencySuffix: string; + nativeCurrency: string; +} + +function Redeem(props: RedeemProps): JSX.Element { + const [confirmationDialogVisible, setConfirmationDialogVisible] = useState(false); + const [submissionPending, setSubmissionPending] = useState(false); + const [submittedRedeemRequest, setSubmittedRedeemRequest] = useState(undefined); + const [selectedAssetsBalance, setSelectedAssetsBalance] = useState(0); + + const { createRedeemRequestExtrinsic, getRedeemRequest } = useRedeemPallet(); + const { selectedVault, selectedAsset, wrappedAssets, setSelectedAsset } = useBridgeSettings(); + const { walletAccount, dAppName } = useGlobalState(); + const { api } = useNodeInfoState().state; + const { balances } = useBalances(); + const { wrappedCurrencySuffix, nativeCurrency, network } = props; + + useEffect(() => { + const selectedAssetName = assetDisplayName(selectedAsset, '', wrappedCurrencySuffix); + const { amount } = balances?.find(({ token }) => token === selectedAssetName) || { amount: 0 }; + setSelectedAssetsBalance(amount); + }, [balances, selectedAsset, wrappedCurrencySuffix, selectedAssetsBalance]); + + const maxRedeemable = nativeToDecimal(selectedVault?.redeemableTokens).toNumber(); + + const { handleSubmit, watch, register, formState, setValue } = useForm({ + defaultValues: {}, + resolver: yupResolver(getRedeemValidationSchema(maxRedeemable, selectedAssetsBalance)), + }); + + // We watch the amount because we need to re-render the FeeBox constantly + const amount = watch('amount'); + const stellarAddress = watch('to'); + + // The amount represented in the units of the native currency (as integer) + const amountNative = useMemo(() => { + return amount ? decimalToStellarNative(amount) : Big(0); + }, [amount]); + + const requestRedeemExtrinsic = useMemo(() => { + if (!selectedVault || !api || !stellarAddress || !isPublicKey(stellarAddress)) { + return undefined; + } + + return createRedeemRequestExtrinsic(amountNative.toString(), stellarAddress, selectedVault.id); + }, [amountNative, api, createRedeemRequestExtrinsic, selectedVault, stellarAddress]); + + const submitRequestRedeemExtrinsic = useCallback(() => { + if (!requestRedeemExtrinsic || !api || !selectedVault) { + return; + } + + if (!walletAccount) { + return; + } + + setSubmissionPending(true); + + requestRedeemExtrinsic + // eslint-disable-next-line @typescript-eslint/no-explicit-any + .signAndSend(walletAccount.address, { signer: walletAccount.signer as any }, (result) => { + const { status, events } = result; + + const errors = getErrors(events, api); + if (status.isInBlock) { + if (errors.length > 0) { + const errorMessage = `Transaction failed with errors: ${errors.join('\n')}`; + console.error(errorMessage); + toast(errorMessage, { type: 'error' }); + } + } else if (status.isFinalized) { + const requestRedeemEvents = getEventBySectionAndMethod(events, 'redeem', 'RequestRedeem'); + + // We only expect one event but loop over all of them just in case + for (const requestRedeemEvent of requestRedeemEvents) { + // We do not have a proper type for this event, so we have to cast it to any + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const redeemId = (requestRedeemEvent.data as any).redeemId; + + getRedeemRequest(redeemId).then((redeemRequest) => { + setSubmittedRedeemRequest(redeemRequest); + }); + } + + setSubmissionPending(false); + + if (errors.length === 0) { + setConfirmationDialogVisible(true); + } + } + }) + .catch((error) => { + console.error('Transaction submission failed', error); + toast('Transaction submission failed:' + error.toString(), { + type: 'error', + }); + setSubmissionPending(false); + }); + }, [api, getRedeemRequest, requestRedeemExtrinsic, selectedVault, walletAccount]); + + return ( +
    + setConfirmationDialogVisible(false)} + /> +
    +
    {})}> + setValue('amount', n)} + max={selectedAssetsBalance} + assets={wrappedAssets} + setSelectedAsset={setSelectedAsset} + selectedAsset={selectedAsset} + network={network} + assetSuffix={wrappedCurrencySuffix} + error={formState.errors.amount?.message} + /> + + + + {walletAccount ? ( + + ) : ( + + )} + +
    +
    + ); +} + +export default Redeem; diff --git a/src/pages/bridge/index.tsx b/src/pages/bridge/index.tsx index 1fb3c585..16133ce6 100644 --- a/src/pages/bridge/index.tsx +++ b/src/pages/bridge/index.tsx @@ -1,13 +1,24 @@ import { useMemo, useState } from 'preact/hooks'; -import { Card, Tabs } from 'react-daisyui'; +import { Button, Card, Tabs } from 'react-daisyui'; import { useNodeInfoState } from '../../NodeInfoProvider'; +import AmplitudeLogo from '../../assets/AmplitudeLogo'; +import PendulumLogo from '../../assets/PendulumLogo'; +import SettingsIcon from '../../assets/SettingsIcon'; +import StellarLogo from '../../assets/StellarLogo'; import { SpacewalkConstants } from '../../helpers/spacewalk'; import Issue from './Issue'; +import SettingsDialog from './Issue/SettingsDialog'; import Redeem from './Redeem'; import './styles.css'; +enum BridgeTabs { + Issue = 0, + Redeem = 1, +} + function Bridge(): JSX.Element | null { - const [tabValue, setTabValue] = useState(0); + const [tabValue, setTabValue] = useState(BridgeTabs.Issue); + const [settingsVisible, setSettingsVisible] = useState(false); const { chain } = useNodeInfoState().state; const nativeCurrency = chain === 'Amplitude' ? 'AMPE' : 'PEN'; const wrappedCurrencySuffix = SpacewalkConstants.WrappedCurrencySuffix; @@ -15,25 +26,32 @@ function Bridge(): JSX.Element | null { const Content = useMemo(() => { if (!chain) return; switch (tabValue) { - case 0: + case BridgeTabs.Issue: return ; - case 1: + case BridgeTabs.Redeem: return ; } }, [chain, nativeCurrency, tabValue, wrappedCurrencySuffix]); return chain ? (
    - -
    - - + setSettingsVisible(false)} /> + +
    + + + {chain === 'Pendulum' && } + {chain === 'Amplitude' && } To {chain} - + + Back To Stellar +
    {Content}
    diff --git a/src/pages/bridge/styles.css b/src/pages/bridge/styles.css index c37edf18..3ec3207c 100644 --- a/src/pages/bridge/styles.css +++ b/src/pages/bridge/styles.css @@ -80,11 +80,63 @@ fill: var(--table-text); } -.card.bridge-card { - background-color: rgba(255, 255, 255, 0.06); + +.bridge-card .tabs-boxed .tab-active:not(.tab-disabled):not([disabled]) > svg { + fill: #32253E; +} + +.bridge-card .tabs-boxed .tab-active:not(.tab-disabled):not([disabled]) { + color: #32253E; +} + +.bridge-card input[type='number'] { + outline: 0px; +} + +[data-theme='pendulum'] { + .bridge-card .tabs-boxed :not(.tab-active) > svg{ + fill: var(--gray-3, #828282); + } + + .bridge-card .tabs-boxed :not(.tab-active) { + color: var(--gray-3, #828282); + } + + .bridge-card .tabs-boxed .tab-active:not(.tab-disabled):not([disabled]) { + background-color: #f7f7f7; + } + + .bridge-card .disclaimer svg{ + fill: #32253E + } + + .bridge-card .settings svg { + stroke: #58667E; + } } -.bridge-card .tabs-boxed .tab-active:not(.tab-disabled):not([disabled]), -.bridge-card button.btn-primary { - color: #202020; +[data-theme='amplitude'] { + .bridge-card .tabs-boxed :not(.tab-active) > svg{ + fill: var(--primary); + } + + .bridge-card .tabs-boxed :not(.tab-active) { + color: #fff; + } + + .bridge-card .tabs-boxed .tab-active:not(.tab-disabled):not([disabled]) { + background-color: var(--primary); + } + + .bridge-card .disclaimer svg { + fill: #fff; + } + + .bridge-card input[type='number'] { + color: #fff; + } + + .bridge-card .settings svg { + stroke: #fff; + } } diff --git a/src/pages/dashboard/Portfolio.tsx b/src/pages/dashboard/Portfolio.tsx index da2e2700..bbd18966 100644 --- a/src/pages/dashboard/Portfolio.tsx +++ b/src/pages/dashboard/Portfolio.tsx @@ -1,108 +1,12 @@ -import { SpacewalkPrimitivesCurrencyId } from '@polkadot/types/lookup'; -import _ from 'lodash'; -import { useEffect, useMemo, useState } from 'react'; +import { useMemo } from 'react'; import { useGlobalState } from '../../GlobalStateProvider'; -import { useNodeInfoState } from '../../NodeInfoProvider'; import Table, { SortingOrder } from '../../components/Table'; -import { getAddressForFormat } from '../../helpers/addressFormatter'; -import { addSuffix, currencyToString } from '../../helpers/spacewalk'; -import { useVaultRegistryPallet } from '../../hooks/spacewalk/vaultRegistry'; -import { usePriceFetcher } from '../../hooks/usePriceFetcher'; -import { nativeToDecimal } from '../../shared/parseNumbers'; -import { PortfolioAsset, amountColumn, priceColumn, tokenColumn, usdValueColumn } from './PortfolioColumns'; +import useBalances from '../../hooks/useBalances'; +import { amountColumn, priceColumn, tokenColumn, usdValueColumn } from './PortfolioColumns'; function Portfolio() { - const { walletAccount, tenantName, tenantRPC } = useGlobalState(); - const { - state: { api, ss58Format, tokenSymbol }, - } = useNodeInfoState(); - const { getVaults } = useVaultRegistryPallet(); - - const [accountTotalBalance, setAccountTotalBalance] = useState(0); - - const [data, setData] = useState(); - const { pricesCache } = usePriceFetcher(); - - const vaults = getVaults(); - - const spacewalkCurrencies = useMemo(() => { - const currencies: SpacewalkPrimitivesCurrencyId[] = []; - vaults.forEach((vault) => { - currencies.push(vault.id.currencies.wrapped); - currencies.push(vault.id.currencies.collateral); - }); - - // Deduplicate assets - return _.uniqBy(currencies, (currencyId: SpacewalkPrimitivesCurrencyId) => currencyId.toHex()); - }, [vaults]); - - useEffect(() => { - if (!walletAccount || !spacewalkCurrencies) return; - - async function fetchBridgedTokens(address: string, asset: SpacewalkPrimitivesCurrencyId) { - if (!api) return; - return api.query.tokens.accounts(address, asset); - } - - function getPortfolioAssetsFromSpacewalk(): Promise[] { - if (!walletAccount || !spacewalkCurrencies) return []; - - return spacewalkCurrencies.map(async (currencyId) => { - let token = currencyToString(currencyId, tenantName)?.split(':')[0]; - if (!token) return; - - token = currencyId.isStellar ? addSuffix(token) : token; - - const walletAddress = ss58Format - ? getAddressForFormat(walletAccount.address, ss58Format) - : walletAccount.address; - - const balance = await fetchBridgedTokens(walletAddress, currencyId); - const amount = nativeToDecimal(balance?.free || '0').toNumber(); - const price: number = (await pricesCache)[token]; - const usdValue = price * amount; - - return { - token, - price, - amount, - usdValue, - }; - }); - } - - async function getPortfolioAssetsNative() { - if (!walletAccount?.address || !tenantRPC) { - return; - } - const balance = (await api?.query.system.account(walletAccount.address))?.data; - - if (!tokenSymbol || !balance) return; - - const price: number = (await pricesCache)[tokenSymbol]; - const usdValue = price * nativeToDecimal(balance.free).toNumber(); - - return { - token: tokenSymbol, - price, - amount: nativeToDecimal(balance.free).toNumber(), - usdValue, - }; - } - - const allPortfolioAssets: Promise[] = getPortfolioAssetsFromSpacewalk().concat([ - getPortfolioAssetsNative(), - ]); - - Promise.all(allPortfolioAssets).then((data) => { - setData(data.filter((e) => e !== undefined) as PortfolioAsset[]); - }); - }, [spacewalkCurrencies, walletAccount, api, ss58Format, tenantName, tenantRPC, tokenSymbol, pricesCache]); - - useEffect(() => { - if (!data) return; - setAccountTotalBalance(data.map(({ usdValue }) => usdValue || 0).reduce((acc, val) => acc + val, 0)); - }, [data]); + const { walletAccount } = useGlobalState(); + const { balances, accountTotalBalance } = useBalances(); const columns = useMemo(() => { return [tokenColumn, priceColumn, amountColumn, usdValueColumn]; @@ -119,9 +23,9 @@ function Portfolio() { {walletAccount && (
Promise.resolve([]), // Unused subscribeAccounts: () => undefined, // Unused - transformError: (err: any) => err, // Unused + transformError: (err: Error) => err, // Unused }, }; }, diff --git a/src/shared/AssetIcons.tsx b/src/shared/AssetIcons.tsx new file mode 100644 index 00000000..a3de2b66 --- /dev/null +++ b/src/shared/AssetIcons.tsx @@ -0,0 +1,34 @@ +import AMPE from '../assets/coins/AMPE.png'; +import BRL from '../assets/coins/BRL.png'; +import DOT from '../assets/coins/DOT.png'; +import KSM from '../assets/coins/KSM.png'; +import PEN from '../assets/coins/PEN.png'; +import TZS from '../assets/coins/TZS.png'; +import USDC from '../assets/coins/USDC.png'; +import USDT from '../assets/coins/USDT.png'; +import XLM from '../assets/coins/XLM.png'; +import DefaultIcon from '../assets/coins/placeholder.png'; + +type IconMap = { + [key: string]: string; +}; + +const icons: IconMap = { + 'BRL.s': BRL, + 'TZS.s': TZS, + 'XLM.s': XLM, + 'USDC.s': USDC, + BRL, + TZS, + XLM, + USDC, + DOT, + KSM, + USDT, + PEN, + AMPE, +}; + +export function getIcon(token: string | undefined) { + return token && Object.keys(icons).includes(token) ? icons[token] : DefaultIcon; +} diff --git a/src/shared/parseNumbers.ts b/src/shared/parseNumbers.ts index 3bb5ee34..eec8e702 100644 --- a/src/shared/parseNumbers.ts +++ b/src/shared/parseNumbers.ts @@ -1,4 +1,4 @@ -import { u128 } from '@polkadot/types-codec'; +import { UInt, u128 } from '@polkadot/types-codec'; import BigNumber from 'big.js'; // These are the decimals used for the native currency on the Amplitude network @@ -46,8 +46,10 @@ export const fixedPointToDecimal = (value: BigNumber | number | string) => { return bigIntValue.div(divisor); }; -export const nativeToDecimal = (value: BigNumber | number | string | u128) => { - if (typeof value === 'string' || value instanceof u128) { +export const nativeToDecimal = (value?: BigNumber | number | string | u128 | UInt) => { + if (!value) return new BigNumber(0); + + if (typeof value === 'string' || value instanceof u128 || value instanceof UInt) { // Replace the unnecessary ',' with '' to prevent BigNumber from throwing an error value = new BigNumber(value.toString().replaceAll(',', '')); } diff --git a/tailwind.config.cjs b/tailwind.config.cjs index b55f79ed..ebd0e959 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -34,7 +34,8 @@ module.exports = { neutral: '#EFF2F5', 'base-100': '#F5F9FA', 'base-200': '#fff', - 'base-300': '#eff2f5', + 'base-300': '#F7F7F7', + 'base-400': '#E7E7E7', 'base-content': '#58667E', '--rounded-btn': '9px', '--btn-text-case': 'none', @@ -52,6 +53,7 @@ module.exports = { 'base-100': '#202020', 'base-200': '#1c1c1c', 'base-300': '#2c2c2c', + 'base-400': '#E7E7E7', 'base-content': '#fff', '--rounded-btn': '9px', '--btn-text-case': 'none', From c1b7bd8a79d31e41aaad1c316406bbed2fbb217b Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Wed, 18 Oct 2023 12:20:31 +0200 Subject: [PATCH 11/33] style: 223 update pendulum spacewalk transfers page design (#271) * extract base Form component * separate issue and redeem in folders and use new From input * extract feebox and dialog from issue * issue box restyling with collapsible boxes * fix collapsible styles * tweak asset selector to match designs * move coin icons to shared * mock disclaimer text * remove typo * add stellar logo for tab * fix pen/ampe logos and colors * fixes * settings dialog (wip) * add 'back to stellar' design * yarn lint fix * Add settings Dialog * improve from component * improve settings * Update src/components/Layout/links.tsx * rename hook * remove unused spacewalk app * fix tricky dropdown issue not closing on blur * improve settings dialog * improve collapsible behavior * make tabs slightly bigger * invert buttons order * remove minimum * extract useBalances hook * extract get asset display name * fix redeem validation and max tokens * make balance reload when balances hook is ready * apply new design table colors * include pagination & styles in Table component * fix general styling of Table, fix portfolio table --- src/components/Table/index.tsx | 32 ++++++------ src/components/Table/styles.css | 27 +++++++++++ src/pages/bridge/Issue/index.tsx | 1 - src/pages/bridge/Transfers.tsx | 11 +++-- src/pages/bridge/TransfersColumns.tsx | 25 ++-------- src/pages/bridge/styles.css | 67 +++++++------------------- src/pages/collators/CollatorsTable.tsx | 2 + src/pages/dashboard/Portfolio.tsx | 5 +- src/pages/dashboard/styles.css | 5 -- 9 files changed, 79 insertions(+), 96 deletions(-) create mode 100644 src/components/Table/styles.css diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx index 06f7f58f..263500db 100644 --- a/src/components/Table/index.tsx +++ b/src/components/Table/index.tsx @@ -13,6 +13,7 @@ import { repeat } from '../../helpers/general'; import Pagination from '../Pagination'; import { Skeleton } from '../Skeleton'; import { GlobalFilter } from './GlobalFilter'; +import './styles.css'; export enum SortingOrder { ASC = 'asc', @@ -47,6 +48,7 @@ export type TableProps = { evenRowsClassname?: string; /** Gives a className to odd rows (1,3,5,7,...), to help table rows readability. */ oddRowsClassname?: string; + title?: string | JSX.Element; }; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -63,6 +65,7 @@ const Table = ({ sortBy, evenRowsClassname, oddRowsClassname, + title, }: TableProps): JSX.Element | null => { const totalCount = data.length; @@ -104,11 +107,12 @@ const Table = ({ ) : null} -
-
+
+ {title &&
{title}
} +
{getHeaderGroups().map((headerGroup) => ( - + {headerGroup.headers.map((header) => (
({ className={`${header.column.getCanSort() ? ' cursor-pointer' : ''}`} onClick={header.column.getToggleSortingHandler()} > -
+
{flexRender(header.column.columnDef.header, header.getContext())} {header.column.getCanSort() ? ( -
+
{header.column.getIsSorted() === 'desc' ? ( ) : ( @@ -150,16 +154,16 @@ const Table = ({ })}
+

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 E0efUk(EtDd literal 0 HcmV?d00001 diff --git a/src/assets/coins/KSM.png b/src/assets/coins/KSM.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6a5d987a69377f24a75674fdc7f76264ed85b1 GIT binary patch literal 117090 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

- ); }; diff --git a/src/components/Table/styles.css b/src/components/Table/styles.css new file mode 100644 index 00000000..a3cc1b71 --- /dev/null +++ b/src/components/Table/styles.css @@ -0,0 +1,27 @@ +[data-theme='pendulum'] { + .odd-rows { + background-color: #F5F9FA; + } + + .table-border { + border-color: #DFE0EB; + } + + .table-header { + color: #9FA2B4; + } +} + +[data-theme='amplitude'] { + .odd-rows { + background-color: #2A2A2A; + } + + .table-border { + border-color: #434343; + } + + .table-header { + color: rgba(221, 221, 221, 0.87); + } +} \ No newline at end of file diff --git a/src/pages/bridge/Issue/index.tsx b/src/pages/bridge/Issue/index.tsx index 9986d82e..c2d01fc1 100644 --- a/src/pages/bridge/Issue/index.tsx +++ b/src/pages/bridge/Issue/index.tsx @@ -8,7 +8,6 @@ import { toast } from 'react-toastify'; import { useGlobalState } from '../../../GlobalStateProvider'; import { useNodeInfoState } from '../../../NodeInfoProvider'; import From from '../../../components/Form/From'; -import Validation from '../../../components/Form/Validation'; import OpenWallet from '../../../components/Wallet'; import { getErrors, getEventBySectionAndMethod } from '../../../helpers/substrate'; import { RichIssueRequest, useIssuePallet } from '../../../hooks/spacewalk/issue'; diff --git a/src/pages/bridge/Transfers.tsx b/src/pages/bridge/Transfers.tsx index 1707a09f..ca8d5e41 100644 --- a/src/pages/bridge/Transfers.tsx +++ b/src/pages/bridge/Transfers.tsx @@ -20,8 +20,7 @@ import { TransferType, amountColumn, assetColumn, - detailsColumnCreator, - statusColumn, + statusColumnCreator, transactionIdColumn, typeColumnCreator, updatedColumn, @@ -107,9 +106,9 @@ function Transfers(): JSX.Element { }, [activeBlockNumber, walletAccount, getIssueRequests, getRedeemRequests]); const columns = useMemo(() => { - const detailsColumn = detailsColumnCreator(setCurrentTransfer); + const statusColumn = statusColumnCreator(setCurrentTransfer); const typeColumn = typeColumnCreator(tenantName); - return [updatedColumn, amountColumn, assetColumn, transactionIdColumn, typeColumn, statusColumn, detailsColumn]; + return [updatedColumn, amountColumn, assetColumn, transactionIdColumn, typeColumn, statusColumn]; }, [tenantName, setCurrentTransfer]); return ( @@ -150,13 +149,15 @@ function Transfers(): JSX.Element { /> )} ); diff --git a/src/pages/bridge/TransfersColumns.tsx b/src/pages/bridge/TransfersColumns.tsx index 81f43fc9..e190707f 100644 --- a/src/pages/bridge/TransfersColumns.tsx +++ b/src/pages/bridge/TransfersColumns.tsx @@ -1,8 +1,6 @@ -import { DocumentMagnifyingGlassIcon } from '@heroicons/react/24/outline'; import { SpacewalkPrimitivesIssueIssueRequest, SpacewalkPrimitivesRedeemRedeemRequest } from '@polkadot/types/lookup'; import { ColumnDef } from '@tanstack/table-core'; import { DateTime } from 'luxon'; -import { Button } from 'react-daisyui'; import { CopyableAddress } from '../../components/PublicKey'; import { toTitle } from '../../helpers/string'; import { TenantName } from '../../models/Tenant'; @@ -60,31 +58,18 @@ export const typeColumnCreator = (tenantName: TenantName | undefined): ColumnDef accessorFn: (row) => (row.type === TransferType.issue ? `To ${toTitle(tenantName || '')}` : 'Back to Stellar'), }); -export const statusColumn: ColumnDef = { +export const statusColumnCreator = (onClick: (t: TTransfer) => void): ColumnDef => ({ header: 'Status', accessorKey: 'status', cell: ({ row }) => { return ( -
+
onClick(row.original)} + >
{row.original.status}
); }, -}; - -export const detailsColumnCreator = (onClick: (t: TTransfer) => void): ColumnDef => ({ - header: 'Details', - accessorKey: 'details', - cell: ({ row }) => { - return ( - row.original.status !== 'Retried' && ( - - ) - ); - }, }); diff --git a/src/pages/bridge/styles.css b/src/pages/bridge/styles.css index 3ec3207c..02ca9283 100644 --- a/src/pages/bridge/styles.css +++ b/src/pages/bridge/styles.css @@ -4,7 +4,7 @@ font-weight: 600; font-size: 14px; border-radius: 5px; - color: #828282; + color: rgba(221, 221, 221, 0.87); display: flex; justify-content: center; align-items: center; @@ -12,18 +12,6 @@ background: rgba(255, 255, 255, 0.07); } -.status-box.completed { - background: rgba(28, 203, 138, 0.07); -} - -.status-box.pending { - background: rgba(238, 185, 49, 0.07); -} - -.status-box.cancelled { - background: rgba(238, 63, 20, 0.07); -} - .status-dot { height: 5px; width: 5px; @@ -32,52 +20,28 @@ background-color: #fff; } -.status-dot.completed { - background-color: #1ccb8a; -} - -.status-dot.pending { - background-color: #eeb931; -} - -.status-dot.cancelled { - background-color: #ee3f14; -} - -.transfer-list-table th { - background-color: var(--table-background); - border-bottom: 1px solid var(--table-border); - color: var(--table-header-text); - font-size: 14px; -} - -.transfer-list-table { - border: 1px solid var(--table-border); - border-radius: 10px; - border-collapse: collapse; +.status-box.completed, .status-box.reimbursed { + background: rgba(28, 203, 138, 0.07); } -.transfer-list-table thead svg { - display: inline; +.status-dot.completed, .status-dot.reimbursed { + background-color: #1CCB8A; } -.transfer-list-table td { - background-color: var(--table-background); - border-bottom: 1px solid var(--table-border); - color: var(--table-text); +.status-box.pending, .status-box.failed, .status-box.retried { + background: rgba(238, 185, 49, 0.07); } -#details { - background-color: rgba(255, 255, 255, 0.03); +.status-dot.pending, .status-dot.failed, .status-dot.retried{ + background-color: #EEB931; } -#details > div { - color: var(--table-text); - margin: 0.5em 0; +.status-box.cancelled { + background: rgba(238, 63, 20, 0.07); } -.details-link { - fill: var(--table-text); +.status-dot.cancelled { + background-color: #F14445; } @@ -113,6 +77,10 @@ .bridge-card .settings svg { stroke: #58667E; } + + .status-box { + color: #828282; + } } [data-theme='amplitude'] { @@ -140,3 +108,4 @@ stroke: #fff; } } + diff --git a/src/pages/collators/CollatorsTable.tsx b/src/pages/collators/CollatorsTable.tsx index 48ab5e01..0b32b8d9 100644 --- a/src/pages/collators/CollatorsTable.tsx +++ b/src/pages/collators/CollatorsTable.tsx @@ -137,6 +137,8 @@ function CollatorsTable() { sortBy={{ myStaked: SortingOrder.DESC, collator: SortingOrder.ASC }} search={false} pageSize={8} + oddRowsClassname="odd-rows bg-table-row border-b-base-300 table-border" + evenRowsClassname="border-b-base-300 table-border" /> ); diff --git a/src/pages/dashboard/Portfolio.tsx b/src/pages/dashboard/Portfolio.tsx index bbd18966..5ee4d45f 100644 --- a/src/pages/dashboard/Portfolio.tsx +++ b/src/pages/dashboard/Portfolio.tsx @@ -13,7 +13,7 @@ function Portfolio() { }, []); return ( -
+
Wallet
@@ -29,7 +29,8 @@ function Portfolio() { sortBy={{ amount: SortingOrder.DESC, token: SortingOrder.ASC }} search={false} pageSize={5} - oddRowsClassname="bg-table-row" + oddRowsClassname="odd-rows bg-table-row border-b-base-300 table-border" + evenRowsClassname="border-b-base-300 table-border" /> )} {!walletAccount &&
You need to connect a wallet in order to see your Portfolio.
} diff --git a/src/pages/dashboard/styles.css b/src/pages/dashboard/styles.css index 0efc260d..b8e84dda 100644 --- a/src/pages/dashboard/styles.css +++ b/src/pages/dashboard/styles.css @@ -29,11 +29,6 @@ border-bottom-right-radius: 5px; } -.portfolio { - background-color: var(--portfolio-bg); - border: 1px solid var(--portfolio-border); -} - .banner.card-compact .card-title { padding: 1rem; margin: 0; From 9bfd154530076db5cb0f6fd4706b537fd35c926e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 18 Oct 2023 10:21:07 +0000 Subject: [PATCH 12/33] chore(release): 1.1.1 [skip ci] ## [1.1.1](https://github.com/pendulum-chain/portal/compare/v1.1.0...v1.1.1) (2023-10-18) --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eab7047d..b862aeef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## [1.1.1](https://github.com/pendulum-chain/portal/compare/v1.1.0...v1.1.1) (2023-10-18) + # [1.1.0](https://github.com/pendulum-chain/portal/compare/v1.0.0...v1.1.0) (2023-08-24) diff --git a/package.json b/package.json index 66a0bb76..d38e0ea7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pendulum-chain-portal", "private": true, - "version": "1.1.0", + "version": "1.1.1", "type": "module", "packageManager": "yarn@3.5.0", "scripts": { From f8e3a5ede3483e8b0b5f9c4a6009358844e655b9 Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Wed, 18 Oct 2023 13:22:27 +0200 Subject: [PATCH 13/33] fix: remove irrelevant info from UI (#273) * do not show banner and remove component * fix warning about css nesting * remove versions from sidebar --- postcss.config.cjs | 7 ++++++- src/components/Layout/index.tsx | 4 +--- src/index.css | 1 - src/pages/dashboard/Banner.tsx | 21 --------------------- src/pages/dashboard/Dashboard.tsx | 2 -- 5 files changed, 7 insertions(+), 28 deletions(-) delete mode 100644 src/pages/dashboard/Banner.tsx diff --git a/postcss.config.cjs b/postcss.config.cjs index 3ea9307f..607ce2f3 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -1,3 +1,8 @@ module.exports = { - plugins: [require('tailwindcss'), require('autoprefixer')], + plugins:{ + 'postcss-import': {}, + 'tailwindcss/nesting': {}, + tailwindcss: {}, + autoprefixer: {}, + }, }; diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx index ff3a01cf..3d5231c3 100644 --- a/src/components/Layout/index.tsx +++ b/src/components/Layout/index.tsx @@ -10,7 +10,6 @@ import OpenWallet from '../Wallet'; import Nav from './Nav'; import NetworkId from './NetworkId'; import SocialAndTermLinks from './SocialAndTermLinks'; -import Versions from './Versions'; import './styles.sass'; export default function Layout(): JSX.Element | null { @@ -59,8 +58,7 @@ export default function Layout(): JSX.Element | null {
-
-
{!!toToken && }
-
- Balance: -
-
- {fromAmount > 0 && ( - <> -
-
-
-
- {fromToken && toToken && value && fromAmount ? ( - <> -
- -
- {`1${fromToken.symbol} = ${roundNumber(Number(value) / fromAmount, 6)}${toToken.symbol}`} - - ) : null} -
-
-
- -
-
-
-
-
-
-
Expected Output:
-
- - {value} {toToken?.symbol} - -
-
-
-
Minimum received:
-
- - {calcPercentage(Number(value), slippage ?? config.swap.defaults.slippage)} {toToken?.symbol} - -
-
-
-
Price Impact:
-
{'! TODO'}%
-
-
-
Network Fee:
-
{'! TODO'}
-
-
-
- - )} -
- - ); -}; -export default To; diff --git a/src/components/Swap/index.tsx b/src/components/Swap/index.tsx deleted file mode 100644 index 5b29f91d..00000000 --- a/src/components/Swap/index.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import { Cog8ToothIcon, QuestionMarkCircleIcon } from '@heroicons/react/24/outline'; -import { useMemo } from 'preact/compat'; -import { Button, Card, Dropdown, Input } from 'react-daisyui'; -import { FormProvider } from 'react-hook-form'; -import { errorClass } from '../../helpers/form'; -import { AssetSelectorModal } from '../Asset/Selector/Modal'; -import ApprovalSubmit from './Approval'; -import From from './From'; -import SwapProgress from './Progress'; -import To from './To'; -import { UseSwapComponentProps, useSwapComponent } from './useSwapComponent'; - -const inputCls = 'bg-neutral-100 dark:bg-neutral-900 text-right text-neutral-600 dark:text-neutral-200'; - -const Swap = (props: UseSwapComponentProps): JSX.Element | null => { - const { - tokensQuery, - tokensModal: [modalType, setModalType], - onFromChange, - onToChange, - swapMutation, - onSubmit, - form, - from, - updateStorage, - progressClose, - } = useSwapComponent(props); - const { - setValue, - register, - getValues, - formState: { errors }, - } = form; - const { tokens, tokensMap } = tokensQuery.data || {}; - - const progressUi = useMemo(() => { - if (!swapMutation.isLoading) return ''; - const { from: fromV, to: toV, fromAmount = 0, toAmount = 0 } = getValues(); - // TODO: optimize finding tokens with object map - const fromAsset = tokensMap?.[fromV]; - const toAsset = tokensMap?.[toV]; - return ( -

{`Swapping ${fromAmount} ${fromAsset?.symbol} for ${toAmount} ${toAsset?.symbol}`}

- ); - }, [tokensMap, getValues, swapMutation.isLoading]); - - return ( - <> - - - -
- - Swap - - - - -
-

Settings

-
-
- Slippage tollerance -
- -
-
-
- -
- - updateStorage({ - slippage: Number(ev.currentTarget.value), - }), - })} - /> -
%
-
-
-
-
-
- Transaction Deadline -
- -
-
-
- - updateStorage({ - deadline: Number(ev.currentTarget.value), - }), - })} - /> - minutes -
-
-
-
-
-
- setModalType('from')} - className={`border ${errorClass(errors.fromAmount, 'border-red-600', 'border-transparent')}`} - /> - setModalType('to')} - className={`border ${errorClass(errors.to, 'border-red-600', 'border-transparent')}`} - /> -
- {/* */} - -
- -
-
- setModalType(undefined)} - /> - - {progressUi} - - - ); -}; -export default Swap; diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx index 263500db..64c27703 100644 --- a/src/components/Table/index.tsx +++ b/src/components/Table/index.tsx @@ -113,45 +113,52 @@ const Table = ({
{getHeaderGroups().map((headerGroup) => ( - {headerGroup.headers.map((header) => ( - - ))} + {header.column.getIsSorted() === 'desc' ? ( + + ) : ( + + )} + + ) : null} + + + ); + })} ))} - {getRowModel().rows.map((row, index) => { - const even = index % 2; - return ( - - {row.getVisibleCells().map((cell) => { - return ( - - ); - })} - - ); - })} + {getRowModel().rows.map((row, index) => ( + + {row.getVisibleCells().map((cell) => { + return ( + + ); + })} + + ))}
+ {headerGroup.headers.map((header) => { + const isSortable = header.column.getCanSort(); + return ( +
- {flexRender(header.column.columnDef.header, header.getContext())} - {header.column.getCanSort() ? ( + {flexRender(header.column.columnDef.header, header.getContext())} + {isSortable ? (
- {header.column.getIsSorted() === 'desc' ? ( - - ) : ( - - )} -
- ) : null} -
-
- {flexRender(cell.column.columnDef.cell, cell.getContext())} -
+ {flexRender(cell.column.columnDef.cell, cell.getContext())} +
)} {!!mutation.data?.hex && ( - + )} ); diff --git a/src/components/Transaction/Settings/index.tsx b/src/components/Transaction/Settings/index.tsx new file mode 100644 index 00000000..94a3f0c6 --- /dev/null +++ b/src/components/Transaction/Settings/index.tsx @@ -0,0 +1,90 @@ +import { Cog8ToothIcon, QuestionMarkCircleIcon } from '@heroicons/react/24/outline'; +import { Button, Dropdown, Input } from 'react-daisyui'; +import { config } from '../../../config'; + +export interface TransactionSettingsProps { + setSlippage: (slippage: number | undefined) => void; + slippageProps: React.HTMLAttributes; + deadlineProps?: React.HTMLAttributes; +} + +const inputCls = 'bg-neutral-100 dark:bg-neutral-900 text-right text-neutral-600 dark:text-neutral-200'; + +const TransactionSettings = ({ + setSlippage, + slippageProps, + deadlineProps, +}: TransactionSettingsProps): JSX.Element | null => { + return ( +
+

Settings

+
+
+ Slippage tolerance +
+ +
+
+
+ +
+ +
%
+
+
+
+
+
+ Transaction Deadline +
+ +
+
+
+ + minutes +
+
+
+ ); +}; + +export const TransactionSettingsDropdown = (props: TransactionSettingsProps & { button?: ReactNode }) => ( + + {props.button || ( + + )} + + + + +); + +export default TransactionSettings; diff --git a/src/components/Pools/Backstop/AddLiquidity/index.tsx b/src/components/nabla/Pools/Backstop/AddLiquidity/index.tsx similarity index 70% rename from src/components/Pools/Backstop/AddLiquidity/index.tsx rename to src/components/nabla/Pools/Backstop/AddLiquidity/index.tsx index 8c9284b4..e434514e 100644 --- a/src/components/Pools/Backstop/AddLiquidity/index.tsx +++ b/src/components/nabla/Pools/Backstop/AddLiquidity/index.tsx @@ -2,12 +2,12 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; -import { BackstopPool } from '../../../../../gql/graphql'; -import { calcSharePercentage, minMax } from '../../../../helpers/calc'; -import { nativeToDecimal, roundNumber } from '../../../../shared/parseNumbers'; -import TokenApproval from '../../../Asset/Approval'; -import { numberLoader } from '../../../Loader'; -import TransactionProgress from '../../../Transaction/Progress'; +import { BackstopPool } from '../../../../../../gql/graphql'; +import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; +import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; +import TokenApproval from '../../../../Asset/Approval'; +import { numberLoader } from '../../../../Loader'; +import TransactionProgress from '../../../../Transaction/Progress'; import { useAddLiquidity } from './useAddLiquidity'; export type AddLiquidityProps = { @@ -21,9 +21,9 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { mutation, balanceQuery, depositQuery, - form: { register, setValue, watch }, + amount, + form: { register, setValue }, } = useAddLiquidity(data.id, data.token.id); - const amount = Number(watch('amount') || 0); const balance = balanceQuery.balance || 0; const deposit = depositQuery.balance || 0; @@ -42,9 +42,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => {
-

- Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`} -

+

Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} LP`}

Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

@@ -56,6 +54,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { autoFocus className="input-ghost w-full text-4xl font-2 p-2" placeholder="Amount" + max={balance} {...register('amount')} />
Total deposit
-
{depositQuery.isLoading ? numberLoader : `${roundNumber(deposit)} ${data.token.symbol}`}
-
-
-
Deposit after
-
- {depositQuery.isLoading ? numberLoader : `${roundNumber(deposit + amount)} ${data.token.symbol}`} -
+
{depositQuery.isLoading ? numberLoader : `${roundNumber(deposit)} LP`}
Pool Share
@@ -108,32 +101,37 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { {depositQuery.isLoading ? numberLoader : minMax( - calcSharePercentage(nativeToDecimal(data.totalSupply || 0).toNumber() + amount, deposit + amount), + calcSharePercentage( + nativeToDecimal(data.totalSupply || 0, FixedU128Decimals).toNumber(), + deposit, + ), )} %

A{B_Be;1`x~!b^UT-rwvR8r+~vRj zg;!jQ$UVnKz^+?sLd(jWIiH$y&~^JiF?&er7Z*$8<94JkW@*lGwp_3wLBU3q=J}(k zjfu274XjAotexpQ3URI}MqzgF(hR4ZSvet#mW?vd|1Mi%hyoG`S4K zljZB{wsXtL2)=};#$qP%4>MrmeO-1CEAxN$SDl*>LFM4EAnWFkBG z1`MNJi7#3j-^E;ai+Id4{r<&Pu;yRiQ8T-2oTT6ZJL`t27F{@kgMfky%yeV2lhAb` z#tTv~w3U1(I3W6YK5>~?Y7Qs?Ft6t0w8$RZoZoz5ThT^^4t120Yg{BX0&Lc0R>|gF zRpyssu5|#Qv46Vj)HWiGZpwjraMC4kFTByIV_3LnQvl2)`VYtwMl+gfemWWOnS>lele(d@ zZDeR#nfaEwI_sLHap~Q( zO+#+8G%+U4cT4GX=+tL>}NZRXNa3c<~WnbFL(K=PrP~|!0UKh$It%q ztMcW?ea?XzKIf|~?{aEwt~ZNK);OCFo84fjQpBEdZ( zs;P;CO=5K{x#}{z9JArQ=bDKDZ~y+^P4h5}xRMZ6){~omMZQF5STlm{OlY&*H>{$k zkB7lJYZsKjv!e;|T#&4;V5CB~s)4T}Nfo2BIVA9YX&D75ZsuG=?Ci=__xE3U-a8s3 z>SEVbAXX|dXM`0Dk_%!=6JlbZ%0{_tEVMLkID}R54?AUMH~F*ay9nuyYz%}H95b-M z#fMoe14^+P%oqFi>}ue=31!Y3VbzP=U1ku~Dj6loOWwssln*tDequ$pZ$bz&6C<-4 zGZrd=XQi=2Ol?2`7n#Gv=UgSTYLw*_F5j&P@21?TIRPwah%kU$&2EQXInQti zAq`~v)@#<>OaA;UREU!+p3(gLC^tDNWZa2S2LqL9WK)0xD_9k38tM6*rn$kXA}@XZ z&1;_dIv#xdonQTi{F4{oa5IOv-zu#iMB?mPYbrj5M{zFLc%p;AOlNazdU)q;F;l(> zH71`#R?tV}jQyn5?)+HLF6ZuJE?05^=oKkp_OplpG{QDBlEzHrUSh)$uVqLsvDipN zFfbbq&BqW$@Qt&?W|`cu9tohhzpwbAIX-s>qf+D=ixuGBtA;|YEPotpyQM?hRoL7v|$$YT0?rV288;iL(-4rWTLP}gA=-c zZ~dBVpsa{W0dNth|IngumUnacu-05j4^DIzIw$7k_P zDMy?%H+HVbWrn8_c2Nqc40TwSklQ?pm6;>ST;+-Tb}BOAXN)|D1EiW7^-0iZ$rv+^ zwJl0ssfFw>VFxWHSIMB8#?@Vr^o64DA03G)>Ut4A%xM zV10u?i+7kQ3#5pfi~ns$L3P{R8mL&truQqKdUEA6U&rb3<(IpB?3Z7SBO?+`U4r+; zWaq|vy7Yd`^?k1SUAV6RHiwVK()|0zn~|wTu()S76_I;*CmS?kyKo0)Vno%nhzuOS z9GSD0={_vBm1HB2xlU!E-LZFFVE;F6REc|>pE<-hL)EODqid)Y24BJSDa(!f{qfH_ zG=vGGZBP@Bd*_*3*4+2!-hi>z5$Sg{8)jlH2|#=K%b2HHl8l#uD7a&7?4R8Bk&7m2u8Y@te960 z#wzm%O^ci*CK(qg_H<~G)yk-B4bxyt`Vl_>}DiDTrSrTOr|P(hdcX%w{tdh&mWQh?1&+h*V7u<(o5Z zSW4u| zf9%K#GoxwHP%}^rKtpO22TB@@{DICa&oq)z3C#((LQlAOF>l{eD=) z)(oqKJ;e}}jfUs3xQ-?uduOy@Lqzy{pyb)FBpFkNZ7_D!Z;a+7EE>roO*zeRqzu=Y zVD4mOZ}Y{z#qlJQ96uN4U1eheO4jL?;<89X)rv;ETSFR{6OQvAj3e_14I?q;WuBI= zu>o@_xxqOY&<3e2ov6<`GP4B0-aEFu`+V8aBO%hb;2ANP*%o7VJWHLTwXmT;`k(_8 zcU$M^Rbc~I3Nn}$jX70ordgb^mH8Q9FQu0w>dCo^D=6E>HM#-qGuxgAw6JjV<)NiQ%#PlGn3u!~cTom7#Ic@>kxAh_+ zRwxDtYqW;UX}>6W#W4fQDVEOHt-#(X8uI{w+GI(->!M5Q9AIt4WleZ?Xr3pGPiYl1 z#JU+$7<#E^8C?g0I?XaSXToyg3z`^XU0p#mAY%^EXp zs0xmpMWZRrJXfyFyO4Bb)Jo@Y<*aJTkp-vf@q>O7NuY);kbVIgBB41bTKt9 zYx97Fz1%cP3+2HGv|vt&5{HF51e59exm6La_7K9_W7CFN{x<~tvdJ69D5(PIQ|YNW%j0$N&;s`@} zZyGeyI`q zWdP0sQ`bNiP9lDMq>X2c7`xqCZUTlG)RxDPni98fiH_$iI zqI&zTwpf0U0yn}~A`>nwqR}-9%+26>BQ$hV?)Sxrn7h|&23|vxWM2LufpwtSOVkx) zn&$j#d~Mnqd`Dpp`B_!67+B7X;{F*;t@8WTB#s$k=*wvSvAAA8yKQg{8;p7&yUWbZ zSpARw0IP1&n%pYpm{}7YL4E27gdBUHM6F@HSSm>^YuzyF*af0^3Be1vw5n+*!>oic zsXDJ!W?m!3>@G_-T+CEy7P3QeT>;~ryO^tHF`La7wwt_DHWym4&FcZSv}r26nNC*V zx`GKTG6t{J;FOscrOu>8Ir9#risYFH*%Z{a8dPOmR`^|d0=&per?NMBi#g2EIErrU zEN|B&n@+HE)dE11jxB3EG3Hk{>Ih>1Uos;uk{e741soe|5EeNxpI6AY21i563R~WI zjl5$x7h4ryVP1UW2F>m#>-LJ&EY5t68_6uxXriK|A+`DSfnD+6XXj}Ul{T8eD!%{9 zJG~;=LmdEDreI4oe^2=TR#{c>xf`;xA zHkcbcyg!%&kI_=7Eb?HCsG5Z(?exOERSE`nO#&28)@<8PJTWz$(t?5 zGTnCvP79w2KkwcUr1=^#jIEfPVLvKHf1W+EmSdl8PAA2{V@fSyF{=WRQv%ZWzP@X} zU*BZ_x6!}|aYTML+Jrhnt3P*_S!Loq2HcpBd)a-%$)6vBMjQn&L!kJb<&q%&GFu)*Yx6*xb61h^yo#?u#GW%tu2r z>8#n2pKm8cDcJu?I+*@lRftI?v(p*#Ipl0XtpU$ym{C^#t~QD9vu)y!LZg8JG_p1Y zW~UYJk1K@PbqY+2#f-(IRACiZHE1k3`hyvZD8A2{*AO9VHcd2uIrClOfiG}I=4UX& zkV3V>zPd9&Q_^0>Sx^y?*Pi@;?7iKtb;pq;mRY+W-0$E=n7%XMZUgqk^vv{yr54qI zn;c0!BT@~IVW}@>WXga6>*MdP^u=CP6&V@1&Ua^$I!6#len01|z1FI#%!tT{u)qEv zKD>8`?_cTb-~8>L?T=s11Y)ka&cHeWfTXZ0y$sra)H>ou(8%4D-I2K{-Pc3P4yACL z(VXA3UX_ub6CKVCf6ThM7b8NrRxC1?%4)HkMgS@ju#;SV_wTRI=qmm%dtj(ydw4l+otaE)vXL5S};$Mxb^vujYIhTWi=jwRSmd>yz>lBP@{L2W4OHrgv*0A5O=2)Y& zV}q6f0SiyjUOBDg02-kr<78A=%=i@9D2fTExyaLpT%Z#bEm!P@iDn_T04 z8wusK`wgetz!geW{;td_sSp=8XRYPBpFr*?PTEnC0#R66!(!*VTsJ6Y@J3fPfnY1S@#|C#xUPbvd5NtL%P#c-jV$uUx7Z2O`@~)+qpA|pni=)yBxO$M`;PCL zG|vkd*$BO66niVT45e;RBO~scVJ@R1u8XX^M@JbUNc+B%ToYcgpMCO;{q}d?y?2T4 zUuI_Z-@csocmMEBHKn_n#1zp+9f68O+cSiMWl?O<`nhb3$w?py$R0-)oa!C{q$bs# zlVmsE-mjbqhgg}?)fftmQP+lSB<6Z`&+qQ0<@I~dXLSWG zrd@V&YgfI1GwL%cxsjZZJ%4_;e4pAnIkLn%IT3>--bngyFk}3h)%If|=b4EPP$I2( zpK00bi|3yss!C#!7S9mG4S-zdojJ47FVZb!Gt0o%P@|LpAVgGlH53qML@I>r5o^EJ z#I`aUUTW`6-g#}3!)eAhGs-heswf#448<^eHQ)me#TrLSz*%&pq9EU@yS85c<2&WIv_;6kRp8M29u zeWYghF&NMZU{6nU)JbxQq?TZEXSk)m|B%_do@!g1;brg~4Zg~I<@Fp*QBn-P10eI9 zqF$YrWbKKh@UU^^0dIyM0h^_E@{@v+J}dPOkD(j4C0(8&Y6Kt(c4EeQ|KJ88;3m8U z^Lek#KCL#1tw)lHai`G6paXy|m1u<5`C!#qT(WTY+Nc|uYOUO6^8};~YpzF_3F8$; z+=KdM#EeySV$+^cLC-@1plVYY_*8-m&2)#FZM;K7E&41g3o}=7+bk>^E?vj55~G&N-2F-}S2?iD-&o@L>pdaHBB- zzPI9CC=1w_{r5Hty7a;dY-wD~)jPmuEa$%Zk?f({EbQPfbB;5c=RJD?i=Y3?cke9o`50uOEwN{cG)a#kf*|t9HL>T!hB$rXuRh+tJ`I1|(MV8No zW(QXjz=o#mTQi$+kD#W3m0qI(3h{xxWVM##x$Mlzn(N%wG>3Zq0Pq+#A1}gWHCT_~ z``id(#KJ^$7PyEnqpt*#&ir}S`TuGn9cns!uexYPfNSz~ zUqu#p;3x%~W5F5BDIEqNNSe>zHF`*pjYpieA=*}`_^#m`T(I|S{K#iA%d4far)x0Q&d3E*Y+30Qn@w9-KG!};` z3driwl>Rv%J>!eCWvPij!j*+UzX! z{nfMX2Yh*Fncu(u`hWUR0a^!ELd^DItWG%}+02O+1G>?=YnB-Ss1SdD1Hh)|8To7o zVA?jw#!^vqAru>yQUbcyA~Q*G#VA#gU=On~D_|dXW}K1fUFJk8*|L~i~8B~y?iym`&G0f%SRXINuVvhTioEEbJ_R7 z7|8|<>iNaQn`fgsz-k|(uLqNC+k5rj!#yc0_TL5IVG5l(H?{cl7(5!Dqsiut&ZNUtWn$>=#S zA*IZ4`5C(K8`zPAo%^tA7_2L@iAAeLS7o!d8P}kpYcoxK#mx=%vvH1VS8iuvn>=1` zJ|N0kiyLm46ZV2wa#P0cv0Y45$x-bF|GUDS4i^`0mQv0tPUGnG&sGfX>d!;6e~S0U zZx#T_D%A7jyt#rliEMC-=D<|aQEDE$dE6l$iifD}1Sq1AJ}&sSIYOg|kj8VOiE)|_ zQ&R4v0!dCb@PBYzi7Nve8E0e~(!96Gw=A-LtBvxypWJ9;lR9YBf@4r*bo-qfhUJL2 z84Xw#RSsPcd^ib1%wwE)0JCKqH()Uqun)zV3m$H)CAgCgl}Il0?vc<~UeitzE9u+~ zZ1Oh$+QnT)n?L{EJInl+{Ppkt;cNS^Uru=zbS8mjN76dr>@Oo`mi;Jhw#)tZA498# z3K-mF&x^gKczXz?)izNwD6nzcrCHJlaxyk6o+B!9E}4uCXwIO~P5uK77>=L>DrP1f z85;)N&5Oghk#7~jYK&glwVvX@d>o*5G0KX-*iD<||Bg3OQg~i~`b7{C!NwX&s#(!pfXdW*DPAcnm_N zPh82V+D-;vY?*Y&qAN)YOFxzScL)n&m6M9lk&N|;>H>Z1lI=G@M)ZfZyEbRSuBI4u zIOBdz!98?*5St=+7u#i8@xU7iqrBWWE0$iFz=WdQgzViY-_dVkK#Um0K$N}KD|HUs zIv2-tk%}>pz>w?aPCAm`y=x)*O4olEKfg5JkH+CKG}y-PQUMzp#$V-(no%rF;|~zx zx?D8yts+C1T?DOHWoS6Y`DT+g0A=FgZ!{liZaeh)Ut^cpbnK#q;@R%a!=fPfCF0C! zv;gRTyq>>#XPN(Ezy8hNeyH!8YgN?Q12K{%wk!5P)@d1R8tkVukD>C`BPu}LjfHK0 z#Ad7|oduB@*dnay6(=va-fi?KOV2BeW0W%ms9dp8mZXSdZ@Miagz zN@1x$HTSmtDL;eNtYI}(z}fj)6ce-IF8TalYjrq-R}QgY#oJicHE*zLANf*d_I@c`r@28#aZVNb&mc zkc%6{a9<kACXELG zJHeOd9YWo4-K^Ihr{&z$VxJi%4C5e3sfI<&HiP?@1RBAH#dxm!|D3tjn^7Yt(P(lr=Tq#fhQ?IXEGB0BG%1g9B*<>Q z=eSdYIdbE|veyZpA;j6~UTfP4e||e*NA?LpW3*+yR*bHQJ?3V3kQrArW=ePsR@5I} znL|Ib-z$3R#7x!oiapJwnQrAsecp-J_r*wBoQYLUFg|PacVS~!1?V%eFua(ZOYGLWJD->R1YNjy!a{^II}0BEUJ>E z1DbYiQwkuS#l@z^1OrWMD96HJJ*D!o)W$c^U<%%DbRf*dAsNmX&E+lD+H`D@xk$_L zD%<2N>Vtq;`uT`}mKkP;g0f>bX>PT|MEMP(+Z59FMx2guvk6RQtj5{%o36~?ta|}n zZyu^K*a(Int|pblO;Ck-@Wk<;A~SuteNQv6ABI7D22Ou_ue@flep`=YZK3+WFfj> z3p#a&h{bWQ=4Cvi!}2CR42#;wYQf7hN1c}fUz;HloytM4xub?gXuvL^0Z3TV-2cu0 z^3F2_fVnf(#RfDEaaQ&(Ql0SGUZ$Pa+~K%W*4zT zCYa8=Nmmz2Ec}Ot_o%0M9VRP#h}Jb0Qe`; zB}KJS!Nx3HD)d4(Ry<=k#4^PAxLB^ehK5>Mn;z3-`owVE1hGRcGfyuo4BzUeGMa)s z5zSyPrjzSDK7a8;2RYv|SrI|ZC^2Bqr#9bA>?+&^&b38@uOxfr2t~_j3~FZI1t2^? z8;=dyq=pD3%4(i{04qL(r_Ek(BVQm&s)zFNfO9-V19W2592!8+?$Xye@oM^qEr;d( zd$0j`G7F~WaYv5j=f}CeYV9G*Uo*iERJ``4#nPvAj&Xn&Czos=y?>7jHWYttHZ_0` ze6PKza=3E|6ro<}uiHLH6O*8fgA;*`*eFtvH<>Mc8F>y~J>p01kF^59*dL?PL5 z7czua#=-!Ch;!okUfYh1R?U52Zlk08yMmk>v7wsPF3Lh7DS{>A=4yy}SB%|Bh_+Sa znde{_RPi^ox859(3Rt)^5R?Bc=v{93Sd!~r9lyJ*#MVV!u@{kN>?EV@)lh*|2%N>O z%-|Hr(2j9q{$y0dv5b;?UkF)~$?RmHQRD!;xkUvWr2Jp7(ai9+CSy$Mk}Iq!#REBb zE3n5+tv%0sRtR>-dI$CrRc3k~-KdZ)MPT%6#%0l65rb6l;tSgXsSX^Mo1qm+yqKnc z`qj7Zo#bE0*I)nb2Mq?LgvdHqAxBrDVSdwymFx50Gb8I>O^r-Q#AP-+T>G#W^U9Zl z&6G6r6czCp)g3o@L{}05!*GK-Pny9Hrvnn z^>-Ev`531j8I5-iC9UqCF)qO2g$NN12vnz8263RA54)0&iS_Fnb-Gr!`w2zPo3z&r+HM>+ zT@Si*Gccp4IvJseq?^$PNHJxK+H96)+H2OKHAR4`vX!*HE5IXeW}ii2ZcWUVoZr21 z3RUwqN?y~c3P$HH&Y!C>!jdk0B+)hkg`|6*IQ*?cj7^w1+(>TOk#tbu7K});QBCvy zxZT9a^{-o&QbkotSkpKwFoE+?6A(3ES#?PK&>Oe09NPr*OePt8P|XmGwkSwgUKA2_ zBMBqSRXW7tNFatljB?v4+V3{LE2^oPMI%^2Ge&V1;B{-8`tz3#pz6>xpNF=Z==DQ? z{>eA?;lq6ICV%2z|L=#eUwrm$8TY{T|6;&$}kAnX`z|m$#xn`IZD8_k1RB>&ItXWN~AioAQ{0d=~G4>ig8|tu}*~_`6 z`K+&5?aXG*S$}^;S0z)%Nm;jG)WqjnniIFGJj2h==UDchiJcq2UA&jP8q!(z+~|tJ znkGGTmg0fyJTsmhjw`?Ub(0rc8CIFTXPoAGvD>I5+G=AhPp^z}bCp|Zj3X0ze`AajPJ2)ky8 zIu4lDs#*0>S>OpOk>UQN5+w52g>**beS$d|_oR3k?TqVN`M!+)QU+iurZ^-pPGJ-+ zheBpUVbC-i%rwXTrz^<-NpPfLP1npC$g-&*bur7l=Whm>jahA4a06phIe})(QS{=C&WqcL<-GX(o9n*c7HT114-D}?7os1ugSa05I`K%E^-fq!el?C3&c8HRY>xUIhS=i{vfN6>Oq5D0Yo7_n3 zK4)NK0Y1UVD#@?cjPA(52rF>b?l;h}d*_44ZVFZ|bH4t3uXs**%{7mUHePwvNTE*n z^OM|u@jeYW!yibL5O_Vv2Ov2q3$*|;fa|`^XE&2@d?QR%hZX*lywCpKq(ASMH2dTED&En+HM$SA#7HL#ud5E5! zi|MyAfK|hUFAfIP^FhtCPS!j~6SE^G=1OjJqtV2I0Rhtok?P4J`p@khOKZAmPz|GE z`$`iU_tI^4wR9md?wV8HC^0`zbDM6a6V?*6CR2ZX_CTz5}jz17jjGC>j48P0UP=$l1X=W*mj&I3&rORaLd$2RKmDxWHK>!&jr)y z*ZRMln=h5b`u|#F1<7SpdJ zfXcS;+VPtjI_(WjpD@TsFaU2rkiUpAP7%eCd$aYP586yuIta7M_%?QNoms)sM1{F_ z*k&LB`_FT(SQ@J-sH*J3JIi{nRinz;+C{FA$h_TDRfdD-VVFg7+Kf~0Sa^4ed@&*Q z^;TtgGT>C>p;)1Yh12MQNgH_8c<{`tn$vW_rj4OP+zT_?bz03k)HRcG6IIgLj!C!1 zq(~gD1(6pu#-RpuR&%*_<(hmGHxyN=UpFqUqFlrtz(o}!tHzk_&h5Ck1vVMFW_dQ3 z=Uze~$VM`vXp{@yvl2t>Jqb;o0`V000E@&RLzI$>I0>ouUKzm#L~>oao+%F6NZkc6 zV%69tn&;QKxR>=m>Yqy>gdKLHu3suA7Kl0WD27?zWmd> zEc>VW_20gn_N&joD{GV8P|?Y~Doos_MFNc0`g~4`Ml?$^j)hTxTwi2@RqV)SzNx_G zh)8dM>RXd1!+hVM2(}7FMhK>55Tp303YhJnJWkGV%HS25$0nFxC~HfDpa43znkZ2e zM&8HqglSfeNe7IQa=AAh`Q~%#=KOq*Aof3hpBdN$L{dv^GbpMFOePt`Nrmw<3!8sV zX2)EdeM`z74aVwBvM5*Q38RVX{ErNbOmK@{&E@*FkxWZ*lp@ULVINn9I*t=?bk}oY z#3{taT}RUb0~QlKqrMC99Zus5K-=iZ70dfXs_TZXvt4k24t0i#LQc3>kscnoFte`3 zj|xdTj`|(7J}c2?V%&bqn1oJ>G_^{ z{drKhlsRngBc57!c+>B27e6Fpr;3ZJ%jaXVVe`_McFevv@j`6e#?2@<`+TcIt#9uQ z$Bc^KG9znRIwQZAHEe|UEVHS}5HYVmsK5+H@;w*ajNAtS2%*gX0BJ8Mr!vvP*psGx zEh8r^+XR=$JBDk*#u_ub;mW1AKet!o9MjE0GA7x~L`V;Yb^Sm4m&@+bQBH-Gn) z^lpedFyLE7I_`&4G)4=AquI^G9jFnIsOFbgJPt9^Fs??K z3+g;qt8-e{^`jd%<_Yh8c>?1I&d~FDHF=|?-j&*Ddp(T9&SYutku0lcI(f~j#?WX^ z+CWF_q&)B=vtHlg;km&{$|%8X=TVs@!=`iCGjfp|Vy~Ihbfyfi&5BYr4Dz!;$?$ko zQffDSerAm=nWWWo{5gf`C!L+DR>1MTmBGtk=~|OB*lWeNR38C=<&2)ad#?IA);zNn zGr)BAD3Apjv}x7I@~=i-VS4~6@_Ee(Dn_-zBoIL<%{JR?U@E4*Wmi+}UZdf#qDJEy znRPiO2eC`^oXUu7nRhweCzAjJeok5c@B4X*Gq;=ulT;-k>L1VVKN~LMzF7N@>b0Fl z;yeQz*$vkFB3U=OUYlJyr3&Lra_`Oo*@bL#P^8gt9TOA{^XH~>xJ)?ZNmB}|F#rr< z46wFea?l}~s}?*E<^h~*N@S!qpz4}CF^{Plu7Wsuvq?CG*{cmeY+P{%05tB^Z_VDK zu|~`4g<$VRA)o@+yG*{}^}Xww*CEsq;m2J)Z91VxsfX*Rpf>@irm0--s`_;^y$;IS z6-AYEL#$YuJGXKnO?I(Iu(^bp^)u+=-jJztG5g|qC3aLb!E7)?of<_jyONd=UjJR1 zd^F8PC^?o@wk#}X*5mCQ5GB$nPR?Ew>1Qk{;#5W`*98Wk9Ox{n-m`!E_wSj^Kh>{K zKKtgFM48Bs2S9AlekDB7LnL~uM_ zd>8DBOkiLS8+w(pu=lS4z~9yQPaJFWeEm2#%&dQ6i6*oe?pI^xmwY*I9;`^RyJyuf zc5d0TB>@m4$4N~E46k^eS?jWZ!(q;_=Zr1m4I0QD*Ssv|Fgx6n90x_<=E&^ZYJk0o zrd;xF$Jt!hP0~8YIM$CP#SYJ#o4i4>IxZUdKv!r{f0X%P@GwHM0N+ilY1U_4ZsUu+ z-iBXX$6IACnek*&=gc|3p6{HI8BWu6Pf#}e0yM^TPbY#3!17L#`GzR}*~rzPfzP34 z+I+r@7DV-RaY48_>|c>;*Tdvn)c!7L4qojOs{ThMaP~+LYk}D1LA@HQTbz;(EOP8s zA#y_3&V^w%ky~fh52oV@!m&m-o=Lp{PgmG_o!#JN`xya6tPm>iUjycOS6SS@c@z_*$xyNQ;dW;Y?h*mT~!3wNwz#Lc^= zmdoN#-lOT6n*C#TfBp7{ufjfm&t(3|ef|3L z@9d9%nzhhViZpQlEhAK}&sc0o%_t3o_Z258vX~p)#k*iI4mE2fj&EX95m}DOjpNd( zEg);H&taO;vUwQ9(7z`UbvHEQ(OOzBIo9E=1TXr@8cKxugxbNR3e<;-xQxOABNRQGstI>>ZfLO)-ZE{|fcc8tVpH20 zRn?Kkn~I^^amJqD0WqPP0(|ady#XJ<>0;4?YO@fG`F$6MU)=3=e zm9=Q0->{e%=$__TJvT9&{VbZ{P>7^DSZ`b;)qisQjT&6^ZP<}#6T?JSvi0}1fDm0X z=hYIOW#eJJ+#a9p5YOb!DNjA)J2`Uj`>I%3YK-~a9^L~R>Y7_;Y8TA>8|GqnW^fLu zugZr;l)p&rx7nTNF#(Z@-iJf=AV|565Y4JtbqS{ei|-vv@{8n_P=t?WubXiR{^-GA z6U|%mY>$!xD)7rxzW0T=nwS?dQUsW5;KXrsL(HFd+28{T(~=Etx!_?G_pJZOVB>X) zN8Er3bU)ntcnUW)qfv{Oqy)JELAa**I;W-!&3Qa$$KH+Y_{k?;&BJT`J80^?{M|`RT%hsRb@9>c zF%lrg>m*gtqcOBXfu>(f=$b8_%hW4~w4gm2uRAQ~6svkHsCgS`q-DCOkEp;uHjy|Y zu$#H5jWcm1!9}yqaXW*e5b-_U8OYcBKA@I&b7|u~093$Qbg7-RnlLuYA67HdXNZU~ zVy@MhcACc5hZ|dB@B5jkx%wf90~KLZepXY4;*9WinI?%oMy?gZuFwj}KvKbUG^@i3 zQ0X+G`o-=mD)FV_H)8{HCj*}2f)SjTDJRy9M?w*vh>5rX?VOtWE&@h1W$6bm-o)Kh zP4D!fR90)yMHh)wgqBcSl_a;!u-6CWUJKOD1)Ax7wvks|1s|ZrK{)C)Iw3~hGfC8IZDvD!IlQVdWC>Dq06uR^P2Zs>V&Z3H?XdQ*&24+ z*87mB0?o)2%?PD^flJj=T`5~|=Kg2D{Q5nU`KQJ(|L)sVJedjRmuiEsI{Jd|%5c55 zCe7|TL<6lx(8Z3kW-Qknw?aKu0x#oSm0`~6b3ya0t)$KH9egc#+JW+TM*N7IC2 zl+k8%BTI>qA@m~md&z(wk0H&kq<;^9nGec)o|6C|K{5oGOBqSaQ=?|UoQ}qLckRXF z04X!9j7_;UtUVh5M^htF!#yso#EiVkQvEOPTRM9~G)rqf`pU*0=CWQhuMwC`fEDs^ z6T}+VGr_%sW`Fnkrx&X<)vDexD=8GmCjy^LJD{LSceV>0M*|PDuX;LGqXgpb+hi>d7 z^IIC6;|@4ReNotzR+?Q28~uimlTDX5%@WTbC6wd(OWqh04Q~ojai2mpam}2H-R04G zW%%x9Mu+$F)$aX`Qwp5qi9v38ce6@&hpoEi&g6=LhIFudV@!6#N*8oaJZGiG@b*1# ziX^X%(_L0^nM;i~K!65C4C|k1&<2A)d`3OIgAOEl7<-oKxYcJ=W(ch^GKmpwWKuk5 zuhbHXDOYoVN%=tD2qDx23mJBLv6)S1!41AweBd=r_>q-)1qNOJj8$mOCYLd!Yk9m1 zU@qjj%8&ev+XJPYbwf%*KGY5NDVBoDWJ)IF{QpzG9pVBcO;Z!lnySFDCfpzkwTw?Ms)+{2_Fmb ztKe6;$DU=!Yle1!i}rlNz6FKEmKI+hWX72(4K^(seFZurNB@KJv9+`7out0&tg_1-7$0>HAM16!p(!4GGTTb6oW3kzhjV=p*L&^ZIkFd_b+3_qdM?~4l6i~K1RYB-YEg{~g z0ScJREc+Q7R3oz7*I13i4O;)DDfN4wmSQI#8mP$x6`_J`FiW+bA~*(5qiwG^7Dnzx1pEAvbtm}OO<-?Xmgeh474DDik!tdntje~Vq%@6JvesrF6G4GdVz)Z(}wXt6G zT$Cd$Hdr%seskD8;%PUzoG#dD9=JcWfP}e zU`?0{3<9eN%u%kd{7*GopABK+M9jf^>H|x+7Y`DVGs!9vixohKM=|!=j7qqcx**V6@?Z7HcDv` zqLCdg3`~v2SO^3DgEt?} zyYLB_C}D$$`lNat(Mzso9O(o2>O>T*y6c z)IyjQU?<-=Z-{{h%B2x)XC%eiPeqghO5uLtJ~x}FE!gb~fPqECKmF<(`|#DfEc>VM z^~q=7O5+@^MaB>XI=Q7X_?YC-;`}S~^jmaDj!oO_CN>~$5xb!E;U`^cHILWKbRN+; z1*p3Nz^!wOOEIj*WQ?+xgQTm|%pYd)6bD!2y=6QO^Nhd)7T(bud?|+2GbfM#e8v2* ztAiicd{J|7a~RFJg{&rCX4-FX&sN4%u>VAyH{uzw&zy)}zL}e9lS<3P2vZ$1#4!65 z0CeEYsn?O3X;cHi^PIEZ-vo4zlth+})=|uFPXmyZgbM_9O%_2z&AHe0dA#zFaV&d4I=i-50w=EslZC@-`Oe$aE4x#MA%q#V>J@Zh5%yR7+V zSRVzJ&fc+uqCibzG+Gkm;(u;rH;%y9m|V0?<#IISsvQ&DXvWvhJLaXZ?&|fsxJ<4O zkud7xa?Eb?U=gwl+D+x=>SA!;dgj(UM#gmJXvfgDa`U*6oqHc$q*%}VXSfR^L#}3n zaBGZzygG*C=Ff|-I2N0B17{apZ`iJGwyMmYgm`uhz|nqR#VR+=yIfcegP>SISF4BP z9*mq6t#==n4R%~J< za$L2*c-^q1KdgzWGyU__nswKbAcfkR0{lcH9_mgDC&xbTA!nZHtFO#{`@8SoyUic@ z*T4Vy*Y@WR^E7wBbao(nYJ_I*lTeN$rpgSW)cmkUo?)BR^|-s1@WpYzM<$5hVXBT^ zY}mD7gcz?F-Dr`W=;2p0k-=`9XI=MHrVxz7KF|4*V2^SBd}5nKG-k?j4hnX=0iM;;Du{TBSFXQg67bWds?4Z1P)Q40^O`$f%?Z*T`>uNyF&0 zFH<)1xS2b)#&Omlq`f=9P#zo&o0~7RcDvrW<_Z%Yv$ti|k_j{2%tzyLXQcr5^z;-{ zrVbZ%uatz;1(@(AT;e*HTAC;^JLk>)QIS{Z4l2+ZHi9t4l6TkaZVkzo2Ue{jS-#2eUzFqx5Erk6^q49eR+;NpUa0Hze_4==_V@0-tbXi zR5--?;^uXlmbK^m?A0~>+Oq?0P?&?n66T-9QHTk*TOu_g0Rp`KyqsVaK>{!16qVw@ z#Qod9|N6b-{IRpkpMF=sspL(f=Ii{#whTH0Lpb5)V$qKZ?5f)Ldp6_L9FYs|#a2aR zXD=+&T>zI2VO|e>dbd;aBFZ2xoS*aMz|ADWr1La6WrH)eair3N8Ya)zwEYP7f|i zn_1gEx?r#V)l7SL{G|)BST(mchQ>PR#g{aCI`}}#wXuuF}Ko1ew#P3-cWu^#( zIl><>xJ%-+J3*h7WS-VxU zFJ{6WPMgu7DeZhee5T=gCN2cf7~;T^sRFJUYy>_g%j!|OT^!{-&!z?O&)ytv%v!Hv zD@pyqOO@s~|L}+J-(}f9;;%n{2>ZwX_)R^BT}umD8pn>WVa>cfgE7lXVCHTV0U5O) zv9opp!=0KT%f++Y4-?RM8niMVLx8|`bEUPtjjZTQe~f&_q6GQzu;P>()3%;>UpvfG zyX$Bkj){uGNqo+ zsUYK0Vrf?m=gpoQw1MvtLlO7m?l!}1g0I8bmm|$vue&v2Homagp684iG@rE2aGscF zIVUyZt4?{DZNd5*Ue3uuK*h>N#`K24BVW`Cgvbt0O=b}AOr*_`fh!XvL9&cW2n>>E zzn;GzsXoNxt{MBV3gY7#s>Z9Fl7?W)qUm-Yq;Vk`AQ=yDZ;F- zRZ=QS-vB0oMl3lR??%i0k%@ASHtQl{c~2oGq!+MHIi&P;6j7U z2lsHzZVoZ`7&la`TQv#_Ygkvi&!~1GdF{-u;)cz)h831`(N-bLwYlx$W4J`8)jKW? zr(E3E=4&<@UN@8Tr`|R3B3cRO-8xrvp2@YQ2vs?{?!Bs_I1Vxrr)JJ!rkCeg-TE;3 zl1b`yPQM_pUft*ApQSY=-S6)j*bw=so|&rVdT9!a0WWeCvHW)Xa0A-@TfD>al`nmbz(D;tM;&3G@IwB$z;xD zln^kF%yObvKx8AT=l4`V&f56%YTwFstoz2vbq_;FWP|7~)6sNxX2EfSd5?++hD`yt zShp<}8Dlgn=9}TG z6Jr~3{aPHB5Z3|LCv+wxVuNJikCE&B!&GN$rajIOIOqJ5WDibu*rNzn1e9kv*HL!0BpI4r10?)JcFA28ik*WY^cVH<|)nEj&;PZDXGLdB+<-A=@p63Rbl04L? zSI3OLfa{RnOd-H(jH*-hzZwry^~~^`r#wuv==g806ojmNZAO3-_7tSR*l7!1h_jXi zRZ(ANFlV0~fJazu&SW8JO?r_CY>SizeQf}&?rRvdYy=f$L-E#Tx8K;5+nwqSonxC& zs=`gWqVos;dSsb!GvlHRsg#kKEI5T^8Vw=J-w{AZFbjFZtoyhD3%D_5){|o(ME;!2 za#qn+-fXH0sfTBPzaG{&iF=(@xs%yRP%HHJDy*#CH`77+%+*n~|Gix4(EWA2zTNvp z!Yj6IvLZLlD(~DHS$v4)y}=Nx@m<|JXpO-|`aIEGd(`K@V?kUOZ?+4tywQv%N-u<* zdo(~?&@9{FKhtEVyT8FK<2n~cWFGe^0ZHa==n8z4Lo05|U0f)26d1eXoGG?lg>$Q$SPMt7(%83Q$KE>TV7$;Mu0I28+I+4@`HJD1 zL3AYp5vhEJ4Q$6#ork|b50zkW_9+)Ygnlm$6CDI}W;4VW%Uj>6;06kqZr+HuxfZJr zMt0ZUs-*A@X5?oX*U$3nx*`!xTWKG_G@IEJ^@UPo1pPO=f=6+kzSfRw4;GZx&p-e* z_W58YA_`Hdg^V6FoG9^Sv$X^;p+ObQwXa$Vl?d!2eZ_*8$j33PsLt^DZLo+68D#k% zV}T4gmN%&x-LemYsQHI?bagc=-~lRhn8q1mUQ3)*(2;XU77e=zCK82dQU}I;pW|;d zzxc4+LMD){XFiotGS$Yb@x}yzvd25Kp6X(~m(D7~A$i}T=`O5^28x@^;SiFNgb-*$ zB)emqy%w8%$;En{5KIIB?q>QrXSus<}6sq8m;i49>Y)BN_KTRtcZkxQWj42CPtx;t(-c)~!7OY!&mW zcq10dHMo$>Swfpk;7oJJ9Im+_&hzF*Rpsy&6@+Nai&JCtU|z}97Hh-FnUq~TjdG$5 z3+b}PT+X?ts0phX)m>xHUIsD|preF60~ckE+;waS&hG>o8%^zoSw=^USUgyN+fg*M zKSe2W3u}1h9zXrnxAx(~yDa<1$uNHlkh1mJqH!d&L&-E@{Ux_(dI#<1JS{Va0R=LA zujgVtw_CP8ue>>zJgRh*D26(-yk;p0;942U9KBU)qNrd4=3Pga&F?{K`n=Zp0Jd*s z^R=L*y#cnUB9W zLpOx0(R$@nQ|;{F{(MRP$J*<`b$tE%3TGgZGbEVA6EYe4pa*3BPSMQ9>4v(qCM)jhXsc+)^Tp@8nx zWOj|M0viM)nC^@9ZlNmU*@p?XU&q=EnA?Jh!m~+4!|*F~EE@2nDV$pYgOF$q7iMB+ z(yiO=#w}U_CW6H+(&3Lm$VNR7+^xy_)7h6D8}44;qZVA?XC9fg^(Ml|2>?kld(ZJ7 z3|txKICt?2O_sNEkX=Z8XYz)*fy#`h#*gLu#tmkACZXc(z_oQ9P{Zo_ZzSJJDx}l| zYLtT4V&{tQp3RcjBf)7N59iKs-%v3Xyj}yD!#$^&E1FTdSwGV&zP!86+V9COl7*X=R*d(c>6@IhY%{XBJuk z*u|@)J9H@KiHm=fgs%BxZkmgN(5vy|V8Hcpnvy*SJ!|X{v*V6NVyjJtLU>*?$hM8u zc*b@$$$4l@eoD3lIS8^-^_HFT1Yp*PWudQNV>N`6<#l8gEehaAI&}FxtF+ELrD=r z&$q;p(DT`ikcdhO6OQcSeI2|(dILx(Q^BU;Dur!O;~Lcri1!Ud^i_`fof;#Y*mT!y zf0V5%HnOSAUc&CzKkthQ{A1G*J%W(`{&3+VU=`k$wH*Vwc10a%%Qs8l|$8k;!9u_6!DogXH~ZzboeKVcL=3 zR-?Qay6P;5tV@VJm-i@^o1T65Wf1DCpr5H%EapDnKQ*vC=XKT-xb=7lW(FOvJu~{g zit`y+o=WE@vT!AOX5twVM{0dB&9+C4)=Vp~%ohsl9xb3cQDq;;d@unMGe6^{_A6bZ zX@GoS0S+MF7}#?AVeb+f=a-v1{Hcr4K5pV-9AL44!|e$T7?RkNpNBXb4Q8F0*unKM zpw2_EI7IWsj?y$05D(s98?U&-w5`u8~xSWxn}VHD3mVm}6DSeK4f z8~2rWLzxFBQ#Vh|8_qM&Pz*javT^!`A>wM6EZW^-k?--t@M?SLlxE0QRB+X;cDb{hM~s=e$ikNR*Q!-+PXjD~vg>1J6ZK zinH62`!h&jBHpUY|3;R*!khXToZCuM`_;Sg*N^S%pTGF_6sv=bHeH)Y z^1jW6nPWQ+M=~HyARdkWbcUZQ1FdbY~I*^XPb)wsIx#29%FOY^{0C^zrwXV#sNNtRW)if9vWkC zvw1$}en;alz7F6=*P|@MDv#{Y%wU+R110#rCU@D>m~ z<8m!I$JU7aj%;FpEjC*U(=Rde#mn04b94x!na}%Gkp~W*9mPbQ#p`Sk( z8ZOoz28SCwjU%Q4T4raGNmbldcYpO5Z+hwd4M}ih z<}ji*uvJDDI_83znl1}j#9664Rx=F%ltOtljX4>T#SH)=S>dLUW@m9XlhI$p-)KZ- zgqI~rcF2Y?`i;%2jLj5yV*Nb+u=~GfrsJ)~$0W9^_ak(6vzfKPjB?{ljgXjibx|C7 z!x~F4fnNFo4!K6ZQ>HRAHN-Ysie$;oh~}QmiYUlxL;|D4dY4 zC_T_v;@=uog?poda4ls;pee-naB6Z}I=tKNrPdXs`sIGQ9BDxo%t{rRh~&wuyb zdl&j6`TETl-`O9(oTs@G49$A?h9U>Np4;c&m#I)_;FcnUV(OwdomEjATRc-F$SSsE zl~HQK5HZC5=?E@70lXAS62BT`p1)4>xQ{-5YXfdGw%c?nibDf##tIb#_J-#I*U{K( zNw8^SjBB>ot#=V3zX@gbirL$SEFKlIbryWhK4N>~nWTu9i4#YMZaK1PGr2{*u6UYd z*!8NteVcp*u+m2F+khrf?U65a+Uq=gjBG9wY8)~S(3%Wjhwnd+=<6_{J`$sR+`J@~ z*{l2=>x1Dp=?`#!C#WP)(!7W&WgL}&0y_y0j*-z5=oJ2-sr2BjDw~VH zCncLD1F|;N!9}|_tfDtBg1-$~6gE4A3^)X1Ma_*_b@7d%N(gWO&PYRndgE26P0zbZn$G403cJPc-ipuS1e%Hzt7ce%$3?dpDi|*H#Nb zzvN}vnQ@GRjV=T)B%%dbo21(rX>P@homcZC4*7hX!FYe;9=RIL;P?WU?+cq67N=>t zzUV+iuMCQGMh~ILXx;;F#xnNfoq5j<(;y~(R(=PEHw?%Xg`s>06vFKSWc~El?=16= zf70GEt*C~`Q!25B&QVLVvUKuH@vK_I=6#KE#WPNh^QiNS*l@k-q%(sY*9ESo zGU!xybBpOPKkWHBqXNDKcuh{v4yqNef6hS48d-}!L2b3hMFwQWnp-j;D~zvb^d=x6 ztASnYbHxCB&r*-;n_=`7vg(tZjaY-1W}~G(3nG3NDE-JfQn=mhxJbJT~RST5xUr886VcJlOiD)!Bvcz`kr^_BD>|9 zkX2O+_`LW~-k}&hW%AVY^>qdSQC2#<$IX2<(~YTYw!9X~-N3?|hFWxJat=5DTy~l6 zkR&7IxfI64ZWlwPrYZFfP;m8YZXGxjk)s2o5tnL&y39a@#(D4lCyi~q`%MkZu=344 zM;hqdbiw*I%xWkmBm{`z2c6r%8PEFB%Z#p|4v51*BdtBFW@T<=#cx#BsUomOM8Xge zXS_#PG?}ld_*w^SWOiy7I+3r#>)fV^XVc|nIvE5thW$ObXuTW1GHi=x-{Qt!&F6<; z2wz}hj@>gS2YsAD7oe!S+0Qnvv^zP~P=vP@`la4{(-tD(F|kwv8{jSvF7_?8C-O z^M;B~9^XOJMphg~Q$zdJDTkXq!9)%nv7b}dlxS|X8fBDh^S$L+V4iV4;D>J+@MLh| zGCT{b?#yUjY21_{AU(lld#e7(D|>x?=q2x8;|M#3Yk7QFjumASL9SDHU-IilyDEGD z)C#UgIBQw$g8;5Lk$6EhYzUQsn;t`yeP}~Gxlw{0lMtM~a8u_k!@j-#ttPA_muz-R zm5mP<>LL?a737Mk+qUH*MI8|$p4aIRM`mu7`<;@cs@dVT!6XaxxS!T+KWi&rdXR6>DU;jgr9(rB`(kl{%mN81y&+8uSq@53IOxQ%r;$`G7Drd^zeOI6uXAUmkspTB%;k!^VGyCu^%l=V({g*#H?T=qR58yqk z(j$Y-FfV*n$%D?P!63Z#V>F|g%Zmn-Oj}jtMnW+qJi3;gjhizk$x(N%ir%k-nGzFh zr{&Cc-YYN~Z&DP~D+=i4+&rw-cWY0XGkcKWub*a`d|SYs_|@pT&6%AI<~%IbdOy<0 z*2w$OmW;Y>U^SVQg0|D`Mmj4bVPSP&4Y;Pn?g>zmRhhRS061%7s)AjB(VXb}koU=G z-fLu-_q98?FN^u$V_Ft_$BmimJVmO6)!AT9Ul?8+yYHt+qadXNt0xjzvsDm&+{uj% zF+HzCs`JKTvaLo&ArKdkB|cS$CTsaM&koJ}E(k7TF2BGi^YaXN{|Yaor-}i{EG>`^ z@OdI|7mHFy4A*-M)_0Q{ZZ{p@StS2f`!v-ICj!?!joNW+oCyNJi8zeAI?vX<_fof{ z+6CWbd!ry%#kXok)dk(f;FQHBklgkVgOG9M;5uCY{X4m7n~6+K&+uM0?CfBDJ*kZv zDLF&*QZ6-P?~hR@kgR)n)I{zJ=mrrJwt1Sm5#!4GgHlT z;Sv3F@8s!972x7Iw$DN_d`|N~0<2Pw^YT9%`OMuSh#T-E1fXGbFA5t=jAv^m@0DE* zCEfA5?h#g0j`Fz(uMa@YzbHeyDDQ`B)b@7$SFn#6SA~4adB!`1ivssLg##J3?4oiK zd*E92;KFs=#YryH6v#M2sx7<$v>anv&iDN7d&B&L|N6&Izsc|3s1BqdfR+%R7KPEX z3eKfwN2PNpfK-@6`9KEEllyjqm6t|9_TwRO4ZWElc{J^Ax7Xge>%o zQIP5}vdfc;ckoWlho9TMO5oq}`av@@&iY*{tHXZLSx=l*_JmGl?2Pg55<<&`%rW+C5P%`mH?tBa9x%1R3%gHk3_otB)Pa$T|7 zfHWy%s>0@o{ABrgMFFoiiV(8{p^8e#b_{Y;N^XJ;<9z#q-F$iHAMe#ExV(s5ND~A3 zF>}+mK!;fGTr{1-&ZIlDbCK-|Oz_>DONKV?-Q4f0q4xF;-re73pp6bUjOi#vmJ0(q z*C0yU=&G5HehxqMphTmJAof&HZqv-5qb7$4vQ%02<@%Vf{ZR=y+SkUdxnt@p(g4n)Eu}lhB*L5 zq^V)ION}xbvBh#Z>6N^@*M4Li!X8BA%_ciSCxQvMW znDb#aaEV?CVx2E=YtFS+y*$U)_w-bl&uQCmY~7D1n8Xdxx8m~}gOqJYkDLnQ;=&>E6G%FHT* zh>{Gq)e7rp4zF=+LB_{9y~fjC){RScS;7%VQcTO9`nc1D?hy#DHQ5+KejU~(riArm zT1$8usoltz!JHfRTwdd~4|*>Zxs^dMZ+&~XY|L5d9J!$Wa)`#os!O7pS+j;EO&>(e zjFyZ#yODaEZu+ET;4WsTX*gxJv1)WBgS8y+B0B&J_Eud}=iXhL{wR*&T%@Xld<@;t zvCVo|H33l1L^aK7T#J$MElDyhD|UvvEa&XzcQVSt?7#(nS3@CGZW4=fq7;TVGGPBW z5CIF1Glq~z001BWNklzr~Mzl|GucrRDF@p|Lm0P?xo09=0|Qdrfl!el;7-e<57aZ@gQc_dgi#WxTZ(d z!t+5J)Cg`Li0ejSM34y?Y&x?zFIf>9^VNKCtkjb8ro7l0`7BZaf6TbCJfDbxHQqiuGTkOmo zC-&bfIAi8Ef*P)PDkj~EwpKSo<)*Q1`v1(D)0*&$v41j#wts@WMfUCDrs))z;b z8nESPF>vanWdP;-XDv)?6t`+PV@3v!Cx{C+Afyx{Q2(ucAbYdqrhP_MhK%6_TxVYf zOt0u-tU?h_uFqR+9Lri70SW<^-S0MxgSlP?J6HkBW1n>1O{02)YZ#+` zE~55Ok?Lf$i_F&;+#u6?j`w+_;>$I&Wnxn{?2hxx zX}@7H{UgZT2E{q9spORBoNMUS`P-V%b!Z^b5j2@UC{}X0ss?Q$LM~k155C8OC3dgB zC&p;1ySG5V<EQ|i>9qTXku%zD95YDY&A)!QU%&a{yR2~X1IiS}jS626h*#N;>f0at#H4`oXa*P$ z!iI^BPDGA83mWrKz(%mR6ox4;Iormhq5a}LXS&bS9|^GqhX(*2C2w^(lQZ7+5il0~CJ zb27nWqRBl+^9^MpZQ0A9Mt17Gwo4HzBed4cCyUg8&Uh8gNJn9S?o1m*YO7(;_Hf4A*rRircK#F?bhr|pf^KU#h1-(Fgq8;2nZ1l-kdrkhaFE9XKr`D zYED@Lu#n!GgD&wNDpQXQ6NZRkGJzmjBjfhwS+u#Wjq#Xi4GV9$_>DRws>nBPnDoxE zyftf~N~vTITAz!n-m(205ItwKO_=kwuIN^Q4F(uo%nsfeIPiNLXnYruqGA>jd_F6) z)B)&YNI(nCfLv^(sW*%p(8kZP60oUlbCDvo0rtylECH{(6jL*;njU%&ez*(h84e~? zaty(4c`JWEO>k>OXnFPv=Mm37?1gFT)E&~LyX?zB`kAuLnY-C%zj~iz{-J*T^0RN# z`;4-`)PPY_kcaBWk?bQ7SU!D(l~J zgwu9cMpxgEYS-f&9C~dJKeNz$eqka3HorrRm_(R89%l0i_ws3FJSS$BsA2wgVxhvS zFNMh8R#NDcM++PKZX%3gr))VlA49F8uQimlgK~*bSBDvEl?t$$LNvB4jIaVkcO7(o zVbbjDB$s#GYcWGR)ey7poncxY-Wka<%kEeF8nWlpG|;h4-_|++I(M!N@y@l?4gkX= zeJo{uj0L25a=>PF)MTdDx;ifQeR?d0xnwz=x&6mD(N6`);<|fUQJJDrVOSmoJ+s1o z?G4!*iSwni%F*Gy%Z+meOZ)%%RJ);P7MvQMPV&f%Uy&7lJlR;y1gOyqm~UZQb5;CtXqO9D+wz(D zuxaL_3&{rZke#_^nkmQP(4{UpjwCd~%6mjI?J_8!STx!w_z-qxC{096xMm*JOefB# z3@4_Fkt@N(4!?O{!~l9~(%{3Uf`SWvse178nTBA<@*K_EXc>bJW>wCu4BHq;!VFD3 zc;8e9+}y_^;Rcx?kqYu%-tWkc6{$#DD8}CE4A9(-ce96hMOD>?j>--hv$bS-=4UR5 z3ZAfr1p$Ce8bL=6su-hDeW-{UG5?mTM!{~mYqmKAQ?fu21QaGSKG1ADhGu7=eMzw_ z`(q5xlC8TvNHiuxG&8^d*YDqD*+0;)fBxdTWGsj8xq8m3sOLzYpd%4ShR!+#A-|Xd zWh2Pseyk#M?3&5-Y}8cFRHX|K!IVa>FSgtmn99u%&QouoDh2l-23mPua)zGEd&T`6 z5c2ieUVGT{c|Oyerzx28)ifhpZIeK1cWA!P2Of`C9&tRcIH_@1;+=Opp)!kMIZ?B~ zk+>N&GVmC}sK}{aTd`RmQF{+`QHBO}z>G6q+k-(d*z4yLR2`H2Im8)t0JImt;g<{> z|J-J!fgz3=*&~|W>uKhFM|ACxgewPoI<@op1 z_?q=9mO>Dubd0lR5(^E9Gv?Wip7*+R4@sTC_14*sUTYr#I%T}rCA6$P!o>EPeOkaF z9j_@Wv5KRnL*&w@~yL0!>H`)1qdRP<9fAhO^TR+ZcwaR2Dy+Pax) z_m41S!e$!gME3j$8+^DXN|&rOj3be*xtk%b-@1m;w~>xg5_D{;6Ea>7WD`>L&@5_) zyelazHqB}_Hx*e<$dBA;sQIK9(;Flqt0404O>(97t^jdBj=xdv&@yXWrWEFh}0HLl_HP89p~GtPHLGoqyK<<<}u#pc)BRhLS)^I#95WdXM!NlRlA7+d?8^k zaZ%_5E@asW_y9L>1@;H^U_nHktNzH3^m9s54|(P>@S@L+r{K&|Ory zZc4praO(@G3wc*4v}n%mVr3Km1KnUtpdCG*-E-lGB7(ZWYD2)lv~(IBZS-u8?sQ1Za0@t5-k(&c=x^* zAjcY20Xr)TDZiSdFac^u=jt8$*_qbv&--_IWi% z4?k|s`#KNVfaeo7FT)PQd)PTo%(TOX6>!ibwP5tl#F1v(1ovCyfY$wFW1=S1hd$ zA)!_Vn>;|g-itEU2!Osv<1+-7@2ILwppV!aWuqHHWvLXol&OrKPV3JUIerK-$m;yM znE=3eBp72o#Xg-Bx;G%i@TR~-Bmz;|BTMxfOXDV4zPECNr3r#~aA`i#)J(JI2HHQO zcs6kjt{XRQyd^_j=0(w^H_F2-j+@)eD72$(rvz}ysuQH8q7AzlRP#HhU+n;`7^T7n zBRX0a4_@^icmqu@pue-jTKzZRK*USM?S1YQ?)%ovvt?t=w2SX{(k!C2pUW{Z!j^r9*PWv)|mn4adgkuGZ zh;G6LZ36q98#GX*Mm_VC=_!sz-<|WzZCuIARSo714PKn{>G}(~6M0YI5rtI4k^!JM zz>FEWfa1BK`lxOMGL*N_`3}SE) zzUrC)SsvgInC)&IaiivM zcR?j`EBdTwYu<_5+-t$sGAmzZaD`9Hz9y%+S-1PFJz+`iRzItG(}2S*OUxBGb4If+ z^7S86z+n~WXqI6$_c3Ag(a4#HOJ9{dmq+&|*gPdl&6%8WbCiS^hjnh4LVUivL!58Q zm;d*)FaPvD$NWS2`Y(TY+W+;ZnUQ-n^BZEFMLiEWmPaipr+H33Kl$BadG_s@Th{D} zXTjW?fe}QshhwpaW;NPF^X#(Y$%t6zUVW_~EUdD#1P$n*dt54Pcz0ca36 z=QXK!l1$TcortpF-6SvYb4FqVc~4!;rC$$;!I@+3>TU8x8hZ*sEV%*G8mUHJMw~&N z6ng|L;A9fn(Tx=i;SEsEd@*)*SZPn$NPBb z@vKlIJFM=pCTf+&3c3K3^m$V);`=i=NWbO7%ngfb)K-hweFfc z&oI1cs{BTAU{%(pz}{joXPUXp^FL93ZrKDB>rLPgMttDC8qJF&WqD0w&mddLri~`Y z+^fqov-N3{Z?3O=ej#sVmQ*q+&91`k;&RVT-YD;Z_qq1gcpiXXL1C#?!zhEZ>9+>5cw(3dUqZh@VNB2LyP19VtM_=RAIjH11G~)elJ5PpO*PWY{vi?^X7D%k{(Oq2 zjA)|^t($O>ZqAi-uCC^G-sAFl5A?*e%;&4%9apnFr-;iNxrmarYQ^|cVnN~=aoIUBc!0{RHVr=cU9yDn=IKX=#iY*iiIF4 zaFj?vTt9BdQ65KQa6~E^muacSpt!*lS7;{&j*qhEBoF}VLNp#77f|CS>fY5XuXojQ z-Y;Kcl=T{^Zz^ zoY|yh0=w$|E*ayn+Yw15L!GnNUDw`%+HPB(@&oL*6K`4NM!XX+n7M?}N&91X|}n-64l> z<>spSnB)T6{e8H$H(AlA#xqSs3s&iPg)6%IrkFPwtHZmPV{F;CF!&Vxz!Oa=#4Vf^(EDB?M@aN80em%bTg9yjz*x_Y@ z>w7$aAHhqB;KlH3{aIZ99-d+)JJ#e3a~-0>8DpLaDKRTqC6X5>14B{Ee?%-zpk7@Lbl4lr@?vB?H>TVOb%t*$UWU!8 z3Rq%!*0^)jPUdGHVc@2aH}&sIGAa$d#0Txx-f%G&dxH!Q%hYfFZ&zjKI(m9cyz zK-kP-(K(-WuNj6-ZX{!?#jxUS|^IqK|I zKzlS%hfC^hc4Gv(%(dp#xD6}ge?v4PD9?|`v+!8R2Q;51>g(C5k8HV*V{K}s;oM8R5fa=nH0XTf>jRAQB6%-iZ9B&4A0j-}kVcVN21a)YtPr11 zj)cKIL0~9%Q7$8zw(25k-4{YdQ-~Yue@%_J4KXU!{wzP&@9P>iH$m-WPQ(q{~lNiG@9jK;~{@0shgPUG#*+bImj_0AXaRIPt8ThnD= zr|(ltzd-g$jX@_5iXxMb+k$Qg#yXnAvKW96NE3u!d*$L`6s9@2h0`|5%!fB_++Nov z8VjkPr9>oOeHHfme|?Xa`v3dupTGDnDRI<%7|ZrtHJ?T<{$k9di-}9|XCpU$mMQ^V zT&X%`|4eprWo6aOOv#@4ENslnNM?e2FYikT1T2%Tq*{X?{CH$Q%wc$N8a4=VjFAw~ zw^wt1WW<*IS#~4t*z{(@B*S8snWRT`$7K!NdM_T2#d=BiMo&bbjE9dR=!d{gMkf~d@u zE|xGyv5a9Q5-NR2I6zz#jm6&Kt7Lw+<;I)=M#pEfXrTg%88&IwGwxs=Jluo1V8Wjga?jFgLA39L&+k zExgeTcX_qtGzx9dr`!-zE^=rebE&GS?^^c!^3v-(R4(eC(>;CoFl&*4*E=?;k!H~h~50f!& z*6mv>=NE$H+-a=EtGI~G?kr-iWn1WiHdNxUzo%&_jjF5rGzA@jP8mJYUx|=S&6a z1PkHKgnDk25!e`X&Z=yAHfd$wh-F@u_9%)V8C`=w08Ji01UM3+otEM&&C|QrS`8ze z7LagBc~e{;MfO=+Z^Q;WOS8rS?KAwxpNlalq+|t~To4rAu^5NJ>6hg7jV0;!Dk@Cx8Up*IZ{L+=onc?v zmgHINbg80rqJj}GxtsSJ0W;8aAv`m^%pjt3SjC8`hN^b=blroM8jaE-p`t=c(qd2E zG(RSC>##`p|JZw@C0laiNH845|NpNYnJqcHl7>ynOeCAy2aTvVwrts5h1C{syvxUAi~|l-Guaq*=BEkm-ic_j6D;LFPi2vf>@noS6zD;n?-%zl<+ za^DO0{{82NPBkk^5^e?q1>P@KWllet)E*+%*396+uGkeExfm6jHIM;CZ|$JQ+|kya(4g7HVZ6N%V^g z_VjcoMHA2t}GuC<^***({+p96{V!<7fUMhl1i{fryD z0FDS`CMAzm1>j)S0f7yLOn{ZpUia#Qp$MySL)%i5*B}(U!Fq!r@DK1C%Y2#dQz*_U zusz9veHF(P3slTxprde1-5YUX91Y~AOtw5UQ#mXWp`bMH8AKpEa^~3`FHM)~Yg!{V z?-{*ojy6nY#+u3wY=-tz(bPP5nT;JBe0k29HxLYB^P47APieSGCC-w7RG;Nb&NAKYYbY{da!->mR25^Y4F3&uPY{Q0yrx%RDi7 zp7)+ItHuqD*LC3y@P{yG;?J7(U+v1@0}Ud;FU1W zhJlem&R8tZPXc_2Ro&N>m@?O1BP8M8&7WH~BZ|y3KkHc)GrM=^S!h3FH*7E!&2STt z6K2qt0%$)st0-#(S|Xq^MLrN{(0Hp6=w0P;F~M)0d1KG%Iy^=ZN4Fq~nR4Dadm>cN zoW*{Qhq~q88PzIhUBIS$h_!O*^qq|R?A0`vv$Jt%9zhNr>(!4TR1y}(96ZOEsq?>M zP<3(BoS|tP5cU19v|v@oHG+%I%LW@n$?uVjofQpwse?U(E>;LZWCdbJL@|(Kk%WM{ znXcukNrvLBVHe&!BvnAUy`MA1sO*);MkBl=i^WmJu8S^4#a%%Z{-evIg^pXXl7oz( z-A7@qfch|wcNP6*Ckvz+SOdrkgc3|LI=3vLQGZTxea)<>pE; z37UC6aTu~uP)z=4%&m+Km8$v3yYP4=wU0m7S)~Ad-S6_WyDpLC;%Y=dvX~Hn6=?2_ z@e$X+h61fz09OOGi9d~V7w9UMC`^xe$VdUx=2>aC%y8tEt}-i4I%;>V_>oM#0Qzp1 z%=_Y5FOd6ZY-W7+hDaqYq5)e?98yY=!RWN~t+20nssC1X`Imp{u`P&Zd01)~(9{b_ z)x~RHtiLhp+9~HLqA_Ol41lqbNmQnd51jZTGc5@es;#(YM;IqtuFyNt12}okPrmUh z7x^$U?$}`Qq~F1Fo=fSpfc5d@D#zw=74&oJGmKfQRlLu68tgQyjl)onz!M1p{6qG5>mC5RE62+}5EXJ!RU0e~ABKC`>4fgZHkzMPw}pLLZOPlnzfF|unZDC4a=V$A4Xnqa2sf##Y8BITy@ps0mKI!H($YOIkrg=MF}kj2c%MN)BNY{m<2-UXe)MCK~q zW~(jlA*=9{vM|%lc!|E^V&{++C0kV$M@yzC3wgShSp2$$0@d>@vK->IVDOR-YnO70 z9yHOov3qTf6A?HN}9QM~|$XnOH+!L6SYQI;+7`d`+UUk4yCzd73yM=AKQx0vk0y#dSKd zx|AiHm_1^^_x!4z;yF3@PNzaH&zk1wK^ILOk`p!?{Hz}7r9~2&^Fqn;>*_O1g+1bdJzOtk%V7&MBK{dwACS@_2CNieev&6W7iFkdE_}nkC z;b-o6W`;4c(OUwYz#=~c=Oj>E$;;#Qu36oYS;_OPkR{lqc|%qU4PxaHO|x{SaEt?s za@oOZkB5a_ZA*+^+MWUQv!_>5Z2jFeV?3j>&)9S}dIeO5KQoMI6@2Sm{TN$twjJ7w z53bbV5rb^=Gg5 z8)?srY_{qzPBYA`GIHcx$ahbQxbQm$5mX3$1S{o~ynXP(&SpK{4v%|eOI)*IxHz`5 zVNzmlMN`m5=5z*0H$x=!+V&g;Wkqt#NTX^1AsTN`gU9ZGpicg+T$BsP`Z#mwGS#ECtq8bVIfHfhiW$-M0Kq62kgt)=?+TfxeC9yvvS6j-? zo$|{Scp6P&Mk6oe*>b@waB(~YP<5M;U(&WOO+t&UCY&laS~A0H<3NMC>V=uqH!raHF6 z{&=^Hp-1A9q&#G()|x69`vEBvc#laBai7L1kloI#=y;mP&rg#b!ft%$8F5_aoT=AQj^jEZkMF~Vwo(+IR(5nHUrOn`M6DG8B=$TRAD zxer=`&a7Q%&PgekSie9e#rPsq=XSU+w(^nr6!QE|&nehOJ5q6XvrpG5lBgDlXA5UH z$GtzUcMHmhM2;9jFM~4cd%%~6`3_8aY@(yeYdo*N3&4fVf8%?#4Bf^+Qf8P~#yrNB z=59p!{9^?RZcBXV?B=$~ z^4jR|?={r>s9oiH=a&yiMbSLG7I1t$ELMb2kppIRevy#&8#x3dnx6G2aPSUO%;{*7lG7vo&@`Q_Y z;bsK4kQwQP+l}#ad!3gkD-ABH=nKA1wN4<`s8pT^P$z*|UeB3jkUU0JEkyZ#G#*jv zp%{g+isK*t!|j*9`thrK{TqM%{dYgwAAgwP-9|aT@~oWK_k0pNh^!WIuXBWv0gcBE zON3dT3AM(#APH*=ALP*PnNUG!s#jCEU5kmOO>?f{tX#53Y$aWoIS$fY3k+jY>OHg0 zY=FA=JpxdDdYXY9L0QP=kWR5k)6Y`|ZJ;|sa@0cfBQ_5oNO4Hp>G&xy=2jA*N`Wn~ za*O%%z>s?$)k)y()TDsBRy(jU-IAe~`UX`(8=3hdM-6)z$6}e0q1btWJRpq_ApSX* z*Ey4$R=ad_z z;JD`~#G~?neeAh-w4_8N1?EL5qhheu2vr0H-Loo$57dD=IyEV}E}PU+jV5M^A^d+} zbxn6Yj$LZf1Qe;!Iy5OFlyH>5kAc#7t5FPe?^;S6K--r_H43~wbBLZ{Si|%d7PN`S z>5Qoq#L+ddZILCKk;vATaPZME+PE9`q~CjES4GBhLS6;a#8QeH@r24+HP?-AV1y$3 zzlzf29vBLH$IOT@4uUtjjy6xyGYbAk}_RPGVr5@*e5_F=JS#fEgTv`e=Asx2TJtk-){ zV_K?cU9W5R)YP7Un?XnG7*sPV z&{nMVI46Gg;#ZYl6cq}<6rgK0wtE0w#|AMx%}K5MTj!`FQ@CTlM2`?_paP~EE76`v zDCAk#IW<+dny5kE1>8tYGy8xrx1z&o2;ZBHREM!5fs_qu40hG?l28kO(}gmk znG`Eha`wE*HQte5D^+MqvU5#imdFw!vmDT_H_8BOn{h(dZqDWxFr}D-T_ovlBEBIO-)@9-*O^xg z>|#RYTqm;$Mx!4zeWU-PAuXBZDH_GMT&Qf&f`yN3($%w9g&xVKi}{k#yi!LS+8d{0 z*DS6=OuNyA>+ga__qoV1YjRSpaoiPb(k_BYnjPg}-FxNb{r9w?#|V@Fo8-^qUJork zodF5TIi&(b7e@#=ReEQe<0^$n$@v~ZhvAhz+m=& z{$F1V^WXaG|M>a;yCso^MiKBXL!9PPBj^n4<62Trh@9if@?^CUxp=?T$OD9D$9iA3 zJasibBg8UAX>(wjN;DjD^D_q31i_1g&;Jpd^5=()aApl0S!rT-wv^M0FU_39EGM^R zr+qC9l=v~M@`tGeu%+6u@!!B$nyq^PmiaXN0o+Cy8;r#th){`+%CGrle;D9eLm<#p;B7dlL@3nb|TkgvU?&M)R z?6|r=3wL^E=T!WgG3!XmAST92>`-~#(< zXLy(~I*rLQH!FSuv4$T{b3Co-MG%3=TBiUaqLt%1FXLJzK0cU0ILqt(8=_9Vuj$yw zf%_k~>O5YfNd(wRAj!*MFaEt_um~=>EPKbS_kRG{w5fhxZ~t3oypoVTVG*8W-71zy z9A2t;El8M>GmC$Bc~k0VK#Nf2g+EY{5QzvkKOfXhIHAZ%8dZs^I=h6XNAf)^E{M%owTXEdJdT)2V=hksAl7tY1ncZ=3bf=5wWoGrkPFG91gQ$SQh?UC#mM5fU~I=r_ssP z(sgan#akmQLk}orlo{ISYBAU=9>d<}Qcu&(ssb~4FXwE^4&*?Hjw!Jp){mnk4+7L; zZOt31hzup2Wm7Shr2YP1ezG6_<11e3Z~65Pzx**hTqndg`olxb@i%AC3}YDE*8+8) z$0f3|AZt!hL|#E}-p4!wQ-O($4d`ZyEjQT3>G!$rl_R_))-y=AKgMwtHn%g%fxM4T za-a6VD!BXh3rL4<<){A-6B*f$K(>pFKw*HGWE`ZVG$rp<;2G zOIm+Cu2mZM@MqICiQ&v*H}f}$to@F;$}ZpgvCbMhnP$94tsl9GG|PF=sopju|AGGD%7}5n-?f82;lz~T?@!sop&RI8v=R>0KmOqMyDzuwzuDK{ zfA`}{CM;NsRrG;24LCI;moo^c^Y&40m@+u6F>q0PCdBvoCHFfpc(OrRF20{(PoK8q znwC>@jI&7*QeNzSq&AK821$A8D-37PwbYT zCOcBKGcs0TM@{p$BhXPH;o?ZKL+S;5H|8GZvgh<|g39x-u}K-hBupA@x=xfRdAo!_ z?k2~Mi5w{M(5%j(Mz?R@Gug<7PLxEz=g>`&6G?}tVoUxhGuQIjgzt=8aDlMrPfeTV zM!$)uR@m`m6u%k&JxcXFg0B(YLzi8L_N5#U-U5fS=YMn8U+hdNyOf7a*x@Q07*@( z#>txAD-u>wp?97m#F2nw#)tFIv5y%o^Ys`-CDzUkBVvu&ft2VeNi@k}+(kjH*xI3+ zU?u-9W*@2{vSwZrg60>DooYgqETWhrb?mE}8-L^YZ7RptYeB$GN<0vq8sZq+5NEd3 zOCe{Fy}1uf53QP4o-xHY==iq`mXWj4OnX|JopZ2MDJZpt*8?NTK8#(!k>jSsI%f8i z8OG5xgXjqr-CU!eTka$_d?3nf%*%aK_YcB3QX0^K(Lei!?yTP{1~Kq3a!_}c_;^;w zxZW!Yx;ip=HBgbgn8^+0}nvsWC@VQqR7E27hQB+J9U|DmfxaEVi z1++}ZoC)y%>eT-8FSqQ!+1LO0`JY~EaaQJ4svedbbd)VJYscBjAOK$N-%5tzdVlkV zo#1q-5@|B5HPaSTk+?CEpSq}TEZpxBbr~3CaD*DHI9&4>-Il2@^S3Zg z7H6m#z%GR0%;s=B5;KM-P@F(1!`;v3)xcJkFmflU`Ndg_sh@C7(nMe>MzLKLNT#E) zhUxl0whU)1;>06Ok3KWC!5N`f*-R|`%m{3yhD;b7W-pcV_7_DBr&3Vs`4O!dWmCES8`~@ye`!JvVKld8R~$cOQD}c z*ci?;LSl_UIb~&7OIZ7H2zlC=BGUd1v(ETN7FEgV4gKGV2y8Kna+9?Bo)>1c%Q_Zb zv$GxWQvi~LYI%$5X4$P5lMUIKcxElpxe;4kzb=3s^;vlRvh%deS4U-86|nTqA(5A= zii|RH?T>R-^y}rGqpq73OQ|2-Obw2^W>{C9xten7PcFSwfJX#$@2>88=`F-F6igaW z^1@n_wIl!$h*l57<{#_Jm$aU*FSvsl4D0B z%u!}D&wO)qD7A~4hzlc?BktlI?$L&@P5wE;HWIjf>>EL z7mMNgTt3XIr|XTXt{E9r_q5-zBQmJ|Ik~>DIp-7il;5k}#twGi_u~vaLOOi}=YyBZ zNFb#LDRnL?K0Zig6MuGeL`{=C(v-4`PIzoTW!ULa$1ahiiYJJu9QGr|BY^3lfVy8H576t zyJgjm_ELgW(-o3R=9LD-DE8gVM0WBgDXndsW>vAQ7-?lnW8~Z#!`kEB=p@Kxw%Ud4 z`G(?om8~dNvt&C5#0cTkO-{_lVF031KwzaDfuYWK5+VaS8Mv8J7|=5qiYaZB19hV^x|8fwo0(V7kBnHFF%zJ#WPA6WOYY(%}JDJ4u`){4Awbg+#yjN6Dyq+lU zjjZS}c1jL_LfBjPwV7tqPm%tBhXb#etOyW{Wr&kqeb&72-fwYcl;h!X*ww>K?*{2< z*5l7w%n&7(gd6qskyA`YH#hmR(Csh+D1yTfo*LgR% z@vaC;F~giz#|NpNoly!Nve?kLa7p8c~*m75L1T+C{9H=Xrnem zY9?4U2A~r-qFB514NwVgLB8e{DIwG(J;%sgHSt4yGVqO#mU1%L!&_WOaNGD!tJs{eus z8C1TsFuP|oLkP%y1Gw9pvl3{C!1WP5cpB5i^d2CXaY3-v0yI%s;gQWL=Z@!sSDB%d zhDER`3i0{nufO7@{@P!E|J{#e26;fE`YD#g5N679tGwR5#U2?MGAXBYmeQuZF0A3j zwC!0<&yKJA?+gJ7)4nr4A~UOVS{W>I0nCpWL$}?mm&EnNHLaPv`E(?^nSNN`9nBN~ zyZtK7^A55z3gBW>`b8uZzKjX@TljJhm8 z+rq9|B|P?Xnib5kFweQ;yr`In-*?6Z{4|h}*c!DjKm*bzr*mpd@qiK|Mlwe5L(rhG z*9*0z+#VXsLEZ?lCm5pwaUgVkK%8eOA;r!phV_Q34Bq)}tX(P!7<51+0Jt6?ld@s; zT3MwUf7hH@Lho)xaao#9VwK!=?YZ8ENnri>Rs!dV-iu7V3xKmTaP59c`uWcq8n;H7 z8%Q+=U{*6&I~(+5rlFus%SK7bX^tofrJv8!?1aJy#DEV}4#FP7gz4%YE7(+A7~5nf z1`wkhZO`-aU4_IhHY~&@na-58z+k23f)=l{yw8VSnLOJ5a01zco!f?uL_e%CCGYez1)$T65mD!H2=)NU`?*PJ%IqxIikl36p zM>MZW2s>bpV(a2;PBNX#Q|!f9B(W`mJula<_CS)O4|Kq5UN3`;3*&L%A_ZVHIq;pz zX~67Pzy6As`fGpv-7o(1GPHt{cf@_r)4P70;Ln=(VBlmo_jS*VG`#j#agDQjD4IVd zci%Pd8D?M$SZftzPlY#Xv`=JoaSiz%>a0y9Q3@mQ}NQA1+*Imt*#wMVL}km|+gYo+Rr0c)d> zOB#a5-;hUDB?IWnHG9;8Q4O6J32kYbJUi1-fwwlBLD0o^;SLK_%_kRDGMW>0GtrDH zh#5^;@4E;d#Osf$9TA!hJdj*kn1l$c}!C89|~bc<$oKh2SuBp*sco|sC!kDX!{ z&9yE@+)xPx<>$HoTl32#&qM?qo*;Au6jFn{%gEwD$(vnlJ&-^+4`ETbuJq;Y} zn0b3qC@h08TlXgx{?Q~=WC^Eze+mXOm`-hwgc&IpIk3j+7VJ^5*pze`$)#R-7KOh7 zVPnl#vUnk4*o^#7yec%3ag`%8h+g}GZ9C;z9kj*?W;nabh*-E6YfTQC-7RKU;a&Q` zG0PnM?7cn{qhy*)6kvbek{1u*u8mr^4(0U{=eJGgQF~JZxYx6d8TlmR40DTIf%hcV(54nH~j{X1bl%l?$U? ziJFibD}*#zx#o4*qs2Y2aUKN4yHGxTy4fm@q9_+#H)^WUkvY?AlNsc&=Gy(aH9m{i zD*n=mZa{g#BAPNpv*z#Q3r+`Ok{fw#5cNu}2ZjJw#;DfhD$2>Naa`<}Thj(qow~s& zDgy+cp;H}nf$pQq{BXJHDg0cRMs@SU5FIn33g8=nAN83>lUMH6Gxrn#D4S^|-BufQ zn&~Z)Zf{MwxFd}l@Dx#8X*2YG#s<~{9SM~d(HpEDaJAPc3A0z!|HZB#m~PYzopITt zC0be<2~Y36Y#eNv^w?W(f^-)J{>)45u^aqB^3_x*A8_0K7!mTd&bb=v zXKxv&C>kH5Fzl8R0I=Eo{r*o+puTa6#{;!2f0D(xOG3njRJ4g3lF$AU)3cqWcbW(! zlbO%qtOnqW*Q}x>oSRfax{LKi*`5Qh8TV}}CS+J1K;#J4 zcwFzdvnKq&In920X4^lf+oWFpNrx~;oi2zZ)OEP)QP*`=afug1s4_Xr#009@8+3rdKn5)1*aFJ)2gTdv zI%n_ux5-se1Lph^Y)=IyLPp0>>Dm#Nmu)Quacf-d7(7^*)rHl0X9FYC{uo?Yjlm(e zw-hx((Kn^pCj=xhvWjhSn#HDTMu!fD>l@*wjKm-}4%?PpB(MHDoxB!o{Np<|OtR^3 zqLn}|Fv!S^rQL}CjPo`^90Dc)3pHDLbMD5ai0&G0yJW{Y7k>;^TxW(rsJLLLEz7^z z>H5}?OX;@N7&C9)*;9(}*_j)*tv=|ovRTgCnBBytI7+@2AT%r+dDZoaWB4S1ud;q_ zbM(kXIq3aYGe=!tEdc~0*H2_e)D-6t5Pw%$aR8saNxflj*!_Lbpql6_#tm+F*T@DL zzJZ2j@i4GXJ%{e)GGZfY>De4?p=a?^?h6HBXxh#;90PjecRTAsFmOp1dykryks2GoMnxd+uLF86MX*L%d* zI+o`FfjdJ*x*F2_?DRY)G)7jsrRPb$L-G4!RF_fX4VZl(%e13LtjLT-ec|3DeK2u{ zj>bljgQtiwB57`9L(Hpwy$>h=`5RBMw*KduDiW(ae#__25JY9^Ut(vA5++(1=6!Fx zqNKVi%(={}7?k8xF_rKnsfZb|EE{2&lp7_Hlg#$&5-gmtIVR{Tr?xEF1si^;rb+&@ zSH@e+pt3m^A2MB&*fow->QIe^T-~phHO;70e+{t2V*^QMXO^=7!7h65vf9KPqx*Y# z@C9$E#ThrduA49m#t@#^dQaOT-|UR=xx5~?H!)rfTP)}IdER)%f>_P;twn^F^??qY zYJjt4+7jV!z)L&oe^nIgi& zj;^a(5rLc^Eg~zFLI6!OY}U)Mi;Jr1*{(9Ll|H(kDi_t{C9-C6-J?GLG+sfuv%me9 zuXw4y*4N)HFhb1e7bDCLY%|?hXUSfeYmULVrc*17l|Xik?$Wr?$e^}O5wk{h(gwOb z3qb}K_any_C3e|fu~RW(Xs`ES#Z=Q(Q{#11Z84Gq=XaL*ZvlMg8Pg?wU1nqToI4EL ztI<8|Pl!DNUiWG-emq8k1A?wO=Y4i!Wi4kW0W@nGN9FeQ%+s*XnfIR&3JMP_VJ(CJ zYCx60PMz{{13zY7o~ZrT&0db-hz#MAI~_A#3HR8~Z2c(rTx0muwQwhW23RMuYJ$j9+1H61Y3AkA4A6jZnpMej}d;?a+CKb=4svI zt@v<1Gyic$e2Vwx`FS64#?}c8GVT=+;&zdh07RfTG1U9|!!4Y_BO#1SOEsCho_l6h zMP$rB_8x&e>eAG~L6x6KNYx|B^Iy!)57WkA{8^UAPy$%&xVA{}zDYb_z)^i>XR_3K z;_1vmkK9NOG{{57j!IF9CPz_al$?A;*M(a%8=7|<-;qjb#u?3FXBG7*a##q5J36Ey zyV1>VN>(h`@OKS_Vo{Y0^yYx4Dpt)@A~C!r8tfhTu9_oyCb3g3%m=$npLf;}e(p z*Z80@Fw@|+i}#PG(gF(?1}_&qOl|R6@*~8V%HVcL3;m zH^*U;<6#Xd-^sFN~J*p45KScn=MBOb4>%qa!9o^=KAIvvT zY>KR%&&@DISFL|FM8|=`ke<0bXO@v921P^P87>K<1JzKYnWI(1?B{oTdYZ~&y<@rx zV&Xbl1x;Lxa*uW)VepImrray^Y_E!6sBt-vjn2SDp5FbLl7fVv5jRG=tOGWCQSZae z#7*9BQ9&lQ8J8mS@;l`3?KY9HE)%2II;S?=ed#Q_tvd>rlL9EgDORdG>y3gr)X9w0~V)9jKfO^@|rw%hcJTSw zod=h}=;SuWst(xv-cFKHW7IVg9hs4o9af#7XAhhkstaz;gYPEwFRN?;cq9 zNdT(nra*b{fY?h@;G)>X)A>KR`S&t+>ggT9nWeYj9kNG)f?-`yN=2jq>YQ_-Dk0RI z!RrIG9GU!9Xw9SI81eicwn1eO<25}p^bwdp3ISM+m;(*Wrdj{c*aG+SzcjK1Tx5sn ze`PqmL@QZ6Bion$SjgjTGwasOA38~zOq<-? zTv@wJx$a=-RPx2;mh;p`J#cQ7s5I+gIfQvX6OD`Xxtr}4>!!>X;F$b?*roWnJJzot zUZP>-?=8sQvzxhMfO-8gs`jStzkv!xzRYW(ku$f?qjPyvqY=Vz;ebq@jnmBPtoH3g zlN0sznwz^Mv!4B&zH)~BqK@dIiaEO(R8*_c1m(D>noZeEdwu_1tv6H?u$%k13+*%_ z2q#>U+-m|t=QxjUe(4RWD@QYmEH`SFunVr3f68%V$;h>PzlLW1Rss9-uQ}$w_}6cK z_tVR`4LW|&n+7?1Ttps$+?u#s2u`fUj4AGWBY(Tf3EeW}2Qgmm(Q)Rso3Tzs6sk~W zAhXoFRO>)Dj$I>p;TT!gX(39BO$1{;ZXEN765kYUC7L8I9Fy}j*zD(ZQDe!Lkqc{f zZXDs+?Q8zbpD%vKn1$-W#V!A?Glw`o<1F^WgneX5@giA3HKkLbx^#FkvP>DxwjgdY zF7$A@H6k%JlU~UW?FYmpI11Pg5z(5A&v53x(PZ7*2DYP0=_GA0!!K3-yK=H`2qpFd zQ1h@$T@iE3M^MN5_6Z3N^ybM_G+sUIB@f3QOI!ErxgR)=F5vov=B@efM5pza$ATEn zBj%J{`~A7T8Hg=)F7rr|D-tj@f0k)*km@h}^I3?I`BjNYP}a6-#6i@R!kD#t!CYai zmLmcS2+*+b+@JZS_p^P^Tx^!215>ke`~s+A)=bGJk>49tEJHMiKt?geCx@6ZHI?a1 zFL1|bcBVM|-?>J0>ybX}-Oy{mz3J=s@PJyQF2T&C&kS}rtjs&E(N}db8X<4Kv=|cLs|< z-4Wu%axh;~y9-3_Vrt-^l?Aui`n2JXSP-5@SvfwcC^#2~LPf5{<}235h?_V+Tk)*@ z^1j61yFS`rRY4;$F8fOxxe!@nPjOW0U6k)RF7aXAK0@oSn^CR(kLMZfb-iLNsDPX3 zWxUc||JieX_ch1-7ytSnKmSu5PvUbQMrK5LzfaMHdrsL?qs#kPZn(+y*uu;rWxd9n z)HGfZRcT=#@=tNzdDFZQ`?DC!IjP2)l#?6Q=m>IfRhw<|nei04%lzu;G?v!^7ONb` zHy+pPF>(Mf$i!?2p!=}q&(C~*zK4t2UJCJM7naa%E{_G|4Y!!8O8I*<=s_|U<4Bx6 z?>gh$>p9~_YDQ5C@iX)M`u}#8s}V3FD{dr02tgIZGs(F1b^)tv~&-)tKcK8NDMnK7Y3b!WIrkmpold0O%v`&cfyui z7W<6>OhF7-9!D!QzLNa&JNAR$!xCX5>5_(#B}R&yK%V1JtST4ZD%vPXGEsA5LC&9U z+7%Y%u(&kz7Yl7r_u$0=nMh0AL(8q1cP@y3`yw2t?(=SX-^G|_mEEm1O)Cw;rO9NI zF9rI<2ou#{AD35@CW|+UHr7J8$G1(l>Bc3!*RIht)$9!6C@-1)n}0!PFmnMm;yoGT z4%k4&hoDy?bkBgBuYm%Hmh9>x%ftmlB!jScpVjkYIiyp;44OgDpPLtVo@tJS#5o|n zEDmOLtpNuUb7vaO765Z~Yp1z%|1*$gR+R9J9PeXabIgDFuiyUur&J^o58xVMk6zs=d#2{DI#1i7)Hs;FM*;W?&2y5os_Y;S-b_tU4ND&OV+8!+K-gs5Ic*=n?jdZ5SFIvVo)yI3QG%ALr*V zKCDE<@u=I%TrTqAw9eLiKIE|pd;^Q*ar8ETV5F{eDz=qcg3WuC_mdN8+Kqx4`nq-R zJKlLch1qm8#-Y}{s}zwr+PEq?oGxbX8mTikV8ERjEX5@HyT*-~y^$YF(<-rUy3A1s zn_-sMcFh3LAx6UR1Ofm^_sHu#M$`B;XkVHo5Y5FC^1UCc2jlPMTGU&h%5 zYna{}n9=^L_F+RCZ>RxxGxp6pvykd zuItXIOB(Hg?sXlGcSX&{LV`PBZ`KtW2g=3(vABA#88N@84~?*?|-HpMC=+J45lG2J=m!XM=@$#_iPu${$YU67h6S})N_D-)@n zXYLm;GqAUsNldR)n!-vnl#4UeSxq)-?a)Pr&H{p?B_^&7GW}!ndlKe+PC!e9Eef9Q z84OAQg3;tnV84}tB81|Wfz>*ahXNKkJ%1B@tBKgk#4z*xv0~QPh^K7qTs%fJl@KNA zD0^d)gYiQ=xTJG)Xl%Sd7>$(J^vvD385+^dK{qoT^HwV>Bv!JJxAFr)jAUupzdIvb z-E+`^4K5gT>zRC4Y2Z@k?^_atAP-jT_7%jq2q5--C)6JTVUR_Cb1&VrGzIUj)4gYe zmF!y0=89&$YiP&Kx;AJ%O7<`#gQ(Yc96|HXP?r3+jr?MpP#nu)IzCQ;0z;twoU>kJ zq^>sPWBAd%;%dg33&b&04kSrMMSiRa2lmqILdU2foW?HfJ(K(l)j?b-5(YBU#b!QT zhG8id{IUj=u@`;M=!j?f-a%5ZUwpC5f3dIKEaNr9T=HT~Cp<)FV;2o%lvHv?@G`Jl z4!`?*mWk3h=YNcc;zBQFugJjUg@zHwq9lZjO@H~WkZ^JESfozc(FM9|Sb@6AVk-;$b*JUiw*F>z?fA0*@$ zWrS0v?4ThCarZ1Ss;dU8B|@(>Nwu2l89#NWj6S3O0|nu?GIr6EIqSOe$m2jW;;7|DefsB zO|h+9G?bKLljyq8t}! zvKiO&8KcJ8f%cwlyf+9eLQNnjtf6}UX;X-x%!qsL5K=*sZ?lr9MEVdYYA9H#0bg^> zf61@E`^BI3dY%EpWn(zpfD(vC$m;%<_j4x$Cp*rqfiX1nfJ|h~)|@eL_CP4cOzcI2 z_PEh_wnXP*pFL;@keh$JcQd?;yGTAUN-wjr*V`Q3vdvx%d%EYd?zuC}jlTXn(w=#q zEp`*VfdcmpV!YTrJk2u>z_HB10Q(5hSOeK;EyeK#cj76UmGR6!&(GR$`HX*#u+RAU zd9K%Hyyw!t@VPG^qbGaZsOIwEofMlT0$sQU4}ndTbm0luN#i$*&7K*2fH*@7i!Fd! zvqvgD37p;Lb{b_}3ItoZ)E?yDhN4m`z!hje53}@qwnP@*gGxp1H|~cm1fI2O91rIE z`v-dUQ)I-W@l_mEiO*rzA6yH1Uyl^YvzVQY-?D!85cL2@mlYu!a@I7Dr7h|A@i178 zvRnMy9&D}8{`bo3W<`c`t}F=YIMlm0VXB){LK=~~ zJv1yY#IsMuaxhbh*^Yof2UKpfS9$B6uS8V{fMh1I`uCNmXc5`fR^{lLL);rJmixE) z)yPspmGkf2wi9T z#;gcz<(~Rhv6S~$AoE6h+u0*e_PSZ`B%UIBIQ}OJX@uIMYu?rT{Cc#%_;Skr%Q4Kq z`zfz?wN^yhffM~)8?t^+KQTe8>h=6PoS1Hko=TGaP+X5u<+pq7eAK8I2~fILnx$s$ z`TwSI{Llg4mMPeJjbE`)kpYPf=z5PJO$6OV0q%JwcF)Z=Anal9u)&cLBs`1tA3y># za(v@*($4P0^Yi(<6rWYtOgponIZ6zNVGbs5+d%0#=T=^?&*#3`GiPi9K!h3G_YCyW zL)5)z&xw<(znA8RogdKx$U9p&TT;;TMaawcVA_NYV5F|oa;@?LF_6x)E|OA$rQ+O4 zwKnK?ipFfksSVV6X{>jIn_q;_+|1X-`lxx^8{Bc}G+I?q{ChuV zJ=-_KE_$pD1TFB67~r+02Isb0tvRKy2{+%3u`NcuEF2o@bb0VkL7&rvk z+%{ekA@xw?J3WK(oJ#rJIMv2-ER7%q1OS@QdYTg~na_<@o@d|9%>M8-$NU%h`r{97 zzxn>Br#Z!rZAl|yPK64e!5*7tu9v$J`-ofxm^jJ&RWj3dc+b6xk?McwAP zF>|kqo&s1$>AW3hZ9ESE19C&DQG&&cX>4N<>4A%&-> zSU>BGTAJ0kt60m71?sq;J`f(v$4olJBX&$pr02W(zXNA;RA5f<(KFC6>9PxPAv|X= zP>Y(91xLg6(WFMnDV0t-xlMLVSQABKt{s(4u<7c0fa?6latap>!F7(4cj8N4sxsG6 z1vNJbaZ}9&FNJx7?i0m;0ez!Bc&6R!Txu?~56jHC4uFazYtSatxnFbzk>%gdOnuqd z&@>}&;;1Uif`bS*>I3yVrDu+7=G(=gSDAR1K+(5+DGBv<(Huh3FACH_pGz?cSGQ$m z&QYbQ4`z-z42yt9(3as2vS(+l7p+~ z+7jCz?@h?_%%H2weEJ)Tz%HfIV2}18s=YFMj>QuYR;VKwQs%9>a)5 z(?~@RLZd*eiC0PYE@7jy@G4^2|0843raP?_iBp|}RCY4HTB&Ss*zzv@BZJtMW|e2CcB3L~$7VhM`|+XP+dP7`<<@}_Sbw&p z=RC?YCm99~q((E=l*;7M_u2FMw`CqR6X>}lroBH%H(z{Ay=+TUQ(RAwrS2JG7pjZ$ z`?PDRFBx%=zyefTjGTdM6#J9*XQy+}Dl50uccY%~F%e=Jav?krSLgrpzn`Dy_s=Fb z-BKfb#J``PXMIc>0js&oFBfSxC|onzweIzDL{Cz&z>d#>IT?*P>a&{!PF*}z1}VGz zRuh;`eJSLl{MM%a7b+D_Z;9FH9J$BlXC~B=ltuEmvB!|C45A`jBv|n$2o-C<1g-^{ z^xK?uOj0pagB&GOk?aZdHz{XqZcOXYH%glayOYhts?WfXgJ0_h4F_AL>y{A5)p(YXV=0!W4QO<{nL+M z9q)g&VgBWh^nL~CGfL^bssfhuIPU}4vyPE9MOav`0^GAv7;^Exn8hw?vAA-F?;Ybf zT90wung?a0Vh{)y)feOJad{s;bAJ{x=U2V(5%wF-lixI!Ri{9XJc$aD=oTEof!OG} z09D=1=BF}w#r7X@d;Og?#~Y2ZW=gDcY9vl`H~n&suN>viT%Wof!z=&vl-uqzQ_S(~ zjX=J~8Tgdl6&p(LO&$YS@qrx0<>m(W-6kyOZZDakkmp|+OPV!`OUawJLc?*`z71j{ zv%Qwj`xLWf6zkY1?A$fD~C{D2HI84vhFkDOzn&Lciat&S-t;SYe*nL$4qm4vLYW~oJ(IpldGsbk{4Bo zHTVX(qGV~kFN!7Yt`;^bI^i9=#SIe8kt)WuM6U=}<U-GYh9ZB{}L_Ks3hKUB?miZPLH3;Um4SW zH~EU@SrO4Ujrc<3PaE{QGYc$VI)J>)`Z`Oitd|hyhSsl}l#(p+{F*gvxhX?Fa(wL^ z&w)PwI3xVkrIW#^!g7j;3Kj9!J(Hr6AtYV_iOfEO{(d%GLz(L|mOYw?ZQIxGk>|*J zXE}&DUq|d!0wgdIBeR<;VUlFRF&E;<@=1=uX7;NuhWWqz_1hgMbxLp;3=UE?t@MMu ziJ(~n$^BI@sLpDYz!;}lc-QM}hMzS?-P_jw&C=4Y=J=pOUd=jhlSI#kU9mX*oSxpN z#mtPy6$_*8>w7$HVSbDr4FAtxp8kf zX3R!LVtTh3meXf={w_wt*jtviZ)f4fM*Cqd*9grF4fTB3Z9EUg-S^CF9bc-1%KDlf zMyytGKgNmuL5(=tlIzlZdKil#P^M8^4!l@Q7YQ8velnZJs?Tk9H8Zi}VoWSWtU<(w zdW7Yrt%gpXmosd(td+l)sa&(lzlOof}1sqiS8hM>W zMd!<0EMG^=-?qYbzShPY<(%!SxSFr9mhQ=G@WL5=Vu8_ zSfA-FRSa>DT#e=P@|C6mcZQYkuXXFVToVdQ9~&(fO$pvG-!o=HDy0I1R7C+hsL!;u z)^Cc7bbz83DJ`?B-tS8mwDaz2V%CjfRowJkA)0r|RK_$laiz$0vF2Pc=qNy0bOv9j zIo`aJNq!8mxr>7YjhyVN*zn9u@n>2^SlSmX$JZ%!P>Q55fg;}afH;>~_OC}h6Qr01 z4cIuFo^`JGJpLl`yw}(7|DT_}=9vErUw{0;?H_;rV`!9f!QwRNwnlm&QSLLdc>pyP zZc62h=c2yIaG?R|7%!u$C>G4E+2CbNWdxW`uV9xli(K(Zo<`EJV`uQV2#*hJL#^XD zy*5gd<}_@Ww!wql9A*jV7!R8^jWT=@-X-i@+SOdH8AFGzURQk9n(<7#QAa=Jn) z@>g#1d^Nktf!HXl1d}iXHWo%s)$BU$Is16c70)2^ zch6>&G3VsmTLg16a&l*II=yS2&ZaZ}9A}M@ozbZw9_;WA;knbO@=|10dgr`m^(IHU z*U$dxQ)Hm?x#A&?j+*=g6oqRW;U4pRKg7PEic{F@zRkzodA);cZA~#ES`6J_Me>M| z<oNupO!TX<{vTbjts*?k?y`{U!|dd+wDl=kr1xrJl89;8-;w4x|D{ap#&i|;59#1;)2>6SXn-Mcl{t{3>R~T zTLXV-X!U%lOR&W(8@(hJLCqNpwpmGu)wMUul*|rVKY!o-8ULP{3YT8p(Z17e+BI2% zE4gbLLgjJGZOK|l*?PZ!^z=)ydNSyz%jnwCqsWk*K`q_m0~IVgwz#&?1DU3BZ& z#k*D36;d?Bd-XxR53Ec$O^#yey-3s;yyHWys10ea8qnaZR5@6lCm&oC1(xyquXw5d z61!~Ad}KoAy#X(G(dL^$kOcr6z3t-2i{*96d|vPWrv{Oh#CrX61nDAJ$1+1FdG=~z zMsw~a)|z5d5ZNn{r@o5wEIAJ|sHlt-h6an**)xJ%dW1c4#)^6zMxTN>Qf-HilfOKp zLD_1|SEK807+zSZ;gKCgQlvyCY#COqe_kd>Da9b%K_0KkqkQ+!za&&ig;um3V9 ztH)rs!#N-ShY!`Q=(?28oZ*KFEGLIDj=HXqYI^8Kk2#?py zz$;G31HD>RSV(Iw^$sS+A)~P-AfvsCQ7#%^97Wt&7uDO8RNmJhv0i8iLqh?%C2>l? zqVhC~DMtW$j?f#DQIH}!T|*S(t_hW~<@gu#F2xQO#N<-!cK_@C=4N(O*AKl$I&-+c8;gt6{#8_mf(u#U^?6h>U zg*43dF7^jJgfu~9N%Z-#K67#f7;c+bN=YkwMjPbkt? zF+HcHIokAYO<|JfH6F)8^A_W+M$8^ZuhPTgf^4GLD=f3+qJMpc&45o!v*ky+jmMbC zi4pX}GH3eoxLC*7!^le6k@Y5){*>0Q{~LJbMme&{ixcyn#~yV*PyZZ1>XoeN!LxI_@38?kn;A!N{DDnwStu(Yro3p#6sd?DwnqBMm zM1Y9@ElspI8+JUYaiR<8<9l#=_Ecx089RuG0fVmb{6FfybAR2*)GN->hNd)~Rpz^1 z{uG%_2n_Txavg@g5oPcwCDV9fX?IRFna?Khq9fbl`{L{qcOK>t1dSs2*!))e$e<_^ zxuJK;ShuG6Kh1dD^U-rQxHIh~CYj=`AfDOH>uAWrp5g{%VWJvjt1qLJ|DtFAx{L09 zPTTZcVqUIIh6`DilBzeAT!-r18Wdj6E*eiWtB>|g(X1S!(W~9cf-Vh$C|TV5-z`5U z8kRI}9MMr1B7xp6RQqM!#p~sn2f4;Bvh^`gn9<%nvu@1ZtQ$TI`5t$U@V7OP|4h%H zbMrr^U^7LW94M5$%$p*2Yo(~BJtrD@umO${lZeM?AZvdk>Bd)+2v07XVfr5-x%7Ng>pA#b2xd8>;H2C2( z^Y&(YwC{fXW&HJ@{rbmW{g_^S#5hP=4`8Df<1BbO+Y+I;T{vn&8rCMM%o+S~eOMgC&{C9>tsX-$wky*-fiJs31R$5GIXg|(%jG^~CL=&v1 z@Sl$x+q9VKKk)MbF)@s zTw~KzVp+Wc;7h6D;{D=UuEu_?jA!~ifvqol_p=UHQ#(MPH|#e_#YEt{`(?zF)_|cI z@rupx0(If({om_80xywl7&OK=g3(!GE)nVkq%7w`6hQY01=P3WtuQw0jTT@wUT>G4 zB?I>8!FFK|oc2qvCdp_2Wf8Wn;X6XLO^%6P7^1F+RBPn>F-)iL)%oN!dfb(2bZSY-~2s5GvcMS``p8_Dw*M{>X zt+{yqGIKP=_=Rw{jg2uE-_r%yX0@RxF+s^N%lF)3%#Dp&mc@Sh^yj)?)a5J3_MD>} zU&-}Lk;%^7(4IWxWquV|)>Rnh_jklIbO_T!I}Ote4Dq>EKa64kPtSNq08`g}f9{!2 zFPplmSr*9qX=1iL6~#Er;NgzVI07gB*{+9Qe`C7uh_jbFxu+4f1)^?tdq6jxUiawY z^d2*P2i4^%vWo%c>?G_?palc)s46<;L8RuDSChzY*G}?yC9E3ZgJ}ACppgYZRa}60mzBB9VV2?XuF?v$Xrr(tdrZz#nU8IBAg;q_if%qBKwQysZ z4n857G{I!1`!FjgmGTw^vkUqIF|`@#md=sNUcAI_iE^DJZC z!zj+f%hOGre>*~BeGFX5mM5klRw)RPAQ2RZDDxlx!@pSO|0KH{0b4*;ljP)f#i=S<0f)5^59(n)-|x1y=E4-{(9gXUYwE$u-yP zX_O!1$vCzU7g#{}1{5FZp7@cidPu*p+s^Q ztu~O^LH{hSq0D+cD@56pZ-Mj?h>m&WteT2X3trYk@ znpA!C_{`}^A+!=GVzmFUZft)SpeS}g={d@1zqnJr8ne^=< zmlv?>OkQJIr040%%YdwM#l|-{MwbSKzHhlHj$3#-`WP@J-@nsyb=J{cm_^y$?5dOK zcM)*1X(pFsX9Vk8u7y_dI;cA-clYydbJ`4$Amm#suVtVCE}EJA+ssEN7v`+=7}pT* zK^MBkYuH0k(aoc?313n-K=+R)?63l`D65rG zSjd8(+-SW%yYv2Yr{pEidcC`n-KIHf_x>E;A2WcCDeK;2vqJgPi$N6Y>5FCl^S^%c z{pTr`y3q(^zYNKUgvI4CVrM!>;#MSWzf4x8-&~B2+B7=>i%0gEuX&Pt?{onG^4g2l zaRT9Ad)>#!X;wyJwJ=lt1TrRv!~&?V<>eNv@39AT_do*pT!<V+IxG0M3XfgtXj+9F|ts@uO*~21BcgHv%e1SFFVDi~_N3`L#;MD#6;?1fB z=EE&F?Zv=u;i-J~pMtCqs8{-wBm7K_D zm{g6b0@~+2n6gFnVD#P?i0rcG9B+$F#BuJ9V=QR08nKM%o;l{IFmx!(6;Jcd=0qs0 zW_o&Nk?oi?F5|X5w|xqLiQS9~?k@3q- zqWc>F!Sg+GGjfqU(Pq51tXcPEEfT_vW~WppQ;6?>F=2x|5E${?IhcVpP$*53FAlAS zVPGV#`7-BhITw-lTpkN3>IAyB6#FzPQZYK|w=yF0TnH5piOzokVQ&}nWk67Yh`rj) z?AQPFCCUDCzy8-FW9Oz+g5yCMz~e@ToXwf69^VzeM_xuZ>^<`d?R{V(ubBM;l)@rL zVvTKTR6pyS=S>`eHu9hf`<(gx9*HeG*~>U6=LVI*4U3)69rwN|MxauRn;+oRV**Ba z2gip=?*jyHi|DpJhAbUc1=(f?hF0Fmhb4;3r zMt(ixLFAR2jslF|yKeYy%)=fnnM2Q@(7xoUMl`Ir@FPZtq1MkGZK%$8FVBQQF&x0o z^=P!}RjLw$_D!2Sl!JXE4GS13^zDNO+K?6 z0W;J#^qkGCnoWi3nwrzA?8(8=y)}@E5-w+{Oxs(yrb8i$>&E=d$r^vX&56;1n8^?g z1H?&y3woo>q97RSA_j=I_4GO$-b=iT9OEYK5kNtwa_C~V@&@C=g*(Vwf-y=hR=k)k znd$ek08pK5-g-bRny;iaJv8{hl60q&Xejp5G_$SV{~b3rf~?#dM!DO6++^(Cpo0O> z>(4;@Ov5Sw zXT{?T>@qCXB{&S3JdphWPj>O&fU-?}zU7ZUxc%F|&#x}{8^3=0{ipr$kDh1AXpWVY z7In^5oDtMCw=so-oR>Wpv#Us2*{g`!aMyG4)esJ8&pGcawxjcLcy^nQRC8zV4ji*8 z^WvZ4rd3zzHq0Co<$;afpC!IOLD5oV871-J3_>rPF=lM253yfb(xELZ~ zh5C>ncRlxf%hTzM9v>*@?UvV5-8w&YeU*%_W~djYrCH#39(Z*9PwEL226{KJf!#xM zCV{{O#frd5NkR3G8_bi_G?KIx%2&ndoU`Cg?3GL?HSW~RWEZy zz0I045l!80qA&3bc(~O9!9_Ut-;4kNAOJ~3K~y8lrlaSz4(l{@v#{Pw7?+Vxb>4Kz z8ikDpso_lfK@7_K9%gs5*JKgyjT{sG1vYy^YJ$y#Oa^@)57Rk_T+F9jUuemn^9yuo zLS3*jxG>EYTo~JCj((wPKDl^RQV)d;q1kK}v%DEQ_}lDko^w}f0>zZ6=E`u-PgYEB zx(gw*PZ{{7vT+Z{DyPy)&w+QfnN6mw@|IWmfJxNsB*VWF;a0Xwua+^=np(M1;c z1zZ4010_IYQUM?V6gA&&iq${@5)QJgk)?O}()%t7C&vA@x&R!aL}&=*1hcgb((D3k z>sUH2vQ?J3LdX@m%>de^D1jXTT~p0>kpWWisOP!&DEh?ZimisY4FSy$rTu6N#O#oJZ02 zemrQ8F*1M?=LMUXE~)r#bo_9QdvpMS28kK8R#~!Qg!CXZ1BXa4_dUD6pV!EFw9IU$ z{XFEMbHttkEASjT%JDr)#pCUPe9LLAU7C=?0#cb=kgVm zmGZ~mcqp;rDgt8eVl1NpeTP+5sC$*HBLH14$h_5*`uf~}WUD2Sv+jatS80jGG-?y` z#=9p0hoU}&ka3HBJ}FDK^cwl+Q`72B_}+!7x2UuLN~SWP({NNxq!{Jbay@$94X`qM za%&h$18RaryWD#vgF#!s z>%W&ANn@TQOTDZ&NQ2cGok3`AI+$r4$NRQekM3&(LmG}~QS-RU^-wY0ttn#@jRJZh zp|X81hJe7gJ@5E_t*pW{kLHcCD;1_*)c%~pQyf6<^PBCN!LZ3uL46^Q-tYW4 zK;`&Y%pU@y8d&fUT@>T3mMe8^2o{mxQGQLYL7Me`{>}`;#ZE-S>$BEoE6xPR`eCf= zSWWJymzr?I#>y*0?GLNAWXG@W?jtY#CHIcubj^AXz(^b zXIPdLmxcwQQ5VdqN~t;W`&bWr+uUu(h=9%~SgmK`J`uqa6V2~tfkn+4nfyfZ4Lok_ zHQJKLxKwStrs8J+l+x%0DJ+yc*@XHbx&@7;L~D#ny=%YxqBK)`=cWGV9?wftj}qDI zqBTroA`nEF)qNnjc9V)EBfoxUYOHg-ZkW0uF0zweUD-et=*@-u#oP(j=NCh<%AG-( zvhnXSoJ%u-hOMc8Zp07+7k6)J_C_;LiD7SJ!VEe>hcg4)JXuqbFSThXYYO$y-3^mj zWmZjt8E;1b#0J^sjdvY9w5>gg;nMST2gvTt*$B@T6EjencLMuVq#Mi57{$))lHZjA>GaA6+klpqk5PfO+VEslV|q1F zNi3FSiQIQzbIjk)Fn|A3YUUJpE!{;GfaO`Ckf<9f*16Hemh>HE!@iE03;y_CoB7E) zjWf1`OsqyIYC}WqRwFA7G}{ZIBJr&B@zBVzNzUiYh52HwM=03#^^ufxgwcvEWd?Re z@K}*MkueP5`6|wL)-t*2;E86Man#0wj5*ws&so{?*g&Ki=5ZXx5zfu=k^k&-5(_12 zy*Vp`Y|nMu$Lm`@XKohuGhKi8Gp8T80HQ%-B^kJU{o4SxbbW+Hx7Fy8=G@O@sm?sG zlwKklPCew6KyfRnF#5bb|9!H%Jgm4VC)EW-xN(;vo8LIEj|x6;sOnL zV9|&xgHs&_&g$b>(oUMq=6WmbeM8sijAc3XABqH!jkpQ$gYH2bFLv)g^tiDzoz&!8 zSe#_zZf^{Oa6y7Z@u?d1EO$LFwnhb}yUxokwXJf@rl=NltV!ccZOkyn&BHXqS)Q4q zIXhV^ho{@g1dL6IHN~=I4N(y}`T3PgvJp9qYMajpUi=eWKm#+ab{Lm6IvS~p1aXAR znv~;9u;;~Aj1H)vW`7Xk_-Y=Ij7Si(I%D%A4vs;0HZ~94=k5MXIm?=QohZtnWFr%b z;%2D`mJD>WH*kizU7F}lM#>F%0f(U9DKopW_O8|hE`>}4$i{orTpd_Wxt)m2DUv19NJ2y%ZSKjImp59j)<%$jjdm)E%tL0nGmW->3cXA769K@4kNc z!R@!d|2)~ZOs0t~a#FsyHB6Y9Cx*mEofpi^&vDb=?9Q}gq<78=ggI6`SNuyhcC)$T3dqJo8768)vE4eMoFEI|O?@yAIG%>x?lD zL+hc59v`4Hn9jAf`CPsVJNM#Y+WcYov15viSTYNyZv%Lw>`1fmNo9qoT(sgm&649p zh|P26ZiR)jL8&IUoa^8CP9WF&QC?r0_iW5$M#hgtS&4IAiIJW;n`c7%PnLJ{f5%(G zaF1A^_e_cBV$4=|F&dPk#a^}A0{I4w!5y%W&gdo+x#X>QJ&&ECe~=@8XcSeeRupg^ zn|hSy^V&nQ|AOcTx3VFq0i~~yYbMznlEuRxlsV?8476?r)tb3FQSV*zgHdO6inF!% z^Q&6BZ^aH>y2yDo(NcrurZR_}8X6C-oQE0)i92H&OHF3miybHIBc4V{sV zcLA`S%%ySNzRfbUGvSvPg-rk=%Y5^N=g;Qeuc6!e?%0yFDTG4NZiZmZ|4Q;v<}7=O zo$`>~;^x<9w@?6TK$X9W4AOi{lV3Mrb^E1?LcD9!l@cSE;sG@S+?vQbt1%;LW~!ug zSv7cx$AyUot^kOmX^6Qf6Z5pKvPL{JcH{2Wii`bHI@&h|hwU^A$5ar|;4evF}pUY0XA#BG^SJYBYKK4GQ+(xdbdnroE-=SrEWT7nS#wVj!irG}w zqcUI+Gv1<%(nAN~)*y()E-~BI%3i6sQEQ@e(tg*(GmD3PF`n%I?+ivomByu!jm22` zxyn?mQBFt@%0x6m*BCI^tjZF% z*$y_O`|eEe?z38*35_WI^yX%E%7XA5PW|O+26p}4U;X+^mi_MQAHVyt)*+~BCT3UM zYm?25m|Jz@<&53BzX~wij!W$b@iJ;=QEq^%hzbmJik+Ofp*%)&hoxRDEE`Wva+u#) z?L!pwrbm-TaI3G`&&EmWd}=R}Jt{k9p+SYX491h4EgF!*nL;>@!!s&t5z8+HwC_xzK5Sh4niq0&u#EYxLZ4 zKOfwm8+*<+PcG&jnuMj6L?|pX3mEA$NE1g>wY0lIwNJ=?5k|A3)gTLX{+)qVu1O!J zy~u1m#IjA7F|HN;$j-)D%%p1?1)G5%I0;Lb1wr z-!NT(AkwM(&4xRgTwsoqLL?qsJo~w7eIhE(8Fm` z$nTP$ubVcqO6=pM0hXpPVFR^GOaZK-77&VuIJf1VQDHTTq1^s)0Z|lt@0Y(Tx|Ci><8kZnqN}wC9fO-lpoM;@#P&t&cRO7?ciLz z8PI8ICbIzk4G6d5`1XwT2U6p)fr5|hj1EC_CFge3RFT+_P4^vZHMs#E;n{g+U0G?h zXWC=DS!8!xHu%V|-Ln*@jE-=$12g@+$GKNSr;&SVPxavA*v+78@K1s3I^@&>VZ;v| zn;p(hi+Q>6&n(Qrl2?G|x(4J$u*X2A$uW?)SGil22D%!t40+Pc9_KvAj;Jg+2PMY2 z%IQt7Asn?U(_a;ZH{;|I9dt;m+tgg5!uZWZKM;|i}hQIw>O zbPawdeyjkyD8-dZJYkt>KjPWUGIo&>SI0W<8E5r7TM3EC%PLJHbXJ<$g97QQ*>rC@ zLvnrYD9(~i3vGk~)gUX$CBx%yn4!8jy#fsC{xehAsSi50!p0t1&ZKrMY{P^V{0X&j zl-BeRZiN?yuS1#=n<`LM71a=#;G0C-8}x+@%A%WMJY11Pg8aQ+oA*nD+yNaNd7{=0 z2VsD=-RKN!>fV|)?#S`?qk0zDiSFQH;&oD0Gry9l*+k^Ii%pl<*}^2N_t>hTUI$1- zZ#M|0{+2grjVK)tWiEET%66wMurfs@@ur~Ll}GQxm>qmAd|cnVji&P zIqV`=6z>8z?13!X`_54Bzh}92Dm7-7Sso@iZ+wS&#%7g|a>mO&Wn(oSM>8e8jZ)8` zZc3mh#S$fkIpz2vzw;^DDFf>3S_hhaJKW0|LgwdZX@6ew^evNSCcNea4`RT8bC%e{ z;;(C)ss1|)dwe{F|MP>EAzi%D3qWv#6$jB>#AJ4VM7Q`vm)BZbCIsQE70`{0hL(kx ziKCV#nhyo^hj-9nIUb7;W~fak-ueBmdtVcu=kW~^QQyu};_eA$|3J8$*dCvMy zL>tf(rGk`=*C=P0-{q01PP{`#BJ!fOX-p3&Gblm8jMBBaF)Wu#B zJ2Gcsn}|nZGcO(4);_Z3rrACx)-R1o2>%d<*UJc! zRp(||tC)6$9z$53i+yZPl=TjGddhL z|AmfA7S&CG2=t6{JkV4YDNDAm^OPJt#SKoB4e$j+l}&UEI%kwJfC6gdN|EdL<{{#i z9B-uVNgi0&^D6513s~Wd!UZ%>74{TH=NFd0qm`ZXtS+`jw+x@Uc!StrBy*O_A8Fvw z#G^nxH(bCNttmT)qnk-La`X3}>-=hy-zA<$_j5GeB-lJdKVlq}_ey~+{U^kTCHNi7 z>X-e*DT}fE{LQ&sI9x^G0D!#56O|0hYYe%NQxY%XyvRj?iWc+BI)!OKF@MbijmJnk z#RMv)NjX%gnCCe@H?$dze zCoFKgOMX$9o~PI!B#q^>GZtNVA^n>n999e%ldLp?k%NlwC|8~O+{O&q-d5$P@%fFi zZ%_90nTh%sl|hUCBPOz#y4JpxLz1dnm-Q39LG_Gec3n0RjsAXBNBR1T{u%(_^j?gF*NITh%z##PwKaKLhYmO=!SRe#YLRt;w8`5G~$z+0n~UDYw}r(6D`WDx{|?`h2*;CW!WR%6guU* z#rGTi!Yz_;dN8s>qcgE8^P&BnDTHbEyOV+Ovk_&m%9Q9!v%=PoCNO~H0Tzr+8)Ezp zSqQE}>RtAEEWB9GRSsmjuu2|YOfh&bfH1z;Ej~)55zr_D)cq8*uD%g|mx!oxm^=-m zn@p*@yo_~z{(rX22GrE32xl| zFxhHEfX!wSb_QWs7apYV|CnQL|NQg6{v$OR(W#l|I?c7}$gE27R+F*{)HEwgMpu!w zeaUWN_viryeR+e?S{1_z?_8aZqe zNwH98ZA&BP6(l}}!d}d-2Hh734-#C#dT8>Kda$w|L#TEMWQas9H^MBTM?=`Q-~nGl z&ULQB%xZk*36-zzlk1&IHZa~ZmF0uJYpn4m8&n*|5hdmu;sUKStC^kHQ)a{bXVgiM;I@?fYW35JjR4GXKInQ~=Nm6M-f^T(BD*+xZ za&N7=ZSE!~R7h-Q6=zvGC4{|k%6=zPw!Xi#K{s0de$zBMeUNt!&uNa?kJQvX$n{b) z{kp*?kJ{~**h(;yw_PL^_ z&Ol=yt{d*5OemU}W$4RYKstyFYhJS|>P8iZ@OxaEGVkJNm-oJ@X74!SMw}z^Gmc)h z!l1xk{_PKjx%=}UfBUTGg=wRhd{*U$F)>7b&UypRd@-4IMc{*@jaGQ`KYb|XEz6=$ z6%?eg&mM`1B+-w2U<3nZV3F5nnbVT?d^_}_f>QhYOafj_%KYQH9pt1 zT<0K}hJjq?V_Z&TpX0x827Tn5>nLfCd)1&lc+H1L!>8A*@|oQI{0z-e`0mTxZQs)X zX72AB&(F<%zbFOu}T8m}bbAg_z9R!Mu2O9Dk26ob`WzD?J7jB^A8!DBu!>Y+dRTH*8w-PoLo z8kB^ayV`|Cz`o)gm+UUG3b}VdA!(hWWU>MkWf0 zwPNESTpEm)2{V(9*Ij;@3#}LE!kgJuPG0orO-DSuGV5%1(BAy6fT+DkMR7%;T_jR$ z-V^VIXaL+UXoJ^+L@}m}Xfvyi1`tt^NXp=c=Lp_KOtlWok=ayD&%2)4`-UL?;kcqM zdzh<5B_Xbj1uty$o4DHO_h+p2@wLGw**#VOA=;Sh-kx$B1)7!t>`BkVfr0@9-j!=?_fL zg4?aIun_wMw9ltmosla0j4>l zeHL@5X;pgX_tC(_ZtTWWp)F0K#fVIEc--d9bAj8SXEFof<$PMr*_vou~v(ue>Y5A$MP z<2{KCaFY8zd8bHj+u^((c@JB4+0JA}E}B;pmAp#g9B|riJT-{%KBa3I&inOUR}S2WV@O5U0}{>Bs@3XLE^m5e=D=QXY?pJpYWQV$LMKD*61{H z2YB`5;dUEuOaKb&vspX^(%_VPuV)Ad{M8(5MLf ztK=4e=KQ5f{r{}bak_A%OF|xT^d%l-Ho!t{Bl5-hW>v&=xuMONOOcegXlw`3{A$mW zW?)|8n)~@v)A`J38sxWsN|T7f+`OF;rj0-vP2HTyDVm@&^BRJwAC{%fRkB&{e_6pMNCyz1ms3M#&cxU`e9Cj*%p>j)v#>} z6TcM7K9Dac8kQWF_1}fvC$v1O7oG|MY1SH2DyA68Rg@0ba(D&ewDbIzwYcSFNF<_?a#nQcV)!J-yeEx z^ixI)7?686t8Zq1{>vXMGynPLKm9}Q$t5q_MZr3$0Abd6Js-=sO2~oZ@6Q#H13v#> z58Iw+9pRsyRZ||MiZwDQO8=Fsu7&rDEGN$yJA?2r`vlEGKSlJU99s4dNs*8vvz3cU zHSDm~lv2J)4YPkG) zu2+T$N|Ur@$N{Lv9v?y&gL)Z@c{o&j13Afi`@rGrzK|l40Re92_FT8svo~J5br0S3 ztb81)jHX&!xnWr;B~uaz#7ZiIUE_q`9r-&gHvRxnL63lYsqUesDoyri#-4E0St=AI z0uf2l9bUXVQ=aPysF);4zSWqdYW3nLQKK8Rvo;_@cuk!Gqa{XfjDQJ1!Xwz>ZML|{ zrd{_7Xb72+nvGcKdtbauHqH^|YhT}Tbh851bKYehn8T)(+jTR;XSY}@HIsO83-9t( z6^V-ro7p*YE0@?d|C9!+i(X&4>!R<)y~Y={ls3MGG8$6rLdwQVv(Q~g zTo+xJtIddJr+T;o8pcvlZ`pNsDuOPXMU=1S#tQW#>{+KAvE}>kkWEQI2k3JXH&U$@ z7^zNTUp8)v6JlzLyfaXZDgMVqPBj5wopR-tlU`&~Skkv<{d;W+l64C*>Ird8SXLcf ze64#H#oF{6!>p7Xw~-TO1)x>|7G-Z{hUlA;HuMs=N#D)G{H6ncQ z{_CIraLVo)=JYIDRZT&GW}`m`&o4i4;Y5;>ngBm|%x1A&r#VELUG+yIy&4A4Uc$y& zV@LI@CJWmQ`o(d`A8=jI`I(y+$9ezgL9it6akhJSh?C)1p640h zJv_1euA30|YOIvJG;Gzrug{;PtL~Lye`2j*L4Bs`-*BD}3axkZV?<>}X({=P1{tD8 zMF&UPn^5!gk&zFOJ?cSFMj{9xR;5HzXBe4cq9GfM6-iGA0?*@CVt#V>ZKE=@7F2;? z=lFo?vg^3|oepG5duQ}2ShLUsBx9aKO`iV&fQf%5XNjX9iA6_B*`@wq8=EHCV>{1- zngUX-l=~#=nX*P8MpUgndwxj(ap~dZTY`?`+X4CFiuF+Adi`b3tML|*WN&gwvra(E z7di$A)Qqa9!K-2?&)vF4OH@9tc`pO>hT&AdlV(AZRKztqYeIYPMn+E+=qN~#TGaLh zm4GOi8X~fq0`RlIa*UDh2T1>&vxo(k?_X#3d)ahF?bKlhf@f1vR9I~E25;dozoo~= zml)$LmNToBSBZKaKo8=Is4!}zk__vsj`{If8gCj`1%8oEmh>)kH({eP1ZPLe9KWi&$W7!w+)*A zUok*V&n-f>O_o=tAihMWt%exS0^CUuA7@5*d=U5&u7}e(T4c@UMP8cLQTQIKL5^VF zxz4^#t4guTYijWI4(BNqs)G%8#;eJ16&_X%o%U?!JP}>i?R6ex#5l5R-rL5=`|Bso zxsPa~1XUws+3Xqxz$8F2I<6yR2Al9j*skPRQocZgIdkelBn;+UK0PQz!+B3cJp(bb zG2{1Sca>S%ur~tQ`$2-3Q#VTp&CYI6Zwek_r-zq*UOVrPO0IFVnVV6pkQZPt5+!au z5q0i?w`Ojej39F=ZtD09!sYxfgbaMyGGwW7V$VY#5cUEKdD#&J7~=xQTQe?|6bPg! zg|2y?dz?M)@TWEyrc~PKvRHowa73tVNs@;|NVB zG|V6C3cX1w_eL7*f`QF4lDJSG2e_{iX zi&7zdrxBk4-wkkLSv^bYLKtH?b=IY>%c{^u~RMt zh@+yB#JWuLG=()LzL?Ntic`!*CWHlyn&lJ+D>|G{$ho7`3}SzSXed}}DxYiU<~{BK zydN@aILcfXO2UBqWev)(X2Fs*%9yTT^BVx$>}fyz`yY~Q{`38}UpIE-7oZA!ZX-)G zQ{hd8BG(xcmQ09TMJeG@)O$^Oa8bw&I#l>`O~HO`Q>4!Z@J5rv) zCwhKq41d%ILE0J(C{wF#Da+cQ!wf=h)Fpm!^R&Ks3$q@YAc+>kSRAdQ-3b+OGNvY=VUTeHwMVRW4mq9o)_ z3lsOGGbKrni0D$Ao>>#U)vN)@)OtnHIyOMcK9p0p_09N=h4$2_MmKlJOi(pTdIJIw zO&e6PU8KPEc?U^JZ{KO#e<06juO=74=p`Mpr7;fww#O!-5t)#Ud#e`_tbYIZP6m1E z095RVLLPZt;kLM3qui#z7CS)HDV9-+zrxCnm}RY>Yc8IdeN`R{n#!?DzFF;o|cZD-(EoqAXdoYX^EGgDR_rkn9Z*&A?bb8RvL8 zw>dM9o|ul0f64`WGM_UK%;cG?nbEDF^^F zd?Gixp!AMlid8^S(Jb&NO3eHo;xqGn|7o_vtT2u-=bXXm{fWMc7uAJ{riHVs)I6Zv z;<&HVTr8qT$fyc96?qh0)j?@HuLUa3FzbzlAtch>85(o4p?VCouD8 zGV^NMjEYHY20h9K2oYNXz3{rc;w#gnoE7P?CphP^3H zhBxCd)MiMrtL_cs%FU~C8x9{H0UhabkkK>~uv&;nMxB`p)(oLaOCdP90 zW@acZaGnAVk>krcWr@|;pI)bbd9KufXLpqfaN;#s7ULI{N-~!d#k4NKv1jdgb8%tV zcO+}buKE0#Mm-!R^6YJrmnqePzaI-w4QUw%;`ok6X`*7k-t84EO_TY}sO+25Xoj3I zR@UPJtd-0n6-RO2aTR;~Ie+-}N5i}u=5N1hLl;ya3V|VuW;Gtx%rW!}?9KB4P6R0j z+~&kFIYK?l+t^9LE;9>?&`580U@p*+jeBBb(ChQ(sG5%t-)!G{WCtNfBdLL4fCn~q zJ)pF4g&3FO3JVVf-6oVVR&*+oj&L5HN*L^nkzqn z)I5`2YHmB9!3D6tnuf6&uCah6PfQ%gpeA*KH6}=kof|yc>y@Py%wah{V>a-t^*m?1 z11AnmjYBc0V~wfnTK~mq`v%yDCYv9p;vOAlp}ip#lc&n${e(boK?HGPhl_EF&XZt~ zEAjo*-Z|V;bXBM9vH)D~S!>UED#)C9?HvkW@8O)zF<{H$-{C<;;rA%mCMBbco|qmL zR-+?(4>zybmR~{^nxa1qS5p*~?_qYAH`o;u=sFkcS_G5KN=ac=QQyXpkW-vnZ4@~I z#v4gUX(BsjQ_!}aERf{%W1Za$a%B?>uw#Zx!|m0L7m68rGsMh>OoinFv2GW`H7}PU zib_zLMbI0@goJTITMO^;bx-+PpPV$mo=avEoY{RB&y3uW_|uSEy;jm0}3 z!xwvt-QY{o#Sic@sAgD9_XbA9p37fF861d>@~T{ z0#6rBnAnRgWIREWR}26RE@~9Y;hl4{UC<4AxZ-U1x5nH1;?Ej3tSnlUccx~qZzf%r zr&qehiNcWMr*J7|T`;(@kz|Q+H)HIjs8#g%ovl)gJxkhMNz}c$XM#=lTjhmIXV$Ri zUK(<89Pv8;T(aM8ZhEHk#N&p&O*k%q0nc^D#*hu@oMevd4CygS!}?i`{(V7E1)J-03GXPRSQmp_Te=wl zq|qJ0WRD(!hS7{Mb=P*8V?`s$jBf`=U{uHN6DL+(sF}@+=d*{|>hVZxBLm5e_W3B# z<1y1pc6P2$Y7z#6{t(KDqJl(|ATti213ve>0yoaY2DD0}*8bjpo|EOz%vgWKHjN6X6fYhc-)_RfF8+Egx3yG^z<5QxaakJ4(B_ z8D)mtE=_eQ`aQ`Z+`YV4-0V81;#(8Ko4iyXXtG-~kdZ~UOEc8uJR7t*QE~k@%ZtH# ziln^<@2(HTeIlt?8^6U2Cp8rBST}{@#KWV^c=`>d(uanT>4ga<{^}i|v>IMPhv9yo zHSdaW6*(pje-{T+c1%P^PeIR~$eBBuVsf7W8&Pr@a8F)Qt}9*w>8TGlBvLtp1!Y1Gl)RVAiyYA=EwW z0RJ&`Es4;H02)9@;Ns9AuQJ$M?61L!!z^d#UYSqRiofDRgQiv&>PXN*a-t#|aGX&Z zY97`|1iLY#Ay`z*p$pb978+?RNP-7JC2J>g2!a{Sv({v!8rF^}k5+Mxt6FVrQ1MYi zMDR`203%3SZ$`VGD(LD|{e@Dp^kW|Wh2ueu`YNt3)Tm8c8-GP|X?ldM^u5R)48!j| zXzNZ~*igl$iM-5Yj*py;2+^dO^#zcORpOc2hUMT{sLmEYKHUrHEroJ}N^ljgoDqjA z$Q#736qP01ur@{h2JHd*s?x<1q?l#zBB}ghp3os?&@5YNoEx`3@4{klK!)F0c(mYF^YCP0ZN0KjNkAuRr`+<2@9x+{A*d2hGDl zyi^=>9`nLUdjZdyn+Ye>=ovEl)B&f$KUUczHc-&xNa>t)*!;vcBEuuWPFb|bbHv+B z%p0YLoBdPDWT#m`cw#&!$*>{jKrv~?+^G?qW*;AxqLX+Q6k!wIO)K)8dStYH9HoXg z>pw+td6fQoN;in}6DhF^b*DkOyb%1#s*U0#eK%;~yk}r#%ZtO|YNe zC@FWZ%DToAXU*@Xh`^$r^3s53^Dmck(zrDlNS8bPY(b2g>Tz-n0cV*Quw zV+6xTP^~XWlOR$^@54r^W)vwUVtq-O~AON6&V3n6{TD3;H);+?tO!NM}v_!=AeXt_08(qeJ1+*oeYu0vzZ)L8`RE~bW7|n zqhS||iCFWT$|lS2&oCfNIlMCd{1r!+z1{#YvPgk&#^#th|B9;Me2!uFja~v#mZhTY z8n(uf8tmJEtd<}%{~}i;Io^uUd28n3knE!?P!aVG(8n|=T7vjsW|`aZI` z)B&Ur_KK6Y{9^lFm4J#GN=~kR8ieGp@H7>387YaP4z5R))EI+eO}KVGF-a)vZH&Cm z$H?YSK;7#eqBazZ&)ngN4C!&b9ztH2WXe(c%`>av{KpJ(>XETEr{g&AWd8$(bIYQR-L_IUt zI(XeHuQT=L`FpvJGu<9xlV&p0&!H$a!2$K&lV9Zsk6_G*AaXAFJviM*@Tr(siK5R1 z;2E2%F>0-OM$bHb{|E}D*gDklx=yL);eu-wq9=L$Xxv6UjB-ULI>l%yV^WH_VYy{s7iLc_U?85xp~H5cUiQ| z=q~RqdUt zE$=Iu0+#+6c;A#O$<<9*fbQQZHZFItVsqN_&Ms$h-!-|#AW${emO%xXL9VVJ1VfUT zVBwb8$fFrVND5#l>kNk^}dky^dJ!Bf&kh+lzVM1bARgfvVa&tfPl{@LYte`R@sBbUDJho(%q? zf`?-W@Qy(i0anNNLty+*vv{JPY-duR=3{tnfKZkqM2N579WLv9e3NmohBdfIxK8 zb|vvf0ns7k>dAP_LR{6HSXnfelVR1QAV4?~0dhgPI^Xf9J2DtfPHfE*Y zvO6dnhD26WVUGG9-ZnN?Br?^6pjlw*VYn2N9OWXNk~@|ey4YYQ{kn&<36KXg$L<-i z+~_H(^K#j10Ua&~Tq`Zy?hAq$T^Cg6@E&wnEKEdLYW3;@85Ri=}iQ#wiZtKHeD}-rlcV%T8(Z{LG*K zpFbMrzdkIxGQZgj?GR=}(RiqYrW%=Cou5^6$S`)&_cY=V6$vx2o|bF)Gbil1=>@HS z7iZxRbB~e59X#`hGt*q2?O0dQ{BhpP{mf7!&(wlgwM{}SDW+#eY|V_qGt->Dljp4J z4YIvg~ z_OKK|sm_8S=D16iauT*dHX_BZW1l6*Sjr7)Pl)->7C_dt&%-0W+m#@OqdvhKtY^( zwzG0cDuBkpHv#Mjpb!BPXuwT`FIq-oRWv2E68JRCBsb} zmM72M*`)!Ljl9>4-7basA!9PZ>vsu_KuamH12wiPzpDyJX>AQ(HGw3 z#|6UJ8VI-mBbsKnAZAUo&so_Ve^eY6S-uW!a-m{#IuPWYYrH!-5yn_A-lP%C7~))( zdOz=(?(Uh%49eMTR+I*>e{LWO>gF}l>gIvKCQ~I6%(?K0*9ek5_xAfW5`V8vsWMl| zhc=EPCdn<(k9UMaH!>OVapYOX^n7{GuzP3x)c_{%^iEFTcS4_V?ef@z;O+ZQ6hQZORHKsTGl% zE@p5RngU_o<5c*0Xhb}KXtT^pdV1dkOvUFcGKp4|FT=BpI?nSA(O82sggJJGvTI@4 zh26tUqx20xn8{5|iy2+d zm=imdW8J6qxgx0IJ9j+qWgjE&|9nl?v$`_mb7AkrEUMJ9R++pw!@dD>LF;z1?z7%c z26<|J6yYQKgrrc2x#N+|4Ok1_pvGm)gH#zSzk0ZE;zl0H!t(`U_IK_Ju_gFsS`k#V&sw)eTyk=`y6>XYIR z)w#1bX29ueDUv&HnwgFb5evzc#d~4>EJrD*HGtZ{D#MoB{By_t`kOgNc@fpz6Mg7{ z(m*49*Txuqvkbd4e@aTJ;$&3DtX=k@HtMVUnM;gU8}Ic6gD$mjibOCLNRC$Pqn^($ z+RMjXGQ*!WBU@fr&?H}W-5|I20PZcL>)tT@mS>;LU}Kx|Wc1d&GRU_LO*V7k_qsV* z6+;81z4ABUm0ir|Tq`rANuLQIXg}{r1s&3z73YeQ2)Z6ih!W>kec<9?CGY|ru+-#` zn+drTfuOt>OfhGj-z(2|dZQ|E0g5HV7t}A=t#3t5Y#~#k(Uk6fO#~GS?>7#1I82dkUnp zB1mbKN@6>@PZain<;V6kyR1m^-F$hHQoD&LrKiarO37lixGbX$1ik{A6`G&c4i7px zSW^)I03ZNKL_t(%FGp1fMe`w@WjM32hTVLE_ty<7;*o4yHl>R*+8=e_EH3NJyvD{c z7)=@6K0Z7NCOi~5BQl{hdmTZaV{qj`IptXzPM=XZ$GiE{>^n6`mLj+kIAS%|vhVrGZ{G8yVQG;zb2HrR+fY`@Bi`(crdALQgTV&cI1mr&;H8 zifSab;^^F^<8@0qb_B!o|Br_$7;b&11oVt^beC-u)qPXw=gS`HgK*M z_<}}xH3cx!Y^OD-EHgDqGOA?H@;%<<%yM%-R2HB2O*3cf8eP*wdW#6FVZHH^3mLqc z2UF}HZ@yjQ?47|okNoOf;A$)d{Tzsm%n}k`pJNTu zclaRuYze}Usz7%B5zskubUSTYoS%lGw}g1R ztcH1b4`3e`I5S99qXE?+4B7b1sdiAF5g#9U#y;MQ2>#88 zH3~Dzr0C&84b^LgO^?Q{;iWofDLLlM4Nx(!4n?CJ8zeau*KZ@vm4}+>JYNJvSe?(` zs(~38z_>0aP0&w2*OV$pZ}SupsbDPT`vO|Uy|nvCKpl8p4c_x=#| z?zn;G&N<2^^Tp#{@J{8LOowmGu&{(lz>YZcP1NgNX6sDlSLHh8Qp3i1dp)*|5aY%3 zc!CYFo837s?4Xb^XQ?i(4-ZtMa?62L#iwWx%Ry)FKfkw($D8-RKpJI3HMTU^g&$uB?00(XK5KJbs zh%FONF1#;E7FzZljZ&gEkCkarlKJSM3Bgvs8gRePgm-SxK))t%MdV&K)1=a*D5xTH zennNS_g-%0OP#ew zQsO*wtRH6hUj(P?iOf=ZP!;ef*x*|HDGVdv5rLUqn?2`-t0alo{l*&Jm6vc(a)eFP zhs)Y0yFH(nMxJ;7oR&>6#7I#bQz#8ih-*3xPCUH*Nc+u2+R7ONaQD{q>o`5vYX}iT zbr^onZsB{5+bd(6X1zV62%TqOxNe$FfEi`fE4XzV0V{=!L{n3FJ-0n)AIYA_O(Y7j zGJxE^A&N>}|DPA`{85wvA^b+_oL3rYg5GTKl|e(Lw=S@6oRL*A#|PEf)X+0nYGapl zuqc`?-=WBbtVZgjy1{9l+qGmtxv-Wd!y4AKK}I@bBbi6dO)0V*Bn|C%#k$%y#r&Ui z81?EHSsH7J1Q(&o}Qzv5J~41v*Avpz%dY#_*+ zu4}ntqrlOyJ2zf*ZCKvgvcBT$53zQoLc`vxK2+1yNz)VCjQae!^`j1DEe#!u)iti{ zW**X!D)^@)t!5>OAQqkI07b7r%ZfgcjV5j~>&BShl-#KTK|lr4&@h!(&?$VGAvOSi z0~(@j!UNOv{LT;m{`-xV`u@jX^ZlRw`cLz)lj7$r&(%d&;l%vL+2GBX;TVGXVVL9N zFfFK5tmdm1X08;G`DaI9r@O~6&ZCaNASMW?BkAL3J=0ma!1!$uiMZpyufap<2e|cN{?P)9>$5(zT{6s zO*I%9n1KL<`3c&jeanP5Ge`Gm3=L*OsRYHiQIl(ge! zibID>c}RsZlPv!2!qAB3qhl`O1#5GlyN3Zy)5)`1;qQi$EPjFMmJNZwVYBVM^R8L* zVEG#fxsrv7;dXBtB?dj-X4>A^e(yFAgvP;*bD7f&iD~D?y*ZA1q1hS9bumZI4mfu5 zzB@&Sa#;2bK%i&3dp^1cK;|SXvoq)!W4HJ0@Vh_Ju^Z6O1n9eVVA3t)_!f4rB>LPm zcKO$Gy;DKOfSd^vtxnCQq}X@H6L3xYK&d5XeUM!=tVJ>!=hfX(HMkAq=DB~f zFkzNrT_E0r!L4L&g~}GW_c18^J4>;#xA2hbYh)spl`g)U zDz#W*f6XYbS@PJ}Al!@HP|f^|T4;K=DV-ffMImfZacTs2`K>J2Ea~%Xh;)Xc@}p;M zLX#lg)b7j|o-wK@Db7ghZj{49N`O2YXPEzZ?(KMU81m4_U41VW6l#|dLxR z5GYzAznp3}VML|OI%RX))I4gIU-wp?zy;M04JJrHqSKM zO*enb_-bTET^Ft7du=?Aio9x!#R~iq5x~YBmS4MYmEV*n*A?0Q8O7PnRD9J&ZFWv z55X+YnTSSIv5s;F6>_+u?C?g4^$x7+G6NdPyIME=oz!(7-bZD*YsNLX9J)3vv72{6 zcMw_cOQ5nOrPqUN5Vn1W(Hxx0K&??r45tQCeMf%-Lb_Nhd}wsa0N2KJ#kE!z8nH0# z4?v!wRM%sQ=s%|m{pY{@kKbLx{NMlnDfc_2&QfCmajzIdtjqB1rL*WMvQzO*jPMY7 z#td*x(k61Q`;O{CtxX2i15n@5>l}Uj9$TVq!c9ATzj3Is{H#vYf^D&nA+l&brx;K- zh%!GO8u>W8>}2|6O_ZRs)Sbb1j=n)d@*ziwMKJU%J0EIOOX8Tnb%PXjgmA$_nN_{*S+#yMJGBcrD5@I za%NXS>;CScxIakJ3ra~EQ5oWn#gr0Y(?zK&;0t=t%sQmzottt|Y?uNE#J|VCSDDzi z&FBVL7#fL)>Cf7){460_u|XYkt602u_wDv)FncJBFc1)4P@b)7@XosQ%9J)Na500x zS(PkfFInr>?>v5Ml1yi<+D*CO^$=5vguJ<;b?i1Oc5vB4zN~O)4h`jLz)G38+=h1< z(7~$iO$0*vyd2>mB-HHM9-Ud8_xKAC)0n#@1|j&asijc)M1 z!Ot=SvJg4!Tr-sUW(cOnb_bhgd6|icGmZ0^>pZbeA?C)S+if=9^q2=s2YUn}{Q2)Y z`UzaLKcAEHsHYeO5~h-J?2E2XX;diNIXVyT$go3|cQR9(Ga03LqdUG@~?$Oqa0e*osGiwc7Sc+R*SWGtMYPwWrk&A2x zy@UV)jg}Jai!7nb8BPUi=g14)e3zyYO+IRAjzr@rG7~!{H)YYPT;SV+_cx3a1WJgz z+`2P~@_@`J@S}?n;bKp9<@*4TRNfaP#{P!+=0;hqp*NeO`$55R0c~zOk~hFYI-Eyq z1yE2wh-bCUKxY8Tns}iOlrfF=Dbx}w;Jmpv(WTcffSWx0NWvS}c^B&h>vIPaGiLob z2{5g6DUG}xBO}-W#DN_`}QJ2&XZPZ`c4^JVclp93~C%`Kwfvq zfDi9=`_c>oy8JYskyzNqMdjS`RKzA`+P%zzZx$*xc59B*{kVhA>Lw2(cWM(!8Zg6W z$fj0}ov1&69A^~wvi*Hm^C(#1$ezZ%cvyD(UDtK9<2Vszd^Ti%oX|jt8qXhdu+8k! zf1k6D*(@m=II{mJK^_5&;JI$EbX#Jc*PL?nSKv>SOw&9x^Cn_OA9+GD23w6X1XGvR zKaT01l1W-@rjN1d{w$keu8KntTbvFOa`xJO@)4K~8-XhqTsDd-XL7Uoi17m+3wf<& zFJm1FEO#eFM6DSR_{%`0^<)J%_=Vh|o&^lzUq)KZ-ZRlD4$UhYo;f)uyD+i7)F@X+ zx?I+1QOO4DwVNW3&y-1;en;4H{DTn$h9n=g-^VL*6aY24i87Z;~j?;A5| z?Btr|KqGsIOa+?xKJ^gcQoLR>uKjBbmf6?j7eD!$*E{04o29)P?OR1>_J#ZL8L3Mgk&2bMD32VA{E#H#zGKhEhH&&(aL94WVlC zAsE^br~x-G27(dfd3Sgk#I=rlpdEQpG-4_Rr z#*+Jo5y%@0z7~$WFAcBti^ubUWaKfw7q06}l~4Qf)^Ld*CQ~#)L=Piy@7u>I-4^uRg8x>0--wke#+P&7p~3) zb#kd!FQx|U?q_7UVfrF>xv8oN?;7A#DBO%PTsHvff|bSQ7v<{B(U;~E%gj|*kfulh z4}9$JdQV9!mKf;SBNJL4#Cn#Xsq7hM(k z(2d!hks&OO?G_5CRz{0@T`o)|I@UsLg6xW2<5QYQyDK>46=hG|FIso=v}afo$MqGN z6z3aTA9G|>B(cWaqbZ6iV74!&Zw--Q><2c&qrP7PApyl z5eOu4u`h0p!E5GpEKmh#UqA#lY>Qvv=bvHUe*FEoWq<#}XKw)GwNU;1BoM_jZ$oS{^3~bJ|Kbz;quPf>rZ<53+i=>Yzojx+rbB4Xx z;E~qzavxqZx;v`t<9xpvKEPt}K-7BzEk2F`l{M^YYHC+*u)EE$Fc5&c7$LUV^yQKr zuJvvPhm`_8jo8dXJFheDNY@WA_OZU}V(|hv2Ge=PQHii;6K5UAN%NfqtRz#hzyfYr zavTw$W@o$phxn-taPz!sG_@o{JgoS&^_e_^eS*|+QnDcfxeVCDu%-RmbvqOZ71Te^ z+MM;w%>EsI@~o%!cv;WM;FOS?a?9A8#KjQ(s*3_K5*Qf(TiVZ_3W`Xp#=gXrdabeJ zNb6zPh0L5(3P?;bBD-S}T%qlRQN(rh6T%cT?+OqZw6I4*3rV2&Bd z0=|gs5DUwZRF|IQD$&-nnH7BCSxtmbQC#>`wGTb-o!DG+nh~LAWN7!{RO~YgN!K7T zRi_+&_Ce(5&Mx!m*2HrSE{YIr5U~;Ha*3|&uP(4~A{1XMLMZK`R!%ykb&ot5$d%?4b)aA2r-v-4mIW3~@Vfak=;eGyEuL^&J3 z1Z8e!=vi}j!Mg`D9;Iej4xEvpkonPXVgQTdFCW2at!4LXUK{>g^CV|&X715^78gKF z0%d~nM$L!2tkdT3&Cjp5V>o~M9m%r)XgE zYa${1_82gMGHV@Gc@mppG@~vtpEf@0o8_Eb5POMC;rg4+o=R5x?0ya@T51AepUzXx zlOk49Jdg)f#l$vF8cs#X`aGYg^S!A1TXgB3@SG-q48;0ajrwtn-mcDmSW<*$nQMbm zC#~Ndp5U<4lp)0iMNb4!bLoPhSc(W%z@@Dtp2d^Sb7W@Rtg`g+T%Vu$>{@fq4C?M? z+_DiJlMU`>A0J`=B~JjJb51O~)z8Zv!3g#JpqU64&pD4Ho*1A2qC`{}89Y%Q0zmCb z%g7NoGR;BlPd<0`Ekda8L8?d4*$Fu#&rNq?)%iQoYsCf7jVE%#06SgrXK`|MW{}XS zM^fwGtk$jGF##q$Yh@#-n{v;wSd_e?-Up2vwxVjeM~Hi?Tb{jF^}DKzlNq+Z){Bgy zQDzSvqo_WlDJ2Fp_02Ow=V3lwj+*7QfDEdv&>OSTv51O+^9!S^q8|3L2|Oe#~TwghN&w{#`(ZmLF^z+;4d7_00==G)8^fCGj>a)B;V-z>{=UEtKQK7QWjf9Qk1Z3mb zT~p;m?I`p25u7=R67>L7*E&6?BCf5SyBE*$P@o#bfoM$(9j{N6I=CDXqUBNGsls3zgXDy&j@GC${yxO89(x1YF6WxyPEQ|{_r$gNX2k;ynfxklSeGwy&u59 zABnAEh!>l`u)@ z1WvY;I?B7psTIc9;_hRl6q$0%pe#SD>HDtlGs2!mj_@7|{TcSxHILpAFAd|qP@O31HV{+IG6cWG(W(f{?z3{^UYxYQ zC_`UL4GTb8_M7nZdE(i_&d{<`s7@};@--|R zde+aHMz@PHxw+tWktm+nj{3lx3vIk`&1EwaM)Ks>@+?z!)*zSf1KG4_w`sx|i~x@g0P-gDxs`a64KILeB;I-kKt;xKmz8eQ7qvrJNV&eZ-rohQf?`M1RJoPctsG6 z3^cpQ{ar6QpD#7m-{Tm7@q3T3KYa`jfQD}qr=$SbCQZKO(v#+W_gWid(nd#KX-cUc z;7z&A!;(xmO0G?Ora|+PQR=@NgehFlKkGOL-^UYa^^&}E;z&FrW-y#u_iC#i0)sb( zHeEtgVQ?zJ@O=J%Fv#dBVr}?|-&)P^$H)2c^*knz7^S47=6hZD*E8p3E<2F!I?A-% z+d6~Htm~5IMu&9XvxhsGzU4zWktMNCZfi9MH;8~@O-Z{ zG)1l1lM112;HpD;>21{EFJe^P?om)`D3`x$QLlI(D<%K?O}W_-bU36z{GML2N%L44 z1BZCSG+P!qe>cqV)BlWVPm~3A)LU1ezKbTv7dXROxG`l-lV?rgYWBv|=K!zLaaPF$ zQc-t#;8bDOHDE4^ZQp`rv=7(;vQQXXi1&e5jAw&IhCQh{HH8>C&Cl2+GK!on6$*t2 zpfr-;w1GEBWZQ|Fkm)dRJ2t)h`^eCA08X5nS;%c1LMEHuwIwJwn@V zNwBX}0d21FsB6hO)r8KSlR4q}{auciu$UJY1Ox0+=@pTczo!%pt_?WkAdTm|$#}?) zzHzHm@kIP*qF3Ea#s+UjhPdqZ zVZJ}E#UKCuSNr*w--r3v_donfnU~n>wu}KyaZWqTKD6=UDl#F?DHR_zXAd~$EZ_Xt zjmGe$Dk5?{xmbun^P|O7bSuX^GqmF+w?2~d5FGp=_qcd0B<0aSzWoevE zxzdA}pD7&2C+diY=jMISdp~>8=O?5wQY_!*JlAvV?Aw|p6nxM!^KK!6jMOvRk$Vci z256-qh{ZKx??+hw!w*A>=&9?uL59fEj+x3b=FW0+J3gMD9RbKwu>lWry3}#Y!F%O@ z%i7FzJkS9tj$HM)wCB$`Tyt8WhAgdRR9Sx<+i^P6`P!`Y=rSAg#9KMdd5$zQ?D>3A zb6Dh(+(il{mQ-XUx=>Z6@c}a}WTf?95?@mN@7b^6O#_3b(d1hB_y|N20b{|dO$OyxEfP{F&}Qk+8-Y|j#Ie?a2V4oF+3<4XjHLOsIM@owI;lPOC* zJAZlao0P9K!U`bpMj8#fu;bQC)>~&|*9dm!5_>k}Fbidx*>%C7^EDcs1T?)4%BHq9 zAg6(3#WX5#A#LUYr5t>~?ZSaEZxo}I80R7HNh8OIuN#dR)Cft-DtrG7md&?e7-i0- zUpeU()QW|`5Svsh0T!Z!Rn#5#ao>_niSBf&f$j~33C&qw*zI9rW^Ns~SM;27w7}2L zB^pa!YAOi)BHcC@@gs`KG&LWUU4_8aDvzkFtKQJdb?@Xa$|>^!

- 0} - > - + + - - +
diff --git a/src/components/Pools/Backstop/AddLiquidity/schema.ts b/src/components/nabla/Pools/Backstop/AddLiquidity/schema.ts similarity index 78% rename from src/components/Pools/Backstop/AddLiquidity/schema.ts rename to src/components/nabla/Pools/Backstop/AddLiquidity/schema.ts index 881c0653..3b5af510 100644 --- a/src/components/Pools/Backstop/AddLiquidity/schema.ts +++ b/src/components/nabla/Pools/Backstop/AddLiquidity/schema.ts @@ -1,5 +1,5 @@ import * as Yup from 'yup'; -import { transformNumber } from '../../../../helpers/yup'; +import { transformNumber } from '../../../../../helpers/yup'; import { AddLiquidityValues } from './types'; const schema = Yup.object().shape({ diff --git a/src/components/Pools/Backstop/AddLiquidity/types.ts b/src/components/nabla/Pools/Backstop/AddLiquidity/types.ts similarity index 100% rename from src/components/Pools/Backstop/AddLiquidity/types.ts rename to src/components/nabla/Pools/Backstop/AddLiquidity/types.ts diff --git a/src/components/nabla/Pools/Backstop/AddLiquidity/useAddLiquidity.ts b/src/components/nabla/Pools/Backstop/AddLiquidity/useAddLiquidity.ts new file mode 100644 index 00000000..daab05f2 --- /dev/null +++ b/src/components/nabla/Pools/Backstop/AddLiquidity/useAddLiquidity.ts @@ -0,0 +1,56 @@ +import { yupResolver } from '@hookform/resolvers/yup'; +import { useQueryClient } from '@tanstack/react-query'; +import { useForm, useWatch } from 'react-hook-form'; +import { cacheKeys } from '../../../../../constants/cache'; +import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; +import { useGetAppDataByTenant } from '../../../../../hooks/useGetAppDataByTenant'; +import { useModalToggle } from '../../../../../services/modal'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractBalance } from '../../../../../shared/useContractBalance'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import schema from './schema'; +import { AddLiquidityValues } from './types'; + +export const useAddLiquidity = (poolAddress: string, tokenAddress: string) => { + const queryClient = useQueryClient(); + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const toggle = useModalToggle(); + + const balanceQuery = useContractBalance({ contractAddress: tokenAddress, decimals: FixedU128Decimals }); + const depositQuery = useContractBalance({ contractAddress: poolAddress, decimals: FixedU128Decimals }); + + const form = useForm({ + resolver: yupResolver(schema), + defaultValues: {}, + }); + + const mutation = useContractWrite({ + abi: backstopPoolAbi, + address: poolAddress, + method: 'deposit', + onError: () => { + // ? log error - alert not needed as the transaction modal displays the error + }, + onSuccess: () => { + form.reset(); + balanceQuery.refetch(); + depositQuery.refetch(); + queryClient.refetchQueries([cacheKeys.backstopPools, indexerUrl]); + }, + }); + + const onSubmit = form.handleSubmit((variables: AddLiquidityValues) => + mutation.mutate([decimalToNative(variables.amount, FixedU128Decimals).toString()]), + ); + + const amount = + Number( + useWatch({ + control: form.control, + name: 'amount', + defaultValue: 0, + }), + ) || 0; + + return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery }; +}; diff --git a/src/components/Pools/Backstop/Modals/index.tsx b/src/components/nabla/Pools/Backstop/Modals/index.tsx similarity index 87% rename from src/components/Pools/Backstop/Modals/index.tsx rename to src/components/nabla/Pools/Backstop/Modals/index.tsx index 99b3e534..cc9ce107 100644 --- a/src/components/Pools/Backstop/Modals/index.tsx +++ b/src/components/nabla/Pools/Backstop/Modals/index.tsx @@ -1,7 +1,7 @@ import { FunctionalComponent } from 'preact'; import { Modal } from 'react-daisyui'; -import { useModal } from '../../../../services/modal'; -import ModalCloseButton from '../../../Button/ModalClose'; +import { useModal } from '../../../../../services/modal'; +import ModalCloseButton from '../../../../Button/ModalClose'; import AddLiquidity from '../AddLiquidity'; import WithdrawLiquidity from '../WithdrawLiquidity'; import { LiquidityModalProps } from './types'; diff --git a/src/components/Pools/Backstop/Modals/types.ts b/src/components/nabla/Pools/Backstop/Modals/types.ts similarity index 69% rename from src/components/Pools/Backstop/Modals/types.ts rename to src/components/nabla/Pools/Backstop/Modals/types.ts index 5324a1f9..729d7879 100644 --- a/src/components/Pools/Backstop/Modals/types.ts +++ b/src/components/nabla/Pools/Backstop/Modals/types.ts @@ -1,4 +1,4 @@ -import { BackstopPool } from '../../../../../gql/graphql'; +import { BackstopPool } from '../../../../../../gql/graphql'; export const ModalTypes = { AddLiquidity: 2, diff --git a/src/components/Pools/Backstop/WithdrawLiquidity/index.tsx b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx similarity index 73% rename from src/components/Pools/Backstop/WithdrawLiquidity/index.tsx rename to src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx index 9ddc1cc6..ed323f00 100644 --- a/src/components/Pools/Backstop/WithdrawLiquidity/index.tsx +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx @@ -2,11 +2,11 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; -import { BackstopPool } from '../../../../../gql/graphql'; -import { calcSharePercentage, minMax } from '../../../../helpers/calc'; -import { nativeToDecimal, roundNumber } from '../../../../shared/parseNumbers'; -import { numberLoader } from '../../../Loader'; -import TransactionProgress from '../../../Transaction/Progress'; +import { BackstopPool } from '../../../../../../gql/graphql'; +import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; +import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; +import { numberLoader } from '../../../../Loader'; +import TransactionProgress from '../../../../Transaction/Progress'; import { useWithdrawLiquidity } from './useWithdrawLiquidity'; export type WithdrawLiquidityProps = { @@ -20,10 +20,9 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null onSubmit, balanceQuery, depositQuery, - form: { register, setValue, watch }, + amount, + form: { register, setValue }, } = useWithdrawLiquidity(data.id, data.token.id); - const amount = Number(watch('amount') || 0); - const balance = balanceQuery.balance || 0; const deposit = depositQuery.balance || 0; const hideCss = !mutation.isIdle ? 'hidden' : ''; @@ -41,9 +40,7 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null
-

- Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`} -

+

Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} LP`}

Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

@@ -55,6 +52,7 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null autoFocus className="input-ghost w-full text-4xl font-2 p-2" placeholder="Amount" + max={deposit} {...register('amount')} />
Deposit
-
{roundNumber(deposit || 0)}
-
-
-
Remaining deposit
-
{roundNumber(deposit - amount || 0)}
+
{roundNumber(deposit || 0)} LP
-
Remaining pool share
+
Pool share
{minMax( - calcSharePercentage(nativeToDecimal(data.totalSupply || 0).toNumber() - amount, deposit - amount), + calcSharePercentage(nativeToDecimal(data.totalSupply || 0, FixedU128Decimals).toNumber(), deposit), )} %
- - +
+ + +
diff --git a/src/components/Pools/Backstop/WithdrawLiquidity/schema.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts similarity index 79% rename from src/components/Pools/Backstop/WithdrawLiquidity/schema.ts rename to src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts index 6040d872..e981907c 100644 --- a/src/components/Pools/Backstop/WithdrawLiquidity/schema.ts +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts @@ -1,5 +1,5 @@ import * as Yup from 'yup'; -import { transformNumber } from '../../../../helpers/yup'; +import { transformNumber } from '../../../../../helpers/yup'; import { WithdrawLiquidityValues } from './types'; const schema = Yup.object().shape({ diff --git a/src/components/Pools/Backstop/WithdrawLiquidity/types.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts similarity index 100% rename from src/components/Pools/Backstop/WithdrawLiquidity/types.ts rename to src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts new file mode 100644 index 00000000..fddb7be0 --- /dev/null +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts @@ -0,0 +1,60 @@ +import { yupResolver } from '@hookform/resolvers/yup'; +import { useQueryClient } from '@tanstack/react-query'; +import { useForm, useWatch } from 'react-hook-form'; +import { cacheKeys } from '../../../../../constants/cache'; +import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; +import { subtractPercentage } from '../../../../../helpers/calc'; +import { useGetAppDataByTenant } from '../../../../../hooks/useGetAppDataByTenant'; +import { useModalToggle } from '../../../../../services/modal'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractBalance } from '../../../../../shared/useContractBalance'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import schema from './schema'; +import { WithdrawLiquidityValues } from './types'; + +export const useWithdrawLiquidity = (poolAddress: string, tokenAddress: string) => { + const queryClient = useQueryClient(); + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const toggle = useModalToggle(); + + const balanceQuery = useContractBalance({ contractAddress: tokenAddress, decimals: FixedU128Decimals }); + const depositQuery = useContractBalance({ contractAddress: poolAddress, decimals: FixedU128Decimals }); + + const form = useForm({ + resolver: yupResolver(schema), + defaultValues: {}, + }); + + const mutation = useContractWrite({ + abi: backstopPoolAbi, + address: poolAddress, + method: 'withdraw', + onError: () => { + // ? log error - alert not needed as the transaction modal displays the error + }, + onSuccess: () => { + form.reset(); + balanceQuery.refetch(); + depositQuery.refetch(); + queryClient.refetchQueries([cacheKeys.swapPools, indexerUrl]); + }, + }); + + const onSubmit = form.handleSubmit((variables: WithdrawLiquidityValues) => + mutation.mutate([ + decimalToNative(variables.amount, FixedU128Decimals).toString(), + decimalToNative(subtractPercentage(variables.amount, 1), FixedU128Decimals).toString(), + ]), + ); + + const amount = + Number( + useWatch({ + control: form.control, + name: 'amount', + defaultValue: 0, + }), + ) || 0; + + return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery }; +}; diff --git a/src/components/Pools/Backstop/index.tsx b/src/components/nabla/Pools/Backstop/index.tsx similarity index 83% rename from src/components/Pools/Backstop/index.tsx rename to src/components/nabla/Pools/Backstop/index.tsx index 6ece04e0..b33acc56 100644 --- a/src/components/Pools/Backstop/index.tsx +++ b/src/components/nabla/Pools/Backstop/index.tsx @@ -1,8 +1,9 @@ import { Button, Card } from 'react-daisyui'; -import { useBackstopPools } from '../../../hooks/nabla/useBackstopPools'; -import ModalProvider, { useModalToggle } from '../../../services/modal'; -import Balance from '../../Balance'; -import { Skeleton } from '../../Skeleton'; +import { useBackstopPools } from '../../../../hooks/nabla/useBackstopPools'; +import ModalProvider, { useModalToggle } from '../../../../services/modal'; +import { FixedU128Decimals } from '../../../../shared/parseNumbers'; +import Balance from '../../../Balance'; +import { Skeleton } from '../../../Skeleton'; import Modals from './Modals'; import { LiquidityModalProps, ModalTypes } from './Modals/types'; @@ -21,7 +22,7 @@ const BackstopPoolsBody = (): JSX.Element | null => {

My pool balance

- +
diff --git a/src/components/Pools/Swap/AddLiquidity/index.tsx b/src/components/nabla/Pools/Swap/AddLiquidity/index.tsx similarity index 80% rename from src/components/Pools/Swap/AddLiquidity/index.tsx rename to src/components/nabla/Pools/Swap/AddLiquidity/index.tsx index a831c3a7..dba6593a 100644 --- a/src/components/Pools/Swap/AddLiquidity/index.tsx +++ b/src/components/nabla/Pools/Swap/AddLiquidity/index.tsx @@ -1,11 +1,11 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { Button } from 'react-daisyui'; import { PoolProgress } from '../..'; -import { calcSharePercentage, minMax } from '../../../../helpers/calc'; -import { nativeToDecimal, roundNumber } from '../../../../shared/parseNumbers'; -import TokenApproval from '../../../Asset/Approval'; -import { numberLoader } from '../../../Loader'; -import TransactionProgress from '../../../Transaction/Progress'; +import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; +import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; +import TokenApproval from '../../../../Asset/Approval'; +import { numberLoader } from '../../../../Loader'; +import TransactionProgress from '../../../../Transaction/Progress'; import { SwapPoolColumn } from '../columns'; import { useAddLiquidity } from './useAddLiquidity'; @@ -20,9 +20,9 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { onSubmit, balanceQuery, depositQuery, - form: { register, setValue, watch }, + amount, + form: { register, setValue }, } = useAddLiquidity(data.id, data.token.id); - const amount = Number(watch('amount') || 0); const balance = balanceQuery.balance || 0; const deposit = depositQuery.balance || 0; @@ -42,10 +42,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => {
-

- Deposited:{' '} - {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`} -

+

Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} LP`}

Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

@@ -55,6 +52,7 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { autoFocus className="input-ghost w-full text-4xl font-2 py-7 px-4" placeholder="Amount" + max={balance} {...register('amount')} />
-
-
Deposit after
-
- {depositQuery.isLoading ? numberLoader : `${roundNumber(deposit + amount)} ${data.token.symbol}`} -
-
Pool Share
@@ -94,8 +86,8 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { ? numberLoader : minMax( calcSharePercentage( - nativeToDecimal(data.totalSupply || deposit).toNumber() + amount, - deposit + amount, + nativeToDecimal(data.totalSupply || 0, FixedU128Decimals).toNumber(), + deposit, ), )} % diff --git a/src/components/Pools/Swap/AddLiquidity/schema.ts b/src/components/nabla/Pools/Swap/AddLiquidity/schema.ts similarity index 100% rename from src/components/Pools/Swap/AddLiquidity/schema.ts rename to src/components/nabla/Pools/Swap/AddLiquidity/schema.ts diff --git a/src/components/Pools/Swap/AddLiquidity/types.ts b/src/components/nabla/Pools/Swap/AddLiquidity/types.ts similarity index 100% rename from src/components/Pools/Swap/AddLiquidity/types.ts rename to src/components/nabla/Pools/Swap/AddLiquidity/types.ts diff --git a/src/components/nabla/Pools/Swap/AddLiquidity/useAddLiquidity.ts b/src/components/nabla/Pools/Swap/AddLiquidity/useAddLiquidity.ts new file mode 100644 index 00000000..87dfdc75 --- /dev/null +++ b/src/components/nabla/Pools/Swap/AddLiquidity/useAddLiquidity.ts @@ -0,0 +1,60 @@ +import { yupResolver } from '@hookform/resolvers/yup'; +import { useQueryClient } from '@tanstack/react-query'; +import { useForm, useWatch } from 'react-hook-form'; +import { cacheKeys } from '../../../../../constants/cache'; +import { swapPoolAbi } from '../../../../../contracts/nabla/SwapPool'; +import { useGetAppDataByTenant } from '../../../../../hooks/useGetAppDataByTenant'; +import { useModalToggle } from '../../../../../services/modal'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractBalance } from '../../../../../shared/useContractBalance'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import schema from './schema'; +import { AddLiquidityValues } from './types'; + +export const useAddLiquidity = (poolAddress: string, tokenAddress: string) => { + const queryClient = useQueryClient(); + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const toggle = useModalToggle(); + + const balanceQuery = useContractBalance({ contractAddress: tokenAddress, decimals: FixedU128Decimals }); + const depositQuery = useContractBalance({ + contractAddress: poolAddress, + abi: swapPoolAbi, + decimals: FixedU128Decimals, + }); + + const form = useForm({ + resolver: yupResolver(schema), + defaultValues: {}, + }); + + const mutation = useContractWrite({ + abi: swapPoolAbi, + address: poolAddress, + method: 'deposit', + onError: () => { + // ? log error - alert not needed as the transaction modal displays the error + }, + onSuccess: () => { + form.reset(); + balanceQuery.refetch(); + depositQuery.refetch(); + queryClient.refetchQueries([cacheKeys.swapPools, indexerUrl]); + }, + }); + + const onSubmit = form.handleSubmit((variables: AddLiquidityValues) => + mutation.mutate([decimalToNative(variables.amount, FixedU128Decimals).toString()]), + ); + + const amount = + Number( + useWatch({ + control: form.control, + name: 'amount', + defaultValue: 0, + }), + ) || 0; + + return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery }; +}; diff --git a/src/components/Pools/Swap/Modals/index.tsx b/src/components/nabla/Pools/Swap/Modals/index.tsx similarity index 84% rename from src/components/Pools/Swap/Modals/index.tsx rename to src/components/nabla/Pools/Swap/Modals/index.tsx index 5bdf8ae4..d5d8cd33 100644 --- a/src/components/Pools/Swap/Modals/index.tsx +++ b/src/components/nabla/Pools/Swap/Modals/index.tsx @@ -1,8 +1,9 @@ import { FunctionalComponent } from 'preact'; import { Modal } from 'react-daisyui'; -import { useModal } from '../../../../services/modal'; -import ModalCloseButton from '../../../Button/ModalClose'; +import { useModal } from '../../../../../services/modal'; +import ModalCloseButton from '../../../../Button/ModalClose'; import AddLiquidity from '../AddLiquidity'; +import Redeem from '../Redeem'; import WithdrawLiquidity from '../WithdrawLiquidity'; import { LiquidityModalProps } from './types'; @@ -10,6 +11,7 @@ import { LiquidityModalProps } from './types'; const modalsUi: Record> = { 2: AddLiquidity, 3: WithdrawLiquidity, + 4: Redeem, }; const PoolsModals = () => { diff --git a/src/components/Pools/Swap/Modals/types.ts b/src/components/nabla/Pools/Swap/Modals/types.ts similarity index 93% rename from src/components/Pools/Swap/Modals/types.ts rename to src/components/nabla/Pools/Swap/Modals/types.ts index 322834e5..3ee869e1 100644 --- a/src/components/Pools/Swap/Modals/types.ts +++ b/src/components/nabla/Pools/Swap/Modals/types.ts @@ -3,6 +3,7 @@ import { SwapPoolColumn } from '../columns'; export const ModalTypes = { AddLiquidity: 2, WithdrawLiquidity: 3, + Redeem: 4, }; export type LiquidityModalProps = { diff --git a/src/components/nabla/Pools/Swap/Redeem/index.tsx b/src/components/nabla/Pools/Swap/Redeem/index.tsx new file mode 100644 index 00000000..5aaa542f --- /dev/null +++ b/src/components/nabla/Pools/Swap/Redeem/index.tsx @@ -0,0 +1,139 @@ +import { ArrowLeftIcon } from '@heroicons/react/24/outline'; +import { ChangeEvent } from 'preact/compat'; +import { Button, Range } from 'react-daisyui'; +import { PoolProgress } from '../..'; +import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; +import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; +import { numberLoader } from '../../../../Loader'; +import TransactionProgress from '../../../../Transaction/Progress'; +import { TransactionSettingsDropdown } from '../../../../Transaction/Settings'; +import { SwapPoolColumn } from '../columns'; +import { useRedeem } from './useRedeem'; + +export interface RedeemProps { + data: SwapPoolColumn; +} + +const Redeem = ({ data }: RedeemProps): JSX.Element | null => { + const { + toggle, + mutation, + onSubmit, + balanceQuery, + depositQuery, + amount, + updateStorage, + form: { register, setValue }, + } = useRedeem(data); + const deposit = depositQuery.balance || 0; + + const hideCss = !mutation.isIdle ? 'hidden' : ''; + return ( +
+ + + +
+
+ +

Redeem {data.token?.symbol}

+
+ +
+

Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} LP`}

+

+ Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`} +

+
+
+
+ + + { + setValue('slippage', slippage); + updateStorage({ slippage }); + }} + slippageProps={register('slippage', { + valueAsNumber: true, + onChange: (ev) => + updateStorage({ + slippage: Number(ev.currentTarget.value), + }), + })} + /> +
+ ) => + setValue('amount', (Number(ev.currentTarget.value) / 100) * deposit, { + shouldDirty: true, + shouldTouch: false, + }) + } + /> +
+
+
+
Fee
+
{'! TODO'}
+
+
+
Deposit
+
{roundNumber(deposit)}
+
+
+
Pool share
+
+ {minMax( + calcSharePercentage(nativeToDecimal(data.totalSupply || 0, FixedU128Decimals).toNumber(), deposit), + )} + % +
+
+
+
+ + +
+ +
+
+ ); +}; +export default Redeem; diff --git a/src/components/nabla/Pools/Swap/Redeem/schema.ts b/src/components/nabla/Pools/Swap/Redeem/schema.ts new file mode 100644 index 00000000..8a5fcad4 --- /dev/null +++ b/src/components/nabla/Pools/Swap/Redeem/schema.ts @@ -0,0 +1,10 @@ +import * as Yup from 'yup'; +import { transformNumber } from '../../../../../helpers/yup'; +import { RedeemLiquidityValues } from './types'; + +const schema = Yup.object().shape({ + amount: Yup.number().positive().required().transform(transformNumber), + slippage: Yup.number().transform(transformNumber).nullable(), +}); + +export default schema; diff --git a/src/components/nabla/Pools/Swap/Redeem/types.ts b/src/components/nabla/Pools/Swap/Redeem/types.ts new file mode 100644 index 00000000..1cdb42f3 --- /dev/null +++ b/src/components/nabla/Pools/Swap/Redeem/types.ts @@ -0,0 +1,4 @@ +export type RedeemLiquidityValues = { + amount: number; + slippage?: number | null; +}; diff --git a/src/components/nabla/Pools/Swap/Redeem/useRedeem.ts b/src/components/nabla/Pools/Swap/Redeem/useRedeem.ts new file mode 100644 index 00000000..472cdc55 --- /dev/null +++ b/src/components/nabla/Pools/Swap/Redeem/useRedeem.ts @@ -0,0 +1,117 @@ +import { yupResolver } from '@hookform/resolvers/yup'; +import { useQueryClient } from '@tanstack/react-query'; +import { useCallback } from 'preact/compat'; +import { useForm, useWatch } from 'react-hook-form'; +import { config } from '../../../../../config'; +import { cacheKeys } from '../../../../../constants/cache'; +import { storageKeys } from '../../../../../constants/localStorage'; +import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; +import { subtractPercentage } from '../../../../../helpers/calc'; +import { debounce } from '../../../../../helpers/function'; +import { getValidSlippage } from '../../../../../helpers/transaction'; +import { useGetAppDataByTenant } from '../../../../../hooks/useGetAppDataByTenant'; +import { TransactionSettings } from '../../../../../models/Transaction'; +import { useModalToggle } from '../../../../../services/modal'; +import { storageService } from '../../../../../services/storage/local'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractBalance } from '../../../../../shared/useContractBalance'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import { SwapPoolColumn } from '../columns'; +import schema from './schema'; +import { RedeemLiquidityValues } from './types'; + +export const setValueProps = { + shouldDirty: true, + shouldTouch: false, +}; + +const defaultValues = config.swap.defaults; +const getInitialValues = (): Partial => { + const storageValues = storageService.getParsed(storageKeys.POOL_SETTINGS); + return { + ...defaultValues, + amount: 0, + slippage: getValidSlippage(storageValues?.slippage), + }; +}; +const storageSet = debounce(storageService.set, 1000); + +export const useRedeem = (swapPoolData: SwapPoolColumn) => { + const queryClient = useQueryClient(); + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const toggle = useModalToggle(); + + const poolAddress = swapPoolData.id; + const tokenAddress = swapPoolData.token.id; + const backstopPoolAddress = swapPoolData.backstop?.id; + const balanceQuery = useContractBalance({ contractAddress: tokenAddress, decimals: FixedU128Decimals }); + const depositQuery = useContractBalance({ contractAddress: poolAddress, decimals: FixedU128Decimals }); + + const form = useForm({ + resolver: yupResolver(schema), + defaultValues: getInitialValues(), + }); + const { handleSubmit, setValue, getValues, control, reset } = form; + + const mutation = useContractWrite({ + abi: backstopPoolAbi, + address: backstopPoolAddress, + method: 'redeemSwapPoolShares', + onError: () => { + // ? log error - alert not needed as the transaction modal displays the error + }, + onSuccess: () => { + balanceQuery.refetch(); + depositQuery.refetch(); + queryClient.refetchQueries([cacheKeys.swapPools, indexerUrl]); + }, + }); + const { mutate } = mutation; + + const onSubmit = useCallback( + () => + handleSubmit((variables) => { + if (!variables.amount) return; + const vSlippage = getValidSlippage(variables.slippage || config.backstop.defaults.slippage); + return mutate([ + poolAddress, + decimalToNative(variables.amount, FixedU128Decimals).toString(), + decimalToNative(subtractPercentage(variables.amount, vSlippage), FixedU128Decimals).toString(), + ]); + }), + [handleSubmit, poolAddress, mutate], + ); + + const updateStorage = useCallback( + (newValues: Partial) => { + const prev = getValues(); + const updated = { + slippage: prev.slippage || defaultValues.slippage, + ...newValues, + }; + storageSet(storageKeys.POOL_SETTINGS, updated); + return updated; + }, + [getValues], + ); + + const amount = + Number( + useWatch({ + control: control, + name: 'amount', + defaultValue: 0, + }), + ) || 0; + + return { + toggle, + onSubmit, + updateStorage, + form, + mutation, + balanceQuery, + depositQuery, + amount, + }; +}; diff --git a/src/components/Pools/Swap/WithdrawLiquidity/index.tsx b/src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx similarity index 70% rename from src/components/Pools/Swap/WithdrawLiquidity/index.tsx rename to src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx index 1d3e0c03..60f0ad5c 100644 --- a/src/components/Pools/Swap/WithdrawLiquidity/index.tsx +++ b/src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx @@ -2,11 +2,12 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; -import { calcSharePercentage, minMax } from '../../../../helpers/calc'; -import { nativeToDecimal, roundNumber } from '../../../../shared/parseNumbers'; -import { numberLoader } from '../../../Loader'; -import TransactionProgress from '../../../Transaction/Progress'; +import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; +import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; +import { numberLoader } from '../../../../Loader'; +import TransactionProgress from '../../../../Transaction/Progress'; import { SwapPoolColumn } from '../columns'; +import { ModalTypes } from '../Modals/types'; import { useWithdrawLiquidity } from './useWithdrawLiquidity'; export interface WithdrawLiquidityProps { @@ -20,10 +21,9 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null onSubmit, balanceQuery, depositQuery, - form: { register, setValue, watch }, + amount, + form: { register, setValue }, } = useWithdrawLiquidity(data.id, data.token.id); - const amount = Number(watch('amount') || 0); - const balance = balanceQuery.balance || 0; const deposit = depositQuery.balance || 0; const hideCss = !mutation.isIdle ? 'hidden' : ''; @@ -41,9 +41,7 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null
-

- Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} ${data.token.symbol}`} -

+

Deposited: {depositQuery.isLoading ? numberLoader : `${depositQuery.formatted || 0} LP`}

Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

@@ -55,7 +53,7 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null autoFocus className="input-ghost w-full text-4xl font-2" placeholder="0.0" - max={depositQuery.balance || 0} + max={deposit} {...register('amount')} />
Deposit
-
{roundNumber(deposit || 0)}
-
-
-
Remaining deposit
-
{roundNumber(deposit - amount || 0)}
+
{roundNumber(deposit)}
-
Remaining pool share
+
Pool share
{minMax( - calcSharePercentage(nativeToDecimal(data.totalSupply || 0).toNumber() - amount, deposit - amount), + calcSharePercentage(nativeToDecimal(data.totalSupply || 0, FixedU128Decimals).toNumber(), deposit), )} %
- - +
+
+ +
+ + +
diff --git a/src/components/Pools/Swap/WithdrawLiquidity/schema.ts b/src/components/nabla/Pools/Swap/WithdrawLiquidity/schema.ts similarity index 100% rename from src/components/Pools/Swap/WithdrawLiquidity/schema.ts rename to src/components/nabla/Pools/Swap/WithdrawLiquidity/schema.ts diff --git a/src/components/Pools/Swap/WithdrawLiquidity/types.ts b/src/components/nabla/Pools/Swap/WithdrawLiquidity/types.ts similarity index 100% rename from src/components/Pools/Swap/WithdrawLiquidity/types.ts rename to src/components/nabla/Pools/Swap/WithdrawLiquidity/types.ts diff --git a/src/components/nabla/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts b/src/components/nabla/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts new file mode 100644 index 00000000..93d8108c --- /dev/null +++ b/src/components/nabla/Pools/Swap/WithdrawLiquidity/useWithdrawLiquidity.ts @@ -0,0 +1,70 @@ +import { yupResolver } from '@hookform/resolvers/yup'; +import { useQueryClient } from '@tanstack/react-query'; +import { useCallback } from 'preact/compat'; +import { useForm, useWatch } from 'react-hook-form'; +import { cacheKeys } from '../../../../../constants/cache'; +import { swapPoolAbi } from '../../../../../contracts/nabla/SwapPool'; +import { subtractPercentage } from '../../../../../helpers/calc'; +import { useGetAppDataByTenant } from '../../../../../hooks/useGetAppDataByTenant'; +import { useModalToggle } from '../../../../../services/modal'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractBalance } from '../../../../../shared/useContractBalance'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import schema from './schema'; +import { WithdrawLiquidityValues } from './types'; + +export const useWithdrawLiquidity = (poolAddress: string, tokenAddress: string) => { + const queryClient = useQueryClient(); + const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const toggle = useModalToggle(); + + const balanceQuery = useContractBalance({ contractAddress: tokenAddress, decimals: FixedU128Decimals }); + const depositQuery = useContractBalance({ contractAddress: poolAddress, decimals: FixedU128Decimals }); + + const form = useForm({ + resolver: yupResolver(schema), + defaultValues: { + amount: 0, + }, + }); + const { handleSubmit, reset } = form; + + const mutation = useContractWrite({ + abi: swapPoolAbi, + address: poolAddress, + method: 'withdraw', + onError: () => { + // ? log error - alert not needed as the transaction modal displays the error + }, + onSuccess: () => { + reset(); + balanceQuery.refetch(); + depositQuery.refetch(); + queryClient.refetchQueries([cacheKeys.swapPools, indexerUrl]); + }, + }); + const { mutate } = mutation; + + const onSubmit = useCallback( + () => + handleSubmit((variables) => { + if (!variables.amount) return; + return mutate([ + decimalToNative(variables.amount, FixedU128Decimals).toString(), + decimalToNative(subtractPercentage(variables.amount, 0.5), FixedU128Decimals).toString(), + ]); + }), + [handleSubmit, mutate], + ); + + const amount = + Number( + useWatch({ + control: form.control, + name: 'amount', + defaultValue: 0, + }), + ) || 0; + + return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery }; +}; diff --git a/src/components/Pools/Swap/columns.tsx b/src/components/nabla/Pools/Swap/columns.tsx similarity index 63% rename from src/components/Pools/Swap/columns.tsx rename to src/components/nabla/Pools/Swap/columns.tsx index 59b78638..3b3ff37f 100644 --- a/src/components/Pools/Swap/columns.tsx +++ b/src/components/nabla/Pools/Swap/columns.tsx @@ -1,13 +1,12 @@ import { CellContext, ColumnDef } from '@tanstack/react-table'; import { Button } from 'react-daisyui'; -import { SwapPool } from '../../../../gql/graphql'; -import { useModalToggle } from '../../../services/modal'; +import { SwapPool } from '../../../../../gql/graphql'; +import { useModalToggle } from '../../../../services/modal'; +import { FixedU128Decimals, nativeToDecimal, prettyNumbers } from '../../../../shared/parseNumbers'; import { LiquidityModalProps, ModalTypes } from './Modals/types'; export type SwapPoolColumn = SwapPool & { - wallet?: unknown; - myAmount?: unknown; - coverage?: unknown; + myAmount?: number; }; export const nameColumn: ColumnDef = { @@ -17,45 +16,50 @@ export const nameColumn: ColumnDef = { enableSorting: true, } as const; -export const walletColumn: ColumnDef = { - header: 'Wallet', - accessorKey: 'wallet', - accessorFn: (row) => row.wallet?.toString(), - enableSorting: true, -} as const; - -export const myAmountColumn: ColumnDef = { - header: 'My Pool Amount', - accessorKey: 'myAmount', - accessorFn: (row) => row.myAmount?.toString(), - enableSorting: true, -} as const; - export const liabilitiesColumn: ColumnDef = { header: 'Pool liabilities', accessorKey: 'liabilities', - accessorFn: (row) => row.liabilities?.toString(), + accessorFn: (row) => prettyNumbers(nativeToDecimal(row.liabilities || 0, FixedU128Decimals).toNumber()), enableSorting: true, + meta: { + className: 'text-right', + }, } as const; -export const coverageColumn: ColumnDef = { - header: 'Coverage Ratio', - accessorKey: 'coverage', - accessorFn: (row) => row.coverage?.toString(), +export const reservesColumn: ColumnDef = { + header: 'Reserves', + accessorKey: 'reserves', + accessorFn: (row) => prettyNumbers(nativeToDecimal(row.reserves || 0, FixedU128Decimals).toNumber()), enableSorting: true, + meta: { + className: 'text-right', + }, } as const; export const aprColumn: ColumnDef = { header: 'APR', accessorKey: 'apr', - accessorFn: (row) => row.reserves?.toString(), // TODO: get apr + accessorFn: () => '0%', // TODO: get apr + enableSorting: true, + meta: { + className: 'text-right', + }, +} as const; + +export const myAmountColumn: ColumnDef = { + header: 'My Pool Amount', + accessorKey: 'myAmount', + accessorFn: (row) => prettyNumbers(nativeToDecimal(row.myAmount || 0, FixedU128Decimals).toNumber()), enableSorting: true, + meta: { + className: 'text-right', + }, } as const; const ActionsColumn = ({ row: { original } }: CellContext): JSX.Element | null => { const toggle = useModalToggle(); return ( -
+
-
{!!token && }
+
+ {token ? : '$ -'} +
{balance !== undefined && ( Balance: {formatted} )} diff --git a/src/components/nabla/Swap/Progress/index.tsx b/src/components/nabla/Swap/Progress/index.tsx new file mode 100644 index 00000000..e65affb6 --- /dev/null +++ b/src/components/nabla/Swap/Progress/index.tsx @@ -0,0 +1,29 @@ +import { JSX } from 'preact'; +import { Modal } from 'react-daisyui'; +import ModalCloseButton from '../../../Button/ModalClose'; +import TransactionProgress, { TransactionProgressProps } from '../../../Transaction/Progress'; + +export type SwapProgressProps = { + open: boolean; + children?: JSX.Element | null; + onClose: () => void; + mutation?: TransactionProgressProps['mutation']; +}; + +const SwapProgress = ({ mutation, children, ...rest }: SwapProgressProps): JSX.Element | null => { + return ( + + + + + + {!!mutation && ( + + {children} + + )} + + + ); +}; +export default SwapProgress; diff --git a/src/components/nabla/Swap/To/index.tsx b/src/components/nabla/Swap/To/index.tsx new file mode 100644 index 00000000..f27ab7a5 --- /dev/null +++ b/src/components/nabla/Swap/To/index.tsx @@ -0,0 +1,166 @@ +import { ArrowPathRoundedSquareIcon, ChevronDownIcon } from '@heroicons/react/20/solid'; +import { InformationCircleIcon } from '@heroicons/react/24/outline'; +import { useEffect } from 'preact/compat'; +import { Button } from 'react-daisyui'; +import { useFormContext, useWatch } from 'react-hook-form'; +import pendulumIcon from '../../../../assets/pendulum-icon.svg'; +import { config } from '../../../../config'; +import { subtractPercentage } from '../../../../helpers/calc'; +import { TokensData } from '../../../../hooks/nabla/useTokens'; +import useBoolean from '../../../../hooks/useBoolean'; +import { useDebouncedValue } from '../../../../hooks/useDebouncedValue'; +import { useTokenOutAmount } from '../../../../hooks/useTokenOutAmount'; +import { FixedU128Decimals, nativeToDecimal, prettyNumbers, roundNumber } from '../../../../shared/parseNumbers'; +import TokenPrice from '../../../Asset/Price'; +import Balance from '../../../Balance'; +import { Skeleton } from '../../../Skeleton'; +import { SwapFormValues } from '../types'; + +export interface ToProps { + tokensMap?: TokensData['tokensMap']; + onOpenSelector: () => void; + className?: string; +} + +const To = ({ tokensMap, onOpenSelector, className }: ToProps): JSX.Element | null => { + const [isOpen, { toggle }] = useBoolean(true); + const { setValue, setError, clearErrors, control } = useFormContext(); + const from = useWatch({ + control, + name: 'from', + }); + const to = useWatch({ + control, + name: 'to', + }); + const fromAmount = Number( + useWatch({ + control, + name: 'fromAmount', + defaultValue: 0, + }), + ); + const slippage = Number( + useWatch({ + control, + name: 'slippage', + }), + ); + const fromToken = tokensMap?.[from]; + const toToken = tokensMap?.[to]; + const debouncedFromAmount = useDebouncedValue(fromAmount, 800); + const { isLoading, fetchStatus, data, refetch, isError, error } = useTokenOutAmount({ + amount: debouncedFromAmount, + from, + to, + onSuccess: (val) => { + const toAmount = val ? nativeToDecimal(val, FixedU128Decimals).toNumber() : 0; + setValue('toAmount', toAmount, { + shouldDirty: true, + shouldTouch: true, + shouldValidate: true, + }); + }, + }); + + useEffect(() => { + if (isError) setError('toAmount', { message: error ? String(error) : 'Something went wrong' }); + else clearErrors('toAmount'); + }, [isError, error, setError, clearErrors]); + + const loading = (isLoading && isLoading && fetchStatus !== 'idle') || fromAmount !== debouncedFromAmount; + const value = data?.data?.free ? prettyNumbers(nativeToDecimal(data.data.free, FixedU128Decimals).toNumber()) : 0; + return ( + <> +
+
+
+ {loading ? ( + 10000 + ) : value ? ( + `${value}` + ) : fromAmount > 0 ? ( + + ) : ( + <>0 + )} +
+ +
+
+
+ {toToken ? : '$ -'} +
+
+ Balance: +
+
+
+
+
+
+ {fromToken && toToken && value && fromAmount ? ( + <> +
+ +
+ {`1 ${fromToken.symbol} = ${roundNumber(Number(value) / fromAmount, 6)} ${toToken.symbol}`} + + ) : ( + `- ${toToken?.symbol || ''}` + )} +
+
+
+ +
+
+
+
+
+
Expected received:
+
+ + {value} {toToken?.symbol || ''} + +
+
+
+
Minimum received:
+
+ + {subtractPercentage(Number(value), slippage ?? config.swap.defaults.slippage)} {toToken?.symbol || ''} + +
+
+
+
Swap fee:
+
{'! TODO'}
+
+
+
+
+ + ); +}; +export default To; diff --git a/src/components/nabla/Swap/index.tsx b/src/components/nabla/Swap/index.tsx new file mode 100644 index 00000000..2a0ab538 --- /dev/null +++ b/src/components/nabla/Swap/index.tsx @@ -0,0 +1,109 @@ +import { Cog8ToothIcon } from '@heroicons/react/24/outline'; +import { useMemo } from 'preact/compat'; +import { Button, Card } from 'react-daisyui'; +import { FormProvider } from 'react-hook-form'; +import { errorClass } from '../../../helpers/form'; +import { AssetSelectorModal } from '../../Asset/Selector/Modal'; +import { TransactionSettingsDropdown } from '../../Transaction/Settings'; +import ApprovalSubmit from './Approval'; +import From from './From'; +import SwapProgress from './Progress'; +import To from './To'; +import { useSwapComponent, UseSwapComponentProps } from './useSwapComponent'; + +const Swap = (props: UseSwapComponentProps): JSX.Element | null => { + const { + tokensModal: [modalType, setModalType], + onFromChange, + onToChange, + swapMutation, + onSubmit, + form, + from, + updateStorage, + progressClose, + tokensQuery, + } = useSwapComponent(props); + const { + setValue, + register, + getValues, + formState: { errors }, + } = form; + const { tokens, tokensMap } = tokensQuery.data || {}; + + const progressUi = useMemo(() => { + if (!swapMutation?.isLoading) return null; + const { from: fromV, to: toV, fromAmount = 0, toAmount = 0 } = getValues(); + const fromAsset = tokensMap?.[fromV]; + const toAsset = tokensMap?.[toV]; + return ( +

{`Swapping ${fromAmount} ${fromAsset?.symbol} for ${toAmount} ${toAsset?.symbol}`}

+ ); + }, [getValues, swapMutation?.isLoading, tokensMap]); + + return ( + <> + + +
+
+ + Swap + + { + setValue('slippage', slippage); + updateStorage({ slippage }); + }} + slippageProps={register('slippage', { + onChange: (ev) => + updateStorage({ + slippage: Number(ev.currentTarget.value), + }), + })} + deadlineProps={register('deadline', { + valueAsNumber: true, + onChange: (ev) => + updateStorage({ + deadline: Number(ev.currentTarget.value), + }), + })} + button={ + + } + /> +
+ setModalType('from')} + className={`border ${errorClass(errors.fromAmount, 'border-red-600', 'border-transparent')}`} + /> + setModalType('to')} + className={`border ${errorClass(errors.to, 'border-red-600', 'border-transparent')}`} + /> +
+ {/* */} + +
+ +
+
+ setModalType(undefined)} + /> + + {progressUi} + + + ); +}; +export default Swap; diff --git a/src/components/Swap/schema.ts b/src/components/nabla/Swap/schema.ts similarity index 75% rename from src/components/Swap/schema.ts rename to src/components/nabla/Swap/schema.ts index 089efa37..4f9b128c 100644 --- a/src/components/Swap/schema.ts +++ b/src/components/nabla/Swap/schema.ts @@ -1,11 +1,11 @@ import * as Yup from 'yup'; -import { transformNumber } from '../../helpers/yup'; +import { transformNumber } from '../../../helpers/yup'; import { SwapFormValues } from './types'; const schema = Yup.object().shape({ - from: Yup.string().min(3).required(), + from: Yup.string().min(5).required(), fromAmount: Yup.number().positive().required().transform(transformNumber), - to: Yup.string().min(3).required(), + to: Yup.string().min(5).required(), toAmount: Yup.number().positive().required(), slippage: Yup.number().nullable().transform(transformNumber), deadline: Yup.number().nullable().transform(transformNumber), diff --git a/src/components/Swap/types.ts b/src/components/nabla/Swap/types.ts similarity index 100% rename from src/components/Swap/types.ts rename to src/components/nabla/Swap/types.ts diff --git a/src/components/Swap/useSwapComponent.ts b/src/components/nabla/Swap/useSwapComponent.ts similarity index 72% rename from src/components/Swap/useSwapComponent.ts rename to src/components/nabla/Swap/useSwapComponent.ts index 9258e90c..f13816ba 100644 --- a/src/components/Swap/useSwapComponent.ts +++ b/src/components/nabla/Swap/useSwapComponent.ts @@ -2,20 +2,21 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { useQueryClient } from '@tanstack/react-query'; import { useCallback, useEffect, useRef, useState } from 'preact/compat'; import { Resolver, useForm, useWatch } from 'react-hook-form'; -import { Token } from '../../../gql/graphql'; -import { useGlobalState } from '../../GlobalStateProvider'; -import { config } from '../../config'; -import { cacheKeys } from '../../constants/cache'; -import { storageKeys } from '../../constants/localStorage'; -import { routerAbi } from '../../contracts/nabla/Router'; -import { calcPercentage } from '../../helpers/calc'; -import { debounce } from '../../helpers/function'; -import { useTokens } from '../../hooks/nabla/useTokens'; -import { useGetAppDataByTenant } from '../../hooks/useGetAppDataByTenant'; -import { SwapSettings } from '../../models/Swap'; -import { storageService } from '../../services/storage/local'; -import { decimalToNative } from '../../shared/parseNumbers'; -import { useContractWrite } from '../../shared/useContractWrite'; +import { Token } from '../../../../gql/graphql'; +import { config } from '../../../config'; +import { cacheKeys } from '../../../constants/cache'; +import { storageKeys } from '../../../constants/localStorage'; +import { routerAbi } from '../../../contracts/nabla/Router'; +import { useGlobalState } from '../../../GlobalStateProvider'; +import { subtractPercentage } from '../../../helpers/calc'; +import { debounce } from '../../../helpers/function'; +import { getValidDeadline, getValidSlippage } from '../../../helpers/transaction'; +import { useTokens } from '../../../hooks/nabla/useTokens'; +import { useGetAppDataByTenant } from '../../../hooks/useGetAppDataByTenant'; +import { SwapSettings } from '../../../models/Swap'; +import { storageService } from '../../../services/storage/local'; +import { calcDeadline, decimalToNative, FixedU128Decimals } from '../../../shared/parseNumbers'; +import { useContractWrite } from '../../../shared/useContractWrite'; import schema from './schema'; import { SwapFormValues } from './types'; @@ -26,9 +27,12 @@ export interface UseSwapComponentProps { } export const defaultValues = config.swap.defaults; +const storageValues = storageService.getParsed(storageKeys.SWAP_SETTINGS); const getInitialValues = () => ({ ...defaultValues, - ...storageService.getParsed(storageKeys.SWAP_SETTINGS), + ...storageValues, + slippage: getValidSlippage(storageValues?.slippage), + deadline: getValidDeadline(storageValues?.deadline || defaultValues.deadline), }); const storageSet = debounce(storageService.set, 1000); @@ -74,7 +78,7 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { ); const swapMutation = useContractWrite({ - abi: routerAbi, // ? should be chain specific + abi: routerAbi, address: router, method: 'swapExactTokensForTokens', onSuccess: () => { @@ -87,13 +91,15 @@ export const useSwapComponent = (props: UseSwapComponentProps) => { }); const onSubmit = form.handleSubmit((variables: SwapFormValues) => { - const time = Math.floor(Date.now() / 1000) + variables.deadline; - const deadline = decimalToNative(time); - const slippage = variables.slippage ?? defaultValues.slippage; - const fromAmount = decimalToNative(variables.fromAmount).toString(); - const toMinAmount = decimalToNative(calcPercentage(variables.toAmount, slippage)).toString(); + const vDeadline = getValidDeadline(variables.deadline || defaultValues.deadline); + const vSlippage = getValidSlippage(variables.slippage || defaultValues.slippage); + const deadline = calcDeadline(vDeadline).toString(); + const fromAmount = decimalToNative(variables.fromAmount, FixedU128Decimals).toString(); + const toMinAmount = decimalToNative( + subtractPercentage(variables.toAmount, vSlippage), + FixedU128Decimals, + ).toString(); const spender = address; - return swapMutation.mutate([spender, fromAmount, toMinAmount, [variables.from, variables.to], address, deadline]); }); diff --git a/src/config/apps/index.ts b/src/config/apps/index.ts index 14a5083b..50140e0c 100644 --- a/src/config/apps/index.ts +++ b/src/config/apps/index.ts @@ -2,10 +2,11 @@ import { nablaConfig } from './nabla'; import { AppConfig } from './types'; -export type Apps = 'nabla'; +export const apps = ['nabla'] as const; +export type Apps = (typeof apps)[number]; export const appsConfigs = { nabla: nablaConfig, -} satisfies Record; +} as const satisfies Record; export type AppsConfig = typeof appsConfigs; diff --git a/src/config/apps/nabla.ts b/src/config/apps/nabla.ts index 24d66979..5c721cd4 100644 --- a/src/config/apps/nabla.ts +++ b/src/config/apps/nabla.ts @@ -15,10 +15,13 @@ export type NablaConfig = AppConfig & export const nablaConfig: NablaConfig = { tenants: [TenantName.Foucoco], + environment: ['staging', 'development'], foucoco: { indexerUrl: 'https://squid.subsquid.io/foucoco-squid/graphql', - router: '6mrTyH54tYXKsVxrahapG1S54cVMqqwqtnmTLLbj3NZT2f1k', - oracle: '6n32n4F11qfFXfFYhVj15fChZTXpVP5zJSM98361gK5QKrxW', - curve: '6mnENTpY6B5mqtUHsjv3BxwKucT9hqF761QrYGfD22ccLzdC', + + // TODO: if these addresses change we will need to fetch them from the indexer + router: '6nHNN8GfwaUcSvp7QhRJZtXY5yQLBeVz3J2RCx395ma9MbeV', + oracle: '6guy27fyEZpKyBwWfysB6X2N3RDgrVertCaZ4ont8FPqdD9C', + curve: '6mxUgPWk76RzqnUnEryZkFNZ3tqqdtwyrXmaWwMJ2n311cZE', }, }; diff --git a/src/config/apps/types.ts b/src/config/apps/types.ts index 402685c8..a5009f30 100644 --- a/src/config/apps/types.ts +++ b/src/config/apps/types.ts @@ -1,6 +1,8 @@ +import { Environment } from '..'; import { TenantName } from '../../models/Tenant'; export type AppConfig = { tenants: TenantName[]; + environment?: Environment[]; // eslint-disable-next-line @typescript-eslint/no-explicit-any } & Partial>; diff --git a/src/config/index.ts b/src/config/index.ts index 05b5f596..ed69b208 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -11,9 +11,12 @@ type TenantConfig = Record< } >; -const env = process.env.NODE_ENV; +export type Environment = 'development' | 'staging' | 'production'; +const nodeEnv = process.env.NODE_ENV as Environment; +const env = (import.meta.env.VITE_ENVIRONMENT || nodeEnv) as Environment; export const config = { + nodeEnv, env, isProd: env === 'production', isDev: env === 'development', @@ -23,13 +26,13 @@ export const config = { name: 'Amplitude', rpc: 'wss://rpc-amplitude.pendulumchain.tech', theme: ThemeName.Amplitude, - explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer', + explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer/query', }, [TenantName.Pendulum]: { name: 'Pendulum', rpc: 'wss://rpc-pendulum.prd.pendulumchain.tech', theme: ThemeName.Pendulum, - explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer', + explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer/query', }, [TenantName.Foucoco]: { name: 'Foucoco', @@ -41,7 +44,7 @@ export const config = { name: 'Local', rpc: 'ws://localhost:9944', theme: ThemeName.Amplitude, - explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer', + explorer: 'https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-foucoco.pendulumchain.tech#/explorer/query', }, } satisfies TenantConfig, swap: { @@ -50,6 +53,24 @@ export const config = { deadline: 30, }, }, + backstop: { + defaults: { + slippage: 0.1, + }, + securityFee: 0.01, // 1% + }, + transaction: { + settings: { + slippage: { + min: 0.1, + max: 99.9, + }, + deadline: { + min: 1, + max: 1440, // 1 day + }, + }, + }, walletConnect: { url: 'wss://relay.walletconnect.com', projectId: '299fda67fbf3b60a31ba8695524534cd', diff --git a/src/constants/cache.ts b/src/constants/cache.ts index 7804a383..35d15096 100644 --- a/src/constants/cache.ts +++ b/src/constants/cache.ts @@ -10,6 +10,7 @@ export const cacheKeys = { balance: 'balance', walletBalance: 'walletBalance', walletBalances: 'walletBalances', + tokenOutAmount: 'tokenOutAmount', }; export type QueryOptions = Partial< diff --git a/src/constants/localStorage.ts b/src/constants/localStorage.ts index 32e7ee70..74fc749c 100644 --- a/src/constants/localStorage.ts +++ b/src/constants/localStorage.ts @@ -1,6 +1,7 @@ export const storageKeys = { ACCOUNT: 'ACCOUNT', SWAP_SETTINGS: 'SWAP_SETTINGS', + POOL_SETTINGS: 'POOL_SETTINGS', GLOBAL: 'GLOBAL', EXPIRY_DATE: '_EXPIRY_DATE', }; diff --git a/src/extend.d.ts b/src/extend.d.ts new file mode 100644 index 00000000..627bf7be --- /dev/null +++ b/src/extend.d.ts @@ -0,0 +1,6 @@ +import '@tanstack/react-table'; +declare module '@tanstack/table-core' { + interface ColumnMeta { + className?: string; + } +} diff --git a/src/helpers/calc.ts b/src/helpers/calc.ts index c9eed499..b1480f1b 100644 --- a/src/helpers/calc.ts +++ b/src/helpers/calc.ts @@ -14,7 +14,8 @@ export function calcFiatValuePriceImpact( } /** Calculate percentage */ -export const calcPercentage = (value = 0, percent = 0, round = 2) => roundNumber(value * (1 - percent / 100), round); +export const subtractPercentage = (value = 0, percent = 0, round = 2) => + roundNumber(value * (1 - percent / 100), round); /** Calculate share percentage */ export const calcSharePercentage = (total = 0, share = 0, round = 2) => roundNumber((share / total) * 100, round) || 0; diff --git a/src/helpers/transaction.ts b/src/helpers/transaction.ts index f4a2e5bb..8a22ef93 100644 --- a/src/helpers/transaction.ts +++ b/src/helpers/transaction.ts @@ -1,6 +1,13 @@ import { toast } from 'react-toastify'; +import { config } from '../config'; export const transactionErrorToast = (err: unknown) => { const cancelled = String(err).startsWith('Error: Cancelled'); toast(cancelled ? 'Transaction cancelled' : 'Transaction failed', { type: 'error' }); }; + +const { slippage, deadline } = config.transaction.settings; + +export const getValidSlippage = (val?: number): number | undefined => + val !== undefined ? Math.min(Math.max(val, slippage.min), slippage.max) : val; +export const getValidDeadline = (val: number): number => Math.min(Math.max(val, deadline.min), deadline.max); diff --git a/src/hooks/nabla/useSwapPools.ts b/src/hooks/nabla/useSwapPools.ts index 128de4d9..a95bb870 100644 --- a/src/hooks/nabla/useSwapPools.ts +++ b/src/hooks/nabla/useSwapPools.ts @@ -1,4 +1,4 @@ -import { UseQueryOptions, useQuery } from '@tanstack/react-query'; +import { useQuery, UseQueryOptions } from '@tanstack/react-query'; import request from 'graphql-request'; import { graphql } from '../../../gql/gql'; import { SwapPool } from '../../../gql/graphql'; diff --git a/src/hooks/spacewalk/useBridgeSettings.ts b/src/hooks/spacewalk/useBridgeSettings.ts index f6b1f3c0..507ba85b 100644 --- a/src/hooks/spacewalk/useBridgeSettings.ts +++ b/src/hooks/spacewalk/useBridgeSettings.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import _ from 'lodash'; -import React, { StateUpdater, useEffect, useMemo, useState } from 'react'; +import React, { StateUpdater, useEffect, useMemo, useState } from 'preact/compat'; import { Asset } from 'stellar-sdk'; import { convertCurrencyToStellarAsset } from '../../helpers/spacewalk'; import { stringifyStellarAsset } from '../../helpers/stellar'; diff --git a/src/hooks/useBalances.ts b/src/hooks/useBalances.ts index a3a236d7..7924f62c 100644 --- a/src/hooks/useBalances.ts +++ b/src/hooks/useBalances.ts @@ -1,10 +1,10 @@ import { SpacewalkPrimitivesCurrencyId } from '@polkadot/types/lookup'; import _ from 'lodash'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'preact/compat'; import { useGlobalState } from '../GlobalStateProvider'; -import { useNodeInfoState } from '../NodeInfoProvider'; import { getAddressForFormat } from '../helpers/addressFormatter'; import { addSuffix, currencyToString } from '../helpers/spacewalk'; +import { useNodeInfoState } from '../NodeInfoProvider'; import { PortfolioAsset } from '../pages/dashboard/PortfolioColumns'; import { nativeToDecimal } from '../shared/parseNumbers'; import { useVaultRegistryPallet } from './spacewalk/vaultRegistry'; diff --git a/src/hooks/useDebouncedValue.ts b/src/hooks/useDebouncedValue.ts index 34aa3aad..2f60795d 100644 --- a/src/hooks/useDebouncedValue.ts +++ b/src/hooks/useDebouncedValue.ts @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'preact/compat'; import { debounce } from '../helpers/function'; export const useDebouncedValue = (value: T, delay = 1000) => { diff --git a/src/hooks/useGetAppDataByTenant.ts b/src/hooks/useGetAppDataByTenant.ts index 4eca16fc..c5898489 100644 --- a/src/hooks/useGetAppDataByTenant.ts +++ b/src/hooks/useGetAppDataByTenant.ts @@ -1,5 +1,5 @@ -import { useGlobalState } from '../GlobalStateProvider'; import { Apps, appsConfigs } from '../config/apps'; +import { useGlobalState } from '../GlobalStateProvider'; export const useGetAppDataByTenant = (app: T) => { const tenantName = useGlobalState().tenantName; diff --git a/src/hooks/usePriceFetcher.ts b/src/hooks/usePriceFetcher.ts index b7b69e3b..f7336431 100644 --- a/src/hooks/usePriceFetcher.ts +++ b/src/hooks/usePriceFetcher.ts @@ -1,4 +1,4 @@ -import { useMemo } from 'react'; +import { useMemo } from 'preact/compat'; import { TenantName } from '../models/Tenant'; interface PriceFetcherAsset { @@ -129,6 +129,7 @@ const getPrice = async (asset: PriceFetcherAsset) => { } }; +// TODO: using react-query will do caching, loading states, refetching... out of the box export const usePriceFetcher = () => { const pricesCache: Promise = useMemo(async () => { let cache = {}; diff --git a/src/hooks/useSwitchChain.ts b/src/hooks/useSwitchChain.ts index 86b5e04c..a9935e9b 100644 --- a/src/hooks/useSwitchChain.ts +++ b/src/hooks/useSwitchChain.ts @@ -1,4 +1,4 @@ -import { useCallback } from 'react'; +import { useCallback } from 'preact/compat'; import { useLocation, useNavigate } from 'react-router-dom'; import { useGlobalState } from '../GlobalStateProvider'; import { buildTenantPath } from '../helpers/url'; @@ -11,7 +11,7 @@ const useSwitchChain = () => { const switchChain = useCallback( (tenant: TenantName) => { navigateTo(buildTenantPath(tenantName, tenant, location)); - setTimeout(() => window.location.reload(), 50); + setTimeout(() => window.location.reload(), 35); }, [location, navigateTo, tenantName], ); diff --git a/src/hooks/useTokenOutAmount.ts b/src/hooks/useTokenOutAmount.ts new file mode 100644 index 00000000..ac19329d --- /dev/null +++ b/src/hooks/useTokenOutAmount.ts @@ -0,0 +1,35 @@ +import { activeOptions, cacheKeys } from '../constants/cache'; +import { routerAbi } from '../contracts/nabla/Router'; +import { useGlobalState } from '../GlobalStateProvider'; +import { decimalToNative } from '../shared/parseNumbers'; +import { useContract } from '../shared/useContract'; +import { useGetAppDataByTenant } from './useGetAppDataByTenant'; + +export type UseTokenOutAmountProps = { + amount?: number; + from?: string; + to?: string; + decimals?: number; + onSuccess?: (val: string) => void; + onError?: (err: Error) => void; +}; + +export const useTokenOutAmount = ({ amount, from, to, decimals, onSuccess, onError }: UseTokenOutAmountProps) => { + const amountIn = decimalToNative(amount || 0, decimals).toString(); + const { address } = useGlobalState().walletAccount || {}; + const { router } = useGetAppDataByTenant('nabla').data || {}; + return useContract([cacheKeys.tokenOutAmount, from, to, amountIn], { + ...activeOptions['30s'], + abi: routerAbi, + address: router, + owner: address, + method: 'getAmountOut', + args: [amountIn, [from, to]], + enabled: !!amount && !!from && !!to, + onSuccess, + onError: (err) => { + if (onError) onError(err); + console.error(err); + }, + }); +}; diff --git a/src/index.css b/src/index.css index 46d82adc..fa3fa840 100644 --- a/src/index.css +++ b/src/index.css @@ -211,14 +211,6 @@ strong { border-bottom: 1px solid var(--footer-links); } -table th .sort:not(.desc):not(.asc) { - transition: opacity 0.15s ease-out; - opacity: 0; -} -table th:hover .sort { - opacity: 0.8 !important; -} - input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; @@ -279,7 +271,7 @@ input[type='number'] { } table th .sort:not(.desc):not(.asc) { transition: opacity 0.15s ease-out; - opacity: 0; + opacity: 0.3; } table th:hover .sort { opacity: 0.8 !important; diff --git a/src/main.tsx b/src/main.tsx index 8a80dcbb..265e6fbd 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,17 +1,25 @@ +import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { persistQueryClient } from '@tanstack/react-query-persist-client'; import { render } from 'preact'; import { Theme } from 'react-daisyui'; import { BrowserRouter } from 'react-router-dom'; -import { GlobalState, GlobalStateContext, GlobalStateProvider } from './GlobalStateProvider'; -import { NodeInfoProvider } from './NodeInfoProvider'; -import SharedProvider from './SharedProvider'; import { App } from './app'; +import { GlobalState, GlobalStateContext, GlobalStateProvider } from './GlobalStateProvider'; import { emptyFn } from './helpers/general'; import './index.css'; -import { ThemeName, tenantTheme } from './models/Theme'; +import { tenantTheme, ThemeName } from './models/Theme'; +import { NodeInfoProvider } from './NodeInfoProvider'; +import SharedProvider from './SharedProvider'; const queryClient = new QueryClient(); +const localStoragePersister = createSyncStoragePersister({ storage: window.localStorage }); +persistQueryClient({ + queryClient, + persister: localStoragePersister, +}); + render( diff --git a/src/models/Transaction.ts b/src/models/Transaction.ts new file mode 100644 index 00000000..6da902d7 --- /dev/null +++ b/src/models/Transaction.ts @@ -0,0 +1,3 @@ +export type TransactionSettings = { + slippage?: number; +}; diff --git a/src/pages/bridge/FeeBox.tsx b/src/pages/bridge/FeeBox.tsx index cb715d37..8804046c 100644 --- a/src/pages/bridge/FeeBox.tsx +++ b/src/pages/bridge/FeeBox.tsx @@ -1,6 +1,6 @@ import { SubmittableExtrinsic } from '@polkadot/api/promise/types'; import Big from 'big.js'; -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'preact/compat'; import { Asset } from 'stellar-sdk'; import { useFeePallet } from '../../hooks/spacewalk/fee'; import { nativeStellarToDecimal, nativeToDecimal } from '../../shared/parseNumbers'; diff --git a/src/pages/bridge/Issue/ConfirmationDialog.tsx b/src/pages/bridge/Issue/ConfirmationDialog.tsx index 164d6b49..847e2de0 100644 --- a/src/pages/bridge/Issue/ConfirmationDialog.tsx +++ b/src/pages/bridge/Issue/ConfirmationDialog.tsx @@ -1,6 +1,6 @@ import { VoidFn } from '@polkadot/api-base/types'; import { DateTime } from 'luxon'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'preact/compat'; import { Button, Divider, Modal } from 'react-daisyui'; import { CopyableAddress, PublicKey } from '../../../components/PublicKey'; import TransferCountdown from '../../../components/TransferCountdown'; diff --git a/src/pages/bridge/Issue/Disclaimer.tsx b/src/pages/bridge/Issue/Disclaimer.tsx index 9e97d47b..64aadecf 100644 --- a/src/pages/bridge/Issue/Disclaimer.tsx +++ b/src/pages/bridge/Issue/Disclaimer.tsx @@ -1,4 +1,4 @@ -import { useCallback, useState } from 'react'; +import { useCallback, useState } from 'preact/compat'; import BellIcon from '../../../assets/bell'; type Props = { diff --git a/src/pages/bridge/Issue/index.tsx b/src/pages/bridge/Issue/index.tsx index ab2a2144..8599469d 100644 --- a/src/pages/bridge/Issue/index.tsx +++ b/src/pages/bridge/Issue/index.tsx @@ -44,7 +44,7 @@ function Issue(props: IssueProps): JSX.Element { const { api } = useNodeInfoState().state; const { selectedVault, selectedAsset, setSelectedAsset, wrappedAssets } = useBridgeSettings(); - const maxIssuable = nativeToDecimal(selectedVault?.issuableTokens).toNumber(); + const maxIssuable = nativeToDecimal(selectedVault?.issuableTokens || 0).toNumber(); const { handleSubmit, watch, register, formState, setValue } = useForm({ resolver: yupResolver(getIssueValidationSchema(maxIssuable)), diff --git a/src/pages/bridge/Redeem/ConfirmationDialog.tsx b/src/pages/bridge/Redeem/ConfirmationDialog.tsx index eb4a9365..102fd26d 100644 --- a/src/pages/bridge/Redeem/ConfirmationDialog.tsx +++ b/src/pages/bridge/Redeem/ConfirmationDialog.tsx @@ -1,4 +1,4 @@ -import { useMemo } from 'react'; +import { useMemo } from 'preact/compat'; import { Button, Modal } from 'react-daisyui'; import { CopyableAddress, PublicKey } from '../../../components/PublicKey'; import { convertCurrencyToStellarAsset } from '../../../helpers/spacewalk'; diff --git a/src/pages/bridge/Redeem/index.tsx b/src/pages/bridge/Redeem/index.tsx index 29a689f4..1ad672d3 100644 --- a/src/pages/bridge/Redeem/index.tsx +++ b/src/pages/bridge/Redeem/index.tsx @@ -1,7 +1,7 @@ import { yupResolver } from '@hookform/resolvers/yup'; import Big from 'big.js'; +import { useEffect } from 'preact/compat'; import { useCallback, useMemo, useState } from 'preact/hooks'; -import { useEffect } from 'react'; import { Button } from 'react-daisyui'; import { useForm } from 'react-hook-form'; import { toast } from 'react-toastify'; @@ -51,7 +51,7 @@ function Redeem(props: RedeemProps): JSX.Element { setSelectedAssetsBalance(amount); }, [balances, selectedAsset, wrappedCurrencySuffix, selectedAssetsBalance]); - const maxRedeemable = nativeToDecimal(selectedVault?.redeemableTokens).toNumber(); + const maxRedeemable = nativeToDecimal(selectedVault?.redeemableTokens || 0).toNumber(); const { handleSubmit, watch, register, formState, setValue } = useForm({ defaultValues: {}, diff --git a/src/pages/collators/CollatorRewards.tsx b/src/pages/collators/CollatorRewards.tsx index d5e3d0b6..a906c0a5 100644 --- a/src/pages/collators/CollatorRewards.tsx +++ b/src/pages/collators/CollatorRewards.tsx @@ -1,13 +1,13 @@ -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'preact/compat'; import { Button } from 'react-daisyui'; import { toast } from 'react-toastify'; -import { useGlobalState } from '../../GlobalStateProvider'; -import { useNodeInfoState } from '../../NodeInfoProvider'; import RewardsIcon from '../../assets/collators-rewards-icon'; import StakedIcon from '../../assets/collators-staked-icon'; +import { useGlobalState } from '../../GlobalStateProvider'; import { getAddressForFormat } from '../../helpers/addressFormatter'; import { getErrors } from '../../helpers/substrate'; import { useStakingPallet } from '../../hooks/staking/staking'; +import { useNodeInfoState } from '../../NodeInfoProvider'; import { nativeToFormat } from '../../shared/parseNumbers'; import { UserStaking } from './columns'; import ClaimRewardsDialog from './dialogs/ClaimRewardsDialog'; diff --git a/src/pages/dashboard/Portfolio.tsx b/src/pages/dashboard/Portfolio.tsx index 5ee4d45f..c09ebeb1 100644 --- a/src/pages/dashboard/Portfolio.tsx +++ b/src/pages/dashboard/Portfolio.tsx @@ -1,6 +1,6 @@ -import { useMemo } from 'react'; -import { useGlobalState } from '../../GlobalStateProvider'; +import { useMemo } from 'preact/compat'; import Table, { SortingOrder } from '../../components/Table'; +import { useGlobalState } from '../../GlobalStateProvider'; import useBalances from '../../hooks/useBalances'; import { amountColumn, priceColumn, tokenColumn, usdValueColumn } from './PortfolioColumns'; diff --git a/src/pages/nabla/backstop-pools/index.tsx b/src/pages/nabla/backstop-pools/index.tsx index 8b25c2f8..508b6205 100644 --- a/src/pages/nabla/backstop-pools/index.tsx +++ b/src/pages/nabla/backstop-pools/index.tsx @@ -1,4 +1,4 @@ -import BackstopPools from '../../../components/Pools/Backstop'; +import BackstopPools from '../../../components/nabla/Pools/Backstop'; const BackstopPoolsPage = (): JSX.Element | null => { return ( diff --git a/src/pages/nabla/dev/index.tsx b/src/pages/nabla/dev/index.tsx index 334edcbe..2e19fa47 100644 --- a/src/pages/nabla/dev/index.tsx +++ b/src/pages/nabla/dev/index.tsx @@ -1,21 +1,20 @@ +import { EllipsisVerticalIcon } from '@heroicons/react/20/solid'; +import { Button, Dropdown } from 'react-daisyui'; import { useNavigate } from 'react-router-dom'; import { Token } from '../../../../gql/graphql'; -import { useGlobalState } from '../../../GlobalStateProvider'; import { config } from '../../../config'; import { mockERC20 } from '../../../contracts/nabla/MockERC20'; +import { useGlobalState } from '../../../GlobalStateProvider'; import { useTokens } from '../../../hooks/nabla/useTokens'; -import { decimalToNative } from '../../../shared/parseNumbers'; +import { decimalToNative, FixedU128Decimals } from '../../../shared/parseNumbers'; import { useContractWrite } from '../../../shared/useContractWrite'; -const amount = decimalToNative(1000).toString(); - const TokenItem = ({ token }: { token: Token }) => { const { address } = useGlobalState().walletAccount || {}; const { mutate, isLoading } = useContractWrite({ abi: mockERC20, address: token.id, method: 'mint', - args: [address, amount], onError: console.error, }); return ( @@ -25,25 +24,55 @@ const TokenItem = ({ token }: { token: Token }) => {

{token.id}

- +
+ + + + +
  • +
    mutate([address, decimalToNative(10000, FixedU128Decimals).toString()])} + > + 10000 +
    +
  • +
  • +
    mutate([address, decimalToNative(100000, FixedU128Decimals).toString()])} + > + 100000 +
    +
  • +
    +
    +
    ); }; const DevPage = () => { - const nav = useNavigate(); + const navigate = useNavigate(); const wallet = useGlobalState().walletAccount; const { data } = useTokens(); const { tokens } = data || {}; - if (!config.isDev) nav('/'); + if (config.isProd) navigate('/'); if (!wallet?.address) { return <>Please connect your wallet.; } diff --git a/src/pages/nabla/swap-pools/index.tsx b/src/pages/nabla/swap-pools/index.tsx index c74e46fb..7add21a5 100644 --- a/src/pages/nabla/swap-pools/index.tsx +++ b/src/pages/nabla/swap-pools/index.tsx @@ -1,4 +1,4 @@ -import SwapPools from '../../../components/Pools/Swap'; +import SwapPools from '../../../components/nabla/Pools/Swap'; const SwapPoolsPage = (): JSX.Element | null => { return ( diff --git a/src/pages/nabla/swap/index.tsx b/src/pages/nabla/swap/index.tsx index ba4d25d5..483b2a26 100644 --- a/src/pages/nabla/swap/index.tsx +++ b/src/pages/nabla/swap/index.tsx @@ -1,6 +1,6 @@ import { useCallback } from 'preact/compat'; import { useNavigate, useSearchParams } from 'react-router-dom'; -import Swap from '../../../components/Swap'; +import Swap from '../../../components/nabla/Swap'; const SwapPage = (): JSX.Element | null => { const [params] = useSearchParams(); diff --git a/src/services/api/helpers.ts b/src/services/api/helpers.ts index 7ab860cf..b9c8de20 100644 --- a/src/services/api/helpers.ts +++ b/src/services/api/helpers.ts @@ -20,16 +20,16 @@ export const fnOrEmpty = // https://substrate.stackexchange.com/questions/6401/smart-contract-function-call-error/6402#6402 export const createReadOptions = (api: ApiPromise, opts?: ContractOptions) => ({ gasLimit: api.createType('WeightV2', { - refTime: 100000000000, - proofSize: 1000000, + refTime: '120000000000', + proofSize: '1200000', }), storageDepositLimit: null, ...opts, }); export const createWriteOptions = (api: ApiPromise, opts?: ContractOptions) => ({ gasLimit: api.createType('WeightV2', { - refTime: 18000000000, - proofSize: 1750000, + refTime: '18000000000', + proofSize: '1750000', }), storageDepositLimit: null, ...opts, diff --git a/src/shared/helpers.ts b/src/shared/helpers.ts index bbf9d18a..5196062c 100644 --- a/src/shared/helpers.ts +++ b/src/shared/helpers.ts @@ -23,3 +23,8 @@ export const parseTransactionError = (result: SubmittableResultValue | undefined console.log(result.dispatchError.toString()); } }; + +export const gasDefaults = { + refTime: '120000000000', + proofSize: '1200000', +}; diff --git a/src/shared/parseNumbers.ts b/src/shared/parseNumbers.ts index eec8e702..dc5e71a7 100644 --- a/src/shared/parseNumbers.ts +++ b/src/shared/parseNumbers.ts @@ -1,4 +1,4 @@ -import { UInt, u128 } from '@polkadot/types-codec'; +import { u128, UInt } from '@polkadot/types-codec'; import BigNumber from 'big.js'; // These are the decimals used for the native currency on the Amplitude network @@ -17,14 +17,14 @@ BigNumber.PE = 100; BigNumber.NE = -20; // Converts a decimal number to the native representation (a large integer) -export const decimalToNative = (value: BigNumber | number | string) => { +export const decimalToNative = (value: BigNumber | number | string, decimals: number = ChainDecimals) => { let bigIntValue; try { bigIntValue = new BigNumber(value); } catch (error) { bigIntValue = new BigNumber(0); } - const multiplier = new BigNumber(10).pow(ChainDecimals); + const multiplier = new BigNumber(10).pow(decimals); return bigIntValue.times(multiplier).round(0); }; @@ -46,7 +46,7 @@ export const fixedPointToDecimal = (value: BigNumber | number | string) => { return bigIntValue.div(divisor); }; -export const nativeToDecimal = (value?: BigNumber | number | string | u128 | UInt) => { +export const nativeToDecimal = (value: BigNumber | number | string | u128 | UInt, decimals: number = ChainDecimals) => { if (!value) return new BigNumber(0); if (typeof value === 'string' || value instanceof u128 || value instanceof UInt) { @@ -54,7 +54,7 @@ export const nativeToDecimal = (value?: BigNumber | number | string | u128 | UIn value = new BigNumber(value.toString().replaceAll(',', '')); } const bigIntValue = new BigNumber(value); - const divisor = new BigNumber(10).pow(ChainDecimals); + const divisor = new BigNumber(10).pow(decimals); return bigIntValue.div(divisor); }; @@ -103,3 +103,6 @@ export const prettyNumbers = (number: number, lang?: string, opts?: Intl.NumberF export const roundNumber = (value: number | string = 0, round = 6) => { return +Number(value).toFixed(round); }; + +/** Calculate deadline from minutes */ +export const calcDeadline = (min: number) => decimalToNative(`${Math.floor(Date.now() / 1000) + min * 60}`); diff --git a/src/shared/useAccountBalance.ts b/src/shared/useAccountBalance.ts index 8da27c33..eecf0c08 100644 --- a/src/shared/useAccountBalance.ts +++ b/src/shared/useAccountBalance.ts @@ -12,9 +12,11 @@ export interface UseAccountBalanceResponse { enabled: boolean; } +const isValid = (value: unknown) => value !== undefined && typeof value !== 'string'; + export const useAccountBalance = ( address?: string, - options?: QueryOptions, + options?: QueryOptions & { decimals?: number }, ): UseAccountBalanceResponse => { const { api, address: defAddress } = useSharedState(); @@ -22,7 +24,14 @@ export const useAccountBalance = ( const enabled = !!api && !!accountAddress && options?.enabled !== false; const query = useQuery( enabled ? [cacheKeys.accountBalance, accountAddress] : emptyCacheKey, - enabled ? () => api.query.system.account(accountAddress) : emptyFn, + enabled + ? async () => { + const response = await api.query.system.account(accountAddress); + const val = response?.data?.free; + if (!isValid(val)) throw new Error('Error!'); + return response; + } + : emptyFn, { cacheTime: 0, staleTime: 0, @@ -35,11 +44,12 @@ export const useAccountBalance = ( }, ); const { data } = query; - + const decimals = options?.decimals; const balance = useMemo(() => { - if (!data?.data || !accountAddress) return undefined; - return prettyNumbers(nativeToDecimal(data.data.free).toNumber()); - }, [data?.data, accountAddress]); + const val = data?.data.free; + if (!isValid(val)) return undefined; + return prettyNumbers(nativeToDecimal(val || 0, decimals).toNumber()); + }, [data?.data, decimals]); return { query, diff --git a/src/shared/useContract.ts b/src/shared/useContract.ts index 0ebcca9c..dac586c3 100644 --- a/src/shared/useContract.ts +++ b/src/shared/useContract.ts @@ -5,20 +5,31 @@ import { Abi, ContractPromise } from '@polkadot/api-contract'; import { ContractOptions } from '@polkadot/api-contract/types'; import { QueryKey, useQuery } from '@tanstack/react-query'; import { useMemo } from 'preact/compat'; +import { emptyCacheKey, emptyFn, gasDefaults, QueryOptions } from './helpers'; import { useSharedState } from './Provider'; -import { QueryOptions, emptyCacheKey, emptyFn } from './helpers'; -export type UseContractProps = QueryOptions & { - abi: T; +type ContractOpts = ContractOptions | ((api: ApiPromise) => ContractOptions); +export type UseContractProps> = QueryOptions & { + abi: TAbi; address?: string; owner?: string; method: string; args?: any[]; - options?: ContractOptions | ((api: ApiPromise) => ContractOptions); + options?: ContractOpts; }; -export const useContract = >( + +const getOptions = (options: ContractOpts | undefined, api: ApiPromise) => + typeof options === 'function' + ? options(api) + : options || { + // { gasLimit: -1 } + gasLimit: api.createType('WeightV2', gasDefaults), + storageDepositLimit: null, + }; + +export const useContract = >( key: QueryKey, - { abi, address, owner, method, args, options, ...rest }: UseContractProps, + { abi, address, owner, method, args, options, ...rest }: UseContractProps, ) => { const { api } = useSharedState(); const contract = useMemo( @@ -30,19 +41,12 @@ export const useContract = >( enabled ? key : emptyCacheKey, enabled ? async () => { - const opts = - typeof options === 'function' - ? options(api) - : options || { - gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '1000000', - }), - storageDepositLimit: null, - }; + const opts = getOptions(options, api); const response = await contract.query[method](owner, opts, ...(args || [])); if (!response?.result?.isOk || response?.output === undefined) throw response; - return response; + // ? TODO: maybe not ideal to cache only output + // caching the whole object causes the output to be converted to hex string + return response.output?.toString(); } : emptyFn, { diff --git a/src/shared/useContractBalance.ts b/src/shared/useContractBalance.ts index c3836e94..5140c2c4 100644 --- a/src/shared/useContractBalance.ts +++ b/src/shared/useContractBalance.ts @@ -3,19 +3,21 @@ import { FrameSystemAccountInfo } from '@polkadot/types/lookup'; import { UseQueryResult } from '@tanstack/react-query'; import { useMemo } from 'preact/compat'; import { mockERC20 } from '../contracts/nabla/MockERC20'; -import { useSharedState } from './Provider'; import { cacheKeys } from './constants'; import { QueryOptions } from './helpers'; import { nativeToDecimal, prettyNumbers } from './parseNumbers'; +import { useSharedState } from './Provider'; import { useContract } from './useContract'; -export type UseBalanceProps = { +export type UseBalanceProps> = { /** token or contract address */ contractAddress?: string; /** account address */ account?: string; /** contract abi */ abi?: TAbi; + /** parse decimals */ + decimals?: number; }; export type UseBalanceResponse = UseQueryResult & { balance?: number; @@ -23,8 +25,8 @@ export type UseBalanceResponse = UseQueryResult( - { contractAddress, account, abi }: UseBalanceProps, +export const useContractBalance = >( + { contractAddress, account, abi, decimals }: UseBalanceProps, options?: QueryOptions, ): UseBalanceResponse => { const { api, address: defAddress } = useSharedState(); @@ -32,11 +34,12 @@ export const useContractBalance = ( const enabled = !!api && !!address && options?.enabled !== false; const query = useContract([cacheKeys.balance, contractAddress, address], { - cacheTime: 180000, - staleTime: 180000, + cacheTime: 120000, + staleTime: 120000, retry: 2, refetchOnReconnect: false, refetchOnWindowFocus: false, + onError: console.error, ...options, abi: abi || mockERC20, address: contractAddress, @@ -47,10 +50,10 @@ export const useContractBalance = ( }); const { data } = query; const val = useMemo(() => { - if (!data?.result?.isOk || data?.output === undefined) return undefined; - const balance = nativeToDecimal(parseFloat(data.output.toString()) || 0).toNumber(); + if (!data) return undefined; + const balance = nativeToDecimal(parseFloat(data || '0'), decimals).toNumber(); return { balance, formatted: prettyNumbers(balance) }; - }, [data]); + }, [data, decimals]); return { ...query, diff --git a/src/shared/useTokenApproval.ts b/src/shared/useTokenApproval.ts index b2724bac..ce3509e3 100644 --- a/src/shared/useTokenApproval.ts +++ b/src/shared/useTokenApproval.ts @@ -1,9 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { useMemo, useState } from 'react'; +import { useMemo, useState } from 'preact/compat'; import { mockERC20 } from '../contracts/nabla/MockERC20'; -import { useSharedState } from './Provider'; +import { gasDefaults } from './helpers'; import { decimalToNative, nativeToDecimal } from './parseNumbers'; -import { UseContractWriteProps, useContractWrite } from './useContractWrite'; +import { useSharedState } from './Provider'; +import { useContractWrite, UseContractWriteProps } from './useContractWrite'; import { useTokenAllowance } from './useTokenAllowance'; export enum ApprovalState { @@ -20,25 +21,26 @@ interface UseTokenApprovalParams { amount?: number; approveMax?: boolean; enabled?: boolean; + decimals?: number; onError?: (err: any) => void; onSuccess?: UseContractWriteProps['onSuccess']; } -const maxInt = decimalToNative(Number.MAX_SAFE_INTEGER).toString(); - export const useTokenApproval = ({ token, amount = 0, spender, enabled = true, approveMax, + decimals, onError, onSuccess, }: UseTokenApprovalParams) => { const { address } = useSharedState(); const [pending, setPending] = useState(false); - const amountBI = decimalToNative(amount); + const amountBI = decimalToNative(amount, decimals); const isEnabled = Boolean(token && spender && address && enabled); + const maxInt = useMemo(() => decimalToNative(Number.MAX_SAFE_INTEGER, decimals).toString(), [decimals]); const { data: allowanceData, isLoading: isAllowanceLoading, @@ -58,10 +60,7 @@ export const useTokenApproval = ({ method: 'approve', args: [spender, approveMax ? maxInt : amountBI.toString()], options: (api) => ({ - gasLimit: api.createType('WeightV2', { - refTime: '100000000000', - proofSize: '1000000', - }), + gasLimit: api.createType('WeightV2', gasDefaults), storageDepositLimit: null, }), onError: (err) => { @@ -79,8 +78,8 @@ export const useTokenApproval = ({ }); const allowance = useMemo( - () => nativeToDecimal(parseFloat(allowanceData?.output?.toString() || '0') || 0).toNumber(), - [allowanceData], + () => nativeToDecimal(parseFloat(allowanceData || '0'), decimals).toNumber(), + [allowanceData, decimals], ); return useMemo<[ApprovalState, typeof mutation]>(() => { diff --git a/yarn.lock b/yarn.lock index 3d68c3bb..4e446cd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6031,7 +6031,36 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-query@npm:^4.32.6": +"@tanstack/query-persist-client-core@npm:4.32.6": + version: 4.32.6 + resolution: "@tanstack/query-persist-client-core@npm:4.32.6" + dependencies: + "@tanstack/query-core": "npm:4.32.6" + checksum: 6aa6d453985a1953c859bad41321cd1392d56281fbb77856d17788b4b7fbbc43cc3fc6a28b4a2f0afbf056403a4da79337d0830366bbfefdedf366a1a700e257 + languageName: node + linkType: hard + +"@tanstack/query-sync-storage-persister@npm:~4.32.6": + version: 4.32.6 + resolution: "@tanstack/query-sync-storage-persister@npm:4.32.6" + dependencies: + "@tanstack/query-persist-client-core": "npm:4.32.6" + checksum: c3cf3304796987474554026207cfad0ab686a4c283d2c29797c5da940de501c249b7b668aa87b44cd2511c351e49e2c80e414f007f9c54f7afbe85dba14e02df + languageName: node + linkType: hard + +"@tanstack/react-query-persist-client@npm:~4.32.6": + version: 4.32.6 + resolution: "@tanstack/react-query-persist-client@npm:4.32.6" + dependencies: + "@tanstack/query-persist-client-core": "npm:4.32.6" + peerDependencies: + "@tanstack/react-query": ^4.32.6 + checksum: 1eefef54f5bd98ebc48a21e5a95898852f0b4ac5d5f2592ebed864380b8b81e6a43814e70b518fbb409f929a27f60ba6af315b02af6f0ea176a703d425dc884d + languageName: node + linkType: hard + +"@tanstack/react-query@npm:~4.32.6": version: 4.32.6 resolution: "@tanstack/react-query@npm:4.32.6" dependencies: @@ -8063,17 +8092,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464": - version: 1.0.30001482 - resolution: "caniuse-lite@npm:1.0.30001482" - checksum: c2757a2c18b5f8dcfaffd3f5e8bb97c526f4378d70be8b88d3dc188235ccdc89144550ffa66d034b58ebc9d9ce8a5905f1ad538527e7d0290e884eef89becbb5 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001521 - resolution: "caniuse-lite@npm:1.0.30001521" - checksum: a3bbd379b96a2f6512fecbabbdf12eb79e076271ab23aeb77b8f66b7ba49cec41db3c2163ca70000d457e5bf78385a5b8a712a03f7a3734c8a9cb71636bc9daf +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001517": + version: 1.0.30001559 + resolution: "caniuse-lite@npm:1.0.30001559" + checksum: 32377e386580dcb977f552b488e7b56fb489aa0a83f4f43087af6e8fe1fe7fda529bc29e76ef38c0f9c56c964389d322059a0dd7a544859a7b88063f7fc761d7 languageName: node linkType: hard @@ -15784,7 +15806,9 @@ __metadata: "@talismn/connect-components": "npm:^1.1.7" "@talismn/connect-ui": "npm:^1.1.2" "@talismn/connect-wallets": "npm:^1.2.3" - "@tanstack/react-query": "npm:^4.32.6" + "@tanstack/query-sync-storage-persister": "npm:~4.32.6" + "@tanstack/react-query": "npm:~4.32.6" + "@tanstack/react-query-persist-client": "npm:~4.32.6" "@tanstack/react-table": "npm:^8.9.3" "@testing-library/jest-dom": "npm:^5.16.5" "@testing-library/preact": "npm:^3.2.3" From 6e09bce49c45e5c999c260242a8f36a23e74525a Mon Sep 17 00:00:00 2001 From: Nejc Date: Wed, 8 Nov 2023 03:03:36 +0900 Subject: [PATCH 23/33] feat: added pool filtering by paused flag (#289) --- gql/fragment-masking.ts | 46 +- gql/gql.ts | 8 +- gql/graphql.ts | 1383 ++++++++++++++++++++++++--- src/hooks/nabla/useBackstopPools.ts | 4 +- src/hooks/nabla/useSwapPools.ts | 2 +- 5 files changed, 1305 insertions(+), 138 deletions(-) diff --git a/gql/fragment-masking.ts b/gql/fragment-masking.ts index cb880a31..2ba06f10 100644 --- a/gql/fragment-masking.ts +++ b/gql/fragment-masking.ts @@ -1,57 +1,57 @@ -import { DocumentTypeDecoration, ResultOf, TypedDocumentNode } from '@graphql-typed-document-node/core'; +import { ResultOf, DocumentTypeDecoration, TypedDocumentNode } from '@graphql-typed-document-node/core'; import { FragmentDefinitionNode } from 'graphql'; import { Incremental } from './graphql'; -export type FragmentType> = - TDocumentType extends DocumentTypeDecoration - ? [TType] extends [{ ' $fragmentName'?: infer TKey }] - ? TKey extends string - ? { ' $fragmentRefs'?: { [key in TKey]: TType } } - : never + +export type FragmentType> = TDocumentType extends DocumentTypeDecoration< + infer TType, + any +> + ? [TType] extends [{ ' $fragmentName'?: infer TKey }] + ? TKey extends string + ? { ' $fragmentRefs'?: { [key in TKey]: TType } } : never - : never; + : never + : never; // return non-nullable if `fragmentType` is non-nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType>, + fragmentType: FragmentType> ): TType; // return nullable if `fragmentType` is nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType> | null | undefined, + fragmentType: FragmentType> | null | undefined ): TType | null | undefined; // return array of non-nullable if `fragmentType` is array of non-nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: ReadonlyArray>>, + fragmentType: ReadonlyArray>> ): ReadonlyArray; // return array of nullable if `fragmentType` is array of nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: ReadonlyArray>> | null | undefined, + fragmentType: ReadonlyArray>> | null | undefined ): ReadonlyArray | null | undefined; export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: - | FragmentType> - | ReadonlyArray>> - | null - | undefined, + fragmentType: FragmentType> | ReadonlyArray>> | null | undefined ): TType | ReadonlyArray | null | undefined { return fragmentType as any; } -export function makeFragmentData, FT extends ResultOf>( - data: FT, - _fragment: F, -): FragmentType { + +export function makeFragmentData< + F extends DocumentTypeDecoration, + FT extends ResultOf +>(data: FT, _fragment: F): FragmentType { return data as FragmentType; } export function isFragmentReady( queryNode: DocumentTypeDecoration, fragmentNode: TypedDocumentNode, - data: FragmentType, any>> | null | undefined, + data: FragmentType, any>> | null | undefined ): data is FragmentType { const deferredFields = (queryNode as { __meta__?: { deferredFields: Record } }).__meta__ ?.deferredFields; @@ -62,5 +62,5 @@ export function isFragmentReady( const fragName = fragDef?.name?.value; const fields = (fragName && deferredFields[fragName]) || []; - return fields.length > 0 && fields.every((field) => data && field in data); + return fields.length > 0 && fields.every(field => data && field in data); } diff --git a/gql/gql.ts b/gql/gql.ts index bf30a9bb..21991c40 100644 --- a/gql/gql.ts +++ b/gql/gql.ts @@ -13,8 +13,8 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { - "\n query getBackstopPools {\n backstopPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n": types.GetBackstopPoolsDocument, - "\n query getSwapPools {\n swapPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n": types.GetSwapPoolsDocument, + "\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n": types.GetBackstopPoolsDocument, + "\n query getSwapPools {\n swapPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n": types.GetSwapPoolsDocument, "\n query getTokens {\n nablaTokens {\n id\n name\n symbol\n decimals\n }\n }\n": types.GetTokensDocument, }; @@ -35,11 +35,11 @@ export function graphql(source: string): unknown; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getBackstopPools {\n backstopPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"): (typeof documents)["\n query getBackstopPools {\n backstopPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"]; +export function graphql(source: "\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"): (typeof documents)["\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getSwapPools {\n swapPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n"): (typeof documents)["\n query getSwapPools {\n swapPools {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n"]; +export function graphql(source: "\n query getSwapPools {\n swapPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n"): (typeof documents)["\n query getSwapPools {\n swapPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/gql/graphql.ts b/gql/graphql.ts index ee9a6dbc..a9ecf15b 100644 --- a/gql/graphql.ts +++ b/gql/graphql.ts @@ -1992,6 +1992,7 @@ export type NablaTokensConnection = { export type OraclePrice = { __typename?: 'OraclePrice'; blockchain: Scalars['String']['output']; + decimals: Scalars['Int']['output']; id: Scalars['String']['output']; name: Scalars['String']['output']; /** BigDecimal */ @@ -2011,6 +2012,8 @@ export type OraclePriceEdge = { export enum OraclePriceOrderByInput { BlockchainAsc = 'blockchain_ASC', BlockchainDesc = 'blockchain_DESC', + DecimalsAsc = 'decimals_ASC', + DecimalsDesc = 'decimals_DESC', IdAsc = 'id_ASC', IdDesc = 'id_DESC', NameAsc = 'name_ASC', @@ -2045,6 +2048,15 @@ export type OraclePriceWhereInput = { blockchain_not_in?: InputMaybe>; blockchain_not_startsWith?: InputMaybe; blockchain_startsWith?: InputMaybe; + decimals_eq?: InputMaybe; + decimals_gt?: InputMaybe; + decimals_gte?: InputMaybe; + decimals_in?: InputMaybe>; + decimals_isNull?: InputMaybe; + decimals_lt?: InputMaybe; + decimals_lte?: InputMaybe; + decimals_not_eq?: InputMaybe; + decimals_not_in?: InputMaybe>; id_contains?: InputMaybe; id_containsInsensitive?: InputMaybe; id_endsWith?: InputMaybe; @@ -3371,6 +3383,21 @@ export type Query = { /** @deprecated Use tokenDayDataById */ tokenDayDataByUniqueInput?: Maybe; tokenDayDataConnection: TokenDayDataConnection; + tokenDepositById?: Maybe; + /** @deprecated Use tokenDepositById */ + tokenDepositByUniqueInput?: Maybe; + tokenDeposits: Array; + tokenDepositsConnection: TokenDepositsConnection; + tokenTransferById?: Maybe; + /** @deprecated Use tokenTransferById */ + tokenTransferByUniqueInput?: Maybe; + tokenTransfers: Array; + tokenTransfersConnection: TokenTransfersConnection; + tokenWithdrawnById?: Maybe; + /** @deprecated Use tokenWithdrawnById */ + tokenWithdrawnByUniqueInput?: Maybe; + tokenWithdrawns: Array; + tokenWithdrawnsConnection: TokenWithdrawnsConnection; tokens: Array; tokensConnection: TokensConnection; transactionById?: Maybe; @@ -4222,6 +4249,84 @@ export type QueryTokenDayDataConnectionArgs = { }; +export type QueryTokenDepositByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTokenDepositByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTokenDepositsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTokenDepositsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryTokenTransferByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTokenTransferByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTokenTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTokenTransfersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + +export type QueryTokenWithdrawnByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryTokenWithdrawnByUniqueInputArgs = { + where: WhereIdInput; +}; + + +export type QueryTokenWithdrawnsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type QueryTokenWithdrawnsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + + export type QueryTokensArgs = { limit?: InputMaybe; offset?: InputMaybe; @@ -6376,121 +6481,740 @@ export type StakePositionsConnection = { totalCount: Scalars['Int']['output']; }; -export type Swap = { - __typename?: 'Swap'; - amount0In: Scalars['String']['output']; - amount0Out: Scalars['String']['output']; - amount1In: Scalars['String']['output']; - amount1Out: Scalars['String']['output']; - amountUSD: Scalars['String']['output']; - from: Scalars['String']['output']; - id: Scalars['String']['output']; - logIndex?: Maybe; - pair: Pair; - sender: Scalars['String']['output']; - timestamp: Scalars['DateTime']['output']; - to: Scalars['String']['output']; - transaction: Transaction; +export type Subscription = { + __typename?: 'Subscription'; + backstopPoolById?: Maybe; + backstopPools: Array; + bundleById?: Maybe; + bundles: Array; + burnById?: Maybe; + burns: Array; + factories: Array; + factoryById?: Maybe; + factoryDayData: Array; + factoryDayDataById?: Maybe; + farmById?: Maybe; + farms: Array; + incentiveById?: Maybe; + incentives: Array; + liquidityPositionById?: Maybe; + liquidityPositionSnapshotById?: Maybe; + liquidityPositionSnapshots: Array; + liquidityPositions: Array; + mintById?: Maybe; + mints: Array; + nablaTokenById?: Maybe; + nablaTokens: Array; + oraclePriceById?: Maybe; + oraclePrices: Array; + pairById?: Maybe; + pairDayData: Array; + pairDayDataById?: Maybe; + pairHourData: Array; + pairHourDataById?: Maybe; + pairs: Array; + routerById?: Maybe; + routers: Array; + singleTokenLockById?: Maybe; + singleTokenLockDayData: Array; + singleTokenLockDayDataById?: Maybe; + singleTokenLockHourData: Array; + singleTokenLockHourDataById?: Maybe; + singleTokenLocks: Array; + stableDayData: Array; + stableDayDataById?: Maybe; + stableSwapById?: Maybe; + stableSwapDayData: Array; + stableSwapDayDataById?: Maybe; + stableSwapEventById?: Maybe; + stableSwapEvents: Array; + stableSwapExchangeById?: Maybe; + stableSwapExchanges: Array; + stableSwapHourData: Array; + stableSwapHourDataById?: Maybe; + stableSwapInfoById?: Maybe; + stableSwapInfos: Array; + stableSwapLiquidityPositionById?: Maybe; + stableSwapLiquidityPositions: Array; + stableSwaps: Array; + stakePositionById?: Maybe; + stakePositions: Array; + swapById?: Maybe; + swapPoolById?: Maybe; + swapPools: Array; + swaps: Array; + tokenById?: Maybe; + tokenDayData: Array; + tokenDayDataById?: Maybe; + tokenDepositById?: Maybe; + tokenDeposits: Array; + tokenTransferById?: Maybe; + tokenTransfers: Array; + tokenWithdrawnById?: Maybe; + tokenWithdrawns: Array; + tokens: Array; + transactionById?: Maybe; + transactions: Array; + transferById?: Maybe; + transfers: Array; + userById?: Maybe; + users: Array; + zenlinkDayInfoById?: Maybe; + zenlinkDayInfos: Array; + zenlinkInfoById?: Maybe; + zenlinkInfos: Array; + zlkInfoById?: Maybe; + zlkInfos: Array; }; -export type SwapEdge = { - __typename?: 'SwapEdge'; - cursor: Scalars['String']['output']; - node: Swap; + +export type SubscriptionBackstopPoolByIdArgs = { + id: Scalars['String']['input']; }; -export enum SwapOrderByInput { - Amount0InAsc = 'amount0In_ASC', - Amount0InDesc = 'amount0In_DESC', - Amount0OutAsc = 'amount0Out_ASC', - Amount0OutDesc = 'amount0Out_DESC', - Amount1InAsc = 'amount1In_ASC', - Amount1InDesc = 'amount1In_DESC', - Amount1OutAsc = 'amount1Out_ASC', - Amount1OutDesc = 'amount1Out_DESC', - AmountUsdAsc = 'amountUSD_ASC', - AmountUsdDesc = 'amountUSD_DESC', - FromAsc = 'from_ASC', - FromDesc = 'from_DESC', - IdAsc = 'id_ASC', - IdDesc = 'id_DESC', - LogIndexAsc = 'logIndex_ASC', - LogIndexDesc = 'logIndex_DESC', - PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', - PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', - PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', - PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', - PairIdAsc = 'pair_id_ASC', - PairIdDesc = 'pair_id_DESC', - PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', - PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', - PairReserve0Asc = 'pair_reserve0_ASC', - PairReserve0Desc = 'pair_reserve0_DESC', - PairReserve1Asc = 'pair_reserve1_ASC', - PairReserve1Desc = 'pair_reserve1_DESC', - PairReserveEthAsc = 'pair_reserveETH_ASC', - PairReserveEthDesc = 'pair_reserveETH_DESC', - PairReserveUsdAsc = 'pair_reserveUSD_ASC', - PairReserveUsdDesc = 'pair_reserveUSD_DESC', - PairToken0PriceAsc = 'pair_token0Price_ASC', - PairToken0PriceDesc = 'pair_token0Price_DESC', - PairToken1PriceAsc = 'pair_token1Price_ASC', - PairToken1PriceDesc = 'pair_token1Price_DESC', - PairTotalSupplyAsc = 'pair_totalSupply_ASC', - PairTotalSupplyDesc = 'pair_totalSupply_DESC', - PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', - PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', - PairTxCountAsc = 'pair_txCount_ASC', - PairTxCountDesc = 'pair_txCount_DESC', - PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', - PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', - PairVolumeToken0Asc = 'pair_volumeToken0_ASC', - PairVolumeToken0Desc = 'pair_volumeToken0_DESC', - PairVolumeToken1Asc = 'pair_volumeToken1_ASC', - PairVolumeToken1Desc = 'pair_volumeToken1_DESC', - PairVolumeUsdAsc = 'pair_volumeUSD_ASC', - PairVolumeUsdDesc = 'pair_volumeUSD_DESC', - SenderAsc = 'sender_ASC', - SenderDesc = 'sender_DESC', - TimestampAsc = 'timestamp_ASC', - TimestampDesc = 'timestamp_DESC', - ToAsc = 'to_ASC', - ToDesc = 'to_DESC', - TransactionBlockNumberAsc = 'transaction_blockNumber_ASC', - TransactionBlockNumberDesc = 'transaction_blockNumber_DESC', - TransactionIdAsc = 'transaction_id_ASC', - TransactionIdDesc = 'transaction_id_DESC', - TransactionTimestampAsc = 'transaction_timestamp_ASC', - TransactionTimestampDesc = 'transaction_timestamp_DESC' -} -export type SwapPool = { - __typename?: 'SwapPool'; - backstop: BackstopPool; - id: Scalars['String']['output']; - liabilities: Scalars['BigInt']['output']; - paused: Scalars['Boolean']['output']; - reserves: Scalars['BigInt']['output']; - router: Router; - token: NablaToken; - totalSupply: Scalars['BigInt']['output']; +export type SubscriptionBackstopPoolsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; }; -export type SwapPoolEdge = { - __typename?: 'SwapPoolEdge'; - cursor: Scalars['String']['output']; - node: SwapPool; + +export type SubscriptionBundleByIdArgs = { + id: Scalars['String']['input']; }; -export enum SwapPoolOrderByInput { - BackstopIdAsc = 'backstop_id_ASC', - BackstopIdDesc = 'backstop_id_DESC', - BackstopLiabilitiesAsc = 'backstop_liabilities_ASC', - BackstopLiabilitiesDesc = 'backstop_liabilities_DESC', - BackstopPausedAsc = 'backstop_paused_ASC', - BackstopPausedDesc = 'backstop_paused_DESC', - BackstopReservesAsc = 'backstop_reserves_ASC', - BackstopReservesDesc = 'backstop_reserves_DESC', + +export type SubscriptionBundlesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionBurnByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionBurnsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionFactoriesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionFactoryByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionFactoryDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionFactoryDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionFarmByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionFarmsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionIncentiveByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionIncentivesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionLiquidityPositionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionLiquidityPositionSnapshotByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionLiquidityPositionSnapshotsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionMintByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionMintsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionNablaTokenByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionNablaTokensArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionOraclePriceByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionOraclePricesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionPairByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionPairDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionPairDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionPairHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionPairHourDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionPairsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionRouterByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionRoutersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionSingleTokenLockByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionSingleTokenLockDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionSingleTokenLockDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionSingleTokenLockHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionSingleTokenLockHourDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionSingleTokenLocksArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableSwapDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapEventByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapEventsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableSwapExchangeByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapExchangesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableSwapHourDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableSwapHourDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableSwapLiquidityPositionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStableSwapLiquidityPositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStableSwapsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionStakePositionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionStakePositionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionSwapByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionSwapPoolByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionSwapPoolsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionSwapsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTokenByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTokenDayDataArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTokenDayDataByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTokenDepositByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTokenDepositsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTokenTransferByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTokenTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTokenWithdrawnByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTokenWithdrawnsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTokensArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTransactionByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTransactionsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionTransferByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionUserByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionUsersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionZenlinkDayInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionZenlinkDayInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionZenlinkInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionZenlinkInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + + +export type SubscriptionZlkInfoByIdArgs = { + id: Scalars['String']['input']; +}; + + +export type SubscriptionZlkInfosArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type Swap = { + __typename?: 'Swap'; + amount0In: Scalars['String']['output']; + amount0Out: Scalars['String']['output']; + amount1In: Scalars['String']['output']; + amount1Out: Scalars['String']['output']; + amountUSD: Scalars['String']['output']; + from: Scalars['String']['output']; + id: Scalars['String']['output']; + logIndex?: Maybe; + pair: Pair; + sender: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + to: Scalars['String']['output']; + transaction: Transaction; +}; + +export type SwapEdge = { + __typename?: 'SwapEdge'; + cursor: Scalars['String']['output']; + node: Swap; +}; + +export enum SwapOrderByInput { + Amount0InAsc = 'amount0In_ASC', + Amount0InDesc = 'amount0In_DESC', + Amount0OutAsc = 'amount0Out_ASC', + Amount0OutDesc = 'amount0Out_DESC', + Amount1InAsc = 'amount1In_ASC', + Amount1InDesc = 'amount1In_DESC', + Amount1OutAsc = 'amount1Out_ASC', + Amount1OutDesc = 'amount1Out_DESC', + AmountUsdAsc = 'amountUSD_ASC', + AmountUsdDesc = 'amountUSD_DESC', + FromAsc = 'from_ASC', + FromDesc = 'from_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + LogIndexAsc = 'logIndex_ASC', + LogIndexDesc = 'logIndex_DESC', + PairCreatedAtBlockNumberAsc = 'pair_createdAtBlockNumber_ASC', + PairCreatedAtBlockNumberDesc = 'pair_createdAtBlockNumber_DESC', + PairCreatedAtTimestampAsc = 'pair_createdAtTimestamp_ASC', + PairCreatedAtTimestampDesc = 'pair_createdAtTimestamp_DESC', + PairIdAsc = 'pair_id_ASC', + PairIdDesc = 'pair_id_DESC', + PairLiquidityProviderCountAsc = 'pair_liquidityProviderCount_ASC', + PairLiquidityProviderCountDesc = 'pair_liquidityProviderCount_DESC', + PairReserve0Asc = 'pair_reserve0_ASC', + PairReserve0Desc = 'pair_reserve0_DESC', + PairReserve1Asc = 'pair_reserve1_ASC', + PairReserve1Desc = 'pair_reserve1_DESC', + PairReserveEthAsc = 'pair_reserveETH_ASC', + PairReserveEthDesc = 'pair_reserveETH_DESC', + PairReserveUsdAsc = 'pair_reserveUSD_ASC', + PairReserveUsdDesc = 'pair_reserveUSD_DESC', + PairToken0PriceAsc = 'pair_token0Price_ASC', + PairToken0PriceDesc = 'pair_token0Price_DESC', + PairToken1PriceAsc = 'pair_token1Price_ASC', + PairToken1PriceDesc = 'pair_token1Price_DESC', + PairTotalSupplyAsc = 'pair_totalSupply_ASC', + PairTotalSupplyDesc = 'pair_totalSupply_DESC', + PairTrackedReserveEthAsc = 'pair_trackedReserveETH_ASC', + PairTrackedReserveEthDesc = 'pair_trackedReserveETH_DESC', + PairTxCountAsc = 'pair_txCount_ASC', + PairTxCountDesc = 'pair_txCount_DESC', + PairUntrackedVolumeUsdAsc = 'pair_untrackedVolumeUSD_ASC', + PairUntrackedVolumeUsdDesc = 'pair_untrackedVolumeUSD_DESC', + PairVolumeToken0Asc = 'pair_volumeToken0_ASC', + PairVolumeToken0Desc = 'pair_volumeToken0_DESC', + PairVolumeToken1Asc = 'pair_volumeToken1_ASC', + PairVolumeToken1Desc = 'pair_volumeToken1_DESC', + PairVolumeUsdAsc = 'pair_volumeUSD_ASC', + PairVolumeUsdDesc = 'pair_volumeUSD_DESC', + SenderAsc = 'sender_ASC', + SenderDesc = 'sender_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + ToAsc = 'to_ASC', + ToDesc = 'to_DESC', + TransactionBlockNumberAsc = 'transaction_blockNumber_ASC', + TransactionBlockNumberDesc = 'transaction_blockNumber_DESC', + TransactionIdAsc = 'transaction_id_ASC', + TransactionIdDesc = 'transaction_id_DESC', + TransactionTimestampAsc = 'transaction_timestamp_ASC', + TransactionTimestampDesc = 'transaction_timestamp_DESC' +} + +export type SwapPool = { + __typename?: 'SwapPool'; + backstop: BackstopPool; + id: Scalars['String']['output']; + liabilities: Scalars['BigInt']['output']; + paused: Scalars['Boolean']['output']; + reserves: Scalars['BigInt']['output']; + router: Router; + token: NablaToken; + totalSupply: Scalars['BigInt']['output']; +}; + +export type SwapPoolEdge = { + __typename?: 'SwapPoolEdge'; + cursor: Scalars['String']['output']; + node: SwapPool; +}; + +export enum SwapPoolOrderByInput { + BackstopIdAsc = 'backstop_id_ASC', + BackstopIdDesc = 'backstop_id_DESC', + BackstopLiabilitiesAsc = 'backstop_liabilities_ASC', + BackstopLiabilitiesDesc = 'backstop_liabilities_DESC', + BackstopPausedAsc = 'backstop_paused_ASC', + BackstopPausedDesc = 'backstop_paused_DESC', + BackstopReservesAsc = 'backstop_reserves_ASC', + BackstopReservesDesc = 'backstop_reserves_DESC', BackstopTotalSupplyAsc = 'backstop_totalSupply_ASC', BackstopTotalSupplyDesc = 'backstop_totalSupply_DESC', IdAsc = 'id_ASC', @@ -7068,6 +7792,147 @@ export type TokenDayDataWhereInput = { totalLiquidityUSD_startsWith?: InputMaybe; }; +export type TokenDeposit = { + __typename?: 'TokenDeposit'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + currencyId: Scalars['String']['output']; + extrinsicHash?: Maybe; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + who: Scalars['String']['output']; +}; + +export type TokenDepositEdge = { + __typename?: 'TokenDepositEdge'; + cursor: Scalars['String']['output']; + node: TokenDeposit; +}; + +export enum TokenDepositOrderByInput { + AmountAsc = 'amount_ASC', + AmountDesc = 'amount_DESC', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberDesc = 'blockNumber_DESC', + CurrencyIdAsc = 'currencyId_ASC', + CurrencyIdDesc = 'currencyId_DESC', + ExtrinsicHashAsc = 'extrinsicHash_ASC', + ExtrinsicHashDesc = 'extrinsicHash_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + WhoAsc = 'who_ASC', + WhoDesc = 'who_DESC' +} + +export type TokenDepositWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + currencyId_contains?: InputMaybe; + currencyId_containsInsensitive?: InputMaybe; + currencyId_endsWith?: InputMaybe; + currencyId_eq?: InputMaybe; + currencyId_gt?: InputMaybe; + currencyId_gte?: InputMaybe; + currencyId_in?: InputMaybe>; + currencyId_isNull?: InputMaybe; + currencyId_lt?: InputMaybe; + currencyId_lte?: InputMaybe; + currencyId_not_contains?: InputMaybe; + currencyId_not_containsInsensitive?: InputMaybe; + currencyId_not_endsWith?: InputMaybe; + currencyId_not_eq?: InputMaybe; + currencyId_not_in?: InputMaybe>; + currencyId_not_startsWith?: InputMaybe; + currencyId_startsWith?: InputMaybe; + extrinsicHash_contains?: InputMaybe; + extrinsicHash_containsInsensitive?: InputMaybe; + extrinsicHash_endsWith?: InputMaybe; + extrinsicHash_eq?: InputMaybe; + extrinsicHash_gt?: InputMaybe; + extrinsicHash_gte?: InputMaybe; + extrinsicHash_in?: InputMaybe>; + extrinsicHash_isNull?: InputMaybe; + extrinsicHash_lt?: InputMaybe; + extrinsicHash_lte?: InputMaybe; + extrinsicHash_not_contains?: InputMaybe; + extrinsicHash_not_containsInsensitive?: InputMaybe; + extrinsicHash_not_endsWith?: InputMaybe; + extrinsicHash_not_eq?: InputMaybe; + extrinsicHash_not_in?: InputMaybe>; + extrinsicHash_not_startsWith?: InputMaybe; + extrinsicHash_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + who_contains?: InputMaybe; + who_containsInsensitive?: InputMaybe; + who_endsWith?: InputMaybe; + who_eq?: InputMaybe; + who_gt?: InputMaybe; + who_gte?: InputMaybe; + who_in?: InputMaybe>; + who_isNull?: InputMaybe; + who_lt?: InputMaybe; + who_lte?: InputMaybe; + who_not_contains?: InputMaybe; + who_not_containsInsensitive?: InputMaybe; + who_not_endsWith?: InputMaybe; + who_not_eq?: InputMaybe; + who_not_in?: InputMaybe>; + who_not_startsWith?: InputMaybe; + who_startsWith?: InputMaybe; +}; + +export type TokenDepositsConnection = { + __typename?: 'TokenDepositsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + export type TokenEdge = { __typename?: 'TokenEdge'; cursor: Scalars['String']['output']; @@ -7099,6 +7964,167 @@ export enum TokenOrderByInput { UntrackedVolumeUsdDesc = 'untrackedVolumeUSD_DESC' } +export type TokenTransfer = { + __typename?: 'TokenTransfer'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + currencyId: Scalars['String']['output']; + extrinsicHash?: Maybe; + from: Scalars['String']['output']; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + to: Scalars['String']['output']; +}; + +export type TokenTransferEdge = { + __typename?: 'TokenTransferEdge'; + cursor: Scalars['String']['output']; + node: TokenTransfer; +}; + +export enum TokenTransferOrderByInput { + AmountAsc = 'amount_ASC', + AmountDesc = 'amount_DESC', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberDesc = 'blockNumber_DESC', + CurrencyIdAsc = 'currencyId_ASC', + CurrencyIdDesc = 'currencyId_DESC', + ExtrinsicHashAsc = 'extrinsicHash_ASC', + ExtrinsicHashDesc = 'extrinsicHash_DESC', + FromAsc = 'from_ASC', + FromDesc = 'from_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + ToAsc = 'to_ASC', + ToDesc = 'to_DESC' +} + +export type TokenTransferWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + currencyId_contains?: InputMaybe; + currencyId_containsInsensitive?: InputMaybe; + currencyId_endsWith?: InputMaybe; + currencyId_eq?: InputMaybe; + currencyId_gt?: InputMaybe; + currencyId_gte?: InputMaybe; + currencyId_in?: InputMaybe>; + currencyId_isNull?: InputMaybe; + currencyId_lt?: InputMaybe; + currencyId_lte?: InputMaybe; + currencyId_not_contains?: InputMaybe; + currencyId_not_containsInsensitive?: InputMaybe; + currencyId_not_endsWith?: InputMaybe; + currencyId_not_eq?: InputMaybe; + currencyId_not_in?: InputMaybe>; + currencyId_not_startsWith?: InputMaybe; + currencyId_startsWith?: InputMaybe; + extrinsicHash_contains?: InputMaybe; + extrinsicHash_containsInsensitive?: InputMaybe; + extrinsicHash_endsWith?: InputMaybe; + extrinsicHash_eq?: InputMaybe; + extrinsicHash_gt?: InputMaybe; + extrinsicHash_gte?: InputMaybe; + extrinsicHash_in?: InputMaybe>; + extrinsicHash_isNull?: InputMaybe; + extrinsicHash_lt?: InputMaybe; + extrinsicHash_lte?: InputMaybe; + extrinsicHash_not_contains?: InputMaybe; + extrinsicHash_not_containsInsensitive?: InputMaybe; + extrinsicHash_not_endsWith?: InputMaybe; + extrinsicHash_not_eq?: InputMaybe; + extrinsicHash_not_in?: InputMaybe>; + extrinsicHash_not_startsWith?: InputMaybe; + extrinsicHash_startsWith?: InputMaybe; + from_contains?: InputMaybe; + from_containsInsensitive?: InputMaybe; + from_endsWith?: InputMaybe; + from_eq?: InputMaybe; + from_gt?: InputMaybe; + from_gte?: InputMaybe; + from_in?: InputMaybe>; + from_isNull?: InputMaybe; + from_lt?: InputMaybe; + from_lte?: InputMaybe; + from_not_contains?: InputMaybe; + from_not_containsInsensitive?: InputMaybe; + from_not_endsWith?: InputMaybe; + from_not_eq?: InputMaybe; + from_not_in?: InputMaybe>; + from_not_startsWith?: InputMaybe; + from_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + to_contains?: InputMaybe; + to_containsInsensitive?: InputMaybe; + to_endsWith?: InputMaybe; + to_eq?: InputMaybe; + to_gt?: InputMaybe; + to_gte?: InputMaybe; + to_in?: InputMaybe>; + to_isNull?: InputMaybe; + to_lt?: InputMaybe; + to_lte?: InputMaybe; + to_not_contains?: InputMaybe; + to_not_containsInsensitive?: InputMaybe; + to_not_endsWith?: InputMaybe; + to_not_eq?: InputMaybe; + to_not_in?: InputMaybe>; + to_not_startsWith?: InputMaybe; + to_startsWith?: InputMaybe; +}; + +export type TokenTransfersConnection = { + __typename?: 'TokenTransfersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + export type TokenWhereInput = { AND?: InputMaybe>; OR?: InputMaybe>; @@ -7290,6 +8316,147 @@ export type TokenWhereInput = { untrackedVolumeUSD_startsWith?: InputMaybe; }; +export type TokenWithdrawn = { + __typename?: 'TokenWithdrawn'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + currencyId: Scalars['String']['output']; + extrinsicHash?: Maybe; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + who: Scalars['String']['output']; +}; + +export type TokenWithdrawnEdge = { + __typename?: 'TokenWithdrawnEdge'; + cursor: Scalars['String']['output']; + node: TokenWithdrawn; +}; + +export enum TokenWithdrawnOrderByInput { + AmountAsc = 'amount_ASC', + AmountDesc = 'amount_DESC', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberDesc = 'blockNumber_DESC', + CurrencyIdAsc = 'currencyId_ASC', + CurrencyIdDesc = 'currencyId_DESC', + ExtrinsicHashAsc = 'extrinsicHash_ASC', + ExtrinsicHashDesc = 'extrinsicHash_DESC', + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + TimestampAsc = 'timestamp_ASC', + TimestampDesc = 'timestamp_DESC', + WhoAsc = 'who_ASC', + WhoDesc = 'who_DESC' +} + +export type TokenWithdrawnWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + currencyId_contains?: InputMaybe; + currencyId_containsInsensitive?: InputMaybe; + currencyId_endsWith?: InputMaybe; + currencyId_eq?: InputMaybe; + currencyId_gt?: InputMaybe; + currencyId_gte?: InputMaybe; + currencyId_in?: InputMaybe>; + currencyId_isNull?: InputMaybe; + currencyId_lt?: InputMaybe; + currencyId_lte?: InputMaybe; + currencyId_not_contains?: InputMaybe; + currencyId_not_containsInsensitive?: InputMaybe; + currencyId_not_endsWith?: InputMaybe; + currencyId_not_eq?: InputMaybe; + currencyId_not_in?: InputMaybe>; + currencyId_not_startsWith?: InputMaybe; + currencyId_startsWith?: InputMaybe; + extrinsicHash_contains?: InputMaybe; + extrinsicHash_containsInsensitive?: InputMaybe; + extrinsicHash_endsWith?: InputMaybe; + extrinsicHash_eq?: InputMaybe; + extrinsicHash_gt?: InputMaybe; + extrinsicHash_gte?: InputMaybe; + extrinsicHash_in?: InputMaybe>; + extrinsicHash_isNull?: InputMaybe; + extrinsicHash_lt?: InputMaybe; + extrinsicHash_lte?: InputMaybe; + extrinsicHash_not_contains?: InputMaybe; + extrinsicHash_not_containsInsensitive?: InputMaybe; + extrinsicHash_not_endsWith?: InputMaybe; + extrinsicHash_not_eq?: InputMaybe; + extrinsicHash_not_in?: InputMaybe>; + extrinsicHash_not_startsWith?: InputMaybe; + extrinsicHash_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + who_contains?: InputMaybe; + who_containsInsensitive?: InputMaybe; + who_endsWith?: InputMaybe; + who_eq?: InputMaybe; + who_gt?: InputMaybe; + who_gte?: InputMaybe; + who_in?: InputMaybe>; + who_isNull?: InputMaybe; + who_lt?: InputMaybe; + who_lte?: InputMaybe; + who_not_contains?: InputMaybe; + who_not_containsInsensitive?: InputMaybe; + who_not_endsWith?: InputMaybe; + who_not_eq?: InputMaybe; + who_not_in?: InputMaybe>; + who_not_startsWith?: InputMaybe; + who_startsWith?: InputMaybe; +}; + +export type TokenWithdrawnsConnection = { + __typename?: 'TokenWithdrawnsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + export type TokensConnection = { __typename?: 'TokensConnection'; edges: Array; @@ -7999,6 +9166,6 @@ export type GetTokensQueryVariables = Exact<{ [key: string]: never; }>; export type GetTokensQuery = { __typename?: 'Query', nablaTokens: Array<{ __typename?: 'NablaToken', id: string, name: string, symbol: string, decimals: number }> }; -export const GetBackstopPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getBackstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"backstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}}]}}]}}]} as unknown as DocumentNode; -export const GetSwapPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getSwapPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"swapPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}},{"kind":"Field","name":{"kind":"Name","value":"router"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}}]}},{"kind":"Field","name":{"kind":"Name","value":"backstop"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetBackstopPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getBackstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"backstopPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"paused_eq"},"value":{"kind":"BooleanValue","value":false}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetSwapPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getSwapPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"swapPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"paused_eq"},"value":{"kind":"BooleanValue","value":false}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}},{"kind":"Field","name":{"kind":"Name","value":"router"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}}]}},{"kind":"Field","name":{"kind":"Name","value":"backstop"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"nablaTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/src/hooks/nabla/useBackstopPools.ts b/src/hooks/nabla/useBackstopPools.ts index 891a2b20..9475dbbb 100644 --- a/src/hooks/nabla/useBackstopPools.ts +++ b/src/hooks/nabla/useBackstopPools.ts @@ -1,4 +1,4 @@ -import { UseQueryOptions, useQuery } from '@tanstack/react-query'; +import { useQuery, UseQueryOptions } from '@tanstack/react-query'; import request from 'graphql-request'; import { graphql } from '../../../gql/gql'; import { BackstopPool } from '../../../gql/graphql'; @@ -25,7 +25,7 @@ export const useBackstopPools = (options?: UseBackstopPoolsProps) => { export const getBackstopPools = graphql(` query getBackstopPools { - backstopPools { + backstopPools(where: { paused_eq: false }) { id liabilities paused diff --git a/src/hooks/nabla/useSwapPools.ts b/src/hooks/nabla/useSwapPools.ts index a95bb870..e5c70cdf 100644 --- a/src/hooks/nabla/useSwapPools.ts +++ b/src/hooks/nabla/useSwapPools.ts @@ -25,7 +25,7 @@ export const useSwapPools = (options?: UseSwapPoolsProps) => { export const getSwapPools = graphql(` query getSwapPools { - swapPools { + swapPools(where: { paused_eq: false }) { id liabilities paused From ec50276b6441f5bda54e69c20ecf92263a940a4b Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Thu, 9 Nov 2023 13:29:47 +0100 Subject: [PATCH 24/33] Import from preact/compat (#294) --- src/hooks/spacewalk/useBridgeSettings.ts | 4 ++-- src/pages/dashboard/Portfolio.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hooks/spacewalk/useBridgeSettings.ts b/src/hooks/spacewalk/useBridgeSettings.ts index 507ba85b..2fc55b99 100644 --- a/src/hooks/spacewalk/useBridgeSettings.ts +++ b/src/hooks/spacewalk/useBridgeSettings.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import _ from 'lodash'; -import React, { StateUpdater, useEffect, useMemo, useState } from 'preact/compat'; +import { StateUpdater, useContext, useEffect, useMemo, useState } from 'preact/compat'; import { Asset } from 'stellar-sdk'; import { convertCurrencyToStellarAsset } from '../../helpers/spacewalk'; import { stringifyStellarAsset } from '../../helpers/stellar'; @@ -24,7 +24,7 @@ function useBridgeSettings(): BridgeSettings { const [manualVaultSelection, setManualVaultSelection] = useState(false); const { getVaults, getVaultsWithIssuableTokens, getVaultsWithRedeemableTokens } = useVaultRegistryPallet(); const [selectedVault, setSelectedVault] = useState(); - const { selectedAsset, setSelectedAsset } = (React.useContext(BridgeContext) || {}) as any; + const { selectedAsset, setSelectedAsset } = (useContext(BridgeContext) || {}) as any; useEffect(() => { const combinedVaults: ExtendedRegistryVault[] = []; diff --git a/src/pages/dashboard/Portfolio.tsx b/src/pages/dashboard/Portfolio.tsx index c09ebeb1..0cf59c01 100644 --- a/src/pages/dashboard/Portfolio.tsx +++ b/src/pages/dashboard/Portfolio.tsx @@ -1,6 +1,6 @@ import { useMemo } from 'preact/compat'; -import Table, { SortingOrder } from '../../components/Table'; import { useGlobalState } from '../../GlobalStateProvider'; +import Table, { SortingOrder } from '../../components/Table'; import useBalances from '../../hooks/useBalances'; import { amountColumn, priceColumn, tokenColumn, usdValueColumn } from './PortfolioColumns'; From cdf598ee91c55edcb0b8dcfe7d95b20cc8c5970d Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Thu, 9 Nov 2023 13:30:26 +0100 Subject: [PATCH 25/33] feat: Add AMPE price to the Dashboard (#293) * add hook to fetch AMPE price * fetch AMPE price correctly * revert conflict and use preact/compat (as the rest of the app) * Update src/hooks/usePriceFetcher.ts --- src/hooks/useAMPEPrice.ts | 38 ++++++++++++++++++++++++++++++++++++ src/hooks/usePriceFetcher.ts | 38 +++++++++++++++++++++++++++++++----- 2 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 src/hooks/useAMPEPrice.ts diff --git a/src/hooks/useAMPEPrice.ts b/src/hooks/useAMPEPrice.ts new file mode 100644 index 00000000..21882adc --- /dev/null +++ b/src/hooks/useAMPEPrice.ts @@ -0,0 +1,38 @@ +import { useQuery } from '@tanstack/react-query'; +import request from 'graphql-request'; +import { QueryOptions, cacheKeys, inactiveOptions } from '../constants/cache'; +import { emptyCacheKey, emptyFn } from '../helpers/general'; + +interface PriceData { + data: { + bundleById: { + ethPrice: string; + }; + }; +} + +export const useTokens = (options?: QueryOptions) => { + const indexerUrl = 'https://squid.subsquid.io/amplitude-squid/graphql'; + const enabled = !!indexerUrl && options?.enabled !== false; + return useQuery( + enabled ? [cacheKeys.tokens, indexerUrl] : emptyCacheKey, + enabled + ? async () => { + const response = (await request(indexerUrl, getPrice)) as PriceData; + return response; + } + : emptyFn, + { + ...inactiveOptions['15m'], + ...options, + }, + ); +}; + +const getPrice = ` + query GetAMPEPrice { + bundleById(id: "1") { + ethPrice + } + } +`; diff --git a/src/hooks/usePriceFetcher.ts b/src/hooks/usePriceFetcher.ts index f7336431..740ba229 100644 --- a/src/hooks/usePriceFetcher.ts +++ b/src/hooks/usePriceFetcher.ts @@ -1,12 +1,15 @@ +import request from 'graphql-request'; import { useMemo } from 'preact/compat'; import { TenantName } from '../models/Tenant'; +const AMPLITUDE_INDEXER_URL = 'https://squid.subsquid.io/amplitude-squid/graphql'; + interface PriceFetcherAsset { assetName: string; blockchain: string; assetId: string | undefined; exclude?: TenantName[]; - provider: 'dia' | 'diaForeign'; + provider: 'dia' | 'diaForeign' | 'subsquid'; } type PricesCache = { @@ -55,7 +58,6 @@ const assets: PriceFetcherAsset[] = [ assetId: '0xdAC17F958D2ee523a2206206994597C13D831ec7', provider: 'dia', }, - { assetName: 'DOT', blockchain: 'Polkadot', @@ -66,8 +68,8 @@ const assets: PriceFetcherAsset[] = [ { assetName: 'AMPE', blockchain: 'Amplitude', - assetId: undefined, - provider: 'dia', + assetId: 'ampe', + provider: 'subsquid', exclude: [TenantName.Pendulum], }, { @@ -108,9 +110,35 @@ const getDIAAssetForeignPrice = async (asset: PriceFetcherAsset): Promise => { + if (!asset.assetId) return 0; + const query = ` + query MyQuery { + bundleById(id: "1") { + ethPrice + } + } + `; + try { + const response = (await request(AMPLITUDE_INDEXER_URL, query)) as SubsquidResponse; + return parseFloat(response.bundleById.ethPrice); + } catch (e) { + console.error(e); + } + + return 0; +}; + const providers = { dia: getDIAAssetPrice, diaForeign: getDIAAssetForeignPrice, + subsquid: getSubsquidAssetPrice, }; const lookup = (assetCode: string) => { @@ -125,7 +153,7 @@ const getPrice = async (asset: PriceFetcherAsset) => { try { return await providers[asset.provider](asset); } catch (e) { - console.error('Not able fetch to price for asset: ', e); + console.error('Not able to fetch price for asset: ', e); } }; From 208dacd858deec372b128b282eb37360c3e01ebe Mon Sep 17 00:00:00 2001 From: Nejc Date: Wed, 15 Nov 2023 21:10:11 +0900 Subject: [PATCH 26/33] feat: Add info to the Bedeem from Backstop pool UI (#291) * feat: backstop pool withdraw info * refactor: fee * feat: token price on redeem ui --------- Co-authored-by: Gonza Montiel --- src/components/Asset/Price/index.tsx | 42 +++++++++-------- .../Backstop/WithdrawLiquidity/index.tsx | 17 +++++-- .../Backstop/WithdrawLiquidity/schema.ts | 2 + .../Pools/Backstop/WithdrawLiquidity/types.ts | 1 + .../WithdrawLiquidity/useWithdrawLiquidity.ts | 45 ++++++++++++++----- src/components/nabla/Pools/Backstop/index.tsx | 2 +- .../nabla/Pools/Swap/Redeem/index.tsx | 17 ++++++- .../Pools/Swap/WithdrawLiquidity/index.tsx | 14 +++++- .../nabla/Pools/TokenAmount/index.tsx | 44 ++++++++++++++++++ src/constants/cache.ts | 1 + src/hooks/nabla/useSharesTargetWorth.ts | 26 +++++++++++ 11 files changed, 171 insertions(+), 40 deletions(-) create mode 100644 src/components/nabla/Pools/TokenAmount/index.tsx create mode 100644 src/hooks/nabla/useSharesTargetWorth.ts diff --git a/src/components/Asset/Price/index.tsx b/src/components/Asset/Price/index.tsx index d633bb50..eb73fa4a 100644 --- a/src/components/Asset/Price/index.tsx +++ b/src/components/Asset/Price/index.tsx @@ -4,7 +4,7 @@ import { usePriceFetcher } from '../../../hooks/usePriceFetcher'; import { Skeleton } from '../../Skeleton'; export type TokenPriceProps = { - address: string; + address?: string; symbol: string; //amount?: number; prefix?: ReactNode; @@ -13,26 +13,24 @@ export type TokenPriceProps = { fallback?: ReactNode; }; -const TokenPrice = memo( - ({ address, symbol, prefix = '', loader, fallback = null }: TokenPriceProps): JSX.Element | null => { - const { pricesCache } = usePriceFetcher(); - const [price, setPrice] = useState(null); - useEffect(() => { - const run = async () => { - const p = (await pricesCache)[symbol]; - setPrice(p); - }; - run(); - }, [pricesCache, symbol]); +const TokenPrice = memo(({ symbol, prefix = null, loader, fallback = null }: TokenPriceProps): JSX.Element | null => { + const { pricesCache } = usePriceFetcher(); + const [price, setPrice] = useState(null); + useEffect(() => { + const run = async () => { + const p = (await pricesCache)[symbol]; + setPrice(p); + }; + run(); + }, [pricesCache, symbol]); - const isLoading = price === null; - if (isLoading) return <>{loader} || 10000; - if (!price) return <>{fallback}; - return ( - - {prefix}${price} - - ); - }, -); + const isLoading = price === null; + if (isLoading) return <>{loader} || 10000; + if (!price) return <>{fallback}; + return ( + + {prefix}${price} + + ); +}); export default TokenPrice; diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx index ed323f00..304ea69f 100644 --- a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/index.tsx @@ -3,10 +3,12 @@ import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; import { BackstopPool } from '../../../../../../gql/graphql'; +import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; import { numberLoader } from '../../../../Loader'; import TransactionProgress from '../../../../Transaction/Progress'; +import TokenAmount from '../../TokenAmount'; import { useWithdrawLiquidity } from './useWithdrawLiquidity'; export type WithdrawLiquidityProps = { @@ -22,7 +24,8 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null depositQuery, amount, form: { register, setValue }, - } = useWithdrawLiquidity(data.id, data.token.id); + selectedPool, + } = useWithdrawLiquidity(data); const deposit = depositQuery.balance || 0; const hideCss = !mutation.isIdle ? 'hidden' : ''; @@ -86,8 +89,16 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null
    -
    Fee
    -
    {'! TODO'}
    +
    Amount
    +
    + +
    Deposit
    diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts index e981907c..b3f8c325 100644 --- a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/schema.ts @@ -3,6 +3,8 @@ import { transformNumber } from '../../../../../helpers/yup'; import { WithdrawLiquidityValues } from './types'; const schema = Yup.object().shape({ + address: Yup.string().nullable().min(5), + slippage: Yup.number().nullable().transform(transformNumber), amount: Yup.number().positive().required().transform(transformNumber), }); diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts index 5780abd9..787113ec 100644 --- a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts @@ -1,3 +1,4 @@ export type WithdrawLiquidityValues = { amount: number; + address: string; }; diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts index fddb7be0..e3f9b2ed 100644 --- a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts @@ -1,6 +1,8 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { useQueryClient } from '@tanstack/react-query'; +import { useMemo } from 'preact/compat'; import { useForm, useWatch } from 'react-hook-form'; +import { BackstopPool, SwapPool } from '../../../../../../gql/graphql'; import { cacheKeys } from '../../../../../constants/cache'; import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; import { subtractPercentage } from '../../../../../helpers/calc'; @@ -12,7 +14,10 @@ import { useContractWrite } from '../../../../../shared/useContractWrite'; import schema from './schema'; import { WithdrawLiquidityValues } from './types'; -export const useWithdrawLiquidity = (poolAddress: string, tokenAddress: string) => { +export const useWithdrawLiquidity = (pool: BackstopPool) => { + const { id: poolAddress, token, router } = pool; + const tokenAddress = token.id; + const swapPools = router?.swapPools; const queryClient = useQueryClient(); const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; const toggle = useModalToggle(); @@ -25,6 +30,20 @@ export const useWithdrawLiquidity = (poolAddress: string, tokenAddress: string) defaultValues: {}, }); + const amount = + Number( + useWatch({ + control: form.control, + name: 'amount', + defaultValue: 0, + }), + ) || 0; + + const address = useWatch({ + control: form.control, + name: 'address', + }); + const mutation = useContractWrite({ abi: backstopPoolAbi, address: poolAddress, @@ -47,14 +66,20 @@ export const useWithdrawLiquidity = (poolAddress: string, tokenAddress: string) ]), ); - const amount = - Number( - useWatch({ - control: form.control, - name: 'amount', - defaultValue: 0, - }), - ) || 0; + const pools = useMemo( + () => + [ + { + id: '', + token: { + ...token, + id: '', + }, + } as SwapPool, + ].concat(swapPools || []), + [swapPools, token], + ); + const selectedPool = useMemo(() => pools.find((t) => t.id === address) || pools[0], [address, pools]); - return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery }; + return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery, selectedPool, pools }; }; diff --git a/src/components/nabla/Pools/Backstop/index.tsx b/src/components/nabla/Pools/Backstop/index.tsx index b33acc56..8abe8f5e 100644 --- a/src/components/nabla/Pools/Backstop/index.tsx +++ b/src/components/nabla/Pools/Backstop/index.tsx @@ -12,7 +12,7 @@ const BackstopPoolsBody = (): JSX.Element | null => { const { data, isLoading } = useBackstopPools(); if (isLoading) return ; - const pool = data?.[0]; + const pool = data?.[data.length - 1]; if (!pool) return null; // TODO: empty state UI return ( <> diff --git a/src/components/nabla/Pools/Swap/Redeem/index.tsx b/src/components/nabla/Pools/Swap/Redeem/index.tsx index 5aaa542f..d7bf2e63 100644 --- a/src/components/nabla/Pools/Swap/Redeem/index.tsx +++ b/src/components/nabla/Pools/Swap/Redeem/index.tsx @@ -2,8 +2,10 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; +import { config } from '../../../../../config'; import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; +import TokenPrice from '../../../../Asset/Price'; import { numberLoader } from '../../../../Loader'; import TransactionProgress from '../../../../Transaction/Progress'; import { TransactionSettingsDropdown } from '../../../../Transaction/Settings'; @@ -100,8 +102,19 @@ const Redeem = ({ data }: RedeemProps): JSX.Element | null => {
    -
    Fee
    -
    {'! TODO'}
    +
    Security fee
    +
    {config.backstop.securityFee * 100}%
    +
    +
    +
    Price
    +
    + +
    Deposit
    diff --git a/src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx b/src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx index 60f0ad5c..edfc00cf 100644 --- a/src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx +++ b/src/components/nabla/Pools/Swap/WithdrawLiquidity/index.tsx @@ -2,10 +2,12 @@ import { ArrowLeftIcon } from '@heroicons/react/24/outline'; import { ChangeEvent } from 'preact/compat'; import { Button, Range } from 'react-daisyui'; import { PoolProgress } from '../..'; +import { swapPoolAbi } from '../../../../../contracts/nabla/SwapPool'; import { calcSharePercentage, minMax } from '../../../../../helpers/calc'; import { FixedU128Decimals, nativeToDecimal, roundNumber } from '../../../../../shared/parseNumbers'; import { numberLoader } from '../../../../Loader'; import TransactionProgress from '../../../../Transaction/Progress'; +import TokenAmount from '../../TokenAmount'; import { SwapPoolColumn } from '../columns'; import { ModalTypes } from '../Modals/types'; import { useWithdrawLiquidity } from './useWithdrawLiquidity'; @@ -86,8 +88,16 @@ const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps): JSX.Element | null
    -
    Fee
    -
    {'! TODO'}
    +
    Amount
    +
    + +
    Deposit
    diff --git a/src/components/nabla/Pools/TokenAmount/index.tsx b/src/components/nabla/Pools/TokenAmount/index.tsx new file mode 100644 index 00000000..b5dfc5ed --- /dev/null +++ b/src/components/nabla/Pools/TokenAmount/index.tsx @@ -0,0 +1,44 @@ +import { Abi } from '@polkadot/api-contract'; +import { useSharesTargetWorth } from '../../../../hooks/nabla/useSharesTargetWorth'; +import { useDebouncedValue } from '../../../../hooks/useDebouncedValue'; +import { FixedU128Decimals, nativeToDecimal, prettyNumbers } from '../../../../shared/parseNumbers'; +import { Skeleton } from '../../../Skeleton'; + +export interface TokenAmountProps { + address: string; + abi?: Abi | Record; + amount?: number; + debounce?: number; + loader?: boolean; + symbol?: ReactNode; + fallback?: string | number; +} + +const TokenAmount = ({ + symbol, + abi, + fallback, + address, + amount = 0, + loader = true, + debounce = 800, +}: TokenAmountProps): JSX.Element | null => { + const debouncedAmount = useDebouncedValue(amount, debounce); + const arg = debounce ? debouncedAmount : amount; + const { isLoading, data } = useSharesTargetWorth({ + address, + abi, + amount: arg, + }); + if (isLoading || (!!debounce && amount !== debouncedAmount)) { + return loader ? 10000 : null; + } + + return ( + + {data ? prettyNumbers(nativeToDecimal(data || '0', FixedU128Decimals).toNumber()) : fallback ?? null} + {symbol ? symbol : null} + + ); +}; +export default TokenAmount; diff --git a/src/constants/cache.ts b/src/constants/cache.ts index 35d15096..108fbc90 100644 --- a/src/constants/cache.ts +++ b/src/constants/cache.ts @@ -11,6 +11,7 @@ export const cacheKeys = { walletBalance: 'walletBalance', walletBalances: 'walletBalances', tokenOutAmount: 'tokenOutAmount', + sharesTargetWorth: 'sharesTargetWorth', }; export type QueryOptions = Partial< diff --git a/src/hooks/nabla/useSharesTargetWorth.ts b/src/hooks/nabla/useSharesTargetWorth.ts new file mode 100644 index 00000000..d0225aed --- /dev/null +++ b/src/hooks/nabla/useSharesTargetWorth.ts @@ -0,0 +1,26 @@ +import { Abi } from '@polkadot/api-contract'; +import { cacheKeys, inactiveOptions } from '../../constants/cache'; +import { swapPoolAbi } from '../../contracts/nabla/SwapPool'; +import { QueryOptions } from '../../shared/helpers'; +import { useContract } from '../../shared/useContract'; + +export type UseSharesTargetWorthProps = { + address: string | undefined; + amount: number | undefined; + abi?: Abi | Dict; +}; + +export const useSharesTargetWorth = ( + { address, amount, abi = swapPoolAbi }: UseSharesTargetWorthProps, + options?: QueryOptions, +) => { + return useContract([cacheKeys.sharesTargetWorth], { + ...inactiveOptions['1m'], + ...options, + address, + abi, + method: 'sharesTargetWorth', + args: [amount], + enabled: Boolean(address && amount && options?.enabled !== false), + }); +}; From 44f14a7499316eb49f804b777057eee56bac123c Mon Sep 17 00:00:00 2001 From: gianfra-t <96739519+gianfra-t@users.noreply.github.com> Date: Tue, 28 Nov 2023 07:08:55 -0300 Subject: [PATCH 27/33] no-release: Add GPL LICENSE (#304) Add GPL License --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From 8fe27919c82a5237313cdd4d545054513d791f55 Mon Sep 17 00:00:00 2001 From: Gonza Montiel Date: Tue, 28 Nov 2023 12:25:18 +0100 Subject: [PATCH 28/33] feat: Update transfer dialogs design (#295) * update yarn lock * change date format * general dialogs improvements * completed dialog * update cancelled dialog * update Pending dialog * revert testing change * fix extract colors to css * fix linting & ts errors * revert daiysi ui upgrade * force white color * corrected texts --- src/components/Asset/Selector/Modal/index.tsx | 2 +- src/components/Layout/links.tsx | 8 +- src/components/Table/index.tsx | 8 +- src/components/Table/styles.css | 50 + src/components/Transaction/Settings/index.tsx | 7 +- src/components/Wallet/WalletConnect/index.tsx | 3 +- src/components/Wallet/index.tsx | 2 +- src/hooks/spacewalk/useBridgeSettings.ts | 3 +- src/hooks/useClipboard.ts | 2 +- src/pages/bridge/TransferDialog.tsx | 156 +- src/pages/bridge/TransfersColumns.tsx | 2 +- tailwind.config.cjs | 3 + yarn.lock | 7140 +++++++---------- 13 files changed, 3041 insertions(+), 4345 deletions(-) diff --git a/src/components/Asset/Selector/Modal/index.tsx b/src/components/Asset/Selector/Modal/index.tsx index 9e836e93..8e8fc50c 100644 --- a/src/components/Asset/Selector/Modal/index.tsx +++ b/src/components/Asset/Selector/Modal/index.tsx @@ -40,7 +40,7 @@ const AssetList = ({ assets, onSelect, selected }: AssetListProps): JSX.Element className="w-full items-center justify-start gap-4 px-3 py-1 border-0 bg-[rgba(0,0,0,.2)] text-left hover:opacity-80 dark:bg-[rgba(255,255,255,.12)]" > - + {selected == token.id && ( )} diff --git a/src/components/Layout/links.tsx b/src/components/Layout/links.tsx index 40f190d5..67b08013 100644 --- a/src/components/Layout/links.tsx +++ b/src/components/Layout/links.tsx @@ -1,8 +1,9 @@ import { ChevronRightIcon } from '@heroicons/react/20/solid'; import { ComponentChildren } from 'preact'; -import { HTMLAttributes } from 'preact/compat'; -import DashboardIcon from '../../assets/dashboard'; +import { NavLinkProps } from 'react-router-dom'; +import { GlobalState } from '../../GlobalStateProvider'; import ExternalIcon from '../../assets/ExternalIcon'; +import DashboardIcon from '../../assets/dashboard'; import GovernanceIcon from '../../assets/governance'; import NablaIcon from '../../assets/nabla'; import OnrampIcon from '../../assets/onramp'; @@ -11,7 +12,6 @@ import StakingIcon from '../../assets/staking'; import SwapIcon from '../../assets/swap'; import { config } from '../../config'; import { nablaConfig } from '../../config/apps/nabla'; -import { GlobalState } from '../../GlobalStateProvider'; import { TenantName } from '../../models/Tenant'; import ComingSoonTag from './ComingSoonTag'; @@ -19,7 +19,7 @@ export type LinkParameter = { isActive?: boolean }; export type BaseLinkItem = { link: string; title: ComponentChildren; - props?: Omit, 'className'> & { + props?: Omit & { className?: (params?: LinkParameter) => string; }; prefix?: ComponentChildren; diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx index 64c27703..222ac47d 100644 --- a/src/components/Table/index.tsx +++ b/src/components/Table/index.tsx @@ -107,7 +107,9 @@ const Table = ({
    ) : null} -
    +
    {title &&
    {title}
    } @@ -124,10 +126,10 @@ const Table = ({ }`} onClick={header.column.getToggleSortingHandler()} > -
    +
    {flexRender(header.column.columnDef.header, header.getContext())} {isSortable ? ( -
    +
    {header.column.getIsSorted() === 'desc' ? ( ) : ( diff --git a/src/components/Table/styles.css b/src/components/Table/styles.css index a3cc1b71..e95b5fab 100644 --- a/src/components/Table/styles.css +++ b/src/components/Table/styles.css @@ -10,6 +10,34 @@ .table-header { color: #9FA2B4; } + + .table-container { + color: #252733; + } + + + .transfer-dialog { + background-color: #FFF; + border: 1px solid rgba(67, 67, 67, 0.26); + } + + .transfer-dialog-text { + color: #7C818D; + } + + .transfer-dialog-label { + background: rgba(0, 0, 0, 0.03); + color: black; + } + + .transfer-dialog-colored-text { + color: #907EA0; + } + + #details { + background-color: rgba(0, 0, 0, 0.03); + } + } [data-theme='amplitude'] { @@ -24,4 +52,26 @@ .table-header { color: rgba(221, 221, 221, 0.87); } + + .table-container { + color: #fff; + } + + .transfer-dialog { + background-color: #1C1C1C; + color: #FFF; + border: 1px solid rgba(67, 67, 67, 0.26); + } + + .transfer-dialog-colored-text { + color: #FFF; + } + + .transfer-dialog-text { + color: #FFF; + } + + #details { + background-color: #2A2A2A; + } } \ No newline at end of file diff --git a/src/components/Transaction/Settings/index.tsx b/src/components/Transaction/Settings/index.tsx index 94a3f0c6..5fc87fc8 100644 --- a/src/components/Transaction/Settings/index.tsx +++ b/src/components/Transaction/Settings/index.tsx @@ -1,11 +1,12 @@ import { Cog8ToothIcon, QuestionMarkCircleIcon } from '@heroicons/react/24/outline'; import { Button, Dropdown, Input } from 'react-daisyui'; +import { InputProps } from 'react-daisyui/dist/Input/Input'; import { config } from '../../../config'; export interface TransactionSettingsProps { setSlippage: (slippage: number | undefined) => void; slippageProps: React.HTMLAttributes; - deadlineProps?: React.HTMLAttributes; + deadlineProps?: InputProps; } const inputCls = 'bg-neutral-100 dark:bg-neutral-900 text-right text-neutral-600 dark:text-neutral-200'; @@ -39,7 +40,7 @@ const TransactionSettings = ({ min={config.transaction.settings.slippage.min} max={config.transaction.settings.slippage.max} placeholder="Auto" - {...slippageProps} + {...deadlineProps} />
    %
    @@ -56,7 +57,7 @@ const TransactionSettings = ({ { setWalletAccount(await walletConnectService.init(session, chainId)); modal?.closeModal(); setLoading(false); - } catch (error) { + } catch (error: any) { toast(error, { type: 'error' }); setLoading(false); } @@ -46,7 +46,6 @@ const WalletConnect = ({ setWalletAccount }: WalletConnectProps) => { setModal( new WalletConnectModal({ projectId: config.walletConnect.projectId, - walletConnectVersion: 2, }), ); }, [provider]); diff --git a/src/components/Wallet/index.tsx b/src/components/Wallet/index.tsx index 8a74f3b5..7420c29e 100644 --- a/src/components/Wallet/index.tsx +++ b/src/components/Wallet/index.tsx @@ -20,7 +20,7 @@ const OpenWallet = ({ dAppName }: { dAppName: string }): JSX.Element => { return ( <> {address ? ( - + -); - function BaseTransferDialog(props: BaseTransferDialogProps) { const { id, statusIcon, showMemo, transfer, visible, title, content, footer, actions, onClose, onConfirm } = props; @@ -46,6 +40,19 @@ function BaseTransferDialog(props: BaseTransferDialogProps) { const tenantNameCapitalized = tenantName ? toTitle(tenantName) : 'Pendulum'; const [vaultStellarPublicKey, setVaultStellarPublicKey] = useState(undefined); + const [collapseVisibility, setCollapseVisibility] = useState(''); + + const toggle = useCallback(() => { + if (collapseVisibility === '') { + setCollapseVisibility('collapse-open'); + } else { + setCollapseVisibility(''); + const elem = document.activeElement; + if (elem && elem instanceof HTMLElement) { + elem.blur(); + } + } + }, [collapseVisibility, setCollapseVisibility]); // The `stellarAddress` contained in the request will either be the user's Stellar address or the vault's Stellar address (i.e. equal to `vaultStellarPublicKey`). const destinationStellarAddress = convertRawHexKeyToPublicKey(transfer.original.stellarAddress.toHex()).publicKey(); @@ -69,66 +76,72 @@ function BaseTransferDialog(props: BaseTransferDialogProps) { }, [transfer]); return ( - +
    {statusIcon} -
    -

    {title}

    +
    +

    {title}

    {content} -
    -
    + +
    +
    Bridge fee
    {nativeToDecimal(transfer.original.fee.toNumber()).toString()}
    -
    -
    Destination Address (Stellar)
    - -
    -
    -
    Vault Address ({tenantNameCapitalized})
    - -
    - {vaultStellarPublicKey && ( +
    -
    Vault Address (Stellar)
    +
    Destination Address (Stellar)
    - )} - {showMemo && (
    -
    Memo
    +
    Vault Address ({tenantNameCapitalized})
    - )} + {vaultStellarPublicKey && ( +
    +
    Vault Address (Stellar)
    + +
    + )} + {showMemo && ( +
    +
    Memo
    + +
    + )} +
    {footer} - - {actions ? actions(onConfirm) : defaultActions(onConfirm)} - + {actions && actions(onConfirm)} ); } @@ -141,13 +154,17 @@ interface TransferDialogProps { export function CompletedTransferDialog(props: TransferDialogProps) { const { transfer, visible, onClose } = props; + const { tenantName } = useGlobalState(); const stellarAsset = convertCurrencyToStellarAsset(transfer.original.asset)?.getCode(); const content = ( <> -
    {`You have received ${transfer.amount} ${stellarAsset}`}
    +
    {`You have received ${transfer.amount} ${stellarAsset}`}
    +
    -
    Spacewalk transaction
    +
    Spacewalk transaction
    @@ -168,18 +185,21 @@ export function CompletedTransferDialog(props: TransferDialogProps) { export function CancelledTransferDialog(props: TransferDialogProps) { const { transfer, visible, onClose } = props; + const { tenantName } = useGlobalState(); const stellarAsset = convertCurrencyToStellarAsset(transfer.original.asset)?.getCode(); const amountToSend = nativeToDecimal(transfer.original.amount.add(transfer.original.fee).toNumber()).toNumber(); const content = ( <> -
    +
    {`You did not send a Stellar transaction in time, or the transferred amount did not meet the requested amount of ${amountToSend} ${stellarAsset}.`}
    -
    -
    Contact the team for debugging if you think this is an error.
    - -
    +
    + Contact the team for debugging if you think this is an error. +
    +
    Spacewalk transaction
    @@ -239,6 +259,7 @@ export function PendingTransferDialog(props: TransferDialogProps) { const stellarAsset = convertCurrencyToStellarAsset(transfer.original.asset)?.getCode(); const destinationStellarAddress = convertRawHexKeyToPublicKey(transfer.original.stellarAddress.toHex()).publicKey(); const amountToSend = nativeToDecimal(transfer.original.amount.add(transfer.original.fee).toNumber()); + const { tenantName } = useGlobalState(); const { getActiveBlockNumber } = useSecurityPallet(); const [, setDeadline] = useState(); @@ -259,24 +280,37 @@ export function PendingTransferDialog(props: TransferDialogProps) { <> <>
    {`Send ${amountToSend.toNumber()} ${stellarAsset}`}
    -
    With the text memo
    -
    - -
    -
    In a single transaction to
    -
    - -
    +
    +
    With the text memo
    + +
    +
    +
    In a single transaction to
    + +
    +
    Within
    +
    -
    -
    +
    Note: If you already made the payment, please wait for a few minutes for it to be confirmed.
    @@ -319,7 +353,7 @@ export function FailedTransferDialog(props: TransferDialogProps) { ); const footer = ( -
    +
    The vault did not send PEN to you on time. Don`t worry - your funds are safe! You`ll get {compensation} PEN compensation. diff --git a/src/pages/bridge/TransfersColumns.tsx b/src/pages/bridge/TransfersColumns.tsx index e190707f..0da8ede9 100644 --- a/src/pages/bridge/TransfersColumns.tsx +++ b/src/pages/bridge/TransfersColumns.tsx @@ -30,7 +30,7 @@ export const updatedColumn: ColumnDef = { header: 'Updated', accessorKey: 'updated', cell: ({ row }) => { - return
    {row.original.updated.toLocaleString(DateTime.DATETIME_SHORT)}
    ; + return
    {row.original.updated.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS)}
    ; }, }; diff --git a/tailwind.config.cjs b/tailwind.config.cjs index ebd0e959..315da211 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -17,6 +17,9 @@ module.exports = { screens: { xs: '480px', }, + opacity: { + '3': '0.03', + } }, }, daisyui: { diff --git a/yarn.lock b/yarn.lock index 4e446cd7..9a0c40d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,10 +5,17 @@ __metadata: version: 8 cacheKey: 10c0 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": - version: 4.2.0 - resolution: "@adobe/css-tools@npm:4.2.0" - checksum: b8dbfd9c54df73a398e9b20c922abe26c67732e16afc50668402af0e3d101409e0c944baf69bf814343eb8639014637b96f209426088b06943cea288c1ef1486 + version: 4.3.1 + resolution: "@adobe/css-tools@npm:4.3.1" + checksum: 05672719b544cc0c21ae3ed0eb6349bf458e9d09457578eeeb07cf0f696469ac6417e9c9be1b129e5d6a18098a061c1db55b2275591760ef30a79822436fcbfa languageName: node linkType: hard @@ -67,115 +74,55 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/code-frame@npm:7.21.4" - dependencies: - "@babel/highlight": "npm:^7.18.6" - checksum: c357e4b3b7a56927cb26fcb057166fef3cc701a4e35b2fa8a87402c31be0fd41d0144c61c87bf7d3b2a8f1c4d9ef00592dc0c7e8b9500dae43340a1e9f1096de - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/code-frame@npm:7.22.10" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" dependencies: - "@babel/highlight": "npm:^7.22.10" + "@babel/highlight": "npm:^7.22.13" chalk: "npm:^2.4.2" - checksum: fc5fe681eda128f15b928287b6c8e2ccec45776b8662524945cde005fba725642cc47ab0cfef4e7ff9ba5acccb3e907eebc2b3a7f075b8b31b19011229170b27 + checksum: f4cc8ae1000265677daf4845083b72f88d00d311adb1a93c94eb4b07bf0ed6828a81ae4ac43ee7d476775000b93a28a9cddec18fbdc5796212d8dcccd5de72bd languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.5": - version: 7.21.7 - resolution: "@babel/compat-data@npm:7.21.7" - checksum: cd6bc85364a569cc74bcf0bfdc27161a1cb423c60c624e06f44b53c9e6fe7708bd0af3e389d376aec8ed9b2795907c43d01e4163dbc2a3a3142a2de55464a51d +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/compat-data@npm:7.23.3" + checksum: c6af331753c34ee8a5678bc94404320826cb56b1dda3efc1311ec8fb0774e78225132f3c1acc988440ace667f14a838e297a822692b95758aa63da406e1f97a1 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: 1334264b041f8ad4e33036326970c9c26754eb5c04b3af6c223fe6da988cbb8a8542b5526f49ec1ac488210d2f710484a0e4bcd30256294ae3f261d0141febad - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.12, @babel/core@npm:^7.9.6": - version: 7.21.8 - resolution: "@babel/core@npm:7.21.8" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.14.0, @babel/core@npm:^7.20.12, @babel/core@npm:^7.22.1, @babel/core@npm:^7.22.9": + version: 7.23.3 + resolution: "@babel/core@npm:7.23.3" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.21.4" - "@babel/generator": "npm:^7.21.5" - "@babel/helper-compilation-targets": "npm:^7.21.5" - "@babel/helper-module-transforms": "npm:^7.21.5" - "@babel/helpers": "npm:^7.21.5" - "@babel/parser": "npm:^7.21.8" - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.21.5" - "@babel/types": "npm:^7.21.5" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.2" - semver: "npm:^6.3.0" - checksum: bf6bb92bd78fb8b6628bb0612ac0915407b996b179e1404108f92ed32972978340b4457b08f2abf86390a58fb51815cab419edb2dbbc8846efc39eaa61b8cde3 - languageName: node - linkType: hard - -"@babel/core@npm:^7.14.0, @babel/core@npm:^7.22.9": - version: 7.22.10 - resolution: "@babel/core@npm:7.22.10" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.22.10" - "@babel/generator": "npm:^7.22.10" - "@babel/helper-compilation-targets": "npm:^7.22.10" - "@babel/helper-module-transforms": "npm:^7.22.9" - "@babel/helpers": "npm:^7.22.10" - "@babel/parser": "npm:^7.22.10" - "@babel/template": "npm:^7.22.5" - "@babel/traverse": "npm:^7.22.10" - "@babel/types": "npm:^7.22.10" - convert-source-map: "npm:^1.7.0" + "@babel/code-frame": "npm:^7.22.13" + "@babel/generator": "npm:^7.23.3" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.23.2" + "@babel/parser": "npm:^7.23.3" + "@babel/template": "npm:^7.22.15" + "@babel/traverse": "npm:^7.23.3" + "@babel/types": "npm:^7.23.3" + convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.2" + json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: aebc08abfc4d4370d3023b1c5a22db2edd896ddbe21ed54f11c654660481f598b08fd456f9a5aa90cd2d81e0ea6767cd73f72fc11f7ad04d897f8fb20671cc1c + checksum: 08d43b749e24052d12713a7fb1f0c0d1275d4fb056d00846faeb8da79ecf6d0ba91a11b6afec407b8b0f9388d00e2c2f485f282bef0ade4d6d0a17de191a4287 languageName: node linkType: hard -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.23.3, @babel/generator@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/generator@npm:7.23.3" dependencies: - "@babel/types": "npm:^7.22.10" + "@babel/types": "npm:^7.23.3" "@jridgewell/gen-mapping": "npm:^0.3.2" "@jridgewell/trace-mapping": "npm:^0.3.17" jsesc: "npm:^2.5.1" - checksum: 2f26ac64f0b606cd9e7799eb2bc42d371b378ba2cb3c7c92c01a3bfccca271371990bcd2dc67fee5547721ba3e1fa83ca03fe3aab30bdf417c3078b9759d2f10 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.21.5, @babel/generator@npm:^7.7.2": - version: 7.21.5 - resolution: "@babel/generator@npm:7.21.5" - dependencies: - "@babel/types": "npm:^7.21.5" - "@jridgewell/gen-mapping": "npm:^0.3.2" - "@jridgewell/trace-mapping": "npm:^0.3.17" - jsesc: "npm:^2.5.1" - checksum: e98b51440cbbcee68e66c66684b5334f5929dba512067a6c3c1aecc77131b308bf61eca74a5ae1fb73028089d22a188ca2219c364596117f27695102afc18e95 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: e413cd022e1e21232c1ce98f3e1198ec5f4774c7eceb81155a45f9cb6d8481f3983c52f83252309856668e728c751f0340d29854b604530a694899208df6bcc3 + checksum: d5fff1417eecfada040e01a7c77a4968e81c436aeb35815ce85b4e80cd01e731423613d61033044a6cb5563bb8449ee260e3379b63eb50b38ec0a9ea9c00abfd languageName: node linkType: hard @@ -188,131 +135,89 @@ __metadata: languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.21.5 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.21.5" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" dependencies: - "@babel/types": "npm:^7.21.5" - checksum: 6288b78492722045e5ae1bf6708f2c66132bd72be997a190e385fa3004cd4093555b9b749ad7e9af93241688c65f5b0d5b55fcc652dd1946a09ee64f9e8ffac6 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-compilation-targets@npm:7.21.5" - dependencies: - "@babel/compat-data": "npm:^7.21.5" - "@babel/helper-validator-option": "npm:^7.21.0" - browserslist: "npm:^4.21.3" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 36752452eb70d6a6f52f68846344a739089374a97619e5a4857e31e7d067bdad8270efd9dd0dd5dfc483dd2d98bf0c1c6f08e3315fe949e7bfffef67eaf669ad + "@babel/types": "npm:^7.22.15" + checksum: 2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.10, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" dependencies: "@babel/compat-data": "npm:^7.22.9" - "@babel/helper-validator-option": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" browserslist: "npm:^4.21.9" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: edef207b819f491ded9462ac73858eadb155f4a0afe6cf3951459e47ad23b743ed56d7bd8a1b3f63fd25b39543db42ea58fea7b2193dcb4c98a511d7f1ad547a + checksum: 45b9286861296e890f674a3abb199efea14a962a27d9b8adeb44970a9fd5c54e73a9e342e8414d2851cf4f98d5994537352fbce7b05ade32e9849bbd327f9ff1 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.8 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.8" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-environment-visitor": "npm:^7.21.5" - "@babel/helper-function-name": "npm:^7.21.0" - "@babel/helper-member-expression-to-functions": "npm:^7.21.5" - "@babel/helper-optimise-call-expression": "npm:^7.18.6" - "@babel/helper-replace-supers": "npm:^7.21.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - semver: "npm:^6.3.0" + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.5" + "@babel/helper-function-name": "npm:^7.22.5" + "@babel/helper-member-expression-to-functions": "npm:^7.22.15" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: f875a1367d0569a7217c6ff97666755b3d305b698e263a888a42dc9a5494d64fdf3224accfb47548c6f7150c986e877cdda99501c674297b51e8f69a52ce6f82 + checksum: 2ae5759fe8845fda99b34f2ba6cd0794fc860213d14c93a87aa9180960252bce621157a79c373b7fbb423b25a55fb0e20eae0d5f8e4ad5ef22dc70e7c2af3805 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.8 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.8" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.15, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" + "@babel/helper-annotate-as-pure": "npm:^7.22.5" regexpu-core: "npm:^5.3.1" - semver: "npm:^6.3.0" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 261730474f8400866c1cf6761d5176f33920f90f39630d7b82b35458f3cae8f07819c6f23c52b6763032397b29b5fa53cd328db07c702f676705a79e2eab18ba + checksum: 8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" +"@babel/helper-define-polyfill-provider@npm:^0.4.3": + version: 0.4.3 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.3" dependencies: - "@babel/helper-compilation-targets": "npm:^7.17.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" debug: "npm:^4.1.1" lodash.debounce: "npm:^4.0.8" resolve: "npm:^1.14.2" - semver: "npm:^6.1.2" peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: c3668f9ee2b76bfc08398756c504a8823e18bad05d0c2ee039b821c839e2b70f3b6ad8b7a3d3a6be434d981ed2af845a490aafecc50eaefb9b5099f2da156527 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9, @babel/helper-environment-visitor@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-environment-visitor@npm:7.21.5" - checksum: d3f965d9691e3e2e11036d23ba9993a42d18f9be3d4589d3bb3d09d02e9d4d204026965633e36fb43b35fde905c2dfe753fb59b72ae0c3841f5a627fb1738d8a - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: c9377464c1839741a0a77bbad56de94c896f4313eb034c988fc2ab01293e7c4027244c93b4256606c5f4e34c68cf599a7d31a548d537577c7da836bbca40551b - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" - dependencies: - "@babel/template": "npm:^7.20.7" - "@babel/types": "npm:^7.21.0" - checksum: 5b4387afd34cd98a3a7f24f42250a5db6f7192a46e57bdbc151dc311b6299ceac151c5236018469af193dfb887b0b7ef8fe7ed89459cd05f00d69b3710c17498 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 0007035157e0d32ee9cb4ca319b89d6f3705523383efe52a59eb3d4dfa2ed08c5147e49c10a6e6d69c15221d89c76c8e5875475d6710fb44a5c37b8e69388e40 languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-function-name@npm:7.22.5" - dependencies: - "@babel/template": "npm:^7.22.5" - "@babel/types": "npm:^7.22.5" - checksum: 3ce2e87967fe54aa463d279150ddda0dae3b5bc3f8c2773b90670b553b61e8fe62da7edcd7b1e1891c5b25af4924a6700dad2e9d8249b910a5bf7caa2eaf4c13 +"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" +"@babel/helper-function-name@npm:^7.22.5, @babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 830aa7ca663b0d2a025513ab50a9a10adb2a37d8cf3ba40bb74b8ac14d45fbc3d08c37b1889b10d36558edfbd34ff914909118ae156c2f0915f2057901b90eff + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 languageName: node linkType: hard @@ -325,79 +230,36 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.5" - dependencies: - "@babel/types": "npm:^7.21.5" - checksum: 126ba589e32220e984ea4dcf0ebfb58bddb2addda3194fd14d1a182471422260cd266be29ed286fa570e21fc2ab422758ba9aa4c7a12ec8e7127a06deb1d1eb0 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: c04a71976b2508c6f1fa46562439b74970cea37958e450bcd59363b9c62ac49fb8e3cef544b08264b1d710b3f36214486cb7e1102e4f1ee8e1c2878b5eebcc75 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-module-imports@npm:7.21.4" - dependencies: - "@babel/types": "npm:^7.21.4" - checksum: ce62c86e8e1af9921fa2d7253a540fb5aaab424a79de47a626c4e8855950d6ac14c0d46a9ec117e8e2e256ea1062583533947202988be889a5ff2076c213be18 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-imports@npm:7.22.5" +"@babel/helper-member-expression-to-functions@npm:^7.22.15": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 04f8c0586c485c33017c63e0fc5fc16bd33b883cef3c88e4b3a8bf7bc807b3f9a7bcb9372fbcc01c0a539a5d1cdb477e7bdec77e250669edab00f796683b6b07 + "@babel/types": "npm:^7.23.0" + checksum: b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-module-transforms@npm:7.21.5" +"@babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: - "@babel/helper-environment-visitor": "npm:^7.21.5" - "@babel/helper-module-imports": "npm:^7.21.4" - "@babel/helper-simple-access": "npm:^7.21.5" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - "@babel/helper-validator-identifier": "npm:^7.19.1" - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.21.5" - "@babel/types": "npm:^7.21.5" - checksum: a3b6ceaa995bf35e7a072066c3c9ba9ee6983cf36605f0c6a0ffcaab94d6dc13eba21b00434a023bf99d66c080fec335cf464619b97f7af39e1a5269cf0d7169 + "@babel/types": "npm:^7.22.15" + checksum: 4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-module-imports": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" "@babel/helper-simple-access": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.5" + "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: 1844dc2c9049552d13d40385cb196704a754feab60ef8c370a5e1c431a4f64b0ddd7bb1dddaa5c98288cafd5c08cd4d8e6d5aba9a11e1133b8b999ab7c9defd1 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: f1352ebc5d9abae6088e7d9b4b6b445c406ba552ef61e967ec77d005ff65752265b002b6faaf16cc293f9e37753760ef05c1f4b26cda1039256917022ba5669c + checksum: 211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 languageName: node linkType: hard @@ -410,67 +272,36 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.21.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.21.5 - resolution: "@babel/helper-plugin-utils@npm:7.21.5" - checksum: 3d97ba406b32bd9ed0022d6ede2e07e98c130f4cbfffa044b3c5713d94e9b5f557242651713e2c79569cc13d6c67ef9fa749e87cb3da60a506a79bdc2a0c3d43 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.22.5": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" +"@babel/helper-remap-async-to-generator@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-wrap-function": "npm:^7.18.9" - "@babel/types": "npm:^7.18.9" + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-wrap-function": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: e6b2a906bdb3ec40d9cee7b7f8d02a561334603a0c57406a37c77d301ca77412ff33f2cef9d89421d7c3b1359604d613c596621a2ff22129612213198c5d1527 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7, @babel/helper-replace-supers@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-replace-supers@npm:7.21.5" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.21.5" - "@babel/helper-member-expression-to-functions": "npm:^7.21.5" - "@babel/helper-optimise-call-expression": "npm:^7.18.6" - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.21.5" - "@babel/types": "npm:^7.21.5" - checksum: 05c1f7665e712643ea787990e93c7bed8165c9b9893a83ca085b82da4578ea6645fb1587371f64d39575b1d81c9cd28968777cf8c74cd55122ef53a8a21f313a + checksum: aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.5": - version: 7.22.9 - resolution: "@babel/helper-replace-supers@npm:7.22.9" +"@babel/helper-replace-supers@npm:^7.22.20, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-member-expression-to-functions": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-member-expression-to-functions": "npm:^7.22.15" "@babel/helper-optimise-call-expression": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 9ef42e0d1f81d3377c96449c82666d54daea86db9f352915d2aff7540008cd65f23574bc97a74308b6203f7a8c6bf886d1cc1fa24917337d3d12ea93cb2a53a8 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-simple-access@npm:7.21.5" - dependencies: - "@babel/types": "npm:^7.21.5" - checksum: 682cd80b47c2424c31afe70bcc8ad3e401c612f6923c432e4b8245c5b6bc5ccddf3e405ea41ba890ccab79c0b5b95da3db125944ac0decc8d31d48469e593a0e + checksum: 6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 languageName: node linkType: hard @@ -483,15 +314,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" - dependencies: - "@babel/types": "npm:^7.20.0" - checksum: 8529fb760ffbc3efc22ec5a079039fae65f40a90e9986642a85c1727aabdf6a79929546412f6210593970d2f97041f73bdd316e481d61110d6edcac1f97670a9 - languageName: node - linkType: hard - "@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" @@ -501,15 +323,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 1335b510a9aefcbf60d89648e622715774e56040d72302dc5e176c8d837c9ab81414ccfa9ed771a9f98da7192579bb12ab7a95948bfdc69b03b4a882b3983e48 - languageName: node - linkType: hard - "@babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" @@ -519,13 +332,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-string-parser@npm:7.21.5" - checksum: 4d0834c4a67c283e9277f5e565551fede00b7d68007e368c95c776e13d05002e8f9861716e11613880889d6f3463329d2af687ceea5fc5263f8b3d25a53d31da - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-string-parser@npm:7.22.5" @@ -533,13 +339,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: f978ecfea840f65b64ab9e17fac380625a45f4fe1361eeb29867fcfd1c9eaa72abd7023f2f40ac3168587d7e5153660d16cfccb352a557be2efd347a051b4b20 - languageName: node - linkType: hard - "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" @@ -547,136 +346,88 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 2ff1d3833154d17ccf773b8a71fdc0cd0e7356aa8033179d0e3133787dfb33d97796cbff8b92a97c56268205337dfc720227aeddc677c1bc08ae1b67a95252d7 +"@babel/helper-validator-option@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-validator-option@npm:7.22.15" + checksum: e9661bf80ba18e2dd978217b350fb07298e57ac417f4f1ab9fa011505e20e4857f2c3b4b538473516a9dc03af5ce3a831e5ed973311c28326f4c330b6be981c2 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: a5efbf3f09f1514d1704f3f7bf0e5fac401fff48a9b84a9eb47a52a4c13beee9802c6cf212a82c5fb95f6cc6b5932cb32e756cf33075be17352f64827a8ec066 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: 23e310bf1b90d085b1ae250f31d423fb6cc004da882f0d3409266e5e4c7fd41ed0a172283a6a9a16083c5f2e11f987b32c815c80c60d9a948e23dd6dcf2e0437 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" - dependencies: - "@babel/helper-function-name": "npm:^7.19.0" - "@babel/template": "npm:^7.18.10" - "@babel/traverse": "npm:^7.20.5" - "@babel/types": "npm:^7.20.5" - checksum: b5ea154778f6dbeb3cb9917933ea364f8f643aa79665c51f4a4b903bc451b3d18a738ab9952bdb43a81647f301a9be305bfcf02f2222b1235197e52c525703d6 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helpers@npm:7.21.5" - dependencies: - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.21.5" - "@babel/types": "npm:^7.21.5" - checksum: 5e58854afa1d0896185dcb12a1b6feacefb7d913d52bafa84792274651af2d3172923bdc26d1320fd6b04a2e208dc0d6730951043f17d10c08ca87231e5b84ec - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/helpers@npm:7.22.10" +"@babel/helper-wrap-function@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-wrap-function@npm:7.22.20" dependencies: - "@babel/template": "npm:^7.22.5" - "@babel/traverse": "npm:^7.22.10" - "@babel/types": "npm:^7.22.10" - checksum: 14c2f4fe0663bf4042b82a09ea6eaa53b0844ed04c70d69be8fff0db504ab25a729c72ff427e84320a328e19853b4a8d9897a3d2379c0e70751053e6e23a7992 + "@babel/helper-function-name": "npm:^7.22.5" + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.22.19" + checksum: 97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb languageName: node linkType: hard -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" +"@babel/helpers@npm:^7.23.2": + version: 7.23.2 + resolution: "@babel/helpers@npm:7.23.2" dependencies: - "@babel/helper-validator-identifier": "npm:^7.18.6" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: a6a6928d25099ef04c337fcbb829fab8059bb67d31ac37212efd611bdbe247d0e71a5096c4524272cb56399f40251fac57c025e42d3bc924db0183a6435a60ac + "@babel/template": "npm:^7.22.15" + "@babel/traverse": "npm:^7.23.2" + "@babel/types": "npm:^7.23.0" + checksum: 3a6a939c5277a27486e7c626812f0643b35d1c053ac2eb66911f5ae6c0a4e4bcdd40750eba36b766b0ee8a753484287f50ae56232a5f8f2947116723e44b9e35 languageName: node linkType: hard -"@babel/highlight@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/highlight@npm:7.22.10" +"@babel/highlight@npm:^7.22.13": + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.5" + "@babel/helper-validator-identifier": "npm:^7.22.20" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" - checksum: ac321ed90d37f76df74a44addc1692658eff64060375550bfb64919959573b14000ac83744e1ed30cc51b8b2f1291b0f0e98a3398d3c33c9c4548dd326a898fc + checksum: f3c3a193afad23434297d88e81d1d6c0c2cf02423de2139ada7ce0a7fc62d8559abf4cc996533c1a9beca7fc990010eb8d544097f75e818ac113bf39ed810aa2 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8": - version: 7.21.8 - resolution: "@babel/parser@npm:7.21.8" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/parser@npm:7.23.3" bin: parser: ./bin/babel-parser.js - checksum: 58789e972e5acce3abbd9dd4c8d4be7e15e071818d2038d195bc56664722f238abb8842d91da5c8894ab0b8f8c0841eabc675f681925c2fba12675bf3ec5c5fc + checksum: 0fe11eadd4146a9155305b5bfece0f8223a3b1b97357ffa163c0156940de92e76cd0e7a173de819b8692767147e62f33389b312d1537f84cede51092672df6ef languageName: node linkType: hard -"@babel/parser@npm:^7.14.0, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.22.10, @babel/parser@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/parser@npm:7.22.10" - bin: - parser: ./bin/babel-parser.js - checksum: 22de4b5b2e20dd5b44a73963e5fceef44501bacdd14f0b3b96fc16975826553c83c3e424e2ea906b4f2fb8c2129b176bcee33ae99e30de9006ceb28ded5c6ac7 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: be2cccfc101824428a860f8c71d2cd118a691a9ace5525197f3f0cba19a522006dc4f870405beece836452353076ac687aefda20d9d1491ea72ce51179057988 + checksum: 356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" - "@babel/plugin-proposal-optional-chaining": "npm:^7.20.7" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.13.0 - checksum: afdbed7555bec6f338cb46a6e8b39c7620bc0fce0f530d15c5e49a6eef103607600346b3f35f6bc32b7c9930564e801d7f0a000ecb9b44ff628156f894606cfb + checksum: a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23 languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.3" dependencies: - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-remap-async-to-generator": "npm:^7.18.9" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0f4bc01805704ae4840536acc9888c50a32250e9188d025063bd17fe77ed171a12361c3dc83ce99664dcd73aec612accb8da95b0d8b825c854931b2860c0bfb5 + "@babel/core": ^7.0.0 + checksum: 0f43b74741d50e637ba4dcef2786621126fe4da6ccf4ee2e94423ee23f6a04ecd91d458e59764c43e4968be139e5197ee43be8a2fea2c09f0b202a3391e548cc languageName: node linkType: hard @@ -692,92 +443,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-static-block@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.21.0" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b46eb08badd7943c7bdf06fa6f1bb171e00f26d3c25e912205f735ccc321d1dbe8d023d97491320017e0e5d083b7aab3104f5a661535597d278a6c833c97eb79 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 99be9865edfd65a46afb97d877ea247a8e881b4d0246a1ea0adf6db04c92f4f0959bd2f6f706d73248a2a7167c34f2464c4863137ddb94deadc5c7cc8bfc3e72 - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b90346bd3628ebd44138d0628a5aba1e6b11748893fb48e87008cac30f3bc7cd3161362e49433156737350318174164436357a66fbbfdbe952606b460bd8a0e4 - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83f2ce41262a538ee43450044b9b0de320002473e4849421a7318c0500f9b0385c03d228f1be777ad71fd358aef13392e3551f0be52b5c423b0c34f7c9e5a06d - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 436c1ee9f983813fc52788980a7231414351bd34d80b16b83bddb09115386292fe4912cc6d172304eabbaf0c4813625331b9b5bc798acb0e8925cf0d2b394d4d - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a83a65c6ec0d2293d830e9db61406d246f22d8ea03583d68460cb1b6330c6699320acce1b45f66ba3c357830720e49267e3d99f95088be457c66e6450fbfe3fa - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.7": +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": version: 7.20.7 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" dependencies: @@ -792,66 +458,12 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ab20153d9e95e0b73004fdf86b6a2d219be2a0ace9ca76cd9eccddb680c913fec173bca54d761b1bc6044edde0a53811f3e515908c3b16d2d81cfec1e2e17391 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.20.7, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c273d0ec3d49d0fe80bd754ec0191016e5b3ab4fb1e162ac0c014e9d3c1517a5d973afbf8b6dc9f9c98a8605c79e5f9e8b5ee158a4313fa68d1ff7b02084b6a - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-create-class-features-plugin": "npm:^7.21.0" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 576ec99964c50435a81dfe4178d064df9aa86628090d69bae8759332b9a2b5a0a8575a6f51db915c3751949cd29990b8b3a80c6afc228a0664f4237b7b60d667 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c68feae57d9b1f4d98ecc2da63bda1993980deb509ccb08f6eace712ece8081032eb6532c304524b544c2dd577e2f9c2fe5c5bfd73d1955c946300def6fc7493 + checksum: e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 languageName: node linkType: hard @@ -921,25 +533,36 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-flow@npm:7.22.5" +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-flow@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8a5e1e8b6a3728a2c8fe6d70c09a43642e737d9c0485e1b041cd3a6021ef05376ec3c9137be3b118c622ba09b5770d26fdc525473f8d06d4ab9e46de2783dd0a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 07afc7df02141597968532bfbfa3f6c0ad21a2bdd885d0e5e035dcf60fdf35f0995631c9750b464e1a6f2feea14160a82787f914e88e8f7115dc99f09853e43e + checksum: 7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" +"@babel/plugin-syntax-import-attributes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.19.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ac0176984ad799b39264070007737c514ea95e4b3c3c515ecddef958629abcd3c8e8810fd60fb63de5a8f3f7022dd2c7af7580b819a9207acc372c8b8ec878e + checksum: 99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606 languageName: node linkType: hard @@ -965,25 +588,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e5dbec5e1c53f114413dc3cc71f43b483d2f0784d5efdcd92c95a55b148d0f1987d136236ace24778d3365dc3d37b0b4d8cc1e0594267860f9f131ef5f5dfc73 + checksum: 563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e languageName: node linkType: hard @@ -1075,707 +687,691 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" +"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a4561a8ff7833e3644b8cb50482a405403ef8216271f6b53ad2c35bd0689323b32a1f4cc52569b5120df2c577f1a80c5795cac474ede6334268f42faf389d56f + checksum: 4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948 languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1b24d47ddac6ae2fe8c7fab9a020fdb6a556d17d8c5f189bb470ff2958a5437fe6441521fd3d850f4283a1131d7a0acf3e8ebe789f9077f54bab4e2e8c6df176 + checksum: b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.21.5" +"@babel/plugin-transform-async-generator-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.21.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.20" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8ca50dfc630d860fb96db3aed1750661e695f8604b65aaf3347a9e906ee9608924bd116b97d11e7f938398c0ba8575b6961c2971e3d9b8f9fa2de2e26223728e + checksum: e846f282658e097fce4fccf3ee29289bf05f0654846a5994727a36f0cdc2e47abdffd4be4fa65787e94aa975824fae894c90afbfdc8caacd46c12c7f43e99d7f languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" +"@babel/plugin-transform-async-to-generator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3" dependencies: - "@babel/helper-module-imports": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-remap-async-to-generator": "npm:^7.18.9" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c98caeafbffbdb40fd5d9d4c7a835d624ba1ada814e8e675d99a9c83bd40780ab6a52e3b873e81dc7ce045a3990427073e634f07cc2f2681d780faee0717d7e9 + checksum: da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 21878d4f0040f5001c4a14e17759e80bf699cb883a497552fa882dbc05230b100e8572345654b091021d5c4227555ed2bf40c8d6ba16a54d81145abfe0022cf8 + checksum: 82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-block-scoping@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22e81b52320e6f3929110241d91499a7535d6834b86e8871470f9946b42e093fafc79e1eae4ede376e7c5fe84c5dc5e9fdbe55ff4039b323b5958167202f02e0 + checksum: ccaeded7954c196811d22a35322579254cda52676e823682b6234885a3aaf88fe0d5152dacaec43db9031dcf35a050a5343e36028e5905b0ba9c02d36b30a57f languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0": - version: 7.22.10 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.10" +"@babel/plugin-transform-class-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-class-properties@npm:7.23.3" dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 270710dd92240aca134b770b0e5f49068a17a7dfbbd3093e6d3218250dc9492fc933479c646bb9d085a7ff8809652869bc796c3b84c9f2ceae967c2e78e1b5b2 + checksum: bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" +"@babel/plugin-transform-class-static-block@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e06a5017cd4c0dd0b8f5e4dd62853f575b66e6653ef533af7eeca0df7a6e7908bd9dd3c98d4c5dc10830fe53f85d289d337d22448bb6bcdda774df619eb097b5 + "@babel/core": ^7.12.0 + checksum: 89cdb66d7bc834cd51659eb7286a6bee23add0bc114943d68c4b6c0c834178cf0d55183df0cf508fec9c55ed4155641360e6f55a91c16fe826ccaf1adf381922 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0": - version: 7.22.6 - resolution: "@babel/plugin-transform-classes@npm:7.22.6" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-classes@npm:7.23.3" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-compilation-targets": "npm:^7.22.6" - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-optimise-call-expression": "npm:^7.22.5" "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" "@babel/helper-split-export-declaration": "npm:^7.22.6" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 915f1c0d3a0446a3ebfb099c4a5e714896f773322432b91572e6739d7af82e9743ae2874eb596ef1d26ed94472385eb814e1f33b033fc708155576d566e1f5ff + checksum: 88bfd332db0ba5cbfb8557a2ba5a7185151aebc9cfe3035b014aa6d795556acbe672bb8c78da3c9fd1d23f55a333d14b5daa127ef037f5ced5198b6d79a146d6 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-classes@npm:7.21.0" +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-computed-properties@npm:7.23.3" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-compilation-targets": "npm:^7.20.7" - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-function-name": "npm:^7.21.0" - "@babel/helper-optimise-call-expression": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-replace-supers": "npm:^7.20.7" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - globals: "npm:^11.1.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/template": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d680fb89d2b96f78f5dfce57dae4d39ac07c34bd9f5331edc7ebd941b86637e598f569cf544520029489d9f621158275811552169d12f777504479ba5cae62cf + checksum: 3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-destructuring@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/template": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22ecea23c1635083f5473092c5fbca62cbf7a85764bcf3e704c850446d68fe946097f6001c4cbfc92b4aee27ed30b375773ee479f749293e41fdb8f1fb8fcb67 + checksum: 717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71 languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.21.5" +"@babel/plugin-transform-dotall-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.21.5" - "@babel/template": "npm:^7.20.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5b01825fd3edb215fa38c90612073dc6fc6dc015415ac1e02a02a277f9acba12aa6335f61b5c9c15bd5b585f793404486ebd74a2a713cca0f723f42e32e9c5e3 + checksum: 6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.0.0": - version: 7.22.10 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.10" +"@babel/plugin-transform-duplicate-keys@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f678eae3a3546075d42f3f103d2aede2fe576f5dc40de54819fb3e1f9bf7bac94777cfc43efbd0373aaa19a9abe83c3a3dcdc242611bf67dcd9d5331bab8db5e + checksum: 7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5 languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" +"@babel/plugin-transform-dynamic-import@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ed21971223a36d617acc860581083d8ab0125ff4f947598f1354080f0b2b5511013e3b0ba3b2ff17049de1e4841c65b1e97a8d88e651ae5494ad698ac0d2509e + checksum: df3fd130312dc53d068fa76333991dce5e86987b023af8c3b502bd7d36a8e67da6f718e61dc838576a9fbacd06628e29607ee22d9bae30705485c14130eab201 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" +"@babel/plugin-transform-exponentiation-operator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.23.3" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cf4c3751e603996f3da0b2060c3aab3c95e267cfc702a95d025b2e9684b66ed73a318949524fad5048515f4a5142629f2c0bd3dbb83558bdbab4008486b8d9a0 + checksum: 5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" +"@babel/plugin-transform-export-namespace-from@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dfb7f7e66c0c862d205fe8f8b87f7ac174549c56937a5186b6e6cf85358ce257115fec0aa55e78fde53e5132d5aae9383e81aba8a4b70faa0e9fb64e3a66ca96 + checksum: 390c6626dcda99023629049d92090242b4575351a4a7b47f97febabd2381f2cd0f624de661d8de8d1f715fedd63753cfd1feddead19e5960c27b88e447465b81 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": + version: 7.23.3 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.23.3" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-flow": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 96d300ca3e55dbc98609df2d70c2b343202faca307b3152a04eab77600f6b1dc00b5b90fc3999cb9592922583c83ecbb92217e317d7c08602ca0db87a26eeed3 + checksum: 9ab627f9668fc1f95564b26bffd6706f86205960d9ccc168236752fbef65dbe10aa0ce74faae12f48bb3b72ec7f38ef2a78b4874c222c1e85754e981639f3b33 languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.22.5" +"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-for-of@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-flow": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5949a8e5214e3fc65d31dab0551423cea9d9eef35faa5d0004707ba7347baf96166aa400907ce7498f754db4e1e9d039ca434a508546b0dc9fdae9a42e814c1a + checksum: 8a36202cfee312ba80e509c7c2131e6773524e572b4dc64a8ee95bd912634fdeb5ea91c6c7747ee30e03562d0f0d333f88ed7dbb929b36b60b8d74189189e12f languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-for-of@npm:7.22.5" +"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-function-name@npm:7.23.3" dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 08bd2d14f10b8ae421e61b55c28232547044149b8ef62c99c54561ce93a5067f9654d701d798871e733543359748e1b093f5c450b69705ec1db674175ee9fcdb + checksum: 89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-for-of@npm:7.21.5" +"@babel/plugin-transform-json-strings@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-json-strings@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.21.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c7c1052591fff10c9a90611c1d1e5ff62ad29536ce3e3a77f78c9c8af9f2609b28b513b8a952c4ea74450a26d711e0090c81b1c566947aa7a3c0399c0982c9d6 + checksum: e1cef6a485b9da32aba9449fb459dac062dfc401f3d6ad48e7fbdcb73bbe470c995cc15ce5c421b95efe1e9a90d5507eb606360fe10b6d8cb869dd5dae7a2562 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-function-name@npm:7.22.5" +"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-literals@npm:7.23.3" dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 206bdef2ff91c29a7d94c77778ad79f18bdb2cd6a30179449f2b95af04637cb68d96625dc673d9a0961b6b7088bd325bbed7540caf9aa8f69e5b003d6ba20456 + checksum: 8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.23.3" dependencies: - "@babel/helper-compilation-targets": "npm:^7.18.9" - "@babel/helper-function-name": "npm:^7.18.9" - "@babel/helper-plugin-utils": "npm:^7.18.9" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95100707fe00b3e388c059700fbdccf83c2cdf3b7fec8035cdd6c01dd80a1d9efb2821fec1357a62533ebbcbb3f6c361666866a3818486f1172e62f2b692de64 + checksum: 23b7588b26d420c8b132bd08916d49871ca0c8db892f6b58637b10e2a0d918163d413c505db880a9157fc2e61d089040f139298a60d837ccbd0efca0474ac7ca languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-literals@npm:7.22.5" +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1003d0cf98e9ae432889bcf5f3d5f7d463f777fc2c74b0d4a1a93b51e83606c263a16146e34f0a06b291300aa5f2001d6e8bf65ed1bf478ab071b714bf158aa5 + checksum: 687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" +"@babel/plugin-transform-modules-amd@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-amd@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7b0d59920dd5a1679a2214dde0d785ce7c0ed75cb6d46b618e7822dcd11fb347be2abb99444019262b6561369b85b95ab96603357773a75126b3d1c4c289b822 + checksum: 9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5 languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.3" dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-simple-access": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 731a341b17511809ae435b64822d4d093e86fd928b572028e6742bdfba271c57070860b0f3da080a76c5574d58c4f369fac3f7bf0f450b37920c0fc6fe27bb4e + checksum: 5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" +"@babel/plugin-transform-modules-systemjs@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 346e5ac45b77f1e58a9b1686eb16c75cca40cbc1de9836b814fbe8ae0767f7d4a0fec5b88fcf26a5e3455af9e33fd3c6424e4f2661d04e38123d80e022ce6e6f + checksum: 0d55280a276510222c8896bf4e581acb84824aa5b14c824f7102242ad6bc5104aaffe5ab22fe4d27518f4ae2811bd59c36d0c0bfa695157f9cfce33f0517a069 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" +"@babel/plugin-transform-modules-umd@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-umd@npm:7.23.3" dependencies: - "@babel/helper-module-transforms": "npm:^7.20.11" - "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 327077cc746d2ef14d0792a970058d9b7170ff480c1d1d7acf874ef7cfeae0c680e86a45896ea27066e9ebdd82dc2be09d321385eef1e0b4255659d75ea2e008 + checksum: f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0": +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": version: 7.22.5 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.5" + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": "npm:^7.22.5" + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5" "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-simple-access": "npm:^7.22.5" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 818317363cc96a1ab28cd0691bdb86fe06f452d210e2cef7ef4708f2c2c80cbe3c76bca23c2ab4b1bb200d44e508eae71f627c7cb27299a41be56fc7e3aaced0 + "@babel/core": ^7.0.0 + checksum: b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.5" +"@babel/plugin-transform-new-target@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-new-target@npm:7.23.3" dependencies: - "@babel/helper-module-transforms": "npm:^7.21.5" - "@babel/helper-plugin-utils": "npm:^7.21.5" - "@babel/helper-simple-access": "npm:^7.21.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dc1280ddd514b3d5f49b127f4bb8ba577d1f29a8604c4a7d65814bdeb03756e8d0b56ed85808fa3d32f89687a795b42b7437251d9582d30517ecf75718bf68c6 + checksum: f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.3" dependencies: - "@babel/helper-hoist-variables": "npm:^7.18.6" - "@babel/helper-module-transforms": "npm:^7.20.11" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-validator-identifier": "npm:^7.19.1" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1843b2044b711765581d6130ea7901afde6e6f5af4e4219ab675033a090f4dacb6656bfada8f211a2cd9bbae256c7f4bd0b8613b750e56674feee5252de1ad76 + checksum: f960faed3975c8454c52d2b5d85daf0c9a27677b248d7933882e59b10202ade2a98c7b925ce0bae2b8eb4d66eb5d63a5588c1090d54eaa4cd235533d71228ff3 languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" +"@babel/plugin-transform-numeric-separator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.23.3" dependencies: - "@babel/helper-module-transforms": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e3e99aef95a3faa15bc2398a919475c9130b783ee0f2439e1622fe73466c9821a5f74f72a46bb25e84906b650b467d73b43269c8b8c13372e97d3f2d96d109c7 + checksum: d3748cce20e8752e61dfda55e275c699459a3ff8d0bb46585da813136e04066b1ce70b71beef504fcdc8d4cca3c955112cea96d5e9fd5a42a5bc8956d05236c2 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" +"@babel/plugin-transform-object-rest-spread@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.23.3" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.20.5" - "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/compat-data": "npm:^7.23.3" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.23.3" peerDependencies: - "@babel/core": ^7.0.0 - checksum: 0ca94f716c70f96a0d5e79211ab7e7614efc9aa2940e6009086b16136f2558ae27b7acf9f88bc0a241882ca3192cc66c477fa0eb1cfdda54974ffc2b8846d3e4 + "@babel/core": ^7.0.0-0 + checksum: 31ab631aaba945c118662943e5f1f54a21f07d64f06e06b25d55871168c460f3eeeccdf7b05aa74a1340e2cfbe781ad3c7ceccd0c2585d39f7b73ba11ebaa9d0 languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" +"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-object-super@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ea9186087b72d0adff0b9e7ef5769cb7806bc4755ce7b75c323d65053d453fd801a64f97b65c033d89370866e76e8d526dd186acede2fdcd2667fa056b11149b + checksum: a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775 languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-object-super@npm:7.22.5" +"@babel/plugin-transform-optional-catch-binding@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.5" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 062a78ff897c095a71f0db577bd4e4654659d542cb9ef79ec0fda7873ee6fefe31a0cb8a6c2e307e16dacaae1f50d48572184a59e1235b8d9d9cb2f38c4259ce + checksum: 85ac1e94ee8f21648816151628ff931cc16143ec8c904649a1ecfd8960160290eccc5a197b4ae3ee7a1c7a27a7c4189e61b4de24483d5bad4040784afe2d206f languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" +"@babel/plugin-transform-optional-chaining@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/helper-replace-supers": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 44a1f5a62c6821a4653e23a38a61bed494138a0f12945a1d8b55ff7b83904e7c5615f4ebda8268c6ea877d1ec6b00f7c92a08cf93f4f77dc777e71145342aaf5 + checksum: 2b358962169d871392aa292a67527e5335909438da0ddbb0d19e7838c0f8a2081cc751a49e6e534ac4d6c932254531a205ac22b197f64fc4c89f41bf9f595497 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-parameters@npm:7.22.5" +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-parameters@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7d6a76dd1ac02373bc5542076c97fadcb18a9ebbcd4047e15f7a83d64efcff2baef1060a4bcfb9372d8ea18e5b1970f09514c58cece4145beb31d8b8d45d2e5f + checksum: a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-parameters@npm:7.21.3" +"@babel/plugin-transform-private-methods@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-private-methods@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 08f8c7eaa3126a6c3481c3f73d9baa42d960295e44a7e303d75c0f5a517fe59b96559382561e1b339f70a8a1db25fe44329f1853da30ff8777685d017475515d + checksum: 745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" +"@babel/plugin-transform-private-property-in-object@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.23.3" dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8d25b7b01b5f487cfc1a296555273c1ddad45276f01039130f57eb9ab0fafa0560d10d972323071042e73ac3b8bab596543c9d1a877229624a52e6535084ea51 + checksum: 9211dd25a6e87a01535f2d97a663fa6de3472b963c8dcfaacce229a2e3fa6500f2e9fc690bc100a540fc7b66c8364faf7ef19b32e9c9b9791e4561b742c15ed3 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" +"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-property-literals@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b76239098127ee39031db54e4eb9e55cb8a616abc0fc6abba4b22d00e443ec00d7aaa58c7cdef45b224b5e017905fc39a5e1802577a82396acabb32fe9cff7dd + checksum: b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747 languageName: node linkType: hard "@babel/plugin-transform-react-display-name@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5" + version: 7.23.3 + resolution: "@babel/plugin-transform-react-display-name@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e + checksum: 3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.16.7": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.18.6" + "@babel/plugin-transform-react-jsx": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95b37b76754288bb4de28a04f709306686ff80da57937421df9a520f9c2d8b59a2327962a8fd3bb109857790732d3cc767d86d106866e62521cee22d29f721df + checksum: 4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-module-imports": "npm:^7.22.5" + "@babel/helper-module-imports": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/plugin-syntax-jsx": "npm:^7.22.5" - "@babel/types": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fa4e5b32233c41686a420ad97b07a8a8b6cec7d484e93d5917db460887ded5179a8a20867a5d56d962b5452535830c0c0f8bfdc7d55853369be1e51b6a79a14a - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.14.9, @babel/plugin-transform-react-jsx@npm:^7.18.6": - version: 7.21.5 - resolution: "@babel/plugin-transform-react-jsx@npm:7.21.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-module-imports": "npm:^7.21.4" - "@babel/helper-plugin-utils": "npm:^7.21.5" - "@babel/plugin-syntax-jsx": "npm:^7.21.4" - "@babel/types": "npm:^7.21.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 03cd8c5e8ca66bb203149849c26ef62cc4988dabead617ee08c278c8ad073ba8a4ec6f2b0ef35cd752d6b6e5f1ed56206a48a2edce7269e416f5b8bfb7e28f54 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.21.5" - regenerator-transform: "npm:^0.15.1" + "@babel/types": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8d59c8ced5000de0ba74aeb6f9f900823cc7b16fad585fea276cee994a1e46718f0664f2151bd3e199d4baefa8cca1732761d6eb4a244423b1097753ba5f9127 + checksum: db37491e3eea5530521e177380312f308f01f806866fa0ce08d48fc5a8c9eaf9a954f778fa1ff477248afb72e916eb66ab3d35254bb6a8979f8b8e74a0fd8873 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" +"@babel/plugin-transform-regenerator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-regenerator@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + regenerator-transform: "npm:^0.15.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cbd6a86743c270a1e2a7caa19f6da22112c9dfa28fe08aea46ec9cb79fc1bc48df6b5b12819ae0e53227d4ca4adaee13f80216c03fff3082d3a88c55b4cddeba + checksum: 3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" +"@babel/plugin-transform-reserved-words@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-reserved-words@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d2dd6b7033f536dd74569d7343bf3ca88c4bc12575e572a2c5446f42a1ebc8e69cec5e38fc0e63ac7c4a48b944a3225e4317d5db94287b9a5b381a5045c0cdb2 + checksum: 4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e60e02dca182d6ec0e7b571d7e99a0528743692fb911826600374b77832922bf7c4b154194d4fe4a0e8a15c2acad3ea44dbaff5189aaeab59124e4c7ee0b8c30 + checksum: c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-spread@npm:7.22.5" +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-spread@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f8896b00d69557a4aafb3f48b7db6fbaa8462588e733afc4eabfdf79b12a6aed7d20341d160d704205591f0a43d04971d391fa80328f61240d1edc918079a1b0 + checksum: a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" +"@babel/plugin-transform-sticky-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6abd206942e1fd322791707e7e15aa823f9829d8965facbed4abb0f85d51355d0bb21ac8d7184dea22de3bb5853e807ae6b5b74c621507b912c345cbce4a37b4 + checksum: cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" +"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-template-literals@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: efbcf8f0acdac5757cce8d79c0259e3e5142cf3c782d71675802e97709dfb3cbc3dc08202c3ea950ddc23c8f74cae7c334aa05ec095e3cc6d642fa8b30d8e31c + checksum: 9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" +"@babel/plugin-transform-typeof-symbol@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1fc597716edf9f5c7bc74e2fead4d7751467500486dd17092af90ccbd65c5fc4a1db2e9c86e9ed1a9f206f6a3403bbc07eab50b0c2b8e50f819b4118f2cf71ef + checksum: 50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" +"@babel/plugin-transform-typescript@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-typescript@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-typescript": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d1a5e55ed8c3b1186fbba2a7b3e9d880cb3987b846376f51a73216a8894b9c9d6f6c6e2d3cadb17d76f2477552db5383d817169d5b92fcf08ee0fa5b88213c15 + checksum: a3c738efcf491ceb1eee646f57c44990ee0c80465527b88fcfa0b7602688c4ff8c165a4c5b62caf05d968b095212018fd30a02879c12d37c657081f57b31fb26 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" +"@babel/plugin-transform-unicode-escapes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c42e00635aa9d1c597d339c9023e0f9bfa3cd7af55c00cb8a6461036102b0facdcd3059456d4fee0a63675aeecca62fc84ee01f28b23139c6ae03e6d61c86906 + checksum: f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866 languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-typescript@npm:7.21.3" +"@babel/plugin-transform-unicode-property-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.23.3" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-create-class-features-plugin": "npm:^7.21.0" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-typescript": "npm:^7.20.0" + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2426887edd9d2b50aa3f17733e7d725f93239f812580c3149910d166b21b73e2e9c0faf8349ccb8feccb30ce7f936e9325bb11a1f6c19c853dca71a606ef2d70 + checksum: dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.21.5" +"@babel/plugin-transform-unicode-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.21.5" + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8681ac8e3c3961db8b27c5d18a56c76a190db7de60025b757e5d25650be2f7c7ae5dd7405892a94b1eaa27629277a3b192cd2593c13f142bb3c0049fb6e9eb8a + checksum: df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.23.3" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2f71b5b79df7f8de81c52011d64203b7021f7d23af2470782aef8e8a3be6ca3a208679de8078a12e707342dde1175e5ab44abf8f63c219c997e147118d356dea + "@babel/core": ^7.0.0 + checksum: 30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b languageName: node linkType: hard "@babel/preset-env@npm:^7.20.2": - version: 7.21.5 - resolution: "@babel/preset-env@npm:7.21.5" - dependencies: - "@babel/compat-data": "npm:^7.21.5" - "@babel/helper-compilation-targets": "npm:^7.21.5" - "@babel/helper-plugin-utils": "npm:^7.21.5" - "@babel/helper-validator-option": "npm:^7.21.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.20.7" - "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.7" - "@babel/plugin-proposal-class-properties": "npm:^7.18.6" - "@babel/plugin-proposal-class-static-block": "npm:^7.21.0" - "@babel/plugin-proposal-dynamic-import": "npm:^7.18.6" - "@babel/plugin-proposal-export-namespace-from": "npm:^7.18.9" - "@babel/plugin-proposal-json-strings": "npm:^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators": "npm:^7.20.7" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.18.6" - "@babel/plugin-proposal-numeric-separator": "npm:^7.18.6" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.20.7" - "@babel/plugin-proposal-optional-catch-binding": "npm:^7.18.6" - "@babel/plugin-proposal-optional-chaining": "npm:^7.21.0" - "@babel/plugin-proposal-private-methods": "npm:^7.18.6" - "@babel/plugin-proposal-private-property-in-object": "npm:^7.21.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.18.6" + version: 7.23.3 + resolution: "@babel/preset-env@npm:7.23.3" + dependencies: + "@babel/compat-data": "npm:^7.23.3" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.3" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-class-properties": "npm:^7.12.13" "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" + "@babel/plugin-syntax-import-assertions": "npm:^7.23.3" + "@babel/plugin-syntax-import-attributes": "npm:^7.23.3" "@babel/plugin-syntax-import-meta": "npm:^7.10.4" "@babel/plugin-syntax-json-strings": "npm:^7.8.3" "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" @@ -1786,78 +1382,92 @@ __metadata: "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - "@babel/plugin-transform-arrow-functions": "npm:^7.21.5" - "@babel/plugin-transform-async-to-generator": "npm:^7.20.7" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.18.6" - "@babel/plugin-transform-block-scoping": "npm:^7.21.0" - "@babel/plugin-transform-classes": "npm:^7.21.0" - "@babel/plugin-transform-computed-properties": "npm:^7.21.5" - "@babel/plugin-transform-destructuring": "npm:^7.21.3" - "@babel/plugin-transform-dotall-regex": "npm:^7.18.6" - "@babel/plugin-transform-duplicate-keys": "npm:^7.18.9" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.18.6" - "@babel/plugin-transform-for-of": "npm:^7.21.5" - "@babel/plugin-transform-function-name": "npm:^7.18.9" - "@babel/plugin-transform-literals": "npm:^7.18.9" - "@babel/plugin-transform-member-expression-literals": "npm:^7.18.6" - "@babel/plugin-transform-modules-amd": "npm:^7.20.11" - "@babel/plugin-transform-modules-commonjs": "npm:^7.21.5" - "@babel/plugin-transform-modules-systemjs": "npm:^7.20.11" - "@babel/plugin-transform-modules-umd": "npm:^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.20.5" - "@babel/plugin-transform-new-target": "npm:^7.18.6" - "@babel/plugin-transform-object-super": "npm:^7.18.6" - "@babel/plugin-transform-parameters": "npm:^7.21.3" - "@babel/plugin-transform-property-literals": "npm:^7.18.6" - "@babel/plugin-transform-regenerator": "npm:^7.21.5" - "@babel/plugin-transform-reserved-words": "npm:^7.18.6" - "@babel/plugin-transform-shorthand-properties": "npm:^7.18.6" - "@babel/plugin-transform-spread": "npm:^7.20.7" - "@babel/plugin-transform-sticky-regex": "npm:^7.18.6" - "@babel/plugin-transform-template-literals": "npm:^7.18.9" - "@babel/plugin-transform-typeof-symbol": "npm:^7.18.9" - "@babel/plugin-transform-unicode-escapes": "npm:^7.21.5" - "@babel/plugin-transform-unicode-regex": "npm:^7.18.6" - "@babel/preset-modules": "npm:^0.1.5" - "@babel/types": "npm:^7.21.5" - babel-plugin-polyfill-corejs2: "npm:^0.3.3" - babel-plugin-polyfill-corejs3: "npm:^0.6.0" - babel-plugin-polyfill-regenerator: "npm:^0.4.1" - core-js-compat: "npm:^3.25.1" - semver: "npm:^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.23.3" + "@babel/plugin-transform-async-generator-functions": "npm:^7.23.3" + "@babel/plugin-transform-async-to-generator": "npm:^7.23.3" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3" + "@babel/plugin-transform-block-scoping": "npm:^7.23.3" + "@babel/plugin-transform-class-properties": "npm:^7.23.3" + "@babel/plugin-transform-class-static-block": "npm:^7.23.3" + "@babel/plugin-transform-classes": "npm:^7.23.3" + "@babel/plugin-transform-computed-properties": "npm:^7.23.3" + "@babel/plugin-transform-destructuring": "npm:^7.23.3" + "@babel/plugin-transform-dotall-regex": "npm:^7.23.3" + "@babel/plugin-transform-duplicate-keys": "npm:^7.23.3" + "@babel/plugin-transform-dynamic-import": "npm:^7.23.3" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3" + "@babel/plugin-transform-export-namespace-from": "npm:^7.23.3" + "@babel/plugin-transform-for-of": "npm:^7.23.3" + "@babel/plugin-transform-function-name": "npm:^7.23.3" + "@babel/plugin-transform-json-strings": "npm:^7.23.3" + "@babel/plugin-transform-literals": "npm:^7.23.3" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.3" + "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3" + "@babel/plugin-transform-modules-amd": "npm:^7.23.3" + "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/plugin-transform-modules-systemjs": "npm:^7.23.3" + "@babel/plugin-transform-modules-umd": "npm:^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" + "@babel/plugin-transform-new-target": "npm:^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.3" + "@babel/plugin-transform-numeric-separator": "npm:^7.23.3" + "@babel/plugin-transform-object-rest-spread": "npm:^7.23.3" + "@babel/plugin-transform-object-super": "npm:^7.23.3" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.3" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" + "@babel/plugin-transform-parameters": "npm:^7.23.3" + "@babel/plugin-transform-private-methods": "npm:^7.23.3" + "@babel/plugin-transform-private-property-in-object": "npm:^7.23.3" + "@babel/plugin-transform-property-literals": "npm:^7.23.3" + "@babel/plugin-transform-regenerator": "npm:^7.23.3" + "@babel/plugin-transform-reserved-words": "npm:^7.23.3" + "@babel/plugin-transform-shorthand-properties": "npm:^7.23.3" + "@babel/plugin-transform-spread": "npm:^7.23.3" + "@babel/plugin-transform-sticky-regex": "npm:^7.23.3" + "@babel/plugin-transform-template-literals": "npm:^7.23.3" + "@babel/plugin-transform-typeof-symbol": "npm:^7.23.3" + "@babel/plugin-transform-unicode-escapes": "npm:^7.23.3" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.23.3" + "@babel/plugin-transform-unicode-regex": "npm:^7.23.3" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.23.3" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.6" + babel-plugin-polyfill-corejs3: "npm:^0.8.5" + babel-plugin-polyfill-regenerator: "npm:^0.5.3" + core-js-compat: "npm:^3.31.0" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6072eb19dee48dbfeaf1b5c79fbd0a28eea486c6e9d06a1793f1aa8769110adbe4ab6e14954ce6753f5dc9baf546e9fe62414c405caab0f7aecb2b0e5d94a950 + checksum: 36b02a86817ab5474bb74a8d62a110723b0b05904a52ddc5627cf89457525b8d5ac0739b8e435a6ae12ef8b90cd5fc191169898c3dc2ac9d2c84026b02f2580a languageName: node linkType: hard -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" dependencies: "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.4.4" - "@babel/plugin-transform-dotall-regex": "npm:^7.4.4" "@babel/types": "npm:^7.4.4" esutils: "npm:^2.0.2" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 languageName: node linkType: hard "@babel/preset-typescript@npm:^7.18.6": - version: 7.21.5 - resolution: "@babel/preset-typescript@npm:7.21.5" + version: 7.23.3 + resolution: "@babel/preset-typescript@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.21.5" - "@babel/helper-validator-option": "npm:^7.21.0" - "@babel/plugin-syntax-jsx": "npm:^7.21.4" - "@babel/plugin-transform-modules-commonjs": "npm:^7.21.5" - "@babel/plugin-transform-typescript": "npm:^7.21.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/plugin-transform-typescript": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ed50d19abb80af5dd5fbb2de21210164368e20ebfc86fea01f185c23ff49412c2b71daec4867309451e5d430d0026539cce74e3ef341ae64a7f11693dc5c6d5e + checksum: e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7 languageName: node linkType: hard @@ -1868,112 +1478,52 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0": - version: 7.22.10 - resolution: "@babel/runtime@npm:7.22.10" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": + version: 7.23.2 + resolution: "@babel/runtime@npm:7.23.2" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: d3a006fe2cbaf4048b935fb18f55d9ed52c26292182537b442cee57bf524dbb483367c57f464b1a5a96648d9d8d0fdcda848d58a8a09e18ed3f8971dcd684c6c - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.21.5 - resolution: "@babel/runtime@npm:7.21.5" - dependencies: - regenerator-runtime: "npm:^0.13.11" - checksum: c704c36bf1c7f948b1d404e3ad3b00897f6dbaf8bb9455b0a78f96ed0e2f24599f89fd3950a277566be6694ab8814a47bec743e98dd7c7f57e9f0fedc6c6c32f - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" - dependencies: - "@babel/code-frame": "npm:^7.18.6" - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - checksum: 1c6dcf9ac92769e6ab5e3d9048975537d26ab00b869646462ab4583d45e419c01db5144715ec0d70548835a3098c5d5416148c4a0b996a95e8e0b9dc8d042dd3 + checksum: 271fcfad8574269d9967b8a1c03f2e1eab108a52ad7c96ed136eee0b11f46156f1186637bd5e79a4207163db9a00413cd70a6428e137b982d0ee8ab85eb9f438 languageName: node linkType: hard -"@babel/template@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.3.3": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" dependencies: - "@babel/code-frame": "npm:^7.22.5" - "@babel/parser": "npm:^7.22.5" - "@babel/types": "npm:^7.22.5" - checksum: dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 + "@babel/code-frame": "npm:^7.22.13" + "@babel/parser": "npm:^7.22.15" + "@babel/types": "npm:^7.22.15" + checksum: 9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 languageName: node linkType: hard -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/traverse@npm:7.22.10" +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/traverse@npm:7.23.3" dependencies: - "@babel/code-frame": "npm:^7.22.10" - "@babel/generator": "npm:^7.22.10" - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" + "@babel/code-frame": "npm:^7.22.13" + "@babel/generator": "npm:^7.23.3" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-hoist-variables": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.22.10" - "@babel/types": "npm:^7.22.10" + "@babel/parser": "npm:^7.23.3" + "@babel/types": "npm:^7.23.3" debug: "npm:^4.1.0" globals: "npm:^11.1.0" - checksum: 8e8b63b053962908408ed9d954810e93f241122222db115327ed5876d020f420fc115ef2d79623c2a4928447ddc002ec220be2a152b241d19de2480c88e10cfb - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.7.2": - version: 7.21.5 - resolution: "@babel/traverse@npm:7.21.5" - dependencies: - "@babel/code-frame": "npm:^7.21.4" - "@babel/generator": "npm:^7.21.5" - "@babel/helper-environment-visitor": "npm:^7.21.5" - "@babel/helper-function-name": "npm:^7.21.0" - "@babel/helper-hoist-variables": "npm:^7.18.6" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - "@babel/parser": "npm:^7.21.5" - "@babel/types": "npm:^7.21.5" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 1b126b71b98aaff01ec1f0f0389d08beb6eda3d0b71878af4c6cf386686933a076d969240f270c6a01910d8036a1fb9013d53bd5c136b9b24025204a4dc48d03 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.21.5 - resolution: "@babel/types@npm:7.21.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.21.5" - "@babel/helper-validator-identifier": "npm:^7.19.1" - to-fast-properties: "npm:^2.0.0" - checksum: 23c943aa2c0d11b798e9298b55b1993da8b386504aac2f781a49b4bbf2cf2ad5e1003409241578574e421c999ff7a3aab2cf30ad3581d33eb9053d82b9e20408 - languageName: node - linkType: hard - -"@babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/types@npm:7.22.10" - dependencies: - "@babel/helper-string-parser": "npm:^7.22.5" - "@babel/helper-validator-identifier": "npm:^7.22.5" - to-fast-properties: "npm:^2.0.0" - checksum: 34aad930339664a3a5423d6f1d6d2738e30cd73786ff6dfd0a40bfc8f45017e70e24ef397877c86f4e7dee8ada0a53b8fd9f3d86bc0137d09a44e4b3733090f7 + checksum: 3c2784f4765185126d64fd5eebce0413b7aee6d54f779998594a343a7f973a9693a441ba27533df84e7ab7ce22f1239c6837f35e903132a1b25f7fc7a67bc30f languageName: node linkType: hard -"@babel/types@npm:^7.8.3": - version: 7.23.0 - resolution: "@babel/types@npm:7.23.0" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.3 + resolution: "@babel/types@npm:7.23.3" dependencies: "@babel/helper-string-parser": "npm:^7.22.5" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: 70e4db41acb6793d0eb8d81a2fa88f19ee661219b84bd5f703dbdb54eb3a4d3c0dfc55e69034c945b479df9f43fd4b1376480aaccfc19797ce5af1c5d2576b36 + checksum: 371a10dd9c8d8ebf48fc5d9e1b327dafd74453f8ea582dcbddd1cee5ae34e8881b743e783a86c08c04dcd1849b1842455472a911ae8a1c185484fe9b7b5f1595 languageName: node linkType: hard @@ -2046,34 +1596,34 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0": - version: 4.5.1 - resolution: "@eslint-community/regexpp@npm:4.5.1" - checksum: d79cbd99cc4dcfbb17e8dd30a30bb5aec5da9c60b9471043f886f116615bb15f0d417cb0ca638cefedba0b4c67c339e2011b53d88264a4540775f042a5879e01 +"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.10.0 + resolution: "@eslint-community/regexpp@npm:4.10.0" + checksum: c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.2": - version: 2.0.2 - resolution: "@eslint/eslintrc@npm:2.0.2" +"@eslint/eslintrc@npm:^2.1.3": + version: 2.1.3 + resolution: "@eslint/eslintrc@npm:2.1.3" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.5.1" + espree: "npm:^9.6.0" globals: "npm:^13.19.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 6ae7360f4e45fbfa6f66ba92be506860d15f070847bdad4542c97eda98b16c1f4f5be4a8807ccb284224691eb4125bbffc51e8933f6cb186d6cf23a8e668eb5b + checksum: f4103f4346126292eb15581c5a1d12bef03410fd3719dedbdb92e1f7031d46a5a2d60de8566790445d5d4b70b75ba050876799a11f5fff8265a91ee3fa77dab0 languageName: node linkType: hard -"@eslint/js@npm:8.39.0": - version: 8.39.0 - resolution: "@eslint/js@npm:8.39.0" - checksum: bb7ed9c22b998e8c765d87b12225ae046ae4c571c5c88d1012908c3ae1ae28e6248ebc98aed66b08334a8a9e43420bcc31a0e7f80173dafa6cc97f59735512e6 +"@eslint/js@npm:8.53.0": + version: 8.53.0 + resolution: "@eslint/js@npm:8.53.0" + checksum: d29f6c207b2f6dc4ef174d16a3c07b0d3a17ca3d805680496ff267edd773e3bac41db4e7dcab622ca1970d892535bd19671e2a756d4eac75e96fd8c8dcdb619b languageName: node linkType: hard @@ -2310,8 +1860,8 @@ __metadata: linkType: hard "@graphql-tools/batch-execute@npm:^9.0.1": - version: 9.0.1 - resolution: "@graphql-tools/batch-execute@npm:9.0.1" + version: 9.0.2 + resolution: "@graphql-tools/batch-execute@npm:9.0.2" dependencies: "@graphql-tools/utils": "npm:^10.0.5" dataloader: "npm:^2.2.2" @@ -2319,28 +1869,28 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1c257c243681340fa033aaf384b97c56156960b8661793ff6188e60572f79a277e892437cdcdae3efcfe7e29a97f958903a8d7d29b5425c5a08f57cb7f9d9118 + checksum: aed7b66a497b1665e40a46a43bef3c90a186723675324a20c64c5038f1a9913da331e18c49bc0a86b6e29c9974dcf5418c1bd5d9a017c8e9c264bb8f0c9a4d05 languageName: node linkType: hard "@graphql-tools/code-file-loader@npm:^8.0.0": - version: 8.0.2 - resolution: "@graphql-tools/code-file-loader@npm:8.0.2" + version: 8.0.3 + resolution: "@graphql-tools/code-file-loader@npm:8.0.3" dependencies: - "@graphql-tools/graphql-tag-pluck": "npm:8.0.2" + "@graphql-tools/graphql-tag-pluck": "npm:8.1.0" "@graphql-tools/utils": "npm:^10.0.0" globby: "npm:^11.0.3" tslib: "npm:^2.4.0" unixify: "npm:^1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 0bfbeebb72f334c72be76f7ca1015341432a0c8b31109c5b1538db6c26c454ffc9bb08ce1adfc198d83c68abbb5f30ece11260031aeb4cca8f9ad56995600e4b + checksum: c8634513ea286e05564661b0607a8d1d62ea11475c6bbfc70fd8641090a861ba962fd37026d4c393be2753c7c1094374d2552b085ac6dc1a3eae59d6cb2d98ce languageName: node linkType: hard -"@graphql-tools/delegate@npm:^10.0.0": - version: 10.0.2 - resolution: "@graphql-tools/delegate@npm:10.0.2" +"@graphql-tools/delegate@npm:^10.0.0, @graphql-tools/delegate@npm:^10.0.3": + version: 10.0.3 + resolution: "@graphql-tools/delegate@npm:10.0.3" dependencies: "@graphql-tools/batch-execute": "npm:^9.0.1" "@graphql-tools/executor": "npm:^1.0.0" @@ -2350,7 +1900,7 @@ __metadata: tslib: "npm:^2.5.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 6e137f11e0c3346684434d7f4cbaf588c335a0c019b62fd9447d25a7a302481982730c86bead4a4e69a2c87f66dd5d785926997ec3d3fd09f379dc59367179fc + checksum: 3ca09f6836c45f0f8289393435cfb3ab5e435434d31e8ef14a3a12a9b096ded8a24f8a84a6e4f5731fc917d2f85f517af42934c9c95e7a7637460105a67e3cc2 languageName: node linkType: hard @@ -2367,8 +1917,8 @@ __metadata: linkType: hard "@graphql-tools/executor-graphql-ws@npm:^1.0.0": - version: 1.1.0 - resolution: "@graphql-tools/executor-graphql-ws@npm:1.1.0" + version: 1.1.1 + resolution: "@graphql-tools/executor-graphql-ws@npm:1.1.1" dependencies: "@graphql-tools/utils": "npm:^10.0.2" "@types/ws": "npm:^8.0.0" @@ -2378,13 +1928,13 @@ __metadata: ws: "npm:^8.13.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 68bd4fd40af549c1df265bde198f156cc99634ad040023773210c1aeb9857813e6f04620a8ee7e40000bd57a1bb0762427ece04e644c7b764a9d7349d8a3f911 + checksum: 045171be11ddbb51836e38d52378e2612c6365a23624807e1753f6c2ca72c3d1f05b077badb8339502251a8e500c30342472180203ca1ca9fd22cdecc5b26de0 languageName: node linkType: hard "@graphql-tools/executor-http@npm:^1.0.0": - version: 1.0.2 - resolution: "@graphql-tools/executor-http@npm:1.0.2" + version: 1.0.3 + resolution: "@graphql-tools/executor-http@npm:1.0.3" dependencies: "@graphql-tools/utils": "npm:^10.0.2" "@repeaterjs/repeater": "npm:^3.0.4" @@ -2395,22 +1945,22 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 6640a89bcb621984ba04a917784cd894697da867f7ed88d3f3804f9459a612d04d0458189a65b9b94b58041a47c10ad4430456d76cd367d9fee9cd7d60e8c1e8 + checksum: 428f00833bc0f8d748ffd64b84eccc7e18e50d7d3824596d136a31c275bd2daadfdadda659f82ae1071a0ac022f7213ce27b3c2e20717dedda52c803c0cb1477 languageName: node linkType: hard "@graphql-tools/executor-legacy-ws@npm:^1.0.0": - version: 1.0.1 - resolution: "@graphql-tools/executor-legacy-ws@npm:1.0.1" + version: 1.0.4 + resolution: "@graphql-tools/executor-legacy-ws@npm:1.0.4" dependencies: "@graphql-tools/utils": "npm:^10.0.0" "@types/ws": "npm:^8.0.0" isomorphic-ws: "npm:5.0.0" tslib: "npm:^2.4.0" - ws: "npm:8.13.0" + ws: "npm:8.14.2" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 6b4fac5c9e47ef54763f779e509886b2ee87d629ffc78c4351d42cffded6c0cb3a837f77c72294e839d64c4c9c11f77075d4087c905248e14e45263a6a5ff233 + checksum: 559f229ef84ccfd79ee03e417276122cd11797186272d5f8134cd9fc57cc055951d5fde98c2151b2c4210adf04de35a903b58119429c0159bd13824d48fbb9d2 languageName: node linkType: hard @@ -2430,10 +1980,10 @@ __metadata: linkType: hard "@graphql-tools/git-loader@npm:^8.0.0": - version: 8.0.2 - resolution: "@graphql-tools/git-loader@npm:8.0.2" + version: 8.0.3 + resolution: "@graphql-tools/git-loader@npm:8.0.3" dependencies: - "@graphql-tools/graphql-tag-pluck": "npm:8.0.2" + "@graphql-tools/graphql-tag-pluck": "npm:8.1.0" "@graphql-tools/utils": "npm:^10.0.0" is-glob: "npm:4.0.3" micromatch: "npm:^4.0.4" @@ -2441,7 +1991,7 @@ __metadata: unixify: "npm:^1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 5aab655551f559ddf44fcc594477bf249d0add29b27905b30d824e2c6436da989be7c3c99ae61829c0557e28d3e925768c46f3bcd0f3d1ca7b852581e63954f5 + checksum: e63e4eb31f5eaf33c757d1b699f4aa2b6fd944c0b9ceee7b45fc2ce0070a83022f2c67e31ccbd98517cfb6e8c60a37e25ca7afc95de762b4df81b88bd008b052 languageName: node linkType: hard @@ -2477,9 +2027,9 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/graphql-tag-pluck@npm:8.0.2, @graphql-tools/graphql-tag-pluck@npm:^8.0.0": - version: 8.0.2 - resolution: "@graphql-tools/graphql-tag-pluck@npm:8.0.2" +"@graphql-tools/graphql-tag-pluck@npm:8.1.0, @graphql-tools/graphql-tag-pluck@npm:^8.0.0": + version: 8.1.0 + resolution: "@graphql-tools/graphql-tag-pluck@npm:8.1.0" dependencies: "@babel/core": "npm:^7.22.9" "@babel/parser": "npm:^7.16.8" @@ -2490,7 +2040,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 40e71ad6ffc69379127278d0867f41e5a63b7f3206851eff4e21fd1607dda2d2b2ba97711eee76ee696f6726a7fe71ac44c6cd5bc76585bd3f29e84d38116cac + checksum: aa519830ff2c6963cc05e2768db69e3649a91ec44c63dbc48b50d37be63ef37fc275ead79214b8d1a365be2d7cabe689a2f0bb738da07cbe549c262981d2c0c7 languageName: node linkType: hard @@ -2559,11 +2109,11 @@ __metadata: linkType: hard "@graphql-tools/prisma-loader@npm:^8.0.0": - version: 8.0.1 - resolution: "@graphql-tools/prisma-loader@npm:8.0.1" + version: 8.0.2 + resolution: "@graphql-tools/prisma-loader@npm:8.0.2" dependencies: "@graphql-tools/url-loader": "npm:^8.0.0" - "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-tools/utils": "npm:^10.0.8" "@types/js-yaml": "npm:^4.0.0" "@types/json-stable-stringify": "npm:^1.0.32" "@whatwg-node/fetch": "npm:^0.9.0" @@ -2573,7 +2123,7 @@ __metadata: graphql-request: "npm:^6.0.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.0" - jose: "npm:^4.11.4" + jose: "npm:^5.0.0" js-yaml: "npm:^4.0.0" json-stable-stringify: "npm:^1.0.1" lodash: "npm:^4.17.20" @@ -2582,7 +2132,7 @@ __metadata: yaml-ast-parser: "npm:^0.0.43" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 71e3a23665a7cd091c717acb8b417c52c53ea82c73e94f9e4375120213154384f2887e0d2e1b6d4837097b51215168a6ad8ebef3d85d539c9abdbddcf73c8b10 + checksum: 49abde5ab519fa5b5ac501c2e2d828d200a61c9efa3bca05157de477b8560b49d2fa6046e799d69c7295f7c8be3c90cfc512465b9f23d07d866ff3823d01ca76 languageName: node linkType: hard @@ -2636,31 +2186,32 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.0.2, @graphql-tools/utils@npm:^10.0.5": - version: 10.0.5 - resolution: "@graphql-tools/utils@npm:10.0.5" +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.0.2, @graphql-tools/utils@npm:^10.0.5, @graphql-tools/utils@npm:^10.0.8": + version: 10.0.8 + resolution: "@graphql-tools/utils@npm:10.0.8" dependencies: "@graphql-typed-document-node/core": "npm:^3.1.1" + cross-inspect: "npm:1.0.0" dset: "npm:^3.1.2" tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3a8d306df62b530dd6f65fb78f483dfc816c212c7c78d2c84148864b3330ed7b9dc42e42047665858840d12d061b98a40b97884e4cfe8218c5b5086b0604dd91 + checksum: ea0dfa4535ba360d27a1eb501d48a114a9ebb6224d178b89e3d978b19bd30d98fc1622cbeb31b2198b3e06cb9f717edb70933530958509bfcf0458842618a1b0 languageName: node linkType: hard "@graphql-tools/wrap@npm:^10.0.0": - version: 10.0.0 - resolution: "@graphql-tools/wrap@npm:10.0.0" + version: 10.0.1 + resolution: "@graphql-tools/wrap@npm:10.0.1" dependencies: - "@graphql-tools/delegate": "npm:^10.0.0" + "@graphql-tools/delegate": "npm:^10.0.3" "@graphql-tools/schema": "npm:^10.0.0" "@graphql-tools/utils": "npm:^10.0.0" tslib: "npm:^2.4.0" value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3674ff7efc8a6ddddb4f3912db9c29ae2fcdd49c9100c4cd554a67f00bc05ee2dc11050aafb05f9cea54bddf300e6b745791bd8ac55a726cb6b2bd4a3c364a67 + checksum: af704054dc4cd44346742e84ff372980a601f8043e29963fedc06c21a32fccdab0cb0afffd3d61da882cd294fe3c5976db21948d5fcbc8b47eee5077c39ecff6 languageName: node linkType: hard @@ -2691,14 +2242,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.8": - version: 0.11.8 - resolution: "@humanwhocodes/config-array@npm:0.11.8" +"@humanwhocodes/config-array@npm:^0.11.13": + version: 0.11.13 + resolution: "@humanwhocodes/config-array@npm:0.11.13" dependencies: - "@humanwhocodes/object-schema": "npm:^1.2.1" + "@humanwhocodes/object-schema": "npm:^2.0.1" debug: "npm:^4.1.1" minimatch: "npm:^3.0.5" - checksum: 441223496cc5ae3ae443e11e2ba05f03f6418d1e0233e3d160b027dda742d7a957fa9e1d56125d5829079419c797c13e1ae8ffe3454f268901ac18f68e0198f1 + checksum: d76ca802d853366094d0e98ff0d0994117fc8eff96649cd357b15e469e428228f597cd2e929d54ab089051684949955f16ee905bb19f7b2f0446fb377157be7a languageName: node linkType: hard @@ -2709,10 +2260,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: c3c35fdb70c04a569278351c75553e293ae339684ed75895edc79facc7276e351115786946658d78133130c0cca80e57e2203bc07f8fa7fe7980300e8deef7db +"@humanwhocodes/object-schema@npm:^2.0.1": + version: 2.0.1 + resolution: "@humanwhocodes/object-schema@npm:2.0.1" + checksum: 9dba24e59fdb4041829d92b693aacb778add3b6f612aaa9c0774f3b650c11a378cc64f042a59da85c11dae33df456580a3c36837b953541aed6ff94294f97fac languageName: node linkType: hard @@ -2757,50 +2308,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.5.0" - jest-util: "npm:^29.5.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" slash: "npm:^3.0.0" - checksum: 59dfbdb6c3c15652f8d7267071f24d6335afbed0b1cf71aed70b6ce8deb1d86e7f4aadb978f639435650107fd22476b59e63a3d3a9ac99b1aca739b795a54410 + checksum: 7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c languageName: node linkType: hard -"@jest/core@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/core@npm:29.5.0" +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" dependencies: - "@jest/console": "npm:^29.5.0" - "@jest/reporters": "npm:^29.5.0" - "@jest/test-result": "npm:^29.5.0" - "@jest/transform": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" ansi-escapes: "npm:^4.2.1" chalk: "npm:^4.0.0" ci-info: "npm:^3.2.0" exit: "npm:^0.1.2" graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^29.5.0" - jest-config: "npm:^29.5.0" - jest-haste-map: "npm:^29.5.0" - jest-message-util: "npm:^29.5.0" - jest-regex-util: "npm:^29.4.3" - jest-resolve: "npm:^29.5.0" - jest-resolve-dependencies: "npm:^29.5.0" - jest-runner: "npm:^29.5.0" - jest-runtime: "npm:^29.5.0" - jest-snapshot: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - jest-validate: "npm:^29.5.0" - jest-watcher: "npm:^29.5.0" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.5.0" + pretty-format: "npm:^29.7.0" slash: "npm:^3.0.0" strip-ansi: "npm:^6.0.0" peerDependencies: @@ -2808,77 +2359,77 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: e4b3e0de48614b2c339083b9159f00a024839984bd89b9afa4cfff4c38f6ce485c2009f2efa1c1e3bb3b87386288bc15798c6aebb7937d7820e8048d75461a4d + checksum: 934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 languageName: node linkType: hard -"@jest/environment@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/environment@npm:29.5.0" +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" dependencies: - "@jest/fake-timers": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" - jest-mock: "npm:^29.5.0" - checksum: 1fbe63cbfb9c3f6c9fc9d8f6917a5aceee1828d589569bbffcf5fb4bb56bc021dc3a6f239cde3099144767c97763ae134904ee522f236cd8c0d071bd7f9ef63b + jest-mock: "npm:^29.7.0" + checksum: c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect-utils@npm:29.5.0" +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - jest-get-type: "npm:^29.4.3" - checksum: e7f44de651b5ef71c6e1b7a0350a704258167c20b6e8165b3100346d5c7f8eb4cd2c229ea2c048e9161666d1c086fbbc422f111f3b77da3fb89a99d52d4b3690 + jest-get-type: "npm:^29.6.3" + checksum: 60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a languageName: node linkType: hard -"@jest/expect@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect@npm:29.5.0" +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" dependencies: - expect: "npm:^29.5.0" - jest-snapshot: "npm:^29.5.0" - checksum: 447e7450af8ba61ac34d8a2ca11c56c62f6f0fb33ff13130f11a1ec9526a08d756ee72da622316a2c52ecfe726fe14432bdfb46e45aff5676f8d1a8efc8d201c + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e languageName: node linkType: hard -"@jest/fake-timers@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/fake-timers@npm:29.5.0" +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" "@sinonjs/fake-timers": "npm:^10.0.2" "@types/node": "npm:*" - jest-message-util: "npm:^29.5.0" - jest-mock: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - checksum: dbf52fd302bf6b3d7ec49499f12835b7d7d4069d61adc62dac233021eba61186bbad3add1ceb3225a23a8745dd04fa0dcc2c38d350ecb0f26eec63f2cf5e6aff + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c languageName: node linkType: hard -"@jest/globals@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/globals@npm:29.5.0" +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" dependencies: - "@jest/environment": "npm:^29.5.0" - "@jest/expect": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" - jest-mock: "npm:^29.5.0" - checksum: 0c25f07d8125e45cf3c21442e625f6a636eaf7f4cf1cf3f9f66bae059aeb31d3dc61dfff9479eb861a5089dca34c95e231ad88b8925bee42387abecbfe5ecbc2 + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea languageName: node linkType: hard -"@jest/reporters@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" dependencies: "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^29.5.0" - "@jest/test-result": "npm:^29.5.0" - "@jest/transform": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" - "@jridgewell/trace-mapping": "npm:^0.3.15" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" "@types/node": "npm:*" chalk: "npm:^4.0.0" collect-v8-coverage: "npm:^1.0.0" @@ -2886,13 +2437,13 @@ __metadata: glob: "npm:^7.1.3" graceful-fs: "npm:^4.2.9" istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^5.1.0" + istanbul-lib-instrument: "npm:^6.0.0" istanbul-lib-report: "npm:^3.0.0" istanbul-lib-source-maps: "npm:^4.0.0" istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - jest-worker: "npm:^29.5.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" slash: "npm:^3.0.0" string-length: "npm:^4.0.1" strip-ansi: "npm:^6.0.0" @@ -2902,88 +2453,88 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 72b771a7749ac2eb9b671f2a886dc98cbe914dfa1a4266854b040e4cc563bf9f5db02b8ff8654b7bfbc3b28caa6d48ca0dde9707454ea4f79d77bd13b6357929 + checksum: a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 languageName: node linkType: hard -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: - "@sinclair/typebox": "npm:^0.25.16" - checksum: 8a35967cec454d1de2d5a58ab99b49a0ff798d1dce2d817bdd9960bb2f070493f767fbbf419e6a263860d3b1ef1e50ab609a76ae21b5f8c09bb0859e8f51a098 + "@sinclair/typebox": "npm:^0.27.8" + checksum: b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.15" + "@jridgewell/trace-mapping": "npm:^0.3.18" callsites: "npm:^3.0.0" graceful-fs: "npm:^4.2.9" - checksum: 353f9989dcb416e8a2559ad2831b4b3e8446a9f8259782cec97f89903b5c00baa76ea3e23a3f1c83c1ccb3999a9e318b8c6a4bab29e4b66a4abdbb760e445a50 + checksum: a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 languageName: node linkType: hard -"@jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" dependencies: - "@jest/console": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/istanbul-lib-coverage": "npm:^2.0.0" collect-v8-coverage: "npm:^1.0.0" - checksum: 5d637c9935ea0438b2a7c106d48756967e5a96fa4426a9b16ea2a3e73e1538eabd10fd4faa8eb46aa4fee710a165e0fd2ce0603dacde5e8a1bba541100854b1d + checksum: 7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-sequencer@npm:29.5.0" +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - "@jest/test-result": "npm:^29.5.0" + "@jest/test-result": "npm:^29.7.0" graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.5.0" + jest-haste-map: "npm:^29.7.0" slash: "npm:^3.0.0" - checksum: 6fb7549a5dbe2da6817eb853134f76cf2b320b283900c5e63c997ecfadc616379372a49ac8c0f4ffdb9616eed4a5908c74cb7a560a395a6e1dc0d072b865657b + checksum: 593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b languageName: node linkType: hard -"@jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" dependencies: "@babel/core": "npm:^7.11.6" - "@jest/types": "npm:^29.5.0" - "@jridgewell/trace-mapping": "npm:^0.3.15" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" babel-plugin-istanbul: "npm:^6.1.1" chalk: "npm:^4.0.0" convert-source-map: "npm:^2.0.0" fast-json-stable-stringify: "npm:^2.1.0" graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.5.0" - jest-regex-util: "npm:^29.4.3" - jest-util: "npm:^29.5.0" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" micromatch: "npm:^4.0.4" pirates: "npm:^4.0.4" slash: "npm:^3.0.0" write-file-atomic: "npm:^4.0.2" - checksum: 113598311d84ec7e4a4aadd340e332bbfbbd66e20eabea8b2f084b80cf97c1bc9e1ff90278c4f04b227afa95e3386d702363715f9923062c370c042c31911d94 + checksum: 7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 languageName: node linkType: hard -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": "npm:^29.4.3" + "@jest/schemas": "npm:^29.6.3" "@types/istanbul-lib-coverage": "npm:^2.0.0" "@types/istanbul-reports": "npm:^3.0.0" "@types/node": "npm:*" "@types/yargs": "npm:^17.0.8" chalk: "npm:^4.0.0" - checksum: f1cccd2e9b00a985bfdac03517f906cdf7a481be3606c335f8ec08a7272b7cf700b23484ce323a912b374defb90d3ab88c643cf2a2f47635c1c4feacfa1c1b2d + checksum: ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 languageName: node linkType: hard @@ -2998,14 +2549,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: 78055e2526108331126366572045355051a930f017d1904a4f753d3f4acee8d92a14854948095626f6163cffc24ea4e3efa30637417bb866b84743dec7ef6fd9 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf @@ -3019,14 +2563,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 3fbaff1387c1338b097eeb6ff92890d7838f7de0dde259e4983763b44540bfd5ca6a1f7644dc8ad003a57f7e80670d5b96a8402f1386ba9aee074743ae9bad51 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 @@ -3043,163 +2580,123 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" - dependencies: - "@jridgewell/resolve-uri": "npm:3.1.0" - "@jridgewell/sourcemap-codec": "npm:1.4.14" - checksum: e5045775f076022b6c7cc64a7b55742faa5442301cb3389fd0e6712fafc46a2bb13c68fa1ffaf7b8bb665a91196f050b4115885fc802094ebc06a1cf665935ac - languageName: node - linkType: hard - -"@json-rpc-tools/provider@npm:^1.5.5": - version: 1.7.6 - resolution: "@json-rpc-tools/provider@npm:1.7.6" - dependencies: - "@json-rpc-tools/utils": "npm:^1.7.6" - axios: "npm:^0.21.0" - safe-json-utils: "npm:^1.1.1" - ws: "npm:^7.4.0" - checksum: 64ff823b4203fa04f787f23e4a864cb47d687bf9bca840cee34c85596bf3bda5ef6f8ed2d56c57c4ec1d0539b943e9ba0402f5307bdf604baa7472559c251f5a - languageName: node - linkType: hard - -"@json-rpc-tools/types@npm:^1.7.6": - version: 1.7.6 - resolution: "@json-rpc-tools/types@npm:1.7.6" - dependencies: - keyvaluestorage-interface: "npm:^1.0.0" - checksum: 5d373132b64613aa73adf5be3c41af1fb74e1add8bbfb45aae6c0ad4173c31ce97fcfd3c9dfd713b0148b19759d46116a401d2dfc47882d7a1264a7ac144b61f - languageName: node - linkType: hard - -"@json-rpc-tools/utils@npm:^1.7.6": - version: 1.7.6 - resolution: "@json-rpc-tools/utils@npm:1.7.6" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.20 + resolution: "@jridgewell/trace-mapping@npm:0.3.20" dependencies: - "@json-rpc-tools/types": "npm:^1.7.6" - "@pedrouid/environment": "npm:^1.0.1" - checksum: ba64fc5f709061b86afc91cf4b59a5108596b15b2a0820e1bec2df915488b9e29451205c93cd02c84f0e42b272dd069948d4c9d30345258cc3d5131563cc2cd3 + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 0ea0b2675cf513ec44dc25605616a3c9b808b9832e74b5b63c44260d66b58558bba65764f81928fc1033ead911f8718dca1134049c3e7a93937faf436671df31 languageName: node linkType: hard "@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": - version: 1.1.1 - resolution: "@lit-labs/ssr-dom-shim@npm:1.1.1" - checksum: bc530a6d390a71e44a74f0d79ab78df0c3cf814f5a69e64c60271d626f4b871d0269c82f2b1bcaf9ef1a84f361f50a1fc70c790873cded769e8f0e4f1fa01ff8 + version: 1.1.2 + resolution: "@lit-labs/ssr-dom-shim@npm:1.1.2" + checksum: e51c7c156317ac95cac8d534d8608ac2a9dda7441f14f73e9e66a995d277851a90315324fe74690d1169a66dce645ed9674a8f5a9a467d183156de1c87549b23 languageName: node linkType: hard "@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": - version: 1.6.2 - resolution: "@lit/reactive-element@npm:1.6.2" + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" dependencies: "@lit-labs/ssr-dom-shim": "npm:^1.0.0" - checksum: 2845fa086553c131f41cf58ad3bc0ed4c9b24b3d92d8151936086d385cc5295a79da4113ae06a9a39b5f3184f43b2b85d801520c4114c13ca8e730289276a6a6 + checksum: 10f1d25e24e32feb21c4c6f9e11d062901241602e12c4ecf746b3138f87fed4d8394194645514d5c1bfd5f33f3fd56ee8ef41344e2cb4413c40fe4961ec9d419 languageName: node linkType: hard -"@motionone/animation@npm:^10.15.1": - version: 10.15.1 - resolution: "@motionone/animation@npm:10.15.1" +"@motionone/animation@npm:^10.15.1, @motionone/animation@npm:^10.16.3": + version: 10.16.3 + resolution: "@motionone/animation@npm:10.16.3" dependencies: - "@motionone/easing": "npm:^10.15.1" - "@motionone/types": "npm:^10.15.1" - "@motionone/utils": "npm:^10.15.1" + "@motionone/easing": "npm:^10.16.3" + "@motionone/types": "npm:^10.16.3" + "@motionone/utils": "npm:^10.16.3" tslib: "npm:^2.3.1" - checksum: 0b34079d1f8bbc342baf94ce849175edbe36aaee83e7167343e5f4dc73c22b34cdb3ad6dba2fd65f27cc5a516ca759791ceaa549a0b4ee4f34e76a262896c853 + checksum: c1bb7a03acc9c09647321a4653bf53878ea05ce91305507cb4000d75641dcad85faa8696ef12d0c28fa52d4b3708bc7ae34334c95ef532567a26082f0176ea4a languageName: node linkType: hard -"@motionone/dom@npm:^10.16.2": - version: 10.16.2 - resolution: "@motionone/dom@npm:10.16.2" +"@motionone/dom@npm:^10.16.2, @motionone/dom@npm:^10.16.4": + version: 10.16.4 + resolution: "@motionone/dom@npm:10.16.4" dependencies: - "@motionone/animation": "npm:^10.15.1" - "@motionone/generators": "npm:^10.15.1" - "@motionone/types": "npm:^10.15.1" - "@motionone/utils": "npm:^10.15.1" + "@motionone/animation": "npm:^10.16.3" + "@motionone/generators": "npm:^10.16.4" + "@motionone/types": "npm:^10.16.3" + "@motionone/utils": "npm:^10.16.3" hey-listen: "npm:^1.0.8" tslib: "npm:^2.3.1" - checksum: 820165454e5eec10b403897d109df3e378f17973ef68aeb76f915c5a1281d548affe03827eb2f7a5906b4a50cf59160c73bde27179c38e38cf83d6c2b33e8e96 + checksum: 1efaa29a18471c18dbe7f849a7c83b12c27edf85209cb366856720e051870302c27567f5eab2a1aef3aa7ae1438c6fbc3a7e686077f5ed4e173e4cca8d22e0d5 languageName: node linkType: hard -"@motionone/easing@npm:^10.15.1": - version: 10.15.1 - resolution: "@motionone/easing@npm:10.15.1" +"@motionone/easing@npm:^10.16.3": + version: 10.16.3 + resolution: "@motionone/easing@npm:10.16.3" dependencies: - "@motionone/utils": "npm:^10.15.1" + "@motionone/utils": "npm:^10.16.3" tslib: "npm:^2.3.1" - checksum: e7a8043b9a0d9673a725b1b6c49904582c5bbc34ee63ed36a04eff280f8d076ebbea5f0e269b36bad1a29a20d5843c8db0729764f98304b44a05f89958ef95e7 + checksum: df98a643f0b2955afd16b78063899d050b22cfcf3db1bb86ecdbde831614f24c41143d5d887bc287f6de979baa20a00e8e1dca39ef7b2dfb67c0ec1b1ca0bcaa languageName: node linkType: hard -"@motionone/generators@npm:^10.15.1": - version: 10.15.1 - resolution: "@motionone/generators@npm:10.15.1" +"@motionone/generators@npm:^10.16.4": + version: 10.16.4 + resolution: "@motionone/generators@npm:10.16.4" dependencies: - "@motionone/types": "npm:^10.15.1" - "@motionone/utils": "npm:^10.15.1" + "@motionone/types": "npm:^10.16.3" + "@motionone/utils": "npm:^10.16.3" tslib: "npm:^2.3.1" - checksum: 247478a225849ec6019092d61f04cd13defff7e63aff706087af6b12dd424fbc374f5277f8e3825b9b2ee7527003dddcb9a6d4214bcaf42be9904bd4420bb0c1 + checksum: cef71d1236a625b3579791d480ebd1875bec2a62e249771eb2af883981074016cc6f2ef112c2bf27f93d05d19830893f3f486944cd68d2fbf35a990c41729152 languageName: node linkType: hard "@motionone/svelte@npm:^10.16.2": - version: 10.16.2 - resolution: "@motionone/svelte@npm:10.16.2" + version: 10.16.4 + resolution: "@motionone/svelte@npm:10.16.4" dependencies: - "@motionone/dom": "npm:^10.16.2" + "@motionone/dom": "npm:^10.16.4" tslib: "npm:^2.3.1" - checksum: 5de62647bf46bd6e44904d1d28dd0e4b1d5a9db6d12a074eb7cde022d2b4bdb459c106ef282e4e1df5c32bd60d4be47c2ea86d19145d1bfb12f7373869b10ab5 + checksum: a3f91d3ac5617ac8a2847abc0c8fad417cdc2cd9d814d60f7de2c909e4beeaf834b45a4288c8af6d26f62958a6c69714313b37ea6cd5aa2a9d1ad5198ec5881f languageName: node linkType: hard -"@motionone/types@npm:^10.15.1": - version: 10.15.1 - resolution: "@motionone/types@npm:10.15.1" - checksum: e1cf3c980c835d583190bf7d99e549b0523da14c797a07ccc82da932b7c3f2930cedd429d737ecd80da4df0290588e6c2c5bf3d14c9e77c45e2a3d92bd50ad8c +"@motionone/types@npm:^10.15.1, @motionone/types@npm:^10.16.3": + version: 10.16.3 + resolution: "@motionone/types@npm:10.16.3" + checksum: a792acd8bacd7949c29fd47fda1d3d7919b86ab209499a374a1f3c85f57a92d16f7a05f94edc6d46831c55180da2ff5e1193fa538bcb76e0ff38a24e25da2e87 languageName: node linkType: hard -"@motionone/utils@npm:^10.15.1": - version: 10.15.1 - resolution: "@motionone/utils@npm:10.15.1" +"@motionone/utils@npm:^10.15.1, @motionone/utils@npm:^10.16.3": + version: 10.16.3 + resolution: "@motionone/utils@npm:10.16.3" dependencies: - "@motionone/types": "npm:^10.15.1" + "@motionone/types": "npm:^10.16.3" hey-listen: "npm:^1.0.8" tslib: "npm:^2.3.1" - checksum: 6bb1cbc90593fe67d91c4c63ef2c2f33862e842fc8c7c51401adc5281d5267437604e8c396d3d9d033f544f61a9f0983113c9b1822abcd4250de974adc6ac65a + checksum: c5a1cce9bf5d1e8c5051a4636bd6a7030bf67f5662a94a8ec1524a72de3baca3f4c59e46cee9a41b111806fdd2956256c65c7e99b7de260803f2e44840bbae11 languageName: node linkType: hard "@motionone/vue@npm:^10.16.2": - version: 10.16.2 - resolution: "@motionone/vue@npm:10.16.2" + version: 10.16.4 + resolution: "@motionone/vue@npm:10.16.4" dependencies: - "@motionone/dom": "npm:^10.16.2" + "@motionone/dom": "npm:^10.16.4" tslib: "npm:^2.3.1" - checksum: f0fd7c46852d9df6f74074bb9d7e65af6947cb1616455c61ffa807d68b003445d168789fa7a8f9d5b74e015b73762f9286cd9f17590f9bdbe41c2cc604f16757 - languageName: node - linkType: hard - -"@noble/curves@npm:1.0.0": - version: 1.0.0 - resolution: "@noble/curves@npm:1.0.0" - dependencies: - "@noble/hashes": "npm:1.3.0" - checksum: 399821df9cffdd0b20755d5afb5e02873fb74d9a0ac79a3f4a64e899d5a4ab3f4378176ed430fcf6c30426a06019aeeaf0c38994bbf11f73701242431e89be3c + checksum: 0f3096c0956848cb67c4926e65b7034d854cf704573a277679713c5a8045347c3c043f50adad0c84ee3e88c046d35ab88ec4380e5acd729f81900381e0b1fd0d languageName: node linkType: hard -"@noble/curves@npm:1.1.0": - version: 1.1.0 - resolution: "@noble/curves@npm:1.1.0" +"@noble/curves@npm:^1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" dependencies: - "@noble/hashes": "npm:1.3.1" - checksum: 81115c3ebfa7e7da2d7e18d44d686f98dc6d35dbde3964412c05707c92d0994a01545bc265d5c0bc05c8c49333f75b99c9acef6750f5a79b3abcc8e0546acf88 + "@noble/hashes": "npm:1.3.2" + checksum: 0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 languageName: node linkType: hard @@ -3210,17 +2707,10 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.3.0": - version: 1.3.0 - resolution: "@noble/hashes@npm:1.3.0" - checksum: 06d27f9e7dfbe379dbfb02073358aa2c25a6363acc3a2b09e074f0f47f630da1d5a81c731696faa9407594371b61a27c496076fdecc2f60fb1c6a24247a5dbef - languageName: node - linkType: hard - -"@noble/hashes@npm:1.3.1": - version: 1.3.1 - resolution: "@noble/hashes@npm:1.3.1" - checksum: 86512713aaf338bced594bc2046ab249fea4e1ba1e7f2ecd02151ef1b8536315e788c11608fafe1b56f04fad1aa3c602da7e5f8e5fcd5f8b0aa94435fe65278e +"@noble/hashes@npm:1.3.2, @noble/hashes@npm:^1.3.2": + version: 1.3.2 + resolution: "@noble/hashes@npm:1.3.2" + checksum: 2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 languageName: node linkType: hard @@ -3318,9 +2808,9 @@ __metadata: languageName: node linkType: hard -"@npmcli/arborist@npm:^7.2.0": - version: 7.2.0 - resolution: "@npmcli/arborist@npm:7.2.0" +"@npmcli/arborist@npm:^7.2.1": + version: 7.2.1 + resolution: "@npmcli/arborist@npm:7.2.1" dependencies: "@isaacs/string-locale-compare": "npm:^1.1.0" "@npmcli/fs": "npm:^3.1.0" @@ -3331,7 +2821,7 @@ __metadata: "@npmcli/node-gyp": "npm:^3.0.0" "@npmcli/package-json": "npm:^5.0.0" "@npmcli/query": "npm:^3.0.1" - "@npmcli/run-script": "npm:^7.0.1" + "@npmcli/run-script": "npm:^7.0.2" bin-links: "npm:^4.0.1" cacache: "npm:^18.0.0" common-ancestor-path: "npm:^1.0.1" @@ -3357,7 +2847,7 @@ __metadata: walk-up-path: "npm:^3.0.1" bin: arborist: bin/index.js - checksum: 7512cd640152565aad9a1c93ef8ac3f718c96a2f95b2a50a2bd1a8f3de782de08778fdaf1bc139fbc14eca17f1d27ac513c20b465e90ee8836bc126a4211896f + checksum: 9e7201cb54ea390f61855ee437f021617bdeb1176e937948796e0b986fccf4f735f9f7a6bcf196ca02111766cc17bc5364b07e4fcde4dbb5db11674380334383 languageName: node linkType: hard @@ -3655,7 +3145,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/run-script@npm:^7.0.0, @npmcli/run-script@npm:^7.0.1": +"@npmcli/run-script@npm:^7.0.0, @npmcli/run-script@npm:^7.0.2": version: 7.0.2 resolution: "@npmcli/run-script@npm:7.0.2" dependencies: @@ -3669,11 +3159,9 @@ __metadata: linkType: hard "@octokit/auth-token@npm:^3.0.0": - version: 3.0.3 - resolution: "@octokit/auth-token@npm:3.0.3" - dependencies: - "@octokit/types": "npm:^9.0.0" - checksum: ff33a5bbfcef8f9303d5fb7fd4757828490efe893ebe894f4ae5faa7bd37cc8d732408ce5f565bb6ad476f0d601ac3205b2256077530caebc7bac80dab8e4770 + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 languageName: node linkType: hard @@ -3684,9 +3172,9 @@ __metadata: languageName: node linkType: hard -"@octokit/core@npm:^4.1.0": - version: 4.2.0 - resolution: "@octokit/core@npm:4.2.0" +"@octokit/core@npm:^4.2.1": + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" dependencies: "@octokit/auth-token": "npm:^3.0.0" "@octokit/graphql": "npm:^5.0.0" @@ -3695,7 +3183,7 @@ __metadata: "@octokit/types": "npm:^9.0.0" before-after-hook: "npm:^2.2.0" universal-user-agent: "npm:^6.0.0" - checksum: 574abe80eb02dd0ff8253aba6f7b7b8cc1ac9c240d6e761ab4375579fdd36099acd515a7108853b0e0b9480691202035f308a8154d29d18a336a0847e95b273b + checksum: e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 languageName: node linkType: hard @@ -3715,13 +3203,13 @@ __metadata: linkType: hard "@octokit/endpoint@npm:^7.0.0": - version: 7.0.5 - resolution: "@octokit/endpoint@npm:7.0.5" + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" dependencies: "@octokit/types": "npm:^9.0.0" is-plain-object: "npm:^5.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 68de3e40b4d2b4d3decfc3e23480d5a781275ebf86d084a38ba70c5d46a6cad051b63332da1768a64d58b0b810c5b57401a3892dff4dd0060d8b6b31d78fc2f5 + checksum: fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 languageName: node linkType: hard @@ -3737,13 +3225,13 @@ __metadata: linkType: hard "@octokit/graphql@npm:^5.0.0": - version: 5.0.5 - resolution: "@octokit/graphql@npm:5.0.5" + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" dependencies: "@octokit/request": "npm:^6.0.0" "@octokit/types": "npm:^9.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 78c26c2951f95fb3db05729938631af00dad0cd8bc9ff67d213b30e49dc26b485b7d94f81ef4d017ae8ebbebf6bcbaf375fbd8ec88483113ed152c930e1bec68 + checksum: de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 languageName: node linkType: hard @@ -3758,10 +3246,10 @@ __metadata: languageName: node linkType: hard -"@octokit/openapi-types@npm:^17.1.0": - version: 17.1.0 - resolution: "@octokit/openapi-types@npm:17.1.0" - checksum: 166e86549e21d0d40f7eb0aa5a6c3ff904b59bf084ab73faf36e4d2024dc81bad5e32d1c1507a548839d6c354b59fe7b5db296039ed01add3cb0f116b3de2910 +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 856d3bb9f8c666e837dd5e8b8c216ee4342b9ed63ff8da922ca4ce5883ed1dfbec73390eb13d69fbcb4703a4c8b8b6a586df3b0e675ff93bf3d46b5b4fe0968e languageName: node linkType: hard @@ -3772,46 +3260,38 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^6.0.0": - version: 6.0.0 - resolution: "@octokit/plugin-paginate-rest@npm:6.0.0" +"@octokit/plugin-paginate-rest@npm:^6.1.2": + version: 6.1.2 + resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" dependencies: - "@octokit/types": "npm:^9.0.0" + "@octokit/tsconfig": "npm:^1.0.2" + "@octokit/types": "npm:^9.2.3" peerDependencies: "@octokit/core": ">=4" - checksum: 5dbde9bc44d5b70f977d343af7eb65b1a3c6d7178dc52440e5dc565ba2bb772d84a43a235161ae022b59b6a48b089fab0d3aa58157e0636a12fbcead0dc19d84 + checksum: def241c4f00b864822ab6414eaadd8679a6d332004c7e77467cfc1e6d5bdcc453c76bd185710ee942e4df201f9dd2170d960f46af5b14ef6f261a0068f656364 languageName: node linkType: hard "@octokit/plugin-paginate-rest@npm:^9.0.0": - version: 9.1.2 - resolution: "@octokit/plugin-paginate-rest@npm:9.1.2" + version: 9.1.3 + resolution: "@octokit/plugin-paginate-rest@npm:9.1.3" dependencies: - "@octokit/types": "npm:^12.1.1" + "@octokit/types": "npm:^12.2.0" peerDependencies: "@octokit/core": ">=5" - checksum: e94c70f75faef21a5bb7e57d4b0bce52d5d5621a8136f339ab0cd47a4bc14ff378a13ddbc7a5089601337d244809d1794c6bca38a2ee535f40d1d423823abb49 - languageName: node - linkType: hard - -"@octokit/plugin-request-log@npm:^1.0.4": - version: 1.0.4 - resolution: "@octokit/plugin-request-log@npm:1.0.4" - peerDependencies: - "@octokit/core": ">=3" - checksum: 7238585445555db553912e0cdef82801c89c6e5cbc62c23ae086761c23cc4a403d6c3fddd20348bbd42fb7508e2c2fce370eb18fdbe3fbae2c0d2c8be974f4cc + checksum: e6ff2a7f5d0621528e4d5021997354ee56b5cdd612220213707875795bdb10537f79a50b4fa56022ee913d6971e9042064e9c18daaf12022160def0f64245fd7 languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:^7.0.0": - version: 7.0.1 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.0.1" +"@octokit/plugin-retry@npm:^4.1.3": + version: 4.1.6 + resolution: "@octokit/plugin-retry@npm:4.1.6" dependencies: "@octokit/types": "npm:^9.0.0" - deprecation: "npm:^2.3.1" + bottleneck: "npm:^2.15.3" peerDependencies: "@octokit/core": ">=3" - checksum: 4cca2bcae506a8e7d3a9465dbfcac2546e6456a2389951c49617714f0c1152a315e3ad507ba82b6c096814e0bcf694bb17ee3e243926d7a00e6e3912071dd530 + checksum: becda71309b8fde99b2daa6c5ab7c9774adfabc2c950da53741bb911c6cd4db1b4d9cc878498580f8b8e881f491450a57bfaa50b6ad749aea421766675dbebdb languageName: node linkType: hard @@ -3828,6 +3308,18 @@ __metadata: languageName: node linkType: hard +"@octokit/plugin-throttling@npm:^5.2.3": + version: 5.2.3 + resolution: "@octokit/plugin-throttling@npm:5.2.3" + dependencies: + "@octokit/types": "npm:^9.0.0" + bottleneck: "npm:^2.15.3" + peerDependencies: + "@octokit/core": ^4.0.0 + checksum: dd43da3e49c7e92aa6f513aae80702a13899cd9265d9538443063bd9c56e250177b4672bda0894843915b6424c01350647366af2763479f43d6dfe9983d43325 + languageName: node + linkType: hard + "@octokit/plugin-throttling@npm:^8.0.0": version: 8.1.2 resolution: "@octokit/plugin-throttling@npm:8.1.2" @@ -3863,8 +3355,8 @@ __metadata: linkType: hard "@octokit/request@npm:^6.0.0": - version: 6.2.3 - resolution: "@octokit/request@npm:6.2.3" + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" dependencies: "@octokit/endpoint": "npm:^7.0.0" "@octokit/request-error": "npm:^3.0.0" @@ -3872,50 +3364,45 @@ __metadata: is-plain-object: "npm:^5.0.0" node-fetch: "npm:^2.6.7" universal-user-agent: "npm:^6.0.0" - checksum: 8069f7e427ec77d0e8dd5950c4f918084e41d4cd51af02b9c08d651a448e93cf00306180abc28e820c30a426874f10ad4bd12ac16d2afe47e40a64fd68b346ea + checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b languageName: node linkType: hard "@octokit/request@npm:^8.0.1, @octokit/request@npm:^8.0.2": - version: 8.1.4 - resolution: "@octokit/request@npm:8.1.4" + version: 8.1.5 + resolution: "@octokit/request@npm:8.1.5" dependencies: "@octokit/endpoint": "npm:^9.0.0" "@octokit/request-error": "npm:^5.0.0" "@octokit/types": "npm:^12.0.0" is-plain-object: "npm:^5.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 384f06404136b4136940e454333bcfbbbec61efee6ecc2fcec2b38c13b34c7ab3868013b5a51cbe45ccfbac46a57b30c827024ecc6a88636f39aa38feca52339 + checksum: 861f8aea5715d2341e0ebf275548856d6874d814898bf8848252e33a01312bcfacfd9e36c63845cb9b5fe9e4e950809c3f378ab218222a51efacf6018a0e06a8 languageName: node linkType: hard -"@octokit/rest@npm:^19.0.0": - version: 19.0.7 - resolution: "@octokit/rest@npm:19.0.7" - dependencies: - "@octokit/core": "npm:^4.1.0" - "@octokit/plugin-paginate-rest": "npm:^6.0.0" - "@octokit/plugin-request-log": "npm:^1.0.4" - "@octokit/plugin-rest-endpoint-methods": "npm:^7.0.0" - checksum: d70eb152f1be61ef29e4555ad3031e163b0d2a230e7a3fbf0a25b8b73d1674aaf49ab6c965aa8e823aa5bcea1e8068f53bda57613f16033517de72cc022fb38b +"@octokit/tsconfig@npm:^1.0.2": + version: 1.0.2 + resolution: "@octokit/tsconfig@npm:1.0.2" + checksum: 84db70b495beeed69259dd4def14cdfb600edeb65ef32811558c99413ee2b414ed10bff9c4dcc7a43451d0fd36b4925ada9ef7d4272b5eae38cb005cc2f459ac languageName: node linkType: hard -"@octokit/types@npm:^12.0.0, @octokit/types@npm:^12.1.1": - version: 12.1.1 - resolution: "@octokit/types@npm:12.1.1" +"@octokit/types@npm:^12.0.0, @octokit/types@npm:^12.2.0": + version: 12.2.0 + resolution: "@octokit/types@npm:12.2.0" dependencies: "@octokit/openapi-types": "npm:^19.0.2" - checksum: 9c72d969b2c2c7ff03d285636c4cad43ddc55e540ff7a1a75279095219a27c629b5a753cc186aba65f645fa6be52eeb873d070bae0dc8180bdb48f3155bed574 + checksum: 04564d891c80fadcf07f1bbbe1bcff278ecf05a3fbfcbdb9b3e6e350a6f22c226f8f7e8c3435fea4bfbfaa4ee0375fbfa6c5ceaf6738a1570d2bf7d0c899fb81 languageName: node linkType: hard -"@octokit/types@npm:^9.0.0": - version: 9.2.0 - resolution: "@octokit/types@npm:9.2.0" +"@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.3": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" dependencies: - "@octokit/openapi-types": "npm:^17.1.0" - checksum: fcf1742667ee5b508233f6e1d37d7b3c4904fa274451ea06b71671b0e426e6f5de073800ce1b3fa17437a1f1aacec2e041bfb82b14d810111fc425c91611c1bc + "@octokit/openapi-types": "npm:^18.0.0" + checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 languageName: node linkType: hard @@ -3964,13 +3451,13 @@ __metadata: linkType: hard "@peculiar/asn1-schema@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-schema@npm:2.3.6" + version: 2.3.8 + resolution: "@peculiar/asn1-schema@npm:2.3.8" dependencies: asn1js: "npm:^3.0.5" - pvtsutils: "npm:^1.3.2" - tslib: "npm:^2.4.0" - checksum: 86591b1691f6b296b515137d699e45c6384a08f38ddd080dc13a5b7f85d59aa4a0a1c52fa857b47e727c4b997293bc50c0812d22f1ba9ed7b246a8a8aac5491c + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 65f16b2a7eb91365b6dac47730ffcad4617ef04b821e0a4286c379ac7283588b0a6744032ee686e0914a0886c2a055108ed945b9c4d22821a3b123640b61f3b2 languageName: node linkType: hard @@ -3996,86 +3483,79 @@ __metadata: languageName: node linkType: hard -"@pedrouid/environment@npm:^1.0.1": - version: 1.0.1 - resolution: "@pedrouid/environment@npm:1.0.1" - checksum: 4f6cd64962738e7dabc9bed9eaa7bdad41c9e33f2faee954b7888d23e7556671a7d034adb99b93620c39649a633062e96d3ecc94a71a78717636260cf707eef8 - languageName: node - linkType: hard - -"@pendulum-chain/api-derive@npm:0.3.1": - version: 0.3.1 - resolution: "@pendulum-chain/api-derive@npm:0.3.1" +"@pendulum-chain/api-derive@npm:0.3.8": + version: 0.3.8 + resolution: "@pendulum-chain/api-derive@npm:0.3.8" dependencies: "@babel/runtime": "npm:^7.10.2" "@open-web3/orml-types": "npm:^1.1.4" - "@pendulum-chain/types": "npm:0.3.1" + "@pendulum-chain/types": "npm:0.3.8" "@polkadot/api-derive": "npm:^10.6.1" - checksum: 19b057799f4cbadf688b22ab679cfca06c09f528080e336a625dd04059f960e28530f73a0082fb574c153550b552756537d5c65b7951bfe7b61552eced702975 + checksum: 7f7c064043620e84bb6ccc6d3a06d93cab8c88ee584c05b03bf1a3b0560d6ebc2c0a31cddf41326f5457b0db443a8de1f0e96db40344a1bac30139068b6aaf6d languageName: node linkType: hard "@pendulum-chain/api@npm:^0.3.1": - version: 0.3.1 - resolution: "@pendulum-chain/api@npm:0.3.1" + version: 0.3.8 + resolution: "@pendulum-chain/api@npm:0.3.8" dependencies: "@babel/runtime": "npm:^7.10.2" "@open-web3/orml-api-derive": "npm:^1.1.4" - "@pendulum-chain/api-derive": "npm:0.3.1" - "@pendulum-chain/types": "npm:^0.3.1" + "@pendulum-chain/api-derive": "npm:0.3.8" + "@pendulum-chain/types": "npm:^0.3.8" "@polkadot/api": "npm:^10.6.1" peerDependencies: "@polkadot/api": ">=9" "@polkadot/types": ">=9" - checksum: 7edfc299e2a1ecad25482967dd05eb4028bd8155e30b6c66fe5bc3171260046c0662187d748b2b7385d37011f4059a6daf12df347d9c9b7738c7777a6aac930e + checksum: 39b54481505ffce7bea9edd18977725bb309c4f7ad14b9e5f9c91b74296d826532ee9a909e2a7d37542f3a5f705eeea025e006f6e7b88c072e1199149c5c9b18 languageName: node linkType: hard -"@pendulum-chain/type-definitions@npm:0.2.3": - version: 0.2.3 - resolution: "@pendulum-chain/type-definitions@npm:0.2.3" +"@pendulum-chain/type-definitions@npm:0.2.4": + version: 0.2.4 + resolution: "@pendulum-chain/type-definitions@npm:0.2.4" dependencies: "@babel/runtime": "npm:^7.10.2" "@open-web3/orml-type-definitions": "npm:^1.1.4" - checksum: 2b0676b0b1fa5893b220dd89ca7bea4aa3fb17471675b0cf26856496dd9ec8a4fec50d01bbb6793d13f5c548c873cbb486d2a2419c0060f4d4c0bfa7a5c4bc1e + checksum: 1977fd481a7a405455e888c2c3203c5e7d2be68660444507240fd003ffacc11293704e947abffca0857a4cd116ec94c2cbf068f733644adbd9744189fa35e8cc languageName: node linkType: hard -"@pendulum-chain/type-definitions@npm:0.3.1": - version: 0.3.1 - resolution: "@pendulum-chain/type-definitions@npm:0.3.1" +"@pendulum-chain/type-definitions@npm:0.3.8": + version: 0.3.8 + resolution: "@pendulum-chain/type-definitions@npm:0.3.8" dependencies: "@babel/runtime": "npm:^7.10.2" "@open-web3/orml-type-definitions": "npm:^1.1.4" - checksum: 79ab64a443dae320dbe0bc99d793876e608d104cb385adecdb3413cc04bf0c2a6d3f734eb67065d52d9ade78c7f57eb72faed01b1d8ff4a16f61b79e5cf8c4a2 + checksum: 49852e5ea8872054208fe18d689ab52f103ce5c41f1b86de94bdc8a6160ce4bd4f53c2837cd35d680b387c5223f1d943245d8bcd3ad6eb81b12e83db909eae20 languageName: node linkType: hard -"@pendulum-chain/types@npm:0.3.1, @pendulum-chain/types@npm:^0.3.1": - version: 0.3.1 - resolution: "@pendulum-chain/types@npm:0.3.1" +"@pendulum-chain/types@npm:0.3.8, @pendulum-chain/types@npm:^0.3.8": + version: 0.3.8 + resolution: "@pendulum-chain/types@npm:0.3.8" dependencies: "@babel/runtime": "npm:^7.10.2" "@open-web3/api-mobx": "npm:^1.1.4" "@open-web3/orml-types": "npm:^1.1.4" - "@pendulum-chain/type-definitions": "npm:0.3.1" + "@pendulum-chain/type-definitions": "npm:0.3.8" peerDependencies: "@polkadot/api": ">=8" - checksum: e56a85dc0a417378a4f23b8c05e0387853d1d99444605210577741a79996ee1fa6f58e568019dd0db66c06468a8b0b09281ab819c89e64bf2d39271eded57793 + checksum: 43180061b6af7fa7c355917145f64111db36815f70edb61bae649e51429e2edf86f34ba232c8aedfe4a54f4c0558009f45953686f14801cba637ef0137bf7ee7 languageName: node linkType: hard "@pendulum-chain/types@npm:^0.2.3": - version: 0.2.3 - resolution: "@pendulum-chain/types@npm:0.2.3" + version: 0.2.4 + resolution: "@pendulum-chain/types@npm:0.2.4" dependencies: "@babel/runtime": "npm:^7.10.2" "@open-web3/api-mobx": "npm:^1.1.4" "@open-web3/orml-types": "npm:^1.1.4" - "@pendulum-chain/type-definitions": "npm:0.2.3" + "@pendulum-chain/type-definitions": "npm:0.2.4" peerDependencies: "@polkadot/api": ">=8" - checksum: 59efd8330bd4a0eab3db8939c2cf06f5ed47123cfee4820daa63f020cf84133b25689882773b2d2bed865d6e0cc02f4174f38cdb5a4b9c9bcf2785479fdba3dd + checksum: cb2905d3b3342c0a51bc2683be3eb3485e4aafe5a5075c6e7962a8301cdbbc4e62989c711188340b05dd388a94d475f0b42b09d679bd7b6b1b59e104f65e822e languageName: node linkType: hard @@ -4103,43 +3583,28 @@ __metadata: linkType: hard "@pnpm/npm-conf@npm:^2.1.0": - version: 2.2.0 - resolution: "@pnpm/npm-conf@npm:2.2.0" + version: 2.2.2 + resolution: "@pnpm/npm-conf@npm:2.2.2" dependencies: "@pnpm/config.env-replace": "npm:^1.1.0" "@pnpm/network.ca-file": "npm:^1.0.1" config-chain: "npm:^1.1.11" - checksum: fd1859820959682c9a59fa58cd88c5931f0bdd900083f3f202bda3820bf6fe4b9213598b02c8dd2b0986d5bb7d5ce50693c817aca85b73bd28493cfa67255694 + checksum: 71393dcfce85603fddd8484b486767163000afab03918303253ae97992615b91d25942f83751366cb40ad2ee32b0ae0a033561de9d878199a024286ff98b0296 languageName: node linkType: hard -"@polkadot/api-augment@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/api-augment@npm:10.6.1" +"@polkadot/api-augment@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/api-augment@npm:10.10.1" dependencies: - "@polkadot/api-base": "npm:10.6.1" - "@polkadot/rpc-augment": "npm:10.6.1" - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-augment": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: bb6517d15ff971935ad4776baec0f0db368ecdcf46ba4b879194208f44a8c75bd7bad428194dff76da79b61214e01ae592a2f396243c1b2dc9c019653cffbb5e - languageName: node - linkType: hard - -"@polkadot/api-augment@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/api-augment@npm:10.9.1" - dependencies: - "@polkadot/api-base": "npm:10.9.1" - "@polkadot/rpc-augment": "npm:10.9.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-augment": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: d3a0bf407b7ebd007e4b56b1dbe7a1a147f2ba37df45025e900228696af849c62119ba10f0b861b62c5fc6aba8abd615c0349ec595f257c94e7c428144894964 + "@polkadot/api-base": "npm:10.10.1" + "@polkadot/rpc-augment": "npm:10.10.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-augment": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: a50ae11bc9214c56ec9dccaf56562069a63ecdae175958b97d28e85ca65eed7f0b8b4e6686f1bb04535cfed07e68cf39ec0177d4bfc2a616c50b3d210cd8b940 languageName: node linkType: hard @@ -4158,29 +3623,16 @@ __metadata: languageName: node linkType: hard -"@polkadot/api-base@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/api-base@npm:10.6.1" +"@polkadot/api-base@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/api-base@npm:10.10.1" dependencies: - "@polkadot/rpc-core": "npm:10.6.1" - "@polkadot/types": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" + "@polkadot/rpc-core": "npm:10.10.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.0" - checksum: 76a2b27d32187d11a38409351a22b3056b9b263797d02f6f9cdce21a71606f6aeb02a1b50e8b46adee62beb5a308a47843074a3651bbc1f8847a60e7a45b368a - languageName: node - linkType: hard - -"@polkadot/api-base@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/api-base@npm:10.9.1" - dependencies: - "@polkadot/rpc-core": "npm:10.9.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.3" - checksum: 1f078d58d6aa79d13cfc218d8c13fe741c85c47ca6600148f12c5628fd9852ab4147325c9790a745f89f9c79edae2d54002f51ef169f8ae8b1808b967b831fab + tslib: "npm:^2.6.2" + checksum: 1fb82045a022dae5a31c24a07933024b3d2b41ecd18a30bb9c1b2a7bda8ca3efd304e8c3c1e7ab6010de3b1de5add080d4863ae9a17e9be9e4c363f5e5b93ef8 languageName: node linkType: hard @@ -4213,39 +3665,21 @@ __metadata: languageName: node linkType: hard -"@polkadot/api-derive@npm:10.6.1, @polkadot/api-derive@npm:^10.6.1": - version: 10.6.1 - resolution: "@polkadot/api-derive@npm:10.6.1" +"@polkadot/api-derive@npm:10.10.1, @polkadot/api-derive@npm:^10.6.1": + version: 10.10.1 + resolution: "@polkadot/api-derive@npm:10.10.1" dependencies: - "@polkadot/api": "npm:10.6.1" - "@polkadot/api-augment": "npm:10.6.1" - "@polkadot/api-base": "npm:10.6.1" - "@polkadot/rpc-core": "npm:10.6.1" - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - "@polkadot/util-crypto": "npm:^12.1.2" + "@polkadot/api": "npm:10.10.1" + "@polkadot/api-augment": "npm:10.10.1" + "@polkadot/api-base": "npm:10.10.1" + "@polkadot/rpc-core": "npm:10.10.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + "@polkadot/util-crypto": "npm:^12.5.1" rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.0" - checksum: 7c4984a5bc3806ec1c6130e211e905904d2d68cd70ec665719faf0de82f1f6c76f269cca57d5e283159f09c336dab2dc69873ec9c0676630c09096be4459a4c1 - languageName: node - linkType: hard - -"@polkadot/api-derive@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/api-derive@npm:10.9.1" - dependencies: - "@polkadot/api": "npm:10.9.1" - "@polkadot/api-augment": "npm:10.9.1" - "@polkadot/api-base": "npm:10.9.1" - "@polkadot/rpc-core": "npm:10.9.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - "@polkadot/util-crypto": "npm:^12.3.1" - rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.3" - checksum: d7ae1b37e4bf893e02c1c924f859d2e6a1aec3d4ccc120ce8210c93234210f133a67a1809684069ba4d7cdbbd90ab5324eeca9a34513381326dfd6f78b51443d + tslib: "npm:^2.6.2" + checksum: 66ff51bec79181894cd190e5447097a093ca89e186d53be9dbe1a42d75a32ba69cc736fee69e652f4ce978960af1fb112cdb332390eebe34b370c3d2126c3e2e languageName: node linkType: hard @@ -4267,53 +3701,28 @@ __metadata: languageName: node linkType: hard -"@polkadot/api@npm:10.6.1, @polkadot/api@npm:^10.6.1": - version: 10.6.1 - resolution: "@polkadot/api@npm:10.6.1" - dependencies: - "@polkadot/api-augment": "npm:10.6.1" - "@polkadot/api-base": "npm:10.6.1" - "@polkadot/api-derive": "npm:10.6.1" - "@polkadot/keyring": "npm:^12.1.2" - "@polkadot/rpc-augment": "npm:10.6.1" - "@polkadot/rpc-core": "npm:10.6.1" - "@polkadot/rpc-provider": "npm:10.6.1" - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-augment": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/types-create": "npm:10.6.1" - "@polkadot/types-known": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - "@polkadot/util-crypto": "npm:^12.1.2" - eventemitter3: "npm:^5.0.1" - rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.0" - checksum: 6b0391c534e6c23d9832232b68ebeeb203e00fc004f03967c4e3595055b1cb1e881f34f4d00f0b6be4e58a23ae03e0fd328a11424dab336ea8795e8861d7c3a0 - languageName: node - linkType: hard - -"@polkadot/api@npm:10.9.1, @polkadot/api@npm:^10.9.1": - version: 10.9.1 - resolution: "@polkadot/api@npm:10.9.1" - dependencies: - "@polkadot/api-augment": "npm:10.9.1" - "@polkadot/api-base": "npm:10.9.1" - "@polkadot/api-derive": "npm:10.9.1" - "@polkadot/keyring": "npm:^12.3.1" - "@polkadot/rpc-augment": "npm:10.9.1" - "@polkadot/rpc-core": "npm:10.9.1" - "@polkadot/rpc-provider": "npm:10.9.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-augment": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/types-create": "npm:10.9.1" - "@polkadot/types-known": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - "@polkadot/util-crypto": "npm:^12.3.1" +"@polkadot/api@npm:10.10.1, @polkadot/api@npm:^10.6.1, @polkadot/api@npm:^10.9.1": + version: 10.10.1 + resolution: "@polkadot/api@npm:10.10.1" + dependencies: + "@polkadot/api-augment": "npm:10.10.1" + "@polkadot/api-base": "npm:10.10.1" + "@polkadot/api-derive": "npm:10.10.1" + "@polkadot/keyring": "npm:^12.5.1" + "@polkadot/rpc-augment": "npm:10.10.1" + "@polkadot/rpc-core": "npm:10.10.1" + "@polkadot/rpc-provider": "npm:10.10.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-augment": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/types-create": "npm:10.10.1" + "@polkadot/types-known": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + "@polkadot/util-crypto": "npm:^12.5.1" eventemitter3: "npm:^5.0.1" rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.3" - checksum: ec34908d953858e2b6dfeebcca22953c7a188562fc97be9aae3f0cb61eaff0e496c75fff7fdd6c767170cfecadce2cd46d1b5cd44081f7fb32cdd864468bd184 + tslib: "npm:^2.6.2" + checksum: 29754dedc8d0fc3fab2acf4d8e4c99a274a42d7394a0214b17219f4b33d6b96b70ecb033d50fdd9f7e62d83126b97cd9b27be87ea4edeca79296bb40cdc254a2 languageName: node linkType: hard @@ -4390,31 +3799,17 @@ __metadata: languageName: node linkType: hard -"@polkadot/keyring@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/keyring@npm:12.1.2" - dependencies: - "@polkadot/util": "npm:12.1.2" - "@polkadot/util-crypto": "npm:12.1.2" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": 12.1.2 - "@polkadot/util-crypto": 12.1.2 - checksum: ff42c2f021fcc0a860faded30ff973d2096f062df7cc5906674b459566a347d87f28313488a3b71fa43b3bdcaac858609b335c16f1393609d71c55dc9bb5d4d5 - languageName: node - linkType: hard - -"@polkadot/keyring@npm:^12.3.1": - version: 12.3.2 - resolution: "@polkadot/keyring@npm:12.3.2" +"@polkadot/keyring@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/keyring@npm:12.5.1" dependencies: - "@polkadot/util": "npm:12.3.2" - "@polkadot/util-crypto": "npm:12.3.2" - tslib: "npm:^2.5.3" + "@polkadot/util": "npm:12.5.1" + "@polkadot/util-crypto": "npm:12.5.1" + tslib: "npm:^2.6.2" peerDependencies: - "@polkadot/util": 12.3.2 - "@polkadot/util-crypto": 12.3.2 - checksum: de9f9811cb74af9215197322cb7a4b5010c5ce6c07e2c734b2e7ff4b35d9415f4d4199f1efb9d5a3b8c0e641d8dd4348aad9643c2ec6d6bf6c6d69f7bdceaa4c + "@polkadot/util": 12.5.1 + "@polkadot/util-crypto": 12.5.1 + checksum: c9c76a1ced4adf2175ecbc6264fe499d20719d88e81a7e023c5fce11fcf8f40f3481ac155ce69dd8fca180e31ec5d6d8ce5178b946944a6061990f7887f8354d languageName: node linkType: hard @@ -4429,51 +3824,27 @@ __metadata: languageName: node linkType: hard -"@polkadot/networks@npm:12.1.2, @polkadot/networks@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/networks@npm:12.1.2" - dependencies: - "@polkadot/util": "npm:12.1.2" - "@substrate/ss58-registry": "npm:^1.40.0" - tslib: "npm:^2.5.0" - checksum: 8ffee197ff869544d2ff56cc31c8bac10fc9056cd03518c92b29d14dc01762adfd07b73c3899feff1dbcf53164e929deba23c979737a97eaae4548778ef2b98e - languageName: node - linkType: hard - -"@polkadot/networks@npm:12.3.2, @polkadot/networks@npm:^12.3.1": - version: 12.3.2 - resolution: "@polkadot/networks@npm:12.3.2" - dependencies: - "@polkadot/util": "npm:12.3.2" - "@substrate/ss58-registry": "npm:^1.40.0" - tslib: "npm:^2.5.3" - checksum: 580285fbeec56fe5a3a979f5393a379ecf0afe01a27d50029944b46fbbc6679edc084d6e346bdb171f6d68ad89830b85f3db1943d5fefa72c6cc4b98edaac685 - languageName: node - linkType: hard - -"@polkadot/rpc-augment@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/rpc-augment@npm:10.6.1" +"@polkadot/networks@npm:12.5.1, @polkadot/networks@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/networks@npm:12.5.1" dependencies: - "@polkadot/rpc-core": "npm:10.6.1" - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: a05587bdf393d89c1334a235b35a9139b34771683884486df4704d6a2d519534bdf6b0379154d8e6fbccb0edc19291ccc167815a73b740705ddd816765729143 + "@polkadot/util": "npm:12.5.1" + "@substrate/ss58-registry": "npm:^1.43.0" + tslib: "npm:^2.6.2" + checksum: 1aa40e06fcaa6ff5e08b994ee5f8ccaa298bd6ceeed064341c8be4cbde11c7b751f87436015e80ab51377282c9fb43655fa92829312e6ca08de7bd008240f537 languageName: node linkType: hard -"@polkadot/rpc-augment@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/rpc-augment@npm:10.9.1" +"@polkadot/rpc-augment@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/rpc-augment@npm:10.10.1" dependencies: - "@polkadot/rpc-core": "npm:10.9.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: 54d5dddad57f977c35988a0ad75df355060163b32c782cde0c8ee4f7ea5f45a547edcab364a4ec1c74b898a96da5409de7ebd194f2d57ff82d8f6df90000bda1 + "@polkadot/rpc-core": "npm:10.10.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: 1d52c080f9f6302a7b94885224dd407bfc781915b685d9c8079990588b4fb3f2f45435cac9074892109700700818424054992d2fb5650d4b55d2e4b60e84d98e languageName: node linkType: hard @@ -4490,31 +3861,17 @@ __metadata: languageName: node linkType: hard -"@polkadot/rpc-core@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/rpc-core@npm:10.6.1" - dependencies: - "@polkadot/rpc-augment": "npm:10.6.1" - "@polkadot/rpc-provider": "npm:10.6.1" - "@polkadot/types": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.0" - checksum: a97a7a2de344a78e8d1c182992ec62990f3aafde1672f4ff7cce85eb608edcd9a05352e182bf8e9a48f9bb8ee9e9c2eb39b70e918eaee547369fb99031c97274 - languageName: node - linkType: hard - -"@polkadot/rpc-core@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/rpc-core@npm:10.9.1" +"@polkadot/rpc-core@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/rpc-core@npm:10.10.1" dependencies: - "@polkadot/rpc-augment": "npm:10.9.1" - "@polkadot/rpc-provider": "npm:10.9.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" + "@polkadot/rpc-augment": "npm:10.10.1" + "@polkadot/rpc-provider": "npm:10.10.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.3" - checksum: 2cc2ead764450d46f47557862f16ee366e49e52c3209835a4bfdfc4efc74fd3eba8232cef9919c9d8884bf52573aad86d5bfc5183ae31cc27ce1eaba5795d598 + tslib: "npm:^2.6.2" + checksum: 7d8b70f1595aead35f4a0fe1d89c5ae2c3b113d3ec2231b1e415e93a4e4cf7133305b3c29fb16ad94a5e35f5c6d26765d3d0f51e044678c43b6a14d41e0f6759 languageName: node linkType: hard @@ -4532,51 +3889,27 @@ __metadata: languageName: node linkType: hard -"@polkadot/rpc-provider@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/rpc-provider@npm:10.6.1" +"@polkadot/rpc-provider@npm:10.10.1, @polkadot/rpc-provider@npm:^10.9.1": + version: 10.10.1 + resolution: "@polkadot/rpc-provider@npm:10.10.1" dependencies: - "@polkadot/keyring": "npm:^12.1.2" - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-support": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - "@polkadot/util-crypto": "npm:^12.1.2" - "@polkadot/x-fetch": "npm:^12.1.2" - "@polkadot/x-global": "npm:^12.1.2" - "@polkadot/x-ws": "npm:^12.1.2" - "@substrate/connect": "npm:0.7.26" - eventemitter3: "npm:^5.0.1" - mock-socket: "npm:^9.2.1" - nock: "npm:^13.3.1" - tslib: "npm:^2.5.0" - dependenciesMeta: - "@substrate/connect": - optional: true - checksum: d68441ef55382c4594ecbc82db0f55c3e9549709b3c0b39bd4c943879e59add6a5b0188116951c09dda36ad308f96134b966c3ae4a309794ebf5235352b4c0fd - languageName: node - linkType: hard - -"@polkadot/rpc-provider@npm:10.9.1, @polkadot/rpc-provider@npm:^10.9.1": - version: 10.9.1 - resolution: "@polkadot/rpc-provider@npm:10.9.1" - dependencies: - "@polkadot/keyring": "npm:^12.3.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-support": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - "@polkadot/util-crypto": "npm:^12.3.1" - "@polkadot/x-fetch": "npm:^12.3.1" - "@polkadot/x-global": "npm:^12.3.1" - "@polkadot/x-ws": "npm:^12.3.1" - "@substrate/connect": "npm:0.7.26" + "@polkadot/keyring": "npm:^12.5.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-support": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + "@polkadot/util-crypto": "npm:^12.5.1" + "@polkadot/x-fetch": "npm:^12.5.1" + "@polkadot/x-global": "npm:^12.5.1" + "@polkadot/x-ws": "npm:^12.5.1" + "@substrate/connect": "npm:0.7.33" eventemitter3: "npm:^5.0.1" - mock-socket: "npm:^9.2.1" - nock: "npm:^13.3.1" - tslib: "npm:^2.5.3" + mock-socket: "npm:^9.3.1" + nock: "npm:^13.3.4" + tslib: "npm:^2.6.2" dependenciesMeta: "@substrate/connect": optional: true - checksum: 062a81d12661e770ca4b1e900a3da4d1eceb23b728e73817bc28b8538a172c35b7903e10b717542621e00282decf18e91759f4a084096bdc24603ea75fc978db + checksum: 494669912e29669e5e845a4f48eb17a50aa1730d09123386f0ab330d8122b43f78faa8382fa0afbd63d486863235701f6e8cd358e87f10f2bad102e526c70a7c languageName: node linkType: hard @@ -4597,34 +3930,22 @@ __metadata: eventemitter3: "npm:^5.0.0" mock-socket: "npm:^9.2.1" nock: "npm:^13.3.0" - dependenciesMeta: - "@substrate/connect": - optional: true - checksum: 3c288103a5c8766b43824891980ecac1ff16d675388424ac316851c2a80ee2928922f2eaee5e504e2f67720653c7f734c9818df6fee3fbb735616f83679179e5 - languageName: node - linkType: hard - -"@polkadot/types-augment@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/types-augment@npm:10.6.1" - dependencies: - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: 24b9553cc0ec3cb1fe19d07b7f5c5d48e5347d667b97fcbd5cfddebdf21b8ac2df870693a0f2c8dc9c20f3af12e6dc018841cd26c59e728d6055d7c18630e8f0 + dependenciesMeta: + "@substrate/connect": + optional: true + checksum: 3c288103a5c8766b43824891980ecac1ff16d675388424ac316851c2a80ee2928922f2eaee5e504e2f67720653c7f734c9818df6fee3fbb735616f83679179e5 languageName: node linkType: hard -"@polkadot/types-augment@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/types-augment@npm:10.9.1" +"@polkadot/types-augment@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/types-augment@npm:10.10.1" dependencies: - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: 5efaa601551fa83e939a60cddb5fb3c264bb652fb0f8723a93bca4685b855bc2d5fb8def7afc67653423627a94e53f5bbe85ed5bec41d4aeb8294a09afcd6088 + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: 719a82a2bc16aeefc715167c8b4f96594a5cfab3a961e0a799caf937597154eee212ffc8467392a24afa825fdf71ad47a21f52f0d4a034935cb14d8bb9bffde2 languageName: node linkType: hard @@ -4640,25 +3961,14 @@ __metadata: languageName: node linkType: hard -"@polkadot/types-codec@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/types-codec@npm:10.6.1" - dependencies: - "@polkadot/util": "npm:^12.1.2" - "@polkadot/x-bigint": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: 24f0fc6c6623113ecf086745ea47439ec359fbc4022567408f59957f1ee8e3e0ca6c5c0cf02f43af343b19cb2ea1e3f1c3eb7216adbdd01c5fea7b8b09af55ff - languageName: node - linkType: hard - -"@polkadot/types-codec@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/types-codec@npm:10.9.1" +"@polkadot/types-codec@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/types-codec@npm:10.10.1" dependencies: - "@polkadot/util": "npm:^12.3.1" - "@polkadot/x-bigint": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: 0fa7cf538f2e3704570908167f0453b300b9b35f27c5c3ab80c6266c43b2605fab629552ec4fa0e8ded08431aa61ba88877e44a9199aace6f7e2df8a7477e529 + "@polkadot/util": "npm:^12.5.1" + "@polkadot/x-bigint": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: 39bbfeb9dc90d3821e51feae64c976b25a680c692e5cfec7aa0ae71c6c1fa33dd948b5b4ab339d20a87acb3786b2e3381e8dc060de18d65adf9156bdb4d834f5 languageName: node linkType: hard @@ -4673,25 +3983,14 @@ __metadata: languageName: node linkType: hard -"@polkadot/types-create@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/types-create@npm:10.6.1" - dependencies: - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: 11bd4709e8eed1579cad07bfc59c6555189c516804c15695aab92e67f10e940fdb1ecc901d704a0fcac70932e28ef699a4fddc07fee15d128c3b0973fc11cd92 - languageName: node - linkType: hard - -"@polkadot/types-create@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/types-create@npm:10.9.1" +"@polkadot/types-create@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/types-create@npm:10.10.1" dependencies: - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: d075500318edbb209d5308ff37f1288d2d77647bd72dbebe655b784dc946a0e5f5180bb8cdce128b871072c5133fc48e6254e87cf80bfeca42eb9b6a1c2d848f + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: f5c3b7c46d5b1f428f7b96437e9b1d4b8ac40febf81a16e35bf8bc63dff2ff75ec0e798badf459ca7ecac85b1fc585c00af7f686257f88e3a6fb24c7e8f08417 languageName: node linkType: hard @@ -4706,31 +4005,17 @@ __metadata: languageName: node linkType: hard -"@polkadot/types-known@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/types-known@npm:10.6.1" - dependencies: - "@polkadot/networks": "npm:^12.1.2" - "@polkadot/types": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/types-create": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: ef030051b6c29a546a3622e523791da37c07ad4b3dacf6ddb0e7a5382bc2168e277b4a45654a2516ad8221fd62e6432efc5544ff9fdde3c5358152ee08fc51ab - languageName: node - linkType: hard - -"@polkadot/types-known@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/types-known@npm:10.9.1" +"@polkadot/types-known@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/types-known@npm:10.10.1" dependencies: - "@polkadot/networks": "npm:^12.3.1" - "@polkadot/types": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/types-create": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: a06c14e0e8670781167d7b15dfaeb9f0d9f3363de2488cadc3f031b59865a141b6499bcf4f233269a315852d04851950757fed1228529af7f630c93d957cbec9 + "@polkadot/networks": "npm:^12.5.1" + "@polkadot/types": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/types-create": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: 9cee702315485ae01d3f4dea8f8f35cc26ac4d2a406d9d4fc403aef4e2b3446bab75b5d412b948ea98613873df54bba4905ec6203c450fa067185f110835d135 languageName: node linkType: hard @@ -4748,23 +4033,13 @@ __metadata: languageName: node linkType: hard -"@polkadot/types-support@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/types-support@npm:10.6.1" - dependencies: - "@polkadot/util": "npm:^12.1.2" - tslib: "npm:^2.5.0" - checksum: 6333dec7459b07948f78078efa66856a24851a1b0687a96be9d0f5a5b5ce886b4bc3035c607bb2bb89b7116f294c72d827fa49956e3fd17ddb8058d3faff0607 - languageName: node - linkType: hard - -"@polkadot/types-support@npm:10.9.1": - version: 10.9.1 - resolution: "@polkadot/types-support@npm:10.9.1" +"@polkadot/types-support@npm:10.10.1": + version: 10.10.1 + resolution: "@polkadot/types-support@npm:10.10.1" dependencies: - "@polkadot/util": "npm:^12.3.1" - tslib: "npm:^2.5.3" - checksum: e97e7627ff5b4d3bf37ccf2bffb4c329fd0c202251e2c02282081cc7e28f92c07b46d2bed2d05fc6160c3d18443f726abacdd5e7f26872971330ae105513c4fb + "@polkadot/util": "npm:^12.5.1" + tslib: "npm:^2.6.2" + checksum: 35133b9880776138e521fa2dde6cc1c3e117e8883b4af7b0688a4f3046b3a5f47ceff7308f591f2603346af638a97d618c6b0033b2bdb41d7c0e26e4df1a4826 languageName: node linkType: hard @@ -4778,35 +4053,19 @@ __metadata: languageName: node linkType: hard -"@polkadot/types@npm:10.6.1": - version: 10.6.1 - resolution: "@polkadot/types@npm:10.6.1" +"@polkadot/types@npm:10.10.1, @polkadot/types@npm:^10.9.1": + version: 10.10.1 + resolution: "@polkadot/types@npm:10.10.1" dependencies: - "@polkadot/keyring": "npm:^12.1.2" - "@polkadot/types-augment": "npm:10.6.1" - "@polkadot/types-codec": "npm:10.6.1" - "@polkadot/types-create": "npm:10.6.1" - "@polkadot/util": "npm:^12.1.2" - "@polkadot/util-crypto": "npm:^12.1.2" - rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.0" - checksum: 889e55fcce84f732d48419292738d8268cdc08d831ee2e91d994eedb563f9d47e7f71c047cab2a210591a503f276e4968095b8bdd54482106323904ca816a6c8 - languageName: node - linkType: hard - -"@polkadot/types@npm:10.9.1, @polkadot/types@npm:^10.9.1": - version: 10.9.1 - resolution: "@polkadot/types@npm:10.9.1" - dependencies: - "@polkadot/keyring": "npm:^12.3.1" - "@polkadot/types-augment": "npm:10.9.1" - "@polkadot/types-codec": "npm:10.9.1" - "@polkadot/types-create": "npm:10.9.1" - "@polkadot/util": "npm:^12.3.1" - "@polkadot/util-crypto": "npm:^12.3.1" + "@polkadot/keyring": "npm:^12.5.1" + "@polkadot/types-augment": "npm:10.10.1" + "@polkadot/types-codec": "npm:10.10.1" + "@polkadot/types-create": "npm:10.10.1" + "@polkadot/util": "npm:^12.5.1" + "@polkadot/util-crypto": "npm:^12.5.1" rxjs: "npm:^7.8.1" - tslib: "npm:^2.5.3" - checksum: 0dc53688bebc38188038844290256e8191a72bc921772bc9fe6c58fcc9532ec8cc411a192e835195caca62d919899870b7f25c2d4c066ca77b5a5cc6268b89b0 + tslib: "npm:^2.6.2" + checksum: b348d09594e0576ea911c1dbf18e81d9d3a4b73fe32747626573931d94695533a00dca3ab18801a851c0fa6580daed055dba3e25f9afc78e9c0d66eab7628a30 languageName: node linkType: hard @@ -4847,43 +4106,23 @@ __metadata: languageName: node linkType: hard -"@polkadot/util-crypto@npm:12.1.2, @polkadot/util-crypto@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/util-crypto@npm:12.1.2" - dependencies: - "@noble/curves": "npm:1.0.0" - "@noble/hashes": "npm:1.3.0" - "@polkadot/networks": "npm:12.1.2" - "@polkadot/util": "npm:12.1.2" - "@polkadot/wasm-crypto": "npm:^7.1.2" - "@polkadot/wasm-util": "npm:^7.1.2" - "@polkadot/x-bigint": "npm:12.1.2" - "@polkadot/x-randomvalues": "npm:12.1.2" - "@scure/base": "npm:1.1.1" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": 12.1.2 - checksum: 478c2e44e6f6383e992d34aa2c588a87270bdd6ff371bb0e0b685293fbbb7e458b1085f976368dae8facbaf0cce608baa12dc67fb0294f32784833418bb5d38a - languageName: node - linkType: hard - -"@polkadot/util-crypto@npm:12.3.2, @polkadot/util-crypto@npm:^12.3.1, @polkadot/util-crypto@npm:^12.3.2": - version: 12.3.2 - resolution: "@polkadot/util-crypto@npm:12.3.2" +"@polkadot/util-crypto@npm:12.5.1, @polkadot/util-crypto@npm:^12.3.2, @polkadot/util-crypto@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/util-crypto@npm:12.5.1" dependencies: - "@noble/curves": "npm:1.1.0" - "@noble/hashes": "npm:1.3.1" - "@polkadot/networks": "npm:12.3.2" - "@polkadot/util": "npm:12.3.2" - "@polkadot/wasm-crypto": "npm:^7.2.1" - "@polkadot/wasm-util": "npm:^7.2.1" - "@polkadot/x-bigint": "npm:12.3.2" - "@polkadot/x-randomvalues": "npm:12.3.2" - "@scure/base": "npm:1.1.1" - tslib: "npm:^2.5.3" + "@noble/curves": "npm:^1.2.0" + "@noble/hashes": "npm:^1.3.2" + "@polkadot/networks": "npm:12.5.1" + "@polkadot/util": "npm:12.5.1" + "@polkadot/wasm-crypto": "npm:^7.2.2" + "@polkadot/wasm-util": "npm:^7.2.2" + "@polkadot/x-bigint": "npm:12.5.1" + "@polkadot/x-randomvalues": "npm:12.5.1" + "@scure/base": "npm:^1.1.3" + tslib: "npm:^2.6.2" peerDependencies: - "@polkadot/util": 12.3.2 - checksum: f594e84569cb86177b3ba40ba966a7197249f33590a48b925ff0b9cd17a43c3948a6200d955756f65ee97e231e5a9b3e5854021315655e010fb111d63d24c385 + "@polkadot/util": 12.5.1 + checksum: dad38ba6592d2b85e88ef29508f4ef161ba88cfaffb5d9e687f06bccae4482409908bfcb6d4565ee34bc443b1cd1e9aa696147d86f671e5d219feaedc5d84fdc languageName: node linkType: hard @@ -4902,33 +4141,18 @@ __metadata: languageName: node linkType: hard -"@polkadot/util@npm:12.1.2, @polkadot/util@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/util@npm:12.1.2" - dependencies: - "@polkadot/x-bigint": "npm:12.1.2" - "@polkadot/x-global": "npm:12.1.2" - "@polkadot/x-textdecoder": "npm:12.1.2" - "@polkadot/x-textencoder": "npm:12.1.2" - "@types/bn.js": "npm:^5.1.1" - bn.js: "npm:^5.2.1" - tslib: "npm:^2.5.0" - checksum: 21cdb4cd831ae14bf6708025ca6dbc77ff8524b3660f226c473ddf3233fe62fcaade4f21e57d3dd5c6e28108806b7c4fa50580724ee378d4b40957cedd5b047a - languageName: node - linkType: hard - -"@polkadot/util@npm:12.3.2, @polkadot/util@npm:^12.3.1, @polkadot/util@npm:^12.3.2": - version: 12.3.2 - resolution: "@polkadot/util@npm:12.3.2" +"@polkadot/util@npm:12.5.1, @polkadot/util@npm:^12.3.2, @polkadot/util@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/util@npm:12.5.1" dependencies: - "@polkadot/x-bigint": "npm:12.3.2" - "@polkadot/x-global": "npm:12.3.2" - "@polkadot/x-textdecoder": "npm:12.3.2" - "@polkadot/x-textencoder": "npm:12.3.2" + "@polkadot/x-bigint": "npm:12.5.1" + "@polkadot/x-global": "npm:12.5.1" + "@polkadot/x-textdecoder": "npm:12.5.1" + "@polkadot/x-textencoder": "npm:12.5.1" "@types/bn.js": "npm:^5.1.1" bn.js: "npm:^5.2.1" - tslib: "npm:^2.5.3" - checksum: 2772b0f373a50bdd7aaabb69c19006e757bf70559946a8bdecf44e01265a184fa4226ae901f87403f23fffd0eecc0203bdd16dd3fd8aa545b6abf1106942b5dc + tslib: "npm:^2.6.2" + checksum: 79aa82a1dfc24dbda1e54b0854b07663eb6034a46b06e0e2b2d097049835465e8726f9a56f39a24aef7cff1338653267444f28f698c1c49d3ad475244ec3c8df languageName: node linkType: hard @@ -4944,29 +4168,16 @@ __metadata: languageName: node linkType: hard -"@polkadot/wasm-bridge@npm:7.1.2": - version: 7.1.2 - resolution: "@polkadot/wasm-bridge@npm:7.1.2" - dependencies: - "@polkadot/wasm-util": "npm:7.1.2" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": "*" - "@polkadot/x-randomvalues": "*" - checksum: 25a06eae807a10c369375d8e8dab8aef0e7a432c8211f9b096d258c5002584d766811512d723b72a8fd993de11b801bfdabd0248d0ddf3b703012d9e67d576c5 - languageName: node - linkType: hard - -"@polkadot/wasm-bridge@npm:7.2.1": - version: 7.2.1 - resolution: "@polkadot/wasm-bridge@npm:7.2.1" +"@polkadot/wasm-bridge@npm:7.2.2": + version: 7.2.2 + resolution: "@polkadot/wasm-bridge@npm:7.2.2" dependencies: - "@polkadot/wasm-util": "npm:7.2.1" - tslib: "npm:^2.5.0" + "@polkadot/wasm-util": "npm:7.2.2" + tslib: "npm:^2.6.1" peerDependencies: "@polkadot/util": "*" "@polkadot/x-randomvalues": "*" - checksum: 836d0d03414ed4f4c57588cd0aae427e6a7ef6944e638e22d8d1505cde6cb3dca1bc7d8cf1bac0258f215d7d167aa882567db294989c8a9742e12008e35d463d + checksum: dd898c301644a8a372a00f2b90dcf7252830af050a751c6776576e826bd1176cc5e0b83a4f78673a6307a4d29e1095e4ebc9076eaffc86819a6a4e99c62ab190 languageName: node linkType: hard @@ -4981,25 +4192,14 @@ __metadata: languageName: node linkType: hard -"@polkadot/wasm-crypto-asmjs@npm:7.1.2": - version: 7.1.2 - resolution: "@polkadot/wasm-crypto-asmjs@npm:7.1.2" - dependencies: - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": "*" - checksum: 63aee01c7056a2e475a1926917c78bcd8630fc0c414b00824995641b79c4f079a636bc784a0bf6e3a7c352e76b58e667b70a16727f6674c2c949baf93008b62c - languageName: node - linkType: hard - -"@polkadot/wasm-crypto-asmjs@npm:7.2.1": - version: 7.2.1 - resolution: "@polkadot/wasm-crypto-asmjs@npm:7.2.1" +"@polkadot/wasm-crypto-asmjs@npm:7.2.2": + version: 7.2.2 + resolution: "@polkadot/wasm-crypto-asmjs@npm:7.2.2" dependencies: - tslib: "npm:^2.5.0" + tslib: "npm:^2.6.1" peerDependencies: "@polkadot/util": "*" - checksum: 99f170974785c04e5cad52f79fa830d66870fdcce6b4e06d8176b6cc8f9bf91b42be5dcf89669747d9db9ff5f9ced01febd1ce5f3d04fc9375707196715a3372 + checksum: 9a3f14b24ae8e130b2815a32f4e00bf13d75660ec11867d597415242fa2b9ea40acecca8bac0377852d3d3836d45d138f231bbfaf561cc5b810fa2c9816db86e languageName: node linkType: hard @@ -5018,35 +4218,19 @@ __metadata: languageName: node linkType: hard -"@polkadot/wasm-crypto-init@npm:7.1.2": - version: 7.1.2 - resolution: "@polkadot/wasm-crypto-init@npm:7.1.2" - dependencies: - "@polkadot/wasm-bridge": "npm:7.1.2" - "@polkadot/wasm-crypto-asmjs": "npm:7.1.2" - "@polkadot/wasm-crypto-wasm": "npm:7.1.2" - "@polkadot/wasm-util": "npm:7.1.2" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": "*" - "@polkadot/x-randomvalues": "*" - checksum: d5e181f7052f4175165f2a7238c8067a569624076758691865669424a6b81106c1481206d035a5c6841a0077f0381d3282e66b24fb09ab6b26ba570a3f9b1398 - languageName: node - linkType: hard - -"@polkadot/wasm-crypto-init@npm:7.2.1": - version: 7.2.1 - resolution: "@polkadot/wasm-crypto-init@npm:7.2.1" +"@polkadot/wasm-crypto-init@npm:7.2.2": + version: 7.2.2 + resolution: "@polkadot/wasm-crypto-init@npm:7.2.2" dependencies: - "@polkadot/wasm-bridge": "npm:7.2.1" - "@polkadot/wasm-crypto-asmjs": "npm:7.2.1" - "@polkadot/wasm-crypto-wasm": "npm:7.2.1" - "@polkadot/wasm-util": "npm:7.2.1" - tslib: "npm:^2.5.0" + "@polkadot/wasm-bridge": "npm:7.2.2" + "@polkadot/wasm-crypto-asmjs": "npm:7.2.2" + "@polkadot/wasm-crypto-wasm": "npm:7.2.2" + "@polkadot/wasm-util": "npm:7.2.2" + tslib: "npm:^2.6.1" peerDependencies: "@polkadot/util": "*" "@polkadot/x-randomvalues": "*" - checksum: 45a93e2ffd0bfb69d3e8c0b82d3856d69818ff9581d3012541ea9bf5dad56cfea33ecd2c9e7d02facad7fe519b62acb3aa1f8da1fba98039a853b40ae74b58c9 + checksum: 959cdfea3b8c480b4ac18689db4a1da7c4100a68e46983cebd62a150ea38120b52a02f720320f5ca70af8d8dcef73c2ab2c001b77d5e7c662b0e84a8486c07e7 languageName: node linkType: hard @@ -5062,27 +4246,15 @@ __metadata: languageName: node linkType: hard -"@polkadot/wasm-crypto-wasm@npm:7.1.2": - version: 7.1.2 - resolution: "@polkadot/wasm-crypto-wasm@npm:7.1.2" - dependencies: - "@polkadot/wasm-util": "npm:7.1.2" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": "*" - checksum: e73cbeee9928a8ede7c3afb1477746494813f5b9e265a6bf983172ccfef716aa4b0153fbf3217b4fd4211b08f6bf9065dae592a59919c3c2f343f0e701b35084 - languageName: node - linkType: hard - -"@polkadot/wasm-crypto-wasm@npm:7.2.1": - version: 7.2.1 - resolution: "@polkadot/wasm-crypto-wasm@npm:7.2.1" +"@polkadot/wasm-crypto-wasm@npm:7.2.2": + version: 7.2.2 + resolution: "@polkadot/wasm-crypto-wasm@npm:7.2.2" dependencies: - "@polkadot/wasm-util": "npm:7.2.1" - tslib: "npm:^2.5.0" + "@polkadot/wasm-util": "npm:7.2.2" + tslib: "npm:^2.6.1" peerDependencies: "@polkadot/util": "*" - checksum: 08b34550a3a8aa25ecc7403e4e68fd1263aea883230bc79e2736c3079857fa6b45d129d2676e6304f46949249739b037a1277385f0d85336de95b92b41561463 + checksum: dea92a16281c8d4858cb56bdd85f8b5ca56f3382ddf9321342693359051621c4ff65bc6bf4569df57cf0c65e6e56870b4a87c8d12214eb06cdd1ceae87220382 languageName: node linkType: hard @@ -5103,37 +4275,20 @@ __metadata: languageName: node linkType: hard -"@polkadot/wasm-crypto@npm:^7.1.2": - version: 7.1.2 - resolution: "@polkadot/wasm-crypto@npm:7.1.2" - dependencies: - "@polkadot/wasm-bridge": "npm:7.1.2" - "@polkadot/wasm-crypto-asmjs": "npm:7.1.2" - "@polkadot/wasm-crypto-init": "npm:7.1.2" - "@polkadot/wasm-crypto-wasm": "npm:7.1.2" - "@polkadot/wasm-util": "npm:7.1.2" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": "*" - "@polkadot/x-randomvalues": "*" - checksum: f6e54146faddaa33d342a1db054d1b8ac4e8530643ae758af55b5bed4c91cccd89e041614d957074b012bed276c933c2becdde4d6c44fdc8c88e4527c1e808cd - languageName: node - linkType: hard - -"@polkadot/wasm-crypto@npm:^7.2.1": - version: 7.2.1 - resolution: "@polkadot/wasm-crypto@npm:7.2.1" +"@polkadot/wasm-crypto@npm:^7.2.2": + version: 7.2.2 + resolution: "@polkadot/wasm-crypto@npm:7.2.2" dependencies: - "@polkadot/wasm-bridge": "npm:7.2.1" - "@polkadot/wasm-crypto-asmjs": "npm:7.2.1" - "@polkadot/wasm-crypto-init": "npm:7.2.1" - "@polkadot/wasm-crypto-wasm": "npm:7.2.1" - "@polkadot/wasm-util": "npm:7.2.1" - tslib: "npm:^2.5.0" + "@polkadot/wasm-bridge": "npm:7.2.2" + "@polkadot/wasm-crypto-asmjs": "npm:7.2.2" + "@polkadot/wasm-crypto-init": "npm:7.2.2" + "@polkadot/wasm-crypto-wasm": "npm:7.2.2" + "@polkadot/wasm-util": "npm:7.2.2" + tslib: "npm:^2.6.1" peerDependencies: "@polkadot/util": "*" "@polkadot/x-randomvalues": "*" - checksum: 70cc487fecbcb51be37a887907fbed695fefb2162200224462b87a2e75f758db8c6695a88f0fdd22c2cf308f30a887660b1184449dd8abc724ee6636c2d2c5d1 + checksum: 55d0c22269802ad48e6d0fe3c889eb4d5f09a0329e0e0059fee47f60e82c700823c9bf9ba123b961d5523a3eb391d5e485612f84c9b348e4b18619109a0fae29 languageName: node linkType: hard @@ -5148,25 +4303,14 @@ __metadata: languageName: node linkType: hard -"@polkadot/wasm-util@npm:7.1.2, @polkadot/wasm-util@npm:^7.1.2": - version: 7.1.2 - resolution: "@polkadot/wasm-util@npm:7.1.2" - dependencies: - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": "*" - checksum: bf5aa1056049d9f7a3898fe2c6d4883a37017b460d79bb99abd7eaeb7b1527136d5f10826cab59866516bb8a0ae186f50ee60729ba17ec11dfa829e3cfb72294 - languageName: node - linkType: hard - -"@polkadot/wasm-util@npm:7.2.1, @polkadot/wasm-util@npm:^7.2.1": - version: 7.2.1 - resolution: "@polkadot/wasm-util@npm:7.2.1" +"@polkadot/wasm-util@npm:7.2.2, @polkadot/wasm-util@npm:^7.2.2": + version: 7.2.2 + resolution: "@polkadot/wasm-util@npm:7.2.2" dependencies: - tslib: "npm:^2.5.0" + tslib: "npm:^2.6.1" peerDependencies: "@polkadot/util": "*" - checksum: e8a352f1fcce0c6279d05feb79bc2844ff4e8757f8a5b8db91df8f0600cb6a4dd5cc818324d5fe035a050cf8663179285abe94f8c3b6c9fe5738c0efef51d558 + checksum: 6d167d7e38d030510b2664bf13f25d8cbcc762c48af6b1e57dc8072b40a0e85092a92427466d799832e9dd8d01a5361fd6b3a6cc19dce56c4accd6df347c8f8c languageName: node linkType: hard @@ -5180,23 +4324,13 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-bigint@npm:12.1.2, @polkadot/x-bigint@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-bigint@npm:12.1.2" - dependencies: - "@polkadot/x-global": "npm:12.1.2" - tslib: "npm:^2.5.0" - checksum: a375074e3ca44352603b2030c8504b15bfb79114d72ccee5c49e394a774f3e4ff62f31988ccca18e84ce6068bad827f6ffe4c8876483159aee0102ed69df0826 - languageName: node - linkType: hard - -"@polkadot/x-bigint@npm:12.3.2, @polkadot/x-bigint@npm:^12.3.1": - version: 12.3.2 - resolution: "@polkadot/x-bigint@npm:12.3.2" +"@polkadot/x-bigint@npm:12.5.1, @polkadot/x-bigint@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-bigint@npm:12.5.1" dependencies: - "@polkadot/x-global": "npm:12.3.2" - tslib: "npm:^2.5.3" - checksum: 38109d942378ec02bf73b904c6304a1f7c3e7769cb259284de0ffbf0e27056fe1f3a679aaed4e63ea2fd91eb1bc2c69371a87a93f621de2ddc3fcf9cdbc29298 + "@polkadot/x-global": "npm:12.5.1" + tslib: "npm:^2.6.2" + checksum: 352593e149a8a4046668d9aef49a434015534783ba2e3891386289c132717b8ee8ca6e892ec08bca20435c2c56280a78d0a505a88dfae82d9675729578b5f80b languageName: node linkType: hard @@ -5212,25 +4346,14 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-fetch@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-fetch@npm:12.1.2" - dependencies: - "@polkadot/x-global": "npm:12.1.2" - node-fetch: "npm:^3.3.1" - tslib: "npm:^2.5.0" - checksum: e126b4c737965ca75d93f95bfcfb0b78f0905f3d5b246c6dc60e49c64256c633fd57d72e5d512c4fbdcfdfd88b112fc7ef10d0ac7745359e0ff2d716911c0b40 - languageName: node - linkType: hard - -"@polkadot/x-fetch@npm:^12.3.1": - version: 12.3.2 - resolution: "@polkadot/x-fetch@npm:12.3.2" +"@polkadot/x-fetch@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-fetch@npm:12.5.1" dependencies: - "@polkadot/x-global": "npm:12.3.2" - node-fetch: "npm:^3.3.1" - tslib: "npm:^2.5.3" - checksum: 3359f19f6f0f58a0b1bab158993cf7f6b935d1cb366973ebe24788f91fd4996e99bffa73b1df6d019cd225f78c29cc3db5f342a3888bf4522c87c359a95f8856 + "@polkadot/x-global": "npm:12.5.1" + node-fetch: "npm:^3.3.2" + tslib: "npm:^2.6.2" + checksum: efc3e6328881866173896289435ab73d79b6b1a7cacc9737130152411241429c2cb5e6f5e52c44e8a608c7f600ef1658405292d5ed00ed98930349504a728d8a languageName: node linkType: hard @@ -5243,21 +4366,12 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-global@npm:12.1.2, @polkadot/x-global@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-global@npm:12.1.2" - dependencies: - tslib: "npm:^2.5.0" - checksum: 4c083c7968c2de4e90f4a9e991f12a3a185692062d4867a47fcd6f1818bd01722debb92d04599ab701494db6c9a2835236e0f2008a7c64a5b269059237d7fcca - languageName: node - linkType: hard - -"@polkadot/x-global@npm:12.3.2, @polkadot/x-global@npm:^12.3.1, @polkadot/x-global@npm:^12.3.2": - version: 12.3.2 - resolution: "@polkadot/x-global@npm:12.3.2" +"@polkadot/x-global@npm:12.5.1, @polkadot/x-global@npm:^12.3.2, @polkadot/x-global@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-global@npm:12.5.1" dependencies: - tslib: "npm:^2.5.3" - checksum: de1188c82f0a05164eafbac97855943366afff37506c97947b916b291142e2206a0fb6e88ba11b5d280732d7515020958d6c3b3ab984a0c04a0b156a2477f8a4 + tslib: "npm:^2.6.2" + checksum: 89e2ffeb06f16d414928f2ef09fd0fbf6e1a3afcd8579e0461284b7019ffd7393ad473723a9246fd4f63f10f55bfba4896a6631627fe9d5179daddedfd92d512 languageName: node linkType: hard @@ -5271,29 +4385,16 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-randomvalues@npm:12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-randomvalues@npm:12.1.2" - dependencies: - "@polkadot/x-global": "npm:12.1.2" - tslib: "npm:^2.5.0" - peerDependencies: - "@polkadot/util": 12.1.2 - "@polkadot/wasm-util": "*" - checksum: fad504a9df1bf1620e7c3edc86edfe8c63042fb4c2f289ce4bd8e3d69e65306ef1068cc451608de4c1a7a1dec7ef4fe35a7a5e32800768ec35546b7d59528178 - languageName: node - linkType: hard - -"@polkadot/x-randomvalues@npm:12.3.2": - version: 12.3.2 - resolution: "@polkadot/x-randomvalues@npm:12.3.2" +"@polkadot/x-randomvalues@npm:12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-randomvalues@npm:12.5.1" dependencies: - "@polkadot/x-global": "npm:12.3.2" - tslib: "npm:^2.5.3" + "@polkadot/x-global": "npm:12.5.1" + tslib: "npm:^2.6.2" peerDependencies: - "@polkadot/util": 12.3.2 + "@polkadot/util": 12.5.1 "@polkadot/wasm-util": "*" - checksum: d0a546c2be7b0a3fb41dd4e267bff93d4f35d06f59dff3273f8717a48d79c14a050ad2db36b764ee02e7e2a6ac659ee490d6f19e7fd310ba4d548114744237f4 + checksum: 30c6d007cc4bc1db28ced432e6177b70e3b92f6f6f752e36d5c78fb27c089261e6cf55e7a2782ac4bd8a8315b265efc702108fe6b4a711516e79f6249ccfe8d4 languageName: node linkType: hard @@ -5307,23 +4408,13 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-textdecoder@npm:12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-textdecoder@npm:12.1.2" - dependencies: - "@polkadot/x-global": "npm:12.1.2" - tslib: "npm:^2.5.0" - checksum: c409f7a3264534c8758a4676262e91d140e10f609e79c2145295d8566d5838dc08cd0311efefaa1172a51419b7ee8f7d9b4e65c36c3d737ebde0db883e584174 - languageName: node - linkType: hard - -"@polkadot/x-textdecoder@npm:12.3.2": - version: 12.3.2 - resolution: "@polkadot/x-textdecoder@npm:12.3.2" +"@polkadot/x-textdecoder@npm:12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-textdecoder@npm:12.5.1" dependencies: - "@polkadot/x-global": "npm:12.3.2" - tslib: "npm:^2.5.3" - checksum: 57810a92f8eabd29fc91f06dd0f0701f12053765c257371a8a768ba06df06a9eb906692049562dc904bf9ce05a50abaaabe25cc1b66a5a2d8c6e81bf42fa9a67 + "@polkadot/x-global": "npm:12.5.1" + tslib: "npm:^2.6.2" + checksum: badfbfbbc07f50c5b2f448dd4628c6685996beb58bef98e1f6f9a54da0870dc4adc5f230f949c3768da5e06d394117ba1396c8e3708bf8be79281e72dd9e92c0 languageName: node linkType: hard @@ -5337,23 +4428,13 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-textencoder@npm:12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-textencoder@npm:12.1.2" - dependencies: - "@polkadot/x-global": "npm:12.1.2" - tslib: "npm:^2.5.0" - checksum: cb5c8bca4da1ab8eaee235120861b2ff985f241f9a3e5187d37158456eaa8685df9a980e3b47993b76af49d4790662ffd538d307148cacaa924fcfe9d90e71b7 - languageName: node - linkType: hard - -"@polkadot/x-textencoder@npm:12.3.2": - version: 12.3.2 - resolution: "@polkadot/x-textencoder@npm:12.3.2" +"@polkadot/x-textencoder@npm:12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-textencoder@npm:12.5.1" dependencies: - "@polkadot/x-global": "npm:12.3.2" - tslib: "npm:^2.5.3" - checksum: 42893a49976d17e6ca57dcf6ab18f960b817c25f82a8a25630ee17855886acf47639b8168e72852a312e542d0ff7dc0a574db882c3aa5a0387d637da9cf1e8ed + "@polkadot/x-global": "npm:12.5.1" + tslib: "npm:^2.6.2" + checksum: 8729898ebfd4c084aa1df132692a5229d44e2938ffda94c6b59daae7f406d3129761e3ee3504b06ab641f6d5de735fbe41e28681d5f2ac10873cd67a3cde606e languageName: node linkType: hard @@ -5369,101 +4450,90 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-ws@npm:^12.1.2": - version: 12.1.2 - resolution: "@polkadot/x-ws@npm:12.1.2" - dependencies: - "@polkadot/x-global": "npm:12.1.2" - tslib: "npm:^2.5.0" - ws: "npm:^8.13.0" - checksum: 29de90fe090c63b4fbc91471ee13d55e8b8cc707b7acd30ddf0d75061df836623a217f4644d23a0839505002d07909fcedbf758366af155702e3a363b3891637 - languageName: node - linkType: hard - -"@polkadot/x-ws@npm:^12.3.1": - version: 12.3.2 - resolution: "@polkadot/x-ws@npm:12.3.2" +"@polkadot/x-ws@npm:^12.5.1": + version: 12.5.1 + resolution: "@polkadot/x-ws@npm:12.5.1" dependencies: - "@polkadot/x-global": "npm:12.3.2" - tslib: "npm:^2.5.3" - ws: "npm:^8.13.0" - checksum: 181b2b22cd2381112b6d6a8a9f081b52e663a85655103ab6da19aa95bf7e3905ba7594d997e3f64cb17695b49823647dd6f25a54ad7d5fadccfd5042ad164091 + "@polkadot/x-global": "npm:12.5.1" + tslib: "npm:^2.6.2" + ws: "npm:^8.14.1" + checksum: ede0ddec76a2cab1c5c6056af1abf35f12f7dcdc4f64555ffecf5fa885937feedf713389535702a667ef6c46f53b348cf42a49fad413e3e16266ba8faa159d2f languageName: node linkType: hard "@preact/preset-vite@npm:^2.5.0": - version: 2.5.0 - resolution: "@preact/preset-vite@npm:2.5.0" + version: 2.6.0 + resolution: "@preact/preset-vite@npm:2.6.0" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.14.9" - "@babel/plugin-transform-react-jsx-development": "npm:^7.16.7" - "@prefresh/vite": "npm:^2.2.8" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" + "@prefresh/vite": "npm:^2.4.1" "@rollup/pluginutils": "npm:^4.1.1" babel-plugin-transform-hook-names: "npm:^1.0.2" - debug: "npm:^4.3.1" - kolorist: "npm:^1.2.10" - resolve: "npm:^1.20.0" + debug: "npm:^4.3.4" + kolorist: "npm:^1.8.0" + resolve: "npm:^1.22.8" peerDependencies: "@babel/core": 7.x vite: 2.x || 3.x || 4.x - checksum: 109f2a64717357f76685cd45ec1f709c2ba83e88a8dc485b39dec8cb1178eda765fe929b47d83690cbee1fa6181209f79ba4f7cbec15bcaa1cbb45730af8946a + checksum: 6f9752230947269e56979f99738c1a87dcc8039cb11bf0f9045a7eff7a51c34635dfaabc162d861e1853f77ac3dba41313549c51746413cbb17a6a032320976c languageName: node linkType: hard -"@prefresh/babel-plugin@npm:0.4.4": - version: 0.4.4 - resolution: "@prefresh/babel-plugin@npm:0.4.4" - checksum: a05b009e3ebc24cc0f68862282564890a5e15a0c88c4dbc207bc765e75c20977373744f11af98a0f5b15023616b27a2d1831d82b611c0df0028333e2e786219f +"@prefresh/babel-plugin@npm:0.5.0": + version: 0.5.0 + resolution: "@prefresh/babel-plugin@npm:0.5.0" + checksum: 71cbfb52f3f4e29c2cc6a3b7adee87ac7d9c074edfe2f87b3f90ab006123572fab6dd679aa125b8a94e4669578f172ef0b1732d0d6c2b2fc158d0c765a87b70f languageName: node linkType: hard -"@prefresh/core@npm:^1.3.3": - version: 1.4.1 - resolution: "@prefresh/core@npm:1.4.1" +"@prefresh/core@npm:^1.5.1": + version: 1.5.2 + resolution: "@prefresh/core@npm:1.5.2" peerDependencies: preact: ^10.0.0 - checksum: 08dfe7f8b41e09a5cac0250757d79f08865998892e205196cf6fa1b9e3ad4778cb7cb06d3e4513de1f4bdfaa5ded0a73f72e189ebc11e4f545a2d40288c3d709 + checksum: 53d1ce714ed098ccc11f3a8e2826ff6b90237445c24df6281eb162791b534d1d7626a43c0c1c7427139d2ade658e1ba7020963c001135bbdbeeb15073008529b languageName: node linkType: hard -"@prefresh/utils@npm:^1.1.2": - version: 1.1.3 - resolution: "@prefresh/utils@npm:1.1.3" - checksum: 718dca5803e0d7a561dc1cf8f6e2e14987dd2436173e4c8c5268d87b093c8cef08de106e0f1513638bf48e2173fe6607f3eb558c8a459abcb697706ab7cea306 +"@prefresh/utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@prefresh/utils@npm:1.2.0" + checksum: 38cdc6cbb5e18df36996161214eb1097db3361cb0b6402a8012cbe500ba8fb5bcbdc39a687d3b6d67e99f6c340ed77d59f27ab167dfc1655eb4d783740d87d52 languageName: node linkType: hard -"@prefresh/vite@npm:^2.2.8": - version: 2.2.9 - resolution: "@prefresh/vite@npm:2.2.9" +"@prefresh/vite@npm:^2.4.1": + version: 2.4.3 + resolution: "@prefresh/vite@npm:2.4.3" dependencies: - "@babel/core": "npm:^7.9.6" - "@prefresh/babel-plugin": "npm:0.4.4" - "@prefresh/core": "npm:^1.3.3" - "@prefresh/utils": "npm:^1.1.2" - "@rollup/pluginutils": "npm:^4.1.0" + "@babel/core": "npm:^7.22.1" + "@prefresh/babel-plugin": "npm:0.5.0" + "@prefresh/core": "npm:^1.5.1" + "@prefresh/utils": "npm:^1.2.0" + "@rollup/pluginutils": "npm:^4.2.1" peerDependencies: preact: ^10.4.0 - vite: ">=2.0.0-beta.3" - checksum: 0c3b59a44d013a00935e027926ffd0bc47892350e98d3639a28e72b3cea4d045a5b2148854da6b32f1ba38230cb068811702d700e2a7da1b697a353c7b330682 + vite: ">=2.0.0" + checksum: a8b71895ed71ba371553e3a2c185c952da6820f0a2668c3a22912661f302cedb1048654214f5a7ae4697e3599f453ba3a078140c767d5d0ffa9bd411c15d08e8 languageName: node linkType: hard -"@remix-run/router@npm:1.6.1": - version: 1.6.1 - resolution: "@remix-run/router@npm:1.6.1" - checksum: 6d6dad1b6a06171d5d8549eca7cd7ef332a40987b732829e48993d55b3c7a7ca661c7d891be938055a42a4b18f07b5f2b66295c89cb221464eda2678ac41621e +"@remix-run/router@npm:1.11.0": + version: 1.11.0 + resolution: "@remix-run/router@npm:1.11.0" + checksum: 046b382e149e198f4aac02355545ef83c4c97b203d08008dcdb9b25d0f2193e21c3ba2332aba572d4f1450b68aabc77cbc278cb5a7b252cc6e1d239d81a6f7e2 languageName: node linkType: hard "@repeaterjs/repeater@npm:^3.0.4": - version: 3.0.4 - resolution: "@repeaterjs/repeater@npm:3.0.4" - checksum: 9a2928d70f2be4a8f72857f8f7553810015ac970f174b4b20f07289644379af57fa68947601d67e557c1a7c33ddf805e787cf2a1d5e9037ba485d24075a81b6b + version: 3.0.5 + resolution: "@repeaterjs/repeater@npm:3.0.5" + checksum: e6e1aca2bbfe0b8e974bc5185a6839f9e78ec8acb96b6d6911a9dfc958443689f9bc38bcc6d554e6c8598f597f0151841aafbd1ee3ef16262ee93d18b2c1d4b5 languageName: node linkType: hard -"@rollup/pluginutils@npm:^4.1.0, @rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.1.2": +"@rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.1.2, @rollup/pluginutils@npm:^4.2.1": version: 4.2.1 resolution: "@rollup/pluginutils@npm:4.2.1" dependencies: @@ -5480,6 +4550,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:^1.1.3": + version: 1.1.3 + resolution: "@scure/base@npm:1.1.3" + checksum: 4eb1d8b58da503ecdff743be36ae3562bbff724da82fb3401468d348659841ae4bb271aeae3a8cf6c4d06cd887dee3825ce6fdac2f699afc63838ae68c499baa + languageName: node + linkType: hard + "@semantic-release/changelog@npm:^6.0.3": version: 6.0.3 resolution: "@semantic-release/changelog@npm:6.0.3" @@ -5495,19 +4572,19 @@ __metadata: linkType: hard "@semantic-release/commit-analyzer@npm:^11.0.0": - version: 11.0.0 - resolution: "@semantic-release/commit-analyzer@npm:11.0.0" + version: 11.1.0 + resolution: "@semantic-release/commit-analyzer@npm:11.1.0" dependencies: conventional-changelog-angular: "npm:^7.0.0" conventional-commits-filter: "npm:^4.0.0" conventional-commits-parser: "npm:^5.0.0" debug: "npm:^4.0.0" - import-from: "npm:^4.0.0" + import-from-esm: "npm:^1.0.3" lodash-es: "npm:^4.17.21" micromatch: "npm:^4.0.2" peerDependencies: semantic-release: ">=20.1.0" - checksum: d802a825005c1dbb2e7e01f7dd3ecb88e3631e9018043096b7579a0dc78f7337e0bb84e351efc9a9181a0067649c1025bff6060acef475430f4e3d4a7d4264ee + checksum: f39dd42a69ee2afd13b690489c5d266802041e47b09e36ca7534bb1a4a0069295d51c43f2a180a36369ff9b38c31ef9a4d6ca39c823768279761304f0f5dd7e3 languageName: node linkType: hard @@ -5561,34 +4638,35 @@ __metadata: linkType: hard "@semantic-release/github@npm:^8.0.0": - version: 8.0.7 - resolution: "@semantic-release/github@npm:8.0.7" + version: 8.1.0 + resolution: "@semantic-release/github@npm:8.1.0" dependencies: - "@octokit/rest": "npm:^19.0.0" + "@octokit/core": "npm:^4.2.1" + "@octokit/plugin-paginate-rest": "npm:^6.1.2" + "@octokit/plugin-retry": "npm:^4.1.3" + "@octokit/plugin-throttling": "npm:^5.2.3" "@semantic-release/error": "npm:^3.0.0" aggregate-error: "npm:^3.0.0" - bottleneck: "npm:^2.18.1" debug: "npm:^4.0.0" dir-glob: "npm:^3.0.0" fs-extra: "npm:^11.0.0" globby: "npm:^11.0.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.0" issue-parser: "npm:^6.0.0" lodash: "npm:^4.17.4" mime: "npm:^3.0.0" p-filter: "npm:^2.0.0" - p-retry: "npm:^4.0.0" url-join: "npm:^4.0.0" peerDependencies: semantic-release: ">=18.0.0-beta.1" - checksum: b9614e03bfa5002c1847652e93156652a57b8b62b582b8a28b0b26db9ba99127c10c6e931d6f5ae2b4ae48313d9b907044ecbf5d0dd34eec143bdc145b543a18 + checksum: 2a1bb1e7eb04c7a7dfcb6bd95c36371c71a80c158515f4e2ef946e31a4c698818150c1ac6cdaf63704fe6c91586ad5b5b28e7dc58ababe8c255418e0cea1c492 languageName: node linkType: hard "@semantic-release/github@npm:^9.2.1": - version: 9.2.1 - resolution: "@semantic-release/github@npm:9.2.1" + version: 9.2.2 + resolution: "@semantic-release/github@npm:9.2.2" dependencies: "@octokit/core": "npm:^5.0.0" "@octokit/plugin-paginate-rest": "npm:^9.0.0" @@ -5608,13 +4686,13 @@ __metadata: url-join: "npm:^5.0.0" peerDependencies: semantic-release: ">=20.1.0" - checksum: f4b7e48284e920e56fbf11214a6e0722f284605610223abdc0be96b958dd8e5752121b4524e84b751c4fb4bbd9e9092c19adddb4a7d8fac0aa2591f3322e67ad + checksum: 5c1613a167ec2491cbed652a597571fd35e0019f54e3a14b919a925f55215fb82130d02c1420f73b0f9e1a2aa7965129872fa9eeb84f9686a2679d45572c0085 languageName: node linkType: hard "@semantic-release/npm@npm:^11.0.0": - version: 11.0.0 - resolution: "@semantic-release/npm@npm:11.0.0" + version: 11.0.1 + resolution: "@semantic-release/npm@npm:11.0.1" dependencies: "@semantic-release/error": "npm:^4.0.0" aggregate-error: "npm:^5.0.0" @@ -5625,13 +4703,13 @@ __metadata: normalize-url: "npm:^8.0.0" npm: "npm:^10.0.0" rc: "npm:^1.2.8" - read-pkg: "npm:^8.0.0" + read-pkg: "npm:^9.0.0" registry-auth-token: "npm:^5.0.0" semver: "npm:^7.1.2" tempy: "npm:^3.0.0" peerDependencies: semantic-release: ">=20.1.0" - checksum: 6e4b391aa17b6612935488f207aae79d5f6e896762065b0c55f517a87f1f0a0aded421a4e31e46eaca4a4c2aae37641acad142aac25121d53e454b758a6bb040 + checksum: 62b37a80cc79af1b608e3982da0f4972b3fd97ca24af4ed528e7b316bf5f3bd22a5f74677cd38f354a02127c3df887d3207f12de821e935067aa2a927530797a languageName: node linkType: hard @@ -5679,8 +4757,8 @@ __metadata: linkType: hard "@semantic-release/release-notes-generator@npm:^12.0.0": - version: 12.0.0 - resolution: "@semantic-release/release-notes-generator@npm:12.0.0" + version: 12.1.0 + resolution: "@semantic-release/release-notes-generator@npm:12.1.0" dependencies: conventional-changelog-angular: "npm:^7.0.0" conventional-changelog-writer: "npm:^7.0.0" @@ -5688,13 +4766,13 @@ __metadata: conventional-commits-parser: "npm:^5.0.0" debug: "npm:^4.0.0" get-stream: "npm:^7.0.0" - import-from: "npm:^4.0.0" + import-from-esm: "npm:^1.0.3" into-stream: "npm:^7.0.0" lodash-es: "npm:^4.17.21" - read-pkg-up: "npm:^10.0.0" + read-pkg-up: "npm:^11.0.0" peerDependencies: semantic-release: ">=20.1.0" - checksum: 550479b63c9482f8e92dcab85b89b570dc2ddee0d127efe29ddba82ff094ba78216a5d20e4d3b5c8f45e5d8d9e51b05e0248267f2a27320a4df6d9d2143ec410 + checksum: 29dee44ee90e6396386ac5187a1e23cd44ad64b7440348ea4e18c7440199007aa7a7d8f158cc773ea142288b2c212b666b77d57b769224e9e7cdcb2ef8978555 languageName: node linkType: hard @@ -5735,28 +4813,28 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.24 - resolution: "@sinclair/typebox@npm:0.25.24" - checksum: 2faf9878f3a65a1f2855add80b0fe8c6fe83f084ea1ab432fa7506e7c85c55ae121c4af516d089b5737f5fad23b3628fcc83a6a5df29030c3f611185ce0388ac +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard -"@sinonjs/commons@npm:^2.0.0": - version: 2.0.0 - resolution: "@sinonjs/commons@npm:2.0.0" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.0 + resolution: "@sinonjs/commons@npm:3.0.0" dependencies: type-detect: "npm:4.0.8" - checksum: babe3fdfc7dfb810f6918f2ae055032a1c7c18910595f1c6bfda87bb1737c1a57268d4ca78c3d8ad2fa4aae99ff79796fad76be735a5a38ab763c0b3cfad1ae7 + checksum: 1df9cd257942f4e4960dfb9fd339d9e97b6a3da135f3d5b8646562918e863809cb8e00268535f4f4723535d2097881c8fc03d545c414d8555183376cfc54ee84 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@sinonjs/commons": "npm:^2.0.0" - checksum: 24555ed94053319fa18d4efa0923b295a445a00d2515d260b9e4e2b5943bd8b5b55fee85baabb2819a13ca1f57dbc1949265a350f592eef9e2535ec9de711ebc + "@sinonjs/commons": "npm:^3.0.0" + checksum: 2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 languageName: node linkType: hard @@ -5948,14 +5026,13 @@ __metadata: languageName: node linkType: hard -"@substrate/connect@npm:0.7.26": - version: 0.7.26 - resolution: "@substrate/connect@npm:0.7.26" +"@substrate/connect@npm:0.7.33": + version: 0.7.33 + resolution: "@substrate/connect@npm:0.7.33" dependencies: "@substrate/connect-extension-protocol": "npm:^1.0.1" - eventemitter3: "npm:^4.0.7" - smoldot: "npm:1.0.4" - checksum: 9577be8417698d6f50d2492bdcfadcfa1333d948e69dd58b75fb2426dc33a5b2ea07c556b60b62b0ac5458ab61490867a0e6af8721bb664d26edbf61d42b4f20 + smoldot: "npm:2.0.1" + checksum: b89108f05ff517e3276e94b9d52106983f8b87c1349b8a6e515eb0d64b78813be76a7957666522ae9683f4b5e764eaadca339c736faeda0c42e1936c7e1e6f0f languageName: node linkType: hard @@ -5969,10 +5046,10 @@ __metadata: languageName: node linkType: hard -"@substrate/ss58-registry@npm:^1.38.0, @substrate/ss58-registry@npm:^1.40.0": - version: 1.40.0 - resolution: "@substrate/ss58-registry@npm:1.40.0" - checksum: d6cb2ee50c9bb0fbb3733c8797e2931e5337e1254969372c921e4c7074dad0201d71a5ab76257de0500b9c329c878d3362ca5966d9c6b50087b65d38bffa6f48 +"@substrate/ss58-registry@npm:^1.38.0, @substrate/ss58-registry@npm:^1.43.0": + version: 1.44.0 + resolution: "@substrate/ss58-registry@npm:1.44.0" + checksum: 72356c6c28679d8ed62646b84beeb1b4897b0fa9dcf134575a48516680ee6110c9391e95f097c28413759339606419a089f02b9ed3474a0d16da46453f001fa8 languageName: node linkType: hard @@ -6080,43 +5157,43 @@ __metadata: linkType: hard "@tanstack/react-table@npm:^8.9.3": - version: 8.9.3 - resolution: "@tanstack/react-table@npm:8.9.3" + version: 8.10.7 + resolution: "@tanstack/react-table@npm:8.10.7" dependencies: - "@tanstack/table-core": "npm:8.9.3" + "@tanstack/table-core": "npm:8.10.7" peerDependencies: react: ">=16" react-dom: ">=16" - checksum: b8b56ed2345d56e2ac850d8e8f2833d7cb397d0727ac645d3ba5045af05019aa1f5957f38cf3ede36c0434ebe6aa61dec58f0cedcb88904d1a43f5cdb2dd43d7 + checksum: 2ddf6f90b06e7af069f16dbe5d0dc8c8afab3de88c25e33f6c297beaf2507c2e46fee1f746f7977d48bad2114909bba0016026fc2b6a85bcaee472cdafdc7ffd languageName: node linkType: hard -"@tanstack/table-core@npm:8.9.3": - version: 8.9.3 - resolution: "@tanstack/table-core@npm:8.9.3" - checksum: 0192a6239f0624fff99bf74dadb13f5cb692f9f4883879716048b78e342df8a7a8cf92df3bcc39dbedc6884c3ac74e71919cf9164b0dd328d520e1c28dd71d3b +"@tanstack/table-core@npm:8.10.7": + version: 8.10.7 + resolution: "@tanstack/table-core@npm:8.10.7" + checksum: 3f671484319094443bb2db86356f408d4246e22bebd7ad444edc919fef131899384c3a27261c5ee01fb18887bc9157c5a0d9db3e32aae940ce5416f6e58b038b languageName: node linkType: hard "@testing-library/dom@npm:^8.11.1, @testing-library/dom@npm:^8.5.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" dependencies: "@babel/code-frame": "npm:^7.10.4" "@babel/runtime": "npm:^7.12.5" "@types/aria-query": "npm:^5.0.1" - aria-query: "npm:^5.0.0" + aria-query: "npm:5.1.3" chalk: "npm:^4.1.0" dom-accessibility-api: "npm:^0.5.9" - lz-string: "npm:^1.4.4" + lz-string: "npm:^1.5.0" pretty-format: "npm:^27.0.2" - checksum: 454c71f65708d1504256ae055f060adf8ed9eadcc7ddbf6d07a528045beceb842783c1253871759f5c137eca58e5e32700dc64b130cbb37e10e7a52ab08d7b44 + checksum: 614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d languageName: node linkType: hard "@testing-library/jest-dom@npm:^5.16.5": - version: 5.16.5 - resolution: "@testing-library/jest-dom@npm:5.16.5" + version: 5.17.0 + resolution: "@testing-library/jest-dom@npm:5.17.0" dependencies: "@adobe/css-tools": "npm:^4.0.1" "@babel/runtime": "npm:^7.9.2" @@ -6127,7 +5204,7 @@ __metadata: dom-accessibility-api: "npm:^0.5.6" lodash: "npm:^4.17.15" redent: "npm:^3.0.0" - checksum: 0925fda78096cca355d164d5358b84b9371c4fb6ba60ce60c2263446ac6d9c6aaca75e2792cdb42699fe78c379924c53db672a3510361b577ebb89a0c6e1c629 + checksum: 24e09c5779ea44644945ec26f2e4e5f48aecfe57d469decf2317a3253a5db28d865c55ad0ea4818d8d1df7572a6486c45daa06fa09644a833a7dd84563881939 languageName: node linkType: hard @@ -6224,9 +5301,9 @@ __metadata: linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.3 - resolution: "@tsconfig/node16@npm:1.0.3" - checksum: 451a0d4b2bc35c2cdb30a49b6c699d797b8bbac99b883237659698678076d4193050d90e2ee36016ccbca57075cdb073cadab38cedc45119bac68ab331958cbc + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb languageName: node linkType: hard @@ -6248,133 +5325,133 @@ __metadata: linkType: hard "@types/aria-query@npm:^5.0.1": - version: 5.0.1 - resolution: "@types/aria-query@npm:5.0.1" - checksum: bc9e40ce37bd3a1654948778c7829bd55aea1bc5f2cd06fcf6cd650b07bb388995799e9aab6e2d93a6cf55dcba3b85c155f7ba93adefcc7c2e152fc6057061b5 + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08 languageName: node linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.0 - resolution: "@types/babel__core@npm:7.20.0" + version: 7.20.4 + resolution: "@types/babel__core@npm:7.20.4" dependencies: "@babel/parser": "npm:^7.20.7" "@babel/types": "npm:^7.20.7" "@types/babel__generator": "npm:*" "@types/babel__template": "npm:*" "@types/babel__traverse": "npm:*" - checksum: 75dcd39258bc008b6fd4db7de2c8bfeb29b5cd2c726f54407f70243ddea1d8ce9e7082281557614c4a5f9f30d478387ca6ab6cc576fc829cebeb159bfaa8799f + checksum: 2adc7ec49de5f922271ce087cedee000de468a3e13f92b7b6254016bd8357298cb98e6d2b3c9defc69bb6e38e0c134ffe80776a8ce4e9fb167bbffcb4d7613b7 languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" + version: 7.6.7 + resolution: "@types/babel__generator@npm:7.6.7" dependencies: "@babel/types": "npm:^7.0.0" - checksum: e0051b450e4ba2df0a7e386f08df902a4e920f6f8d6f185d69ddbe9b0e2e2d3ae434bb51e437bc0fca2a9a0f5dc4ca44d3a1941ef75e74371e8be5bf64416fe4 + checksum: 2427203864ef231857e102eeb32b731a419164863983119cdd4dac9f1503c2831eb4262d05ade95d4574aa410b94c16e54e36a616758452f685a34881f4596d9 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": "npm:^7.1.0" "@babel/types": "npm:^7.0.0" - checksum: 6f180e96c39765487f27e861d43eebed341ec7a2fc06cdf5a52c22872fae67f474ca165d149c708f4fd9d5482beb66c0a92f77411b234bb30262ed2303e50b1a + checksum: cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.18.5 - resolution: "@types/babel__traverse@npm:7.18.5" + version: 7.20.4 + resolution: "@types/babel__traverse@npm:7.20.4" dependencies: - "@babel/types": "npm:^7.3.0" - checksum: e5170da740e720212a514add53f3a66ba6c64056e1c284c16bc549cc972bab962bdf0610c6ee710d63da24d28b75c065e2032575404b01ff768d6a9d3974a085 + "@babel/types": "npm:^7.20.7" + checksum: e76cb4974c7740fd61311152dc497e7b05c1c46ba554aab875544ab0a7457f343cafcad34ba8fb2ff543ab0e012ef2d3fa0c13f1a4e9a4cd9c4c703c7a2a8d62 languageName: node linkType: hard "@types/big.js@npm:^6.1.6": - version: 6.1.6 - resolution: "@types/big.js@npm:6.1.6" - checksum: 1786f9878143258149d680a74dd2e1807729da9c772d8b8a62c3aa3b51d3187326a0fcbbe089ff71c7d73cc1222791087774b48f05055167b7a4d0ad4dad73d1 + version: 6.2.2 + resolution: "@types/big.js@npm:6.2.2" + checksum: 8f8472dfc1ef61c492e6841e86f8b9b97e5b024136bf7964e582a6a80ba73d4dbfd6cc23ed3b9d8fea69c7f30834fffd1c88e7fb981811f5c6ca608380b5ad67 languageName: node linkType: hard "@types/bn.js@npm:^5.1.1": - version: 5.1.1 - resolution: "@types/bn.js@npm:5.1.1" + version: 5.1.5 + resolution: "@types/bn.js@npm:5.1.5" dependencies: "@types/node": "npm:*" - checksum: d9186feea87a104c44fc20617c8e8fa5384db03e3a46efea53e80da7d6ece72b847b98992465bec9a1d859d685d80e0d7a8abe8309a3f1fd415847bdc4d77fbe + checksum: e9f375b43d8119ed82aed2090f83d4cda8afbb63ba13223afb02fa7550258ff90acd76d65cd7186838644048f085241cd98a3a512d8d187aa497c6039c746ac8 languageName: node linkType: hard "@types/cssnano@npm:^5.0.0": - version: 5.1.0 - resolution: "@types/cssnano@npm:5.1.0" + version: 5.0.0 + resolution: "@types/cssnano@npm:5.0.0" dependencies: - cssnano: "npm:*" - checksum: bf11bbc9540ec0e8545f71bb081cad27c03910806c31856f4e100b34e1f25bbd26fd84b9041d8595863d103adca91b5051ee7ba70d5c49514b7f2dc8247af445 + postcss: "npm:^8" + checksum: 3b939509d65c053c274dc261cef17d9329e02d82784b569e441e01fb61dbcd5c914c5f7f53499cc641a1b224c30a9c814e419f8cb682be249d87fa2ddc20e9ae languageName: node linkType: hard "@types/eventsource@npm:^1.1.2": - version: 1.1.11 - resolution: "@types/eventsource@npm:1.1.11" - checksum: 569c047577043f1cd80a15ffde23935eee9ebff5bae1c85409b1e062292025dc53ebadb9ec2af871cacb457efc1e32d32348972975181d5f8107464d6aa08947 + version: 1.1.15 + resolution: "@types/eventsource@npm:1.1.15" + checksum: afee5c6c1185e365802349878411324569c77ae9878317b6e34bd633bdb5ee0a6eada6d1b358fec57640fe610eb43535344076db199895e1d9ab81511bb6ed0e languageName: node linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.6 - resolution: "@types/graceful-fs@npm:4.1.6" + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "npm:*" - checksum: b1d32c5ae7bd52cf60e29df20407904c4312a39612e7ec2ee23c1e3731c1cfe31d97c6941bf6cb52f5f929d50d86d92dd506436b63fafa833181d439b628885e + checksum: 235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: af5f6b64e788331ed3f7b2e2613cb6ca659c58b8500be94bbda8c995ad3da9216c006f1cfe6f66b321c39392b1bda18b16e63cef090a77d24a00b4bd5ba3b018 + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" dependencies: "@types/istanbul-lib-coverage": "npm:*" - checksum: 7ced458631276a28082ee40645224c3cdd8b861961039ff811d841069171c987ec7e50bc221845ec0d04df0022b2f457a21fb2f816dab2fbe64d59377b32031f + checksum: 247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: "@types/istanbul-lib-report": "npm:*" - checksum: e147f0db9346a0cae9a359220bc76f7c78509fb6979a2597feb24d64b6e8328d2d26f9d152abbd59c6bca721e4ea2530af20116d01df50815efafd1e151fd777 + checksum: 1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee languageName: node linkType: hard "@types/jest@npm:*, @types/jest@npm:^29.4.0": - version: 29.5.1 - resolution: "@types/jest@npm:29.5.1" + version: 29.5.8 + resolution: "@types/jest@npm:29.5.8" dependencies: expect: "npm:^29.0.0" pretty-format: "npm:^29.0.0" - checksum: ba9df58fa0c813e1dda529e34bcec2d0e0bbac2d3e921a86c8e10d77fc5165bd8e5324eeb7071bfe0490e7d1055db34ef80d57e05bd967edae00df4158097ec6 + checksum: a28e7827ea7e1a2aace6a386868fa6b8402c162d6c71570aed2c29d3745ddc22ceef6899a20643071817905d3c57b670a7992fc8760bff65939351fd4dc481cf languageName: node linkType: hard "@types/js-yaml@npm:^4.0.0": - version: 4.0.5 - resolution: "@types/js-yaml@npm:4.0.5" - checksum: 37eb783b16f1704d26bbf83b35cf5d12f6018c18f2c9232515468ac60a4c5b71b6344a7b872545eeca3dfd66bb17e2bb1e611646cc727d7c6a001165a4ec0a32 + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: 24de857aa8d61526bbfbbaa383aa538283ad17363fcd5bb5148e2c7f604547db36646440e739d78241ed008702a8920665d1add5618687b6743858fae00da211 languageName: node linkType: hard @@ -6390,225 +5467,222 @@ __metadata: linkType: hard "@types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: bd1f9a7b898ff15c4bb494eb19124f2d688b804c39f07cbf135ac73f35324970e9e8329b72aae1fb543d925ea295a1568b23056c26658cecec4741fa28c3b81a + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db languageName: node linkType: hard "@types/json-stable-stringify@npm:^1.0.32": - version: 1.0.34 - resolution: "@types/json-stable-stringify@npm:1.0.34" - checksum: b24c7953a314426011c2304f909278734504f5c77354c16ea3bbbc55cbba5f5e02ce026a2345dbfcd8a78f33a34693840441c12a31c653131a7010a568adc56c + version: 1.0.36 + resolution: "@types/json-stable-stringify@npm:1.0.36" + checksum: c2f0d0075bd04681d664a7ac4ef5078289b2f790f9737cd3457b5cc199d39df2efe132e04574ad5f89c9ae50096d44c9ca5ec4aebcd6005b969009f725dbcb79 languageName: node linkType: hard "@types/lodash@npm:^4": - version: 4.14.194 - resolution: "@types/lodash@npm:4.14.194" - checksum: 2d1ecf21a356bf089d3b5de2e8ddb1376526f0c75456fea61c03c14d276898f29a8ff75d290a32865dc74933617c9eed4ecdec048257031569df927a2c053c0e + version: 4.14.201 + resolution: "@types/lodash@npm:4.14.201" + checksum: 14dc43787296c429433d7d034ed47c5ac24b92217056f80a0e6c990449120b9c9c1058918188945fb88353c0c8333c5c36dccc40c51edbd39b05d2169ab2e0ad languageName: node linkType: hard "@types/luxon@npm:^3.2.0": - version: 3.3.0 - resolution: "@types/luxon@npm:3.3.0" - checksum: 1994c23c0ea73d3fa7f210c1b4b9fd0d55bc1aa22f3f12526ecaf9743fd93357bc38efba2694852b2aa778badd41f4f7608545aa531d0b0b25c5f2f63bf758ce + version: 3.3.4 + resolution: "@types/luxon@npm:3.3.4" + checksum: d9ef0bdfa97cce2951107083ed0461ce92f0a12343d8853c44ae976ff153317fcfe76b3ada33abd820f1a124b6ce99e190183ba0267b239e18e5bcaf237e5bf9 languageName: node linkType: hard "@types/minimist@npm:^1.2.0": - version: 1.2.2 - resolution: "@types/minimist@npm:1.2.2" - checksum: f220f57f682bbc3793dab4518f8e2180faa79d8e2589c79614fd777d7182be203ba399020c3a056a115064f5d57a065004a32b522b2737246407621681b24137 + version: 1.2.5 + resolution: "@types/minimist@npm:1.2.5" + checksum: 3f791258d8e99a1d7d0ca2bda1ca6ea5a94e5e7b8fc6cde84dd79b0552da6fb68ade750f0e17718f6587783c24254bbca0357648dd59dc3812c150305cabdc46 languageName: node linkType: hard "@types/node-fetch@npm:^2.6.2": - version: 2.6.3 - resolution: "@types/node-fetch@npm:2.6.3" + version: 2.6.9 + resolution: "@types/node-fetch@npm:2.6.9" dependencies: "@types/node": "npm:*" - form-data: "npm:^3.0.0" - checksum: ce1a546d9a6f8df1c937f3c06ad85b57d92974a5feccc3502d13c0fc76c83629cd3f3f255dee03e5050abf90d0871f06628863ae758b70697af8b39cdd2e1c01 + form-data: "npm:^4.0.0" + checksum: b15b6d518ea4dd4a21cf328e9df0a88b2e5b76f3455ddfeb9063a3b97087c50b15ab195a869dadbbeb09d08dcc915557fb6a4f72b4fe79ee42e215fce3d9b0db languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:^18.14.1": - version: 18.16.3 - resolution: "@types/node@npm:18.16.3" - checksum: 8405ceea1306790484e15f696be5e9f7f62b9bb385b2f03fcdefd07fcc2cb20052ebf5c1ffde7b81a0090a09454a48a685f22e1704ea7ead99971233e6f0d80d +"@types/node@npm:*, @types/node@npm:>= 8": + version: 20.9.0 + resolution: "@types/node@npm:20.9.0" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 755d07de735eafda4e20af75ad9d03bdbfddef327d790e9a896142eac7493db5d8501591376e1c8227aa12eeb88e522bc727c6024504842ed40e539e8a466db9 languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: c90b163741f27a1a4c3b1869d7d5c272adbd355eb50d5f060f9ce122ce4342cf35f5b0005f55ef780596cacfeb69b7eee54cd3c2e02d37f75e664945b6e75fc6 +"@types/node@npm:^18.14.1": + version: 18.18.12 + resolution: "@types/node@npm:18.18.12" + dependencies: + undici-types: "npm:~5.26.4" + checksum: f7c4b95173f4014841d331da5b005ab613351d61498c8dca373cd4365b721a73fd1161e91c965c0f786132594b46e68c92dc1c92d657a7942816f2ea185ae1ba languageName: node linkType: hard -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: 1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1, @types/normalize-package-data@npm:^2.4.3": + version: 2.4.4 + resolution: "@types/normalize-package-data@npm:2.4.4" + checksum: aef7bb9b015883d6f4119c423dd28c4bdc17b0e8a0ccf112c78b4fe0e91fbc4af7c6204b04bba0e199a57d2f3fbbd5b4a14bf8739bf9d2a39b2a0aad545e0f86 languageName: node linkType: hard -"@types/prettier@npm:^2.1.5": - version: 2.7.2 - resolution: "@types/prettier@npm:2.7.2" - checksum: 16ffbd1135c10027f118517d3b12aaaf3936be1f3c6e4c6c9c03d26d82077c2d86bf0dcad545417896f29e7d90faf058aae5c9db2e868be64298c644492ea29e +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 languageName: node linkType: hard "@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 648aae41423821c61c83823ae36116c8d0f68258f8b609bdbc257752dcd616438d6343d554262aa9a7edaee5a19aca2e028a74fa2d0f40fffaf2816bc7056857 + version: 15.7.10 + resolution: "@types/prop-types@npm:15.7.10" + checksum: 964348d05cdf7399260b3179fbd1462b23d7452dc39fbccb319e54ed6ffafb0a01c0a62c3e6f7c944a635c7a4ad5c99d62c4787c9c4b74e2ec07aebaf6cfedc1 languageName: node linkType: hard "@types/randombytes@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/randombytes@npm:2.0.0" + version: 2.0.3 + resolution: "@types/randombytes@npm:2.0.3" dependencies: "@types/node": "npm:*" - checksum: d80b43adc2a3e0c461b04292cd23f9bdafb901ef5ae4c88d1f7aeae82ded8c1b47e2347a60238cc646c315ee783822294a31dc8714be77264b921a43704b76fd + checksum: b65a6bd481659ce2ee87193b9e221d1b336a161bb3a8d41819b3e8a4401421827867c250582e4a4759e8ab24983821aad80ed1f2d46a79d41a42229caf521be0 languageName: node linkType: hard "@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.0.6": - version: 18.2.3 - resolution: "@types/react-dom@npm:18.2.3" + version: 18.2.15 + resolution: "@types/react-dom@npm:18.2.15" dependencies: "@types/react": "npm:*" - checksum: ce7f8daadea0c9ab3aa78a919db96d1c2ea3b6307cc88f8d105169c6392389e284542345f5796e904ab5de76240f2c1bde83c004538f99a5482a0f56854e45f1 + checksum: 70e86f15f69f89b8f179139ab2e8a8aa9765e742789f5dd5a46fec40d4300ada8fe3349cceda42b9964a018982d7ccb7d791b47f781966c992bfd37da909fbd3 languageName: node linkType: hard "@types/react-table@npm:^7.7.12": - version: 7.7.14 - resolution: "@types/react-table@npm:7.7.14" + version: 7.7.18 + resolution: "@types/react-table@npm:7.7.18" dependencies: "@types/react": "npm:*" - checksum: 638acd1db693d00f93d77eb044a5d28aa10e0bb24f01e1929fff2b9be6096ccac66c81cf7d656829adc2354ce1183d6f70da9f4be6316fc8ff52f2dc29789bba + checksum: e847577683592419f6cae5273097ebe1b63bc80585407222ba6d9057d2023e3835110248e3aa8bfdf67de9fe07a81513341f57704f4b20871003b3baad9bde4b languageName: node linkType: hard "@types/react@npm:*, @types/react@npm:^18.0.18, @types/react@npm:^18.0.28": - version: 18.2.5 - resolution: "@types/react@npm:18.2.5" + version: 18.2.37 + resolution: "@types/react@npm:18.2.37" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 94aa73f74b45efdb2c790ec49ade0feb1871e8c83f3b3f81775fe8dd415ea85364f569003d48a87fe2889a610dba95f3c599a6696f1dc543115ef437314f7652 - languageName: node - linkType: hard - -"@types/retry@npm:0.12.0": - version: 0.12.0 - resolution: "@types/retry@npm:0.12.0" - checksum: 7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 + checksum: 79dd5d23da05bec54e7423ca17096e345eb8fd80a3bf8dd916bb5cdd60677d27c298523aa5b245d090fcc4ec100cfd58c1af4631fbac709d0a9d8be75f9d78a9 languageName: node linkType: hard "@types/scheduler@npm:*": - version: 0.16.3 - resolution: "@types/scheduler@npm:0.16.3" - checksum: c249d4b96fa05165ac22c214f94a045ee0af8beedefdbc54b769febd0044cab3a874e55419841a0dcc76439e379a63e257f3253c87168e3261e7bc783d623302 + version: 0.16.6 + resolution: "@types/scheduler@npm:0.16.6" + checksum: ed998ff7f83fe22086653a407072bc21046e71c3b36a7238372e105181985a215e9eda7558e450131c875e52d6d51da4bc46aaba53142ac00b0cc41fe1510cf3 languageName: node linkType: hard "@types/semver@npm:^7.3.12": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 73295bb1fee46f8c76c7a759feeae5a3022f5bedfdc17d16982092e4b33af17560234fb94861560c20992a702a1e1b9a173bb623a96f95f80892105f5e7d25e3 + version: 7.5.5 + resolution: "@types/semver@npm:7.5.5" + checksum: bb1b525221d93c9e7b45914af5ed1729a5bfdfa80927d6b02bcb4550ff7015f8c713152c32cb679ffcc79e77c0dda66d1f972ff5ee8d2205336729c51198bb18 languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 3327ee919a840ffe907bbd5c1d07dfd79137dd9732d2d466cf717ceec5bb21f66296173c53bb56cff95fae4185b9cd6770df3e9745fe4ba528bbc4975f54d13f + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c languageName: node linkType: hard "@types/testing-library__jest-dom@npm:^5.14.5, @types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.5 - resolution: "@types/testing-library__jest-dom@npm:5.14.5" + version: 5.14.9 + resolution: "@types/testing-library__jest-dom@npm:5.14.9" dependencies: "@types/jest": "npm:*" - checksum: f4c82418fdc129806d413d48064049ab3b099635dad06c40be2188134d15135b0b053044de7b0e032867b1ec754e7446046d8fdf6863b9454f8f757f1cac702d + checksum: 91f7b15e8813b515912c54da44464fb60ecf21162b7cae2272fcb3918074f4e1387dc2beca1f5041667e77b76b34253c39675ea4e0b3f28f102d8cc87fdba9fa languageName: node linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.2 - resolution: "@types/tough-cookie@npm:4.0.2" - checksum: 38d01fc79a9a87166253b8c548bb401599424c57a818bea1b47a68be6dcd37fc3bff381f978354e00221f284937d5066bb92d58bf79952f9d21deb934e8ec9a7 + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.3 - resolution: "@types/trusted-types@npm:2.0.3" - checksum: 25eae736a8a6d24353c3e0108138935250f79d1d239f6fd6f3eb52d88476456ba946f8cb8f3130c6841d40534cafc2dd2326358d86966327c3c4a3d3eecaf585 + version: 2.0.6 + resolution: "@types/trusted-types@npm:2.0.6" + checksum: 8d942c25bfabd89463170e22f0b3312b776885735a9c259495266b90c590f040b2112cb25e05cc2dee6e397301597b979b8ea8b0d10f2232adf38c542a16324b languageName: node linkType: hard "@types/urijs@npm:^1.19.6": - version: 1.19.19 - resolution: "@types/urijs@npm:1.19.19" - checksum: c89ba90290e9f7830cf063267c7997538d52865fac4e4f798ff7a2a324a00e856b24da730a06447dc806e634de5e9389f7973006c33752e8f558be3e91414c13 + version: 1.19.23 + resolution: "@types/urijs@npm:1.19.23" + checksum: 7cde4d9c7e43f3303024aa82e8850b121253de8008b9a318c24e5706092b14c8f85012a7db23ae19bd2d83b05880689e1f051781f9f342979b4dd175259704d2 languageName: node linkType: hard "@types/websocket@npm:^1.0.5": - version: 1.0.5 - resolution: "@types/websocket@npm:1.0.5" + version: 1.0.9 + resolution: "@types/websocket@npm:1.0.9" dependencies: "@types/node": "npm:*" - checksum: 866f31a394d4fbcb4055420daaec16096e42666e30c573ca4291fc7fcde8316eb2ab4995f7f21c6e5e37572bcbf72483d8a6d340db303c6c2fcbbf79377b8b5a + checksum: 6aaaeb472d0bf2c9a0828a047a3a7e4008806dd2efda0ba64c1df417c5993ae5fa9908f73278ba7e6bee02a6893a9cedb0b686038a6571839cd6749570df5a7e languageName: node linkType: hard "@types/ws@npm:^8.0.0": - version: 8.5.5 - resolution: "@types/ws@npm:8.5.5" + version: 8.5.9 + resolution: "@types/ws@npm:8.5.9" dependencies: "@types/node": "npm:*" - checksum: 9fb5aaeb2899f2c5aa55946656a39fdf679e48ec4eff557901215249ac84f435853b1d224214e88a93fcbca4bc9a0b0af01113d76f37db0b5873a882e5e99935 + checksum: 678bdd6461c4653f2975c537fb673cb1918c331558e2d2422b69761c9ced67200bb07c664e2593f3864077a891cb7c13ef2a40d303b4aacb06173d095d8aa3ce languageName: node linkType: hard "@types/yargs-parser@npm:*": - version: 21.0.0 - resolution: "@types/yargs-parser@npm:21.0.0" - checksum: cb89f3bb2e8002f1479a65a934e825be4cc18c50b350bbc656405d41cf90b8a299b105e7da497d7eb1aa460472a07d1e5a389f3af0862f1d1252279cfcdd017c + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.24 - resolution: "@types/yargs@npm:17.0.24" + version: 17.0.31 + resolution: "@types/yargs@npm:17.0.31" dependencies: "@types/yargs-parser": "npm:*" - checksum: fbebf57e1d04199e5e7eb0c67a402566fa27177ee21140664e63da826408793d203d262b48f8f41d4a7665126393d2e952a463e960e761226def247d9bbcdbd0 + checksum: 1e04df99bd0ad8ac8b3748b6ac0e99a9a4efe20b9cd8eab69ac9503fe87ab9bec312ad56982e969cdb0e2c0679431434ad571f6934049adb15fa35b22810c867 languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.53.0": - version: 5.59.2 - resolution: "@typescript-eslint/eslint-plugin@npm:5.59.2" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: "@eslint-community/regexpp": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:5.59.2" - "@typescript-eslint/type-utils": "npm:5.59.2" - "@typescript-eslint/utils": "npm:5.59.2" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/type-utils": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" debug: "npm:^4.3.4" - grapheme-splitter: "npm:^1.0.4" + graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" natural-compare-lite: "npm:^1.4.0" semver: "npm:^7.3.7" @@ -6619,43 +5693,43 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: bb9eb6fdd7d3b7438d4807c7af6bc037e017343c7d86a4a7483029e995f388c406b085bbdd329a672fa314f483182c7c5622c9d243f2f1d67e3b3f70c00d4e00 + checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.53.0": - version: 5.59.2 - resolution: "@typescript-eslint/parser@npm:5.59.2" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": "npm:5.59.2" - "@typescript-eslint/types": "npm:5.59.2" - "@typescript-eslint/typescript-estree": "npm:5.59.2" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 9c142ff97ec171240f48896b4b2b16159b031fe3d12eaab53071b39071846a66251f5fb51094c019e7fc439793a4a0a9ee8e1139cff39cd3fa9333baffe554c6 + checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/scope-manager@npm:5.59.2" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": "npm:5.59.2" - "@typescript-eslint/visitor-keys": "npm:5.59.2" - checksum: 92e2927640cd9a155c3ebc971f64ecc4b0dd76449b803b189fdfcf5cd6f9dae16fc0d459a889d517f1bf1b8f17a77a4852f49a773ca2e3f0e63ae517123c044c + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/type-utils@npm:5.59.2" +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:5.59.2" - "@typescript-eslint/utils": "npm:5.59.2" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" debug: "npm:^4.3.4" tsutils: "npm:^3.21.0" peerDependencies: @@ -6663,23 +5737,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: a8c3371a031b4760d2c40ff30acf894055a45bc3f10ca36fe46e893dd1f9ab46c5cea8e0e159a6ea944687536c7dcb8aa677a88bd33cd88b9c955f4bb971366b + checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/types@npm:5.59.2" - checksum: 6e213fbd54b69d03f4db387931329d1274ff23b1d22514dc05087b35883c52f9050957c662fdc4fc232dc5691c7efab16961894a01bdbaf39412222df8bbd910 +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.2" +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": "npm:5.59.2" - "@typescript-eslint/visitor-keys": "npm:5.59.2" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -6688,59 +5762,66 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: f2a168ba62074ab4375176bc4ab28a9e61442d99b9aa62f468f8e8af41915d86520f9f81b1f6a39de2b68438c17c1ba88ed32d39eab757a5552ef5b33193d0c9 + checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.59.2, @typescript-eslint/utils@npm:^5.10.0": - version: 5.59.2 - resolution: "@typescript-eslint/utils@npm:5.59.2" +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.10.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@types/json-schema": "npm:^7.0.9" "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.59.2" - "@typescript-eslint/types": "npm:5.59.2" - "@typescript-eslint/typescript-estree": "npm:5.59.2" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" eslint-scope: "npm:^5.1.1" semver: "npm:^7.3.7" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: a1c7cf17c2a3e6458ba689b7ba2cf9a3f6f8673effa66dd3f1fbfb88373a9fd1710422bd2209628def6397846cd8d45c4bb06834a5a01eaa48580cbfe717dbf9 + checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.2" +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": "npm:5.59.2" + "@typescript-eslint/types": "npm:5.62.0" eslint-visitor-keys: "npm:^3.3.0" - checksum: a3d2a498b92b57048dbab93ca72acf960d4aa6e6cf4f277ab24b9d004c99dba5ef46f22959b7c37a0e12f555a8a88286ff4732205e0f1a40ad937ce26bb8dbd3 + checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d languageName: node linkType: hard -"@walletconnect/core@npm:2.8.1": - version: 2.8.1 - resolution: "@walletconnect/core@npm:2.8.1" +"@walletconnect/core@npm:2.10.4": + version: 2.10.4 + resolution: "@walletconnect/core@npm:2.10.4" dependencies: "@walletconnect/heartbeat": "npm:1.2.1" "@walletconnect/jsonrpc-provider": "npm:1.0.13" "@walletconnect/jsonrpc-types": "npm:1.0.3" "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/jsonrpc-ws-connection": "npm:^1.0.11" + "@walletconnect/jsonrpc-ws-connection": "npm:1.0.13" "@walletconnect/keyvaluestorage": "npm:^1.0.2" "@walletconnect/logger": "npm:^2.0.1" "@walletconnect/relay-api": "npm:^1.0.9" "@walletconnect/relay-auth": "npm:^1.0.4" "@walletconnect/safe-json": "npm:^1.0.2" "@walletconnect/time": "npm:^1.0.2" - "@walletconnect/types": "npm:2.8.1" - "@walletconnect/utils": "npm:2.8.1" + "@walletconnect/types": "npm:2.10.4" + "@walletconnect/utils": "npm:2.10.4" events: "npm:^3.3.0" lodash.isequal: "npm:4.5.0" uint8arrays: "npm:^3.1.0" - checksum: f636a28cce5ed88eea717020e7c90f943753cadd7fbe7dc5fd0734c6efbbac2ef8a78215f21c057c977a4449ecf4b8375aee0f0849cc2f5f58e47869fe8a3912 + checksum: dea902800c813d7eff8025f0f0d50c69bc80ed71c5168eb0bcda22f59be32e1db5ce54439f5e4afc97debc47870136570b96e37bad8ed1567f0c480b2f7331a9 languageName: node linkType: hard @@ -6818,16 +5899,16 @@ __metadata: languageName: node linkType: hard -"@walletconnect/jsonrpc-ws-connection@npm:^1.0.11": - version: 1.0.11 - resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.11" +"@walletconnect/jsonrpc-ws-connection@npm:1.0.13": + version: 1.0.13 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.13" dependencies: "@walletconnect/jsonrpc-utils": "npm:^1.0.6" "@walletconnect/safe-json": "npm:^1.0.2" events: "npm:^3.3.0" tslib: "npm:1.14.1" ws: "npm:^7.5.1" - checksum: 61febb59d39db2a03e1947295782ae70f749089d3de89876ccfec1aec8a02d97f783d2183de1896047d84c06e165faeeb19411e7b12876284d3e171fa7f03fa8 + checksum: afa2cd5647e97857f07a282d7466d3495e76abd0dfff46cd6fc36ca71c9f5a95ae1fae21fb7f0c49f881246d2b8a0e7dbc29f7fe58dbd34bd74fae9e6760c140 languageName: node linkType: hard @@ -6859,13 +5940,34 @@ __metadata: languageName: node linkType: hard +"@walletconnect/modal-core@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-core@npm:2.6.2" + dependencies: + valtio: "npm:1.11.2" + checksum: 5e3fb21a1fc923ec0d2a3e33cc360e3d56278a211609d5fd4cc4d6e3b4f1acb40b9783fcc771b259b78c7e731af3862def096aa1da2e210e7859729808304c94 + languageName: node + linkType: hard + +"@walletconnect/modal-ui@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-ui@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": "npm:2.6.2" + lit: "npm:2.8.0" + motion: "npm:10.16.2" + qrcode: "npm:1.5.3" + checksum: 5d8f0a2703b9757dfa48ad3e48a40e64608f6a28db31ec93a2f10e942dcc5ee986c03ffdab94018e905836d339131fc928bc14614a94943011868cdddc36a32a + languageName: node + linkType: hard + "@walletconnect/modal@npm:^2.4.7": - version: 2.4.7 - resolution: "@walletconnect/modal@npm:2.4.7" + version: 2.6.2 + resolution: "@walletconnect/modal@npm:2.6.2" dependencies: - "@web3modal/core": "npm:2.4.7" - "@web3modal/ui": "npm:2.4.7" - checksum: 093d8b3acddded0e8f034b53df7cfb671afe1a23b1352472b1cf33f08515cd080c5a79bee098c2076412c8a2e9f25742fa59f474cafffab707ded0ce429003ff + "@walletconnect/modal-core": "npm:2.6.2" + "@walletconnect/modal-ui": "npm:2.6.2" + checksum: 1cc309f63d061e49fdf7b10d28093d7ef1a47f4624f717f8fd3bf6097ac3b00cea4acc45c50e8bd386d4bcfdf10f4dcba960f7129c557b9dc42ef7d05b970807 languageName: node linkType: hard @@ -6902,20 +6004,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.8.1": - version: 2.8.1 - resolution: "@walletconnect/sign-client@npm:2.8.1" +"@walletconnect/sign-client@npm:2.10.4": + version: 2.10.4 + resolution: "@walletconnect/sign-client@npm:2.10.4" dependencies: - "@walletconnect/core": "npm:2.8.1" + "@walletconnect/core": "npm:2.10.4" "@walletconnect/events": "npm:^1.0.1" "@walletconnect/heartbeat": "npm:1.2.1" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:^2.0.1" "@walletconnect/time": "npm:^1.0.2" - "@walletconnect/types": "npm:2.8.1" - "@walletconnect/utils": "npm:2.8.1" + "@walletconnect/types": "npm:2.10.4" + "@walletconnect/utils": "npm:2.10.4" events: "npm:^3.3.0" - checksum: acd301f64057aac811c1ef6dc1a5d28103819cb51ca9226e328ea0d3f95f3e2b579d39b0e366752976168d2565af49228f97d2d4e06ce71a54c82fcc1bb4faec + checksum: dbb21d119c467b8fd5fccfeac037bc0f3c7d32c664337368710ac15a3ffce8286a30dddf372c18fca1aebccfd1405fa21619507e265ec7ad7632cce2965ba193 languageName: node linkType: hard @@ -6928,9 +6030,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.8.1": - version: 2.8.1 - resolution: "@walletconnect/types@npm:2.8.1" +"@walletconnect/types@npm:2.10.4": + version: 2.10.4 + resolution: "@walletconnect/types@npm:2.10.4" dependencies: "@walletconnect/events": "npm:^1.0.1" "@walletconnect/heartbeat": "npm:1.2.1" @@ -6938,31 +6040,30 @@ __metadata: "@walletconnect/keyvaluestorage": "npm:^1.0.2" "@walletconnect/logger": "npm:^2.0.1" events: "npm:^3.3.0" - checksum: c2f216ca30690cd90117749c086adb35643b9d8abc552c07245b88f889259ae1846d4c0f217257fd297e23de4fb96bcfc8cfbb64c21137de85570dd3262c8c13 + checksum: 13a8a827aa3a1a62c467f4004fc569eae4e52cc4146dd015e5c795c5d9f4dcfea7bebba1ecddb888611c487f053523d4c8149c9f22d49997304ebf8de4e0ef00 languageName: node linkType: hard "@walletconnect/universal-provider@npm:^2.8.1": - version: 2.8.1 - resolution: "@walletconnect/universal-provider@npm:2.8.1" + version: 2.10.4 + resolution: "@walletconnect/universal-provider@npm:2.10.4" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:^1.0.7" "@walletconnect/jsonrpc-provider": "npm:1.0.13" "@walletconnect/jsonrpc-types": "npm:^1.0.2" "@walletconnect/jsonrpc-utils": "npm:^1.0.7" "@walletconnect/logger": "npm:^2.0.1" - "@walletconnect/sign-client": "npm:2.8.1" - "@walletconnect/types": "npm:2.8.1" - "@walletconnect/utils": "npm:2.8.1" - eip1193-provider: "npm:1.0.1" + "@walletconnect/sign-client": "npm:2.10.4" + "@walletconnect/types": "npm:2.10.4" + "@walletconnect/utils": "npm:2.10.4" events: "npm:^3.3.0" - checksum: 2403e6056a34026e961b23f90a9ca05f41e3d898800161952dc3c600f50eb1f043769763d50f1953f3f98c20853b0c84dce0e3f4dd3684716d0e0c9c06d1d625 + checksum: 3a263900df2935640319d1f86e40a54dbb0485c1405fe39fdb66db34e043cc5d528e6c90c58cfa6bd4165a99baa7ea755347581e797c9f10bc1a58815599e2da languageName: node linkType: hard -"@walletconnect/utils@npm:2.8.1": - version: 2.8.1 - resolution: "@walletconnect/utils@npm:2.8.1" +"@walletconnect/utils@npm:2.10.4": + version: 2.10.4 + resolution: "@walletconnect/utils@npm:2.10.4" dependencies: "@stablelib/chacha20poly1305": "npm:1.0.1" "@stablelib/hkdf": "npm:1.0.1" @@ -6972,13 +6073,13 @@ __metadata: "@walletconnect/relay-api": "npm:^1.0.9" "@walletconnect/safe-json": "npm:^1.0.2" "@walletconnect/time": "npm:^1.0.2" - "@walletconnect/types": "npm:2.8.1" + "@walletconnect/types": "npm:2.10.4" "@walletconnect/window-getters": "npm:^1.0.1" "@walletconnect/window-metadata": "npm:^1.0.1" detect-browser: "npm:5.3.0" query-string: "npm:7.1.3" uint8arrays: "npm:^3.1.0" - checksum: 257005e26ac2a44e768d3c2b03b55d4e7d3f0075d03197b50c24f18082f99cf9bf5fca4caa3f5191f07baf9644d60df408120d12e87072493f47f5c69aba1c30 + checksum: 0e8eab15294d256e6ab26fd7160a77c0ff0de13d918ecc4bb69caa866621cce4ba7428cbc624a1de063ee404bb72ab35569880d626597954da57220bfb9cbe3e languageName: node linkType: hard @@ -7001,28 +6102,6 @@ __metadata: languageName: node linkType: hard -"@web3modal/core@npm:2.4.7": - version: 2.4.7 - resolution: "@web3modal/core@npm:2.4.7" - dependencies: - buffer: "npm:6.0.3" - valtio: "npm:1.10.5" - checksum: 08be7c9cb0b976631a9d26c206d72232c66294e8b4ffdfce609f1195502fff3d6a6a84279b2afbac887448b41e68ab102502aebdaae8a4e26934d45306a8b1c8 - languageName: node - linkType: hard - -"@web3modal/ui@npm:2.4.7": - version: 2.4.7 - resolution: "@web3modal/ui@npm:2.4.7" - dependencies: - "@web3modal/core": "npm:2.4.7" - lit: "npm:2.7.5" - motion: "npm:10.16.2" - qrcode: "npm:1.5.3" - checksum: aaca2008c056f8f49191768eaec9b8484998e17b4f2355c00f9f308ba55c10649c423e25b46f96e8d38f30109865ba85bc6b1123ea574a87e2218966aaf69191 - languageName: node - linkType: hard - "@whatwg-node/events@npm:^0.0.3": version: 0.0.3 resolution: "@whatwg-node/events@npm:0.0.3" @@ -7051,12 +6130,12 @@ __metadata: linkType: hard "@whatwg-node/fetch@npm:^0.9.0": - version: 0.9.9 - resolution: "@whatwg-node/fetch@npm:0.9.9" + version: 0.9.14 + resolution: "@whatwg-node/fetch@npm:0.9.14" dependencies: - "@whatwg-node/node-fetch": "npm:^0.4.8" + "@whatwg-node/node-fetch": "npm:^0.5.0" urlpattern-polyfill: "npm:^9.0.0" - checksum: c628a85ba2e6665ba4601be1bb12126a7656f2d76fe8e8d9664c120b2c780b39b9f38cb49cf2adcd9eb9420f0a0c5de82537cafc0379ad0474c5a6b28099391e + checksum: cb91d18c744e0d01c2f8d7982f961258a43b54baa8680ed6291a257f85e5ace1b68fc74105eebebd96b4450648fbaec98d91a434c1142da44acf928c41842d58 languageName: node linkType: hard @@ -7073,16 +6152,16 @@ __metadata: languageName: node linkType: hard -"@whatwg-node/node-fetch@npm:^0.4.8": - version: 0.4.13 - resolution: "@whatwg-node/node-fetch@npm:0.4.13" +"@whatwg-node/node-fetch@npm:^0.5.0": + version: 0.5.0 + resolution: "@whatwg-node/node-fetch@npm:0.5.0" dependencies: "@whatwg-node/events": "npm:^0.1.0" busboy: "npm:^1.6.0" fast-querystring: "npm:^1.1.1" fast-url-parser: "npm:^1.1.3" tslib: "npm:^2.3.1" - checksum: 444c63da54e2ab80e3989280009011e6695f911a67f9b10b4d26dabba09dfe75e90a100be42a581d30e7ed2edcfa53ce8727cbc69e049b2937fcccd7e8df36dd + checksum: 1c1638dc205fb9047a41462f787dd90990973b63c4e47baaf3ad4d1f3e1b2537ef9a02d5a874297997d91d3f48392ab4b3eca68b7b48aab32dedc43c7709f0a9 languageName: node linkType: hard @@ -7148,18 +6227,18 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 + version: 8.3.0 + resolution: "acorn-walk@npm:8.3.0" + checksum: 24346e595f507b6e704a60d35f3c5e1aa9891d4fb6a3fc3d856503ab718cc26cabb5e3e1ff0ff8da6ec03d60a8226ebdb602805a94f970e7f797ea3b8b09437f languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" +"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1, acorn@npm:^8.9.0": + version: 8.11.2 + resolution: "acorn@npm:8.11.2" bin: acorn: bin/acorn - checksum: b5c54e736af5ed753911c6752fafd02d0a74cf4d55be606bd81fe71faba4f986dc090952329931ac2aba165803fd0005c59eeef08f9c6c689e8dc420031f3df0 + checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 languageName: node linkType: hard @@ -7182,13 +6261,11 @@ __metadata: linkType: hard "agentkeepalive@npm:^4.2.1": - version: 4.3.0 - resolution: "agentkeepalive@npm:4.3.0" + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" dependencies: - debug: "npm:^4.1.0" - depd: "npm:^2.0.0" humanize-ms: "npm:^1.2.1" - checksum: 61cbdab12d45e82e9ae515b0aa8d09617b66f72409e541a646dd7be4b7260d335d7f56a38079ad305bf0ffb8405592a459faf1294111289107f48352a20c2799 + checksum: 394ea19f9710f230722996e156607f48fdf3a345133b0b1823244b7989426c16019a428b56c82d3eabef616e938812981d9009f4792ecc66bd6a59e991c62612 languageName: node linkType: hard @@ -7222,7 +6299,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4": +"ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -7243,12 +6320,12 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^5.0.0": - version: 5.0.0 - resolution: "ansi-escapes@npm:5.0.0" +"ansi-escapes@npm:^6.2.0": + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" dependencies: - type-fest: "npm:^1.0.2" - checksum: f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 + type-fest: "npm:^3.0.0" + checksum: 3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e languageName: node linkType: hard @@ -7393,7 +6470,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0": +"aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" dependencies: @@ -7402,6 +6479,15 @@ __metadata: languageName: node linkType: hard +"aria-query@npm:^5.0.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" + dependencies: + dequal: "npm:^2.0.3" + checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 + languageName: node + linkType: hard + "array-buffer-byte-length@npm:^1.0.0": version: 1.0.0 resolution: "array-buffer-byte-length@npm:1.0.0" @@ -7419,16 +6505,16 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" +"array-includes@npm:^3.1.6": + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - get-intrinsic: "npm:^1.1.3" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" is-string: "npm:^1.0.7" - checksum: d0caeaa57bea7d14b8480daee30cf8611899321006b15a6cd872b831bd7aaed7649f8764e060d01c5d33b8d9e998e5de5c87f4901874e1c1f467f429b7db2929 + checksum: 692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b languageName: node linkType: hard @@ -7439,28 +6525,55 @@ __metadata: languageName: node linkType: hard +"array.prototype.flat@npm:^1.3.1": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + "array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" es-shim-unscopables: "npm:^1.0.0" - checksum: 2bd58a0e79d5d90cb4f5ef0e287edf8b28e87c65428f54025ac6b7b4c204224b92811c266f296c53a2dbc93872117c0fcea2e51d3c9e8cecfd5024d4a4a57db4 + checksum: 67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 languageName: node linkType: hard "array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" + version: 1.1.2 + resolution: "array.prototype.tosorted@npm:1.1.2" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" es-shim-unscopables: "npm:^1.0.0" - get-intrinsic: "npm:^1.1.3" - checksum: fd5f57aca3c7ddcd1bb83965457b625f3a67d8f334f5cbdb8ac8ef33d5b0d38281524114db2936f8c08048115d5158af216c94e6ae1eb966241b9b6f4ab8a7e8 + get-intrinsic: "npm:^1.2.1" + checksum: aa222a0f78e9cdb4ea4d788a11f0acc2b17c2226f0912917e1c89e0f0c4dcdd14414ac88afffbd03025f33501f2649907cfb80664e48aa2af3430c1fb1b0b416 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.2": + version: 1.0.2 + resolution: "arraybuffer.prototype.slice@npm:1.0.2" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + is-array-buffer: "npm:^3.0.2" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb languageName: node linkType: hard @@ -7496,6 +6609,15 @@ __metadata: languageName: node linkType: hard +"asynciterator.prototype@npm:^1.0.0": + version: 1.0.0 + resolution: "asynciterator.prototype@npm:1.0.0" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204 + languageName: node + linkType: hard + "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -7518,12 +6640,12 @@ __metadata: linkType: hard "autoprefixer@npm:^10.4.13": - version: 10.4.14 - resolution: "autoprefixer@npm:10.4.14" + version: 10.4.16 + resolution: "autoprefixer@npm:10.4.16" dependencies: - browserslist: "npm:^4.21.5" - caniuse-lite: "npm:^1.0.30001464" - fraction.js: "npm:^4.2.0" + browserslist: "npm:^4.21.10" + caniuse-lite: "npm:^1.0.30001538" + fraction.js: "npm:^4.3.6" normalize-range: "npm:^0.1.2" picocolors: "npm:^1.0.0" postcss-value-parser: "npm:^4.2.0" @@ -7531,7 +6653,7 @@ __metadata: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 66ce961b86acd2a46e05ac1eece8657b3d9edfd2ee3abddd6cfcb32755e6865409f57acf11fe05990d6f166afda85a603678435916267a09652265cfff7b5706 + checksum: e00256e754d481a026d928bca729b25954074dd142dbec022f0a7db0d3bbc0dc2e2dc7542e94fec22eff81e21fe140e6856448e2d9a002660cb1e2ad434daee0 languageName: node linkType: hard @@ -7551,29 +6673,20 @@ __metadata: languageName: node linkType: hard -"axios@npm:^0.21.0": - version: 0.21.4 - resolution: "axios@npm:0.21.4" - dependencies: - follow-redirects: "npm:^1.14.0" - checksum: fbcff55ec68f71f02d3773d467db2fcecdf04e749826c82c2427a232f9eba63242150a05f15af9ef15818352b814257541155de0281f8fb2b7e8a5b79f7f2142 - languageName: node - linkType: hard - -"babel-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-jest@npm:29.5.0" +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" dependencies: - "@jest/transform": "npm:^29.5.0" + "@jest/transform": "npm:^29.7.0" "@types/babel__core": "npm:^7.1.14" babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^29.5.0" + babel-preset-jest: "npm:^29.6.3" chalk: "npm:^4.0.0" graceful-fs: "npm:^4.2.9" slash: "npm:^3.0.0" peerDependencies: "@babel/core": ^7.8.0 - checksum: 1114d3935e0f62b72e155ac79916214c078e798561be3b03d12ddd862f2849becc8516f89046719161ec457bded35d2e1fd7ddfb207a6169dd18bbb2a67ee987 + checksum: 2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 languageName: node linkType: hard @@ -7590,51 +6703,51 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-plugin-jest-hoist@npm:29.5.0" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": "npm:^7.3.3" "@babel/types": "npm:^7.3.3" "@types/babel__core": "npm:^7.1.14" "@types/babel__traverse": "npm:^7.0.6" - checksum: 385547c4d81647848dc3e86fecf4381032be99ed97d87aee78d422631f651042600371ee31e37ec9bb6f4a0a4f296b3b5798d69c410626ea94eae76d9c64da63 + checksum: 7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" +"babel-plugin-polyfill-corejs2@npm:^0.4.6": + version: 0.4.6 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.6" dependencies: - "@babel/compat-data": "npm:^7.17.7" - "@babel/helper-define-polyfill-provider": "npm:^0.3.3" - semver: "npm:^6.1.1" + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + semver: "npm:^6.3.1" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 21e34d4ba961de66d3fe31f3fecca5612d5db99638949766a445d37de72c1f736552fe436f3bd3792e5cc307f48e8f78a498a01e858c84946627ddb662415cc4 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 64a98811f343492aa6970ab253760194e389c0417e5b830522f944009c1f0c78e1251975fd1b9869cd48cc4623111b20a3389cf6732a1d10ba0d19de6fa5114f languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" +"babel-plugin-polyfill-corejs3@npm:^0.8.5": + version: 0.8.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.6" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.3.3" - core-js-compat: "npm:^3.25.1" + "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + core-js-compat: "npm:^3.33.1" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 58f7d16c1fbc5e4a68cc58126039cb997edc9b9d29adf1bc4124eb6a12ec31eb9e1da8df769b7219714748af7916cfbb194b2f15bd55571b3b43cdcd7839fe8f + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 97d974c1dfbefdf27866e21a1ac757f6ab1626379b544d6f8ddb05f7bfa02173f8347b6140295b0f770394549f9321775d3048e466a9a02b99b88ad5f0346858 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" +"babel-plugin-polyfill-regenerator@npm:^0.5.3": + version: 0.5.3 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.3" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.3.3" + "@babel/helper-define-polyfill-provider": "npm:^0.4.3" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd915d51e30259201b289a58dfa46c8c1bc8827a38c275ff3134c8194d27e634d5c32ec62137d489d81c7dd5f6ea46b04057eb44b7180d06c19388e3a5f4f8c6 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: cc32313b9ebbf1d7bedc33524a861136b9e5d3b6e9be317ac360a1c2a59ae5ed1b465a6c68b2715cdefb089780ddfb0c11f4a148e49827a947beee76e43da598 languageName: node linkType: hard @@ -7713,15 +6826,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-preset-jest@npm:29.5.0" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: "npm:^29.5.0" + babel-plugin-jest-hoist: "npm:^29.6.3" babel-preset-current-node-syntax: "npm:^1.0.0" peerDependencies: "@babel/core": ^7.0.0 - checksum: 752b8682c8cf55bca46d870003f4ce43a4ba0fcaa1138ff7f0e02340628e221810b0c2c3e77a7d5070168dc163eb11907f6c9256f187242abe0f14219d1f6b12 + checksum: ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 languageName: node linkType: hard @@ -7832,7 +6945,7 @@ __metadata: languageName: node linkType: hard -"bottleneck@npm:^2.15.3, bottleneck@npm:^2.18.1": +"bottleneck@npm:^2.15.3": version: 2.19.5 resolution: "bottleneck@npm:2.19.5" checksum: b0f72e45b2e0f56a21ba720183f16bef8e693452fb0495d997fa354e42904353a94bd8fd429868e6751bc85e54b6755190519eed5a0ae0a94a5185209ae7c6d0 @@ -7867,31 +6980,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" - dependencies: - caniuse-lite: "npm:^1.0.30001449" - electron-to-chromium: "npm:^1.4.284" - node-releases: "npm:^2.0.8" - update-browserslist-db: "npm:^1.0.10" - bin: - browserslist: cli.js - checksum: 903040d2c45b733e1177c288b4f146ff21d45e8a44ccc87d1d7fc2f6a8d021c7ee54b514fd7722529c282381969382a54bd2ab4263f5b6c8981a856b457ea162 - languageName: node - linkType: hard - -"browserslist@npm:^4.21.9": - version: 4.21.10 - resolution: "browserslist@npm:4.21.10" +"browserslist@npm:^4.0.0, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": + version: 4.22.1 + resolution: "browserslist@npm:4.22.1" dependencies: - caniuse-lite: "npm:^1.0.30001517" - electron-to-chromium: "npm:^1.4.477" + caniuse-lite: "npm:^1.0.30001541" + electron-to-chromium: "npm:^1.4.535" node-releases: "npm:^2.0.13" - update-browserslist-db: "npm:^1.0.11" + update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: e8c98496e5f2a5128d0e2f1f186dc0416bfc49c811e568b19c9e07a56cccc1f7f415fa4f532488e6a13dfacbe3332a9b55b152082ff125402696a11a158a0894 + checksum: 6810f2d63f171d0b7b8d38cf091708e00cb31525501810a507839607839320d66e657293b0aa3d7f051ecbc025cb07390a90c037682c1d05d12604991e41050b languageName: node linkType: hard @@ -7920,16 +7019,6 @@ __metadata: languageName: node linkType: hard -"buffer@npm:6.0.3, buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.2.1" - checksum: 2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 - languageName: node - linkType: hard - "buffer@npm:^5.1.0, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -7940,13 +7029,23 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + "bufferutil@npm:^4.0.1": - version: 4.0.7 - resolution: "bufferutil@npm:4.0.7" + version: 4.0.8 + resolution: "bufferutil@npm:4.0.8" dependencies: node-gyp: "npm:latest" node-gyp-build: "npm:^4.3.0" - checksum: 48d6cf98b9c227db65f0a1062b6c80e933c43dc03e0ad5f908da0e79cc87a633c215516f4d541ca9b0e09c1fb386f1bbe1fc2de913057f0201d14798d3e0c2bb + checksum: 36cdc5b53a38d9f61f89fdbe62029a2ebcd020599862253fefebe31566155726df9ff961f41b8c97b02b4c12b391ef97faf94e2383392654cf8f0ed68f76e47c languageName: node linkType: hard @@ -8014,13 +7113,14 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.4, call-bind@npm:^1.0.5": + version: 1.0.5 + resolution: "call-bind@npm:1.0.5" dependencies: - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.0.2" - checksum: 74ba3f31e715456e22e451d8d098779b861eba3c7cac0d9b510049aced70d75c231ba05071f97e1812c98e34e2bee734c0c6126653e0088c2d9819ca047f4073 + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.1" + set-function-length: "npm:^1.1.1" + checksum: a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10 languageName: node linkType: hard @@ -8092,10 +7192,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001559 - resolution: "caniuse-lite@npm:1.0.30001559" - checksum: 32377e386580dcb977f552b488e7b56fb489aa0a83f4f43087af6e8fe1fe7fda529bc29e76ef38c0f9c56c964389d322059a0dd7a544859a7b88063f7fc761d7 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001541": + version: 1.0.30001561 + resolution: "caniuse-lite@npm:1.0.30001561" + checksum: 6e84c84026fee53edbdbb5aded7a04a036aae4c2e367cf6bdc90c6783a591e2fdcfcdebcc4e774aca61092e542a61200c8c16b06659396492426033c4dbcc618 languageName: node linkType: hard @@ -8122,7 +7222,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.3.2, chalk@npm:^2.4.2": +"chalk@npm:^2.3.2, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -8153,14 +7253,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.0.0": - version: 5.2.0 - resolution: "chalk@npm:5.2.0" - checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 - languageName: node - linkType: hard - -"chalk@npm:^5.3.0": +"chalk@npm:^5.2.0, chalk@npm:^5.3.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 @@ -8245,14 +7338,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": - version: 3.8.0 - resolution: "ci-info@npm:3.8.0" - checksum: 0d3052193b58356372b34ab40d2668c3e62f1006d5ca33726d1d3c423853b19a85508eadde7f5908496fb41448f465263bf61c1ee58b7832cb6a924537e3863a - languageName: node - linkType: hard - -"ci-info@npm:^3.6.1, ci-info@npm:^3.7.1, ci-info@npm:^3.8.0, ci-info@npm:^3.9.0": +"ci-info@npm:^3.2.0, ci-info@npm:^3.6.1, ci-info@npm:^3.7.1, ci-info@npm:^3.8.0, ci-info@npm:^3.9.0": version: 3.9.0 resolution: "ci-info@npm:3.9.0" checksum: 6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a @@ -8269,9 +7355,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 83330e1feda2e3699b8c305bfa8f841b41822049393f5eefeb574e60bde556e2a251ee9b7971cde0cb47ac4f7823bf4ab4a6005b8471f86ad9f5509eefb66cbd + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab languageName: node linkType: hard @@ -8320,13 +7406,13 @@ __metadata: linkType: hard "cli-spinners@npm:^2.5.0": - version: 2.9.0 - resolution: "cli-spinners@npm:2.9.0" - checksum: c0d5437acc1ace7361b1c58a4fda3c92c2d8691ff3169ac658ce30faee71280b7aa706c072bcb6d0e380c232f3495f7d5ad4668c1391fe02c4d3a39d37798f44 + version: 2.9.1 + resolution: "cli-spinners@npm:2.9.1" + checksum: c9b1152bd387e5b76823bdee6f19079c4017994d352627216e5d3dab9220a8402514519ad96a0a12120b80752fead98d1e7a7a5f56ce32125f92778ef47bdd8c languageName: node linkType: hard -"cli-table3@npm:^0.6.1, cli-table3@npm:^0.6.2, cli-table3@npm:^0.6.3": +"cli-table3@npm:^0.6.2, cli-table3@npm:^0.6.3": version: 0.6.3 resolution: "cli-table3@npm:0.6.3" dependencies: @@ -8416,9 +7502,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -8699,13 +7785,6 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: 281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b - languageName: node - linkType: hard - "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -8713,12 +7792,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.25.1": - version: 3.30.1 - resolution: "core-js-compat@npm:3.30.1" +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": + version: 3.33.2 + resolution: "core-js-compat@npm:3.33.2" dependencies: - browserslist: "npm:^4.21.5" - checksum: 3fbbe8a3f386f44707de19efac7bf0a37453f44da7323424d62491c69f193e6784046c771f026b83de3df24c99330b2e2958c35daa9409bf4d02eefd3795c691 + browserslist: "npm:^4.22.1" + checksum: bcf6f0badffbbf4a127449f64720c33e9c960f204f072d9644954b30d7742e18de733e9f446c7093f1ccf5d9e101205a7c64747a5aeec7d3925f336322f85a03 languageName: node linkType: hard @@ -8742,27 +7821,20 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^8.0.0": - version: 8.1.3 - resolution: "cosmiconfig@npm:8.1.3" - dependencies: - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - checksum: 80144be230b89857e7c4cafd59ba8feb3f5f7e6dae90faa324629fdecf9a6fc3f5b4106c3623f69a1a3d77cb11ef90e5ab65a67f21d73ffda3d76b18f8e4e6c2 - languageName: node - linkType: hard - -"cosmiconfig@npm:^8.1.0, cosmiconfig@npm:^8.1.3": - version: 8.2.0 - resolution: "cosmiconfig@npm:8.2.0" +"cosmiconfig@npm:^8.0.0, cosmiconfig@npm:^8.1.0, cosmiconfig@npm:^8.1.3": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" dependencies: - import-fresh: "npm:^3.2.1" + import-fresh: "npm:^3.3.0" js-yaml: "npm:^4.1.0" - parse-json: "npm:^5.0.0" + parse-json: "npm:^5.2.0" path-type: "npm:^4.0.0" - checksum: 4180aa6d1881b75ba591b2fc04b022741a3a4b67e9e243c0eb8d169b6e1efbd3cdf7e8ca19243c0f2e53a9d59ac3eccd5cad5f95f487fcbf4e740f9e86745747 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a languageName: node linkType: hard @@ -8775,6 +7847,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -8782,16 +7871,7 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.4": - version: 3.1.6 - resolution: "cross-fetch@npm:3.1.6" - dependencies: - node-fetch: "npm:^2.6.11" - checksum: 39cdd0e16603e43b66fe187bb2a14fb7b4a0b35322ff61d7b08bf48b29a2a7fe835423b27eece46348ab92c45719054e49c4de52de89f279e0935f36a301a5a5 - languageName: node - linkType: hard - -"cross-fetch@npm:^3.1.5": +"cross-fetch@npm:^3.1.4, cross-fetch@npm:^3.1.5": version: 3.1.8 resolution: "cross-fetch@npm:3.1.8" dependencies: @@ -8800,6 +7880,15 @@ __metadata: languageName: node linkType: hard +"cross-inspect@npm:1.0.0": + version: 1.0.0 + resolution: "cross-inspect@npm:1.0.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -8828,11 +7917,11 @@ __metadata: linkType: hard "css-declaration-sorter@npm:^6.3.1": - version: 6.4.0 - resolution: "css-declaration-sorter@npm:6.4.0" + version: 6.4.1 + resolution: "css-declaration-sorter@npm:6.4.1" peerDependencies: postcss: ^8.0.9 - checksum: aef4d5927e576bae04349457be0607af44525cf5f4b28a91843c7b7f28fcbb302ba149385bb0e2172380556994e31680c5177b42d03502c417789b139e20cbc2 + checksum: b8b664338dac528266a1ed9b27927ac51a907fb16bc1954fa9038b5286c442603bd494cc920c6a3616111309d18ee6b5a85b6d9927938efc942af452a5145160 languageName: node linkType: hard @@ -8849,19 +7938,6 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^6.1.0" - domhandler: "npm:^5.0.2" - domutils: "npm:^3.0.1" - nth-check: "npm:^2.0.1" - checksum: 551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 - languageName: node - linkType: hard - "css-selector-tokenizer@npm:^0.8.0": version: 0.8.0 resolution: "css-selector-tokenizer@npm:0.8.0" @@ -8882,27 +7958,7 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.2.1": - version: 2.3.1 - resolution: "css-tree@npm:2.3.1" - dependencies: - mdn-data: "npm:2.0.30" - source-map-js: "npm:^1.0.1" - checksum: 6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 - languageName: node - linkType: hard - -"css-tree@npm:~2.2.0": - version: 2.2.1 - resolution: "css-tree@npm:2.2.1" - dependencies: - mdn-data: "npm:2.0.28" - source-map-js: "npm:^1.0.1" - checksum: 47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186 - languageName: node - linkType: hard - -"css-what@npm:^6.0.1, css-what@npm:^6.1.0": +"css-what@npm:^6.0.1": version: 6.1.0 resolution: "css-what@npm:6.1.0" checksum: a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 @@ -8964,45 +8020,6 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^6.0.1": - version: 6.0.1 - resolution: "cssnano-preset-default@npm:6.0.1" - dependencies: - css-declaration-sorter: "npm:^6.3.1" - cssnano-utils: "npm:^4.0.0" - postcss-calc: "npm:^9.0.0" - postcss-colormin: "npm:^6.0.0" - postcss-convert-values: "npm:^6.0.0" - postcss-discard-comments: "npm:^6.0.0" - postcss-discard-duplicates: "npm:^6.0.0" - postcss-discard-empty: "npm:^6.0.0" - postcss-discard-overridden: "npm:^6.0.0" - postcss-merge-longhand: "npm:^6.0.0" - postcss-merge-rules: "npm:^6.0.1" - postcss-minify-font-values: "npm:^6.0.0" - postcss-minify-gradients: "npm:^6.0.0" - postcss-minify-params: "npm:^6.0.0" - postcss-minify-selectors: "npm:^6.0.0" - postcss-normalize-charset: "npm:^6.0.0" - postcss-normalize-display-values: "npm:^6.0.0" - postcss-normalize-positions: "npm:^6.0.0" - postcss-normalize-repeat-style: "npm:^6.0.0" - postcss-normalize-string: "npm:^6.0.0" - postcss-normalize-timing-functions: "npm:^6.0.0" - postcss-normalize-unicode: "npm:^6.0.0" - postcss-normalize-url: "npm:^6.0.0" - postcss-normalize-whitespace: "npm:^6.0.0" - postcss-ordered-values: "npm:^6.0.0" - postcss-reduce-initial: "npm:^6.0.0" - postcss-reduce-transforms: "npm:^6.0.0" - postcss-svgo: "npm:^6.0.0" - postcss-unique-selectors: "npm:^6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 401a8d0712cca6577df52cf4aac234ff4a946f0f51c0d09e7c518fff389706cff54d702ff22762e834b23401a89b836aef113e69cc66fa5dfa1f361bdd932495 - languageName: node - linkType: hard - "cssnano-utils@npm:^3.1.0": version: 3.1.0 resolution: "cssnano-utils@npm:3.1.0" @@ -9012,27 +8029,6 @@ __metadata: languageName: node linkType: hard -"cssnano-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-utils@npm:4.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: ca5cb2be5ec8ea624c28f5f54c00a440557afd3c2b25cb568517db44d230833743f3db30729126efe4d7fc616a42718dd76255bbefcb7d3cc7e3ff5989d907b3 - languageName: node - linkType: hard - -"cssnano@npm:*": - version: 6.0.1 - resolution: "cssnano@npm:6.0.1" - dependencies: - cssnano-preset-default: "npm:^6.0.1" - lilconfig: "npm:^2.1.0" - peerDependencies: - postcss: ^8.2.15 - checksum: b73a3a257dd32201ce504cb34b08f1259c8a260b063f58d33e03283149d94ee2ba938d7f9beae1413f0f34e06828759575ade6ae95fa01d199f291e1d4f6d2c2 - languageName: node - linkType: hard - "cssnano@npm:^5.0.1, cssnano@npm:^5.0.15": version: 5.1.15 resolution: "cssnano@npm:5.1.15" @@ -9055,15 +8051,6 @@ __metadata: languageName: node linkType: hard -"csso@npm:^5.0.5": - version: 5.0.5 - resolution: "csso@npm:5.0.5" - dependencies: - css-tree: "npm:~2.2.0" - checksum: ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b - languageName: node - linkType: hard - "cssom@npm:^0.5.0": version: 0.5.0 resolution: "cssom@npm:0.5.0" @@ -9105,8 +8092,8 @@ __metadata: linkType: hard "daisyui@npm:^2.51.1": - version: 2.51.6 - resolution: "daisyui@npm:2.51.6" + version: 2.52.0 + resolution: "daisyui@npm:2.52.0" dependencies: color: "npm:^4.2" css-selector-tokenizer: "npm:^0.8.0" @@ -9115,7 +8102,7 @@ __metadata: peerDependencies: autoprefixer: ^10.0.2 postcss: ^8.1.6 - checksum: 53bfe2f0fa98ec453af543a8a9ad610ffbe0447279bee9076ec87c526849299c68e2e352883b387c83b8daa64afcc2cd29b4a3ab8fd4e8246758d373521fb660 + checksum: c8ab5f47534d8a8676b8b200bf9d7a9c6129d172f94c1114a9d0bc8e433f59b5bebe057506b74fea0e366b5367f34362ba8d2c783ccb53c57fc52c0b697aaf53 languageName: node linkType: hard @@ -9217,21 +8204,26 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 7c3aa00ddfe3e5fcd477958e156156a5137e3bb6ff1493ca05edff4decf29a90a057974cc77e75951f8eb801c1816cb45aea1f52d628cdd000b82b36ab839d1b +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 languageName: node linkType: hard "deep-equal@npm:^2.0.5": - version: 2.2.1 - resolution: "deep-equal@npm:2.2.1" + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" dependencies: array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.2" + call-bind: "npm:^1.0.5" es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.0" + get-intrinsic: "npm:^1.2.2" is-arguments: "npm:^1.1.1" is-array-buffer: "npm:^3.0.2" is-date-object: "npm:^1.0.5" @@ -9241,12 +8233,12 @@ __metadata: object-is: "npm:^1.1.5" object-keys: "npm:^1.1.1" object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.0" + regexp.prototype.flags: "npm:^1.5.1" side-channel: "npm:^1.0.4" which-boxed-primitive: "npm:^1.0.2" which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: 9e32606f0e24ef4d6b100c68cadae81495c3638944e933afc4b8389b042e95c5fe1381492cf7a6d385bcbae564c9cfb7086f37f277e37521a632b008a6b208dc + which-typed-array: "npm:^1.1.13" + checksum: a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f languageName: node linkType: hard @@ -9257,7 +8249,7 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c @@ -9280,13 +8272,25 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": - version: 1.2.0 - resolution: "define-properties@npm:1.2.0" +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": + version: 1.1.1 + resolution: "define-data-property@npm:1.1.1" + dependencies: + get-intrinsic: "npm:^1.2.1" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + checksum: 77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" dependencies: + define-data-property: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" object-keys: "npm:^1.1.1" - checksum: 34b58cae4651936a3c8c720310ce393a3227f5123640ab5402e7d6e59bb44f8295b789cb5d74e7513682b2e60ff20586d6f52b726d964d617abffa3da76344e0 + checksum: 88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 languageName: node linkType: hard @@ -9320,13 +8324,6 @@ __metadata: languageName: node linkType: hard -"depd@npm:^2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: 58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c - languageName: node - linkType: hard - "dependency-graph@npm:^0.11.0": version: 0.11.0 resolution: "dependency-graph@npm:0.11.0" @@ -9334,13 +8331,20 @@ __metadata: languageName: node linkType: hard -"deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": +"deprecation@npm:^2.0.0": version: 2.3.1 resolution: "deprecation@npm:2.3.1" checksum: 23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 languageName: node linkType: hard +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + "detect-browser@npm:5.3.0": version: 5.3.0 resolution: "detect-browser@npm:5.3.0" @@ -9386,10 +8390,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.4.3": - version: 29.4.3 - resolution: "diff-sequences@npm:29.4.3" - checksum: 183800b9fd8523a05a3a50ade0fafe81d4b8a8ac113b077d2bc298052ccdc081e3b896f19bf65768b536daebd8169a493c4764cb70a2195e14c442c12538d121 +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 languageName: node linkType: hard @@ -9466,18 +8470,7 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:^2.0.0": - version: 2.0.0 - resolution: "dom-serializer@npm:2.0.0" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.2" - entities: "npm:^4.2.0" - checksum: d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: 686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 @@ -9502,15 +8495,6 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": - version: 5.0.3 - resolution: "domhandler@npm:5.0.3" - dependencies: - domelementtype: "npm:^2.3.0" - checksum: bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a - languageName: node - linkType: hard - "domutils@npm:^2.8.0": version: 2.8.0 resolution: "domutils@npm:2.8.0" @@ -9522,17 +8506,6 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^3.0.1": - version: 3.1.0 - resolution: "domutils@npm:3.1.0" - dependencies: - dom-serializer: "npm:^2.0.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - checksum: 342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 - languageName: node - linkType: hard - "dot-case@npm:^3.0.4": version: 3.0.4 resolution: "dot-case@npm:3.0.4" @@ -9560,9 +8533,9 @@ __metadata: linkType: hard "dset@npm:^3.1.2": - version: 3.1.2 - resolution: "dset@npm:3.1.2" - checksum: a10d5f214ccd53e7d2e79215473256b74cb98fd3f20ad4f4684ab575b19bac71e5dda524d6febcf42854062e3f575a2dbfca4d53d2ffb9ae238eecdcc97a095b + version: 3.1.3 + resolution: "dset@npm:3.1.3" + checksum: b1ff68f1f42af373baa85b00b04d89094cd0d7f74f94bd11364cba575f2762ed52a0a0503bbfcc92eccd07c6d55426813c8a7a6cfa020338eaea1f4edfd332c2 languageName: node linkType: hard @@ -9603,26 +8576,10 @@ __metadata: languageName: node linkType: hard -"eip1193-provider@npm:1.0.1": - version: 1.0.1 - resolution: "eip1193-provider@npm:1.0.1" - dependencies: - "@json-rpc-tools/provider": "npm:^1.5.5" - checksum: 3cac47c84d5c0752206dcfab7cbbf664b41532b4db3fd4f2e7d52804df6208a1b2825e8ef8aaff67b673aec4d50c74f480229c3f59d59939e8bae7eca4192fd7 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.284": - version: 1.4.382 - resolution: "electron-to-chromium@npm:1.4.382" - checksum: 5d9f311de840ae7bd9f6355ff39b78a5672d6fa58a27bff004b02ffbdf88308189026a5e66c1ac2cc0389033b7e7a02d14f62b1cba5d4785406374e088517918 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.477": - version: 1.4.492 - resolution: "electron-to-chromium@npm:1.4.492" - checksum: 70cba1df3736f3fe213df5651dbb219eba7ab6ae767da4111b22884f0043e478f1db436e2112019e63061a6d8b12b09c3000fb0138996830dead04c0e0f03f45 +"electron-to-chromium@npm:^1.4.535": + version: 1.4.579 + resolution: "electron-to-chromium@npm:1.4.579" + checksum: 71c8b603db172b06338bc84747e99f06b398b3299eb4a677c9f48ed40aab1bc225b8c59199951450ae198e1f904a6fc6a87578db16eb7fadf716518759718e1c languageName: node linkType: hard @@ -9679,7 +8636,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.4.0": +"entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 @@ -9710,7 +8667,7 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.3.1, error-ex@npm:^1.3.2": +"error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: @@ -9719,24 +8676,25 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.2 - resolution: "es-abstract@npm:1.21.2" +"es-abstract@npm:^1.22.1": + version: 1.22.3 + resolution: "es-abstract@npm:1.22.3" dependencies: array-buffer-byte-length: "npm:^1.0.0" + arraybuffer.prototype.slice: "npm:^1.0.2" available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" + call-bind: "npm:^1.0.5" es-set-tostringtag: "npm:^2.0.1" es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.5" - get-intrinsic: "npm:^1.2.0" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.2" get-symbol-description: "npm:^1.0.0" globalthis: "npm:^1.0.3" gopd: "npm:^1.0.1" - has: "npm:^1.0.3" has-property-descriptors: "npm:^1.0.0" has-proto: "npm:^1.0.1" has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" internal-slot: "npm:^1.0.5" is-array-buffer: "npm:^3.0.2" is-callable: "npm:^1.2.7" @@ -9744,20 +8702,24 @@ __metadata: is-regex: "npm:^1.1.4" is-shared-array-buffer: "npm:^1.0.2" is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.10" + is-typed-array: "npm:^1.1.12" is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.12.3" + object-inspect: "npm:^1.13.1" object-keys: "npm:^1.1.1" object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.4.3" + regexp.prototype.flags: "npm:^1.5.1" + safe-array-concat: "npm:^1.0.1" safe-regex-test: "npm:^1.0.0" - string.prototype.trim: "npm:^1.2.7" - string.prototype.trimend: "npm:^1.0.6" - string.prototype.trimstart: "npm:^1.0.6" + string.prototype.trim: "npm:^1.2.8" + string.prototype.trimend: "npm:^1.0.7" + string.prototype.trimstart: "npm:^1.0.7" + typed-array-buffer: "npm:^1.0.0" + typed-array-byte-length: "npm:^1.0.0" + typed-array-byte-offset: "npm:^1.0.0" typed-array-length: "npm:^1.0.4" unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.9" - checksum: 7dc2c882bafbb13609b9c35c29f0717ebf5a4dbde23a73803be821f349aa38d55f324318ccebb6da83c074260622f11d0a7f4cd1e0e19f52cc03b6b5386693fb + which-typed-array: "npm:^1.1.13" + checksum: da31ec43b1c8eb47ba8a17693cac143682a1078b6c3cd883ce0e2062f135f532e93d873694ef439670e1f6ca03195118f43567ba6f33fb0d6c7daae750090236 languageName: node linkType: hard @@ -9778,23 +8740,45 @@ __metadata: languageName: node linkType: hard +"es-iterator-helpers@npm:^1.0.12": + version: 1.0.15 + resolution: "es-iterator-helpers@npm:1.0.15" + dependencies: + asynciterator.prototype: "npm:^1.0.0" + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.1" + es-set-tostringtag: "npm:^2.0.1" + function-bind: "npm:^1.1.1" + get-intrinsic: "npm:^1.2.1" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.0" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.5" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.0.1" + checksum: b4c83f94bfe624260d5238092de3173989f76f1416b1d02c388aea3b2024174e5f5f0e864057311ac99790b57e836ca3545b6e77256b26066dac944519f5e6d6 + languageName: node + linkType: hard + "es-set-tostringtag@npm:^2.0.1": - version: 2.0.1 - resolution: "es-set-tostringtag@npm:2.0.1" + version: 2.0.2 + resolution: "es-set-tostringtag@npm:2.0.2" dependencies: - get-intrinsic: "npm:^1.1.3" - has: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.2" has-tostringtag: "npm:^1.0.0" - checksum: 9af096365e3861bb29755cc5f76f15f66a7eab0e83befca396129090c1d9737e54090278b8e5357e97b5f0a5b0459fca07c40c6740884c2659cbf90ef8e508cc + hasown: "npm:^2.0.0" + checksum: 176d6bd1be31dd0145dcceee62bb78d4a5db7f81db437615a18308a6f62bcffe45c15081278413455e8cf0aad4ea99079de66f8de389605942dfdacbad74c2d5 languageName: node linkType: hard "es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" dependencies: - has: "npm:^1.0.3" - checksum: d54a66239fbd19535b3e50333913260394f14d2d7adb136a95396a13ca584bab400cf9cb2ffd9232f3fe2f0362540bd3a708240c493e46e13fe0b90cfcfedc3d + hasown: "npm:^2.0.0" + checksum: f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 languageName: node linkType: hard @@ -10113,13 +9097,12 @@ __metadata: linkType: hard "escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: "npm:^4.0.1" estraverse: "npm:^5.2.0" esutils: "npm:^2.0.2" - optionator: "npm:^0.8.1" source-map: "npm:~0.6.1" dependenciesMeta: source-map: @@ -10127,24 +9110,25 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 7d9834841db85d7cce2026c18da56c803564ca18bd6c1e81934cc08329ac4d366fac8b571e8708a81e21143f3dada56a4e34c9a9904c8b066f13abe8d9869871 + checksum: e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard "eslint-plugin-jest@npm:^27.2.1": - version: 27.2.1 - resolution: "eslint-plugin-jest@npm:27.2.1" + version: 27.6.0 + resolution: "eslint-plugin-jest@npm:27.6.0" dependencies: "@typescript-eslint/utils": "npm:^5.10.0" peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 + "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 eslint: ^7.0.0 || ^8.0.0 + jest: "*" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - checksum: eaa298ddcae3f28b0989207d50e8cece0399283e3c1664f8686f6ff6a9dabee637e8e5f77278e319389d808cdc94f7de49a5705ce3d2fbc0a782ae3cd06ec17c + checksum: f6a61f91c382c82d653632b85749896c0c8c2ac1e17e43cbe242da0eb5ea9f818e796ac65f7e5d7904acea36392218181be4672869b566a756243e9d39737644 languageName: node linkType: hard @@ -10158,13 +9142,14 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.32.2": - version: 7.32.2 - resolution: "eslint-plugin-react@npm:7.32.2" + version: 7.33.2 + resolution: "eslint-plugin-react@npm:7.33.2" dependencies: array-includes: "npm:^3.1.6" array.prototype.flatmap: "npm:^1.3.1" array.prototype.tosorted: "npm:^1.1.1" doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.12" estraverse: "npm:^5.3.0" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" minimatch: "npm:^3.1.2" @@ -10174,11 +9159,11 @@ __metadata: object.values: "npm:^1.1.6" prop-types: "npm:^15.8.1" resolve: "npm:^2.0.0-next.4" - semver: "npm:^6.3.0" + semver: "npm:^6.3.1" string.prototype.matchall: "npm:^4.0.8" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 9ddd5cfc508555a5cb3edbdcc9138dd472d269d3a45da0be3e267ea2b3fa1b5990823675208c0e11376c9c55e46aaad5b7a5f46c965eb4dcf6f1eebcebf174c3 + checksum: f9b247861024bafc396c4bd3c9ac946604b3b23077251c98f23602aa22027a0c33a69157fd49564e4ff7f17b3678e5dc366a46c7ec42a09454d7cbce786d5001 languageName: node linkType: hard @@ -10192,43 +9177,44 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.0": - version: 7.2.0 - resolution: "eslint-scope@npm:7.2.0" +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 5b48a3cc2485a3a58ca0bdecfb557c349009308a9b2afb24d070b1c0c254d445ee86d78bfee2c4ed6d1b8944307604a987c92f6d7e611e29de5d06256747a0ff + checksum: 613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.0": - version: 3.4.0 - resolution: "eslint-visitor-keys@npm:3.4.0" - checksum: 8b8cc611219b8864952a7485540482763e33289d734161bd6fe00cb6c1fc98af6bd8fe5c1d02d6d2b2657ff5cc52d30828fd52606ed50924412953a3e7d95cb7 +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard "eslint@npm:^8.34.0": - version: 8.39.0 - resolution: "eslint@npm:8.39.0" + version: 8.53.0 + resolution: "eslint@npm:8.53.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.4.0" - "@eslint/eslintrc": "npm:^2.0.2" - "@eslint/js": "npm:8.39.0" - "@humanwhocodes/config-array": "npm:^0.11.8" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.3" + "@eslint/js": "npm:8.53.0" + "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" - ajv: "npm:^6.10.0" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.2" debug: "npm:^4.3.2" doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.0" - eslint-visitor-keys: "npm:^3.4.0" - espree: "npm:^9.5.1" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" esquery: "npm:^1.4.2" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" @@ -10236,37 +9222,34 @@ __metadata: find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" globals: "npm:^13.19.0" - grapheme-splitter: "npm:^1.0.4" + graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" - import-fresh: "npm:^3.0.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" is-path-inside: "npm:^3.0.3" - js-sdsl: "npm:^4.1.4" js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.1" + optionator: "npm:^0.9.3" strip-ansi: "npm:^6.0.1" - strip-json-comments: "npm:^3.1.0" text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 34679da06fbc9ee75d13de57864589537e7460408c923510029b87cdf9f52fec2eb7f85cebbbff7ed15de0b37b7b14969efb036804f774aa4455809c9ccea2cb + checksum: c5cd0049488c0463dab7d97466767ca5a1d0b3b59d0a223122683dc8039ecea30b27867fb9e38906b4c1ab9d09ece8a802a6c540d8905016f1cc4b4bb27329af languageName: node linkType: hard -"espree@npm:^9.5.1": - version: 9.5.1 - resolution: "espree@npm:9.5.1" +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: - acorn: "npm:^8.8.0" + acorn: "npm:^8.9.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.0" - checksum: a67a1551895aa25c59c182a58e45d31a34cbeffb4a3731812db0a859fa0373cd9921af22a8aae15f42c3bf22c75a1dbd2304cdeb6530a5e7f672af87a9f9ef5f + eslint-visitor-keys: "npm:^3.4.1" + checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -10413,8 +9396,8 @@ __metadata: linkType: hard "execa@npm:^7.0.0": - version: 7.1.1 - resolution: "execa@npm:7.1.1" + version: 7.2.0 + resolution: "execa@npm:7.2.0" dependencies: cross-spawn: "npm:^7.0.3" get-stream: "npm:^6.0.1" @@ -10425,7 +9408,7 @@ __metadata: onetime: "npm:^6.0.0" signal-exit: "npm:^3.0.7" strip-final-newline: "npm:^3.0.0" - checksum: 0da5ee1c895b62142bc3d1567d1974711c28c2cfa6bae96e1923379bd597e476d762a13f282f92815d8ebfa33407949634fa32a0d6db8334a20e625fe11d4351 + checksum: 098cd6a1bc26d509e5402c43f4971736450b84d058391820c6f237aeec6436963e006fd8423c9722f148c53da86aa50045929c7278b5522197dff802d10f9885 languageName: node linkType: hard @@ -10453,16 +9436,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.5.0": - version: 29.5.0 - resolution: "expect@npm:29.5.0" +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" dependencies: - "@jest/expect-utils": "npm:^29.5.0" - jest-get-type: "npm:^29.4.3" - jest-matcher-utils: "npm:^29.5.0" - jest-message-util: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - checksum: 3c9382967217ad1453e9271e0da3f83c4aeb12272968007b90fc5873340e7fb64bf4852e1522bdf27556623d031ce62f82aaac09e485a15c6d0589d50999422d + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 languageName: node linkType: hard @@ -10514,29 +9497,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 - languageName: node - linkType: hard - -"fast-glob@npm:^3.3.0": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: b68431128fb6ce4b804c5f9622628426d990b66c75b21c0d16e3d80e2d1398bf33f7e1724e66a2e3f299285dcf5b8d745b122d0304e7dd66f5231081f33ec67c + checksum: 42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 languageName: node linkType: hard @@ -10547,7 +9517,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 @@ -10564,9 +9534,9 @@ __metadata: linkType: hard "fast-redact@npm:^3.0.0": - version: 3.2.0 - resolution: "fast-redact@npm:3.2.0" - checksum: a258a178ff8d2f760985be774e589a65df5a573ec12ebc1c72e090950aa860a2a6efb01f673d1be015e9f1170446903cd1ff402e8658b4a84635308dfcef164a + version: 3.3.0 + resolution: "fast-redact@npm:3.3.0" + checksum: d81562510681e9ba6404ee5d3838ff5257a44d2f80937f5024c099049ff805437d0fae0124458a7e87535cc9dcf4de305bb075cab8f08d6c720bbc3447861b4e languageName: node linkType: hard @@ -10696,6 +9666,13 @@ __metadata: languageName: node linkType: hard +"find-up-simple@npm:^1.0.0": + version: 1.0.0 + resolution: "find-up-simple@npm:1.0.0" + checksum: de1ad5e55c8c162f5600fe3297bb55a3da5cd9cb8c6755e463ec1d52c4c15a84e312a68397fb5962d13263b3dbd4ea294668c465ccacc41291d7cc97588769f9 + languageName: node + linkType: hard + "find-up@npm:^2.0.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" @@ -10745,29 +9722,30 @@ __metadata: linkType: hard "flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" + version: 3.1.1 + resolution: "flat-cache@npm:3.1.1" dependencies: - flatted: "npm:^3.1.0" + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" rimraf: "npm:^3.0.2" - checksum: f274dcbadb09ad8d7b6edf2ee9b034bc40bf0c12638f6c4084e9f1d39208cb104a5ebbb24b398880ef048200eaa116852f73d2d8b72e8c9627aba8c3e27ca057 + checksum: 15f7f854830089a903ea660809b67ee25632b8b1965da6a328d3dc59d451abe2e9f16ad0b7523571ece2b5424d1e1979469ba25870f76f49ce3bbffc836072ef languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 207a87c7abfc1ea6928ea16bac84f9eaa6d44d365620ece419e5c41cf44a5e9902b4c1f59c9605771b10e4565a0cb46e99d78e0464e8aabb42c97de880642257 +"flatted@npm:^3.2.9": + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: 5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53 languageName: node linkType: hard -"follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.7": - version: 1.15.2 - resolution: "follow-redirects@npm:1.15.2" +"follow-redirects@npm:^1.14.7": + version: 1.15.3 + resolution: "follow-redirects@npm:1.15.3" peerDependenciesMeta: debug: optional: true - checksum: da5932b70e63944d38eecaa16954bac4347036f08303c913d166eda74809d8797d38386e3a0eb1d2fe37d2aaff2764cce8e9dbd99459d860cf2cdfa237923b5f + checksum: 915a2cf22e667bdf47b1a43cc6b7dce14d95039e9bbf9a24d0e739abfbdfa00077dd43c86d4a7a19efefcc7a99af144920a175eedc3888d268af5df67c272ee5 languageName: node linkType: hard @@ -10790,17 +9768,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485 - languageName: node - linkType: hard - "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -10821,10 +9788,10 @@ __metadata: languageName: node linkType: hard -"fraction.js@npm:^4.2.0": - version: 4.2.0 - resolution: "fraction.js@npm:4.2.0" - checksum: b16c0a6a7f045b3416c1afbb174b7afca73bd7eb0c62598a0c734a8b1f888cb375684174daf170abfba314da9f366b7d6445e396359d5fae640883bdb2ed18cb +"fraction.js@npm:^4.3.6": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711 languageName: node linkType: hard @@ -10886,44 +9853,44 @@ __metadata: linkType: hard "fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: "npm:latest" - checksum: be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b + checksum: a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 conditions: os=darwin languageName: node linkType: hard "fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin languageName: node linkType: hard -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: 60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e +"function-bind@npm:^1.1.1, function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" +"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - functions-have-names: "npm:^1.2.2" - checksum: b75fb8c5261f03a54f7cb53a8c99e0c40297efc3cf750c51d3a2e56f6741701c14eda51986d30c24063136a4c32d1643df9d1dd2f2a14b64fa011edd3e7117ae + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b languageName: node linkType: hard -"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": +"functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca @@ -10985,14 +9952,15 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": + version: 1.2.2 + resolution: "get-intrinsic@npm:1.2.2" dependencies: - function-bind: "npm:^1.1.1" - has: "npm:^1.0.3" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" has-symbols: "npm:^1.0.3" - checksum: 7c564f6b1061e6ca9eb1abab424a2cf80b93e75dcde65229d504e4055aa0ea54f88330e9b75d10e41c72bca881a947e84193b3549a4692d836f304239a178d63 + hasown: "npm:^2.0.0" + checksum: 4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b languageName: node linkType: hard @@ -11130,11 +10098,11 @@ __metadata: linkType: hard "globals@npm:^13.19.0": - version: 13.20.0 - resolution: "globals@npm:13.20.0" + version: 13.23.0 + resolution: "globals@npm:13.23.0" dependencies: type-fest: "npm:^0.20.2" - checksum: 9a028f136f1e7a3574689f430f7d57faa0d699c4c7e92ade00b02882a892be31c314d50dff07b48e607283013117bb8a997406d03a1f7ab4a33a005eb16efd6c + checksum: fc05e184b3be59bffa2580f28551a12a758c3a18df4be91444202982c76f13f52821ad54ffaf7d3f2a4d2498fdf54aeaca8d4540fd9e860a9edb09d34ef4c507 languageName: node linkType: hard @@ -11197,16 +10165,16 @@ __metadata: languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 languageName: node linkType: hard "graphql-config@npm:^5.0.2": - version: 5.0.2 - resolution: "graphql-config@npm:5.0.2" + version: 5.0.3 + resolution: "graphql-config@npm:5.0.3" dependencies: "@graphql-tools/graphql-file-loader": "npm:^8.0.0" "@graphql-tools/json-file-loader": "npm:^8.0.0" @@ -11225,7 +10193,7 @@ __metadata: peerDependenciesMeta: cosmiconfig-toml-loader: optional: true - checksum: 083ebdcd46a11215bdd8aae67bbfed1aa82a4dcc26bb5fa49cd88e798547ba7338c4ba0b247409421a301f8141296203c8fe86301f0836a80483c6020cfc9c96 + checksum: dadd04b08b0af5b9652ef1e8baf09adb7221ffca48e5272d933ee6faf0b962260a46b5e0da536576de56ffbdca118b257038e3319834045403fec9528b743e78 languageName: node linkType: hard @@ -11253,11 +10221,11 @@ __metadata: linkType: hard "graphql-ws@npm:^5.14.0": - version: 5.14.0 - resolution: "graphql-ws@npm:5.14.0" + version: 5.14.2 + resolution: "graphql-ws@npm:5.14.2" peerDependencies: graphql: ">=0.11 <=16" - checksum: 505c1b1332b1a45a4a410ada0f335cc21b1a9511deb034bf0631d786d5fe328af2b4887dadc99a9eb3b7f9be0e1d0643e5cada6e3485d05b20851eabb5e7b92d + checksum: 5a25051fc35e47d09bd2d512ab8f9943b79efff0f0b5a3d421d6512ec8ca502f4e7cbb20a3629bd9290cbab0f0d2529ecd3c59111d977d7b8560f455f2f773a0 languageName: node linkType: hard @@ -11269,11 +10237,11 @@ __metadata: linkType: hard "handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" dependencies: minimist: "npm:^1.2.5" - neo-async: "npm:^2.6.0" + neo-async: "npm:^2.6.2" source-map: "npm:^0.6.1" uglify-js: "npm:^3.1.4" wordwrap: "npm:^1.0.0" @@ -11282,7 +10250,7 @@ __metadata: optional: true bin: handlebars: bin/handlebars - checksum: 4c0913fc0018a2a2e358ee94e4fe83f071762b8bec51a473d187e6642e94e569843adcf550ffe329554c63ad450c062f3a05447bd2e3fff5ebfe698e214225c6 + checksum: 7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d languageName: node linkType: hard @@ -11315,11 +10283,11 @@ __metadata: linkType: hard "has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" + version: 1.0.1 + resolution: "has-property-descriptors@npm:1.0.1" dependencies: - get-intrinsic: "npm:^1.1.1" - checksum: d4ca882b6960d6257bd28baa3ddfa21f068d260411004a093b30ca357c740e11e985771c85216a6d1eef4161e862657f48c4758ec8ab515223b3895200ad164b + get-intrinsic: "npm:^1.2.2" + checksum: d62ba94b40150b00d621bc64a6aedb5bf0ee495308b4b7ed6bac856043db3cdfb1db553ae81cec91c9d2bd82057ff0e94145e7fa25d5aa5985ed32e0921927f6 languageName: node linkType: hard @@ -11353,12 +10321,12 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" +"hasown@npm:^2.0.0": + version: 2.0.0 + resolution: "hasown@npm:2.0.0" dependencies: - function-bind: "npm:^1.1.1" - checksum: e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b + function-bind: "npm:^1.1.2" + checksum: 5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc languageName: node linkType: hard @@ -11483,17 +10451,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.0": - version: 7.0.1 - resolution: "https-proxy-agent@npm:7.0.1" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: f08f646809c04803843534b5e0ea5b4034beaa065ef2f9505e4afaeb2fa962a15494e563357c819203cff07232d1631739947f031149eb837a16a2f3553fbe32 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": +"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "https-proxy-agent@npm:7.0.2" dependencies: @@ -11607,9 +10565,9 @@ __metadata: linkType: hard "immutable@npm:^4.0.0": - version: 4.3.0 - resolution: "immutable@npm:4.3.0" - checksum: e09d40ceb442972f1cbd2914638d1a201853155b8edfbafc44e7aabcf221890e55e8f03d5b3d884666264bf973e02bbf72f83a12b9754bc2c9e47cf8827dd571 + version: 4.3.4 + resolution: "immutable@npm:4.3.4" + checksum: c15b9f0fa7b3c9315725cb00704fddad59f0e668a7379c39b9a528a8386140ee9effb015ae51a5b423e05c59d15fc0b38c970db6964ad6b3e05d0761db68441f languageName: node linkType: hard @@ -11629,7 +10587,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -11639,6 +10597,15 @@ __metadata: languageName: node linkType: hard +"import-from-esm@npm:^1.0.3": + version: 1.2.1 + resolution: "import-from-esm@npm:1.2.1" + dependencies: + import-meta-resolve: "npm:^4.0.0" + checksum: a04fa08cc2d185e865c84fdb2520154a09cd248ec76a8b163571ec3cc076e3b9d5cd76e902da915117ade4dfdc9b6736c113b843d3afadedb4136f4558d54117 + languageName: node + linkType: hard + "import-from@npm:4.0.0, import-from@npm:^4.0.0": version: 4.0.0 resolution: "import-from@npm:4.0.0" @@ -11667,6 +10634,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:^4.0.0": + version: 4.0.0 + resolution: "import-meta-resolve@npm:4.0.0" + checksum: 709375e01f8c3a87b7870991ca29c630d71bb7e22b7bb0f622613173d87b41b4043b4a983800e6d38ab3867496a46f82d30df0cbc2e55792c91c23193eea67a1 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -11688,6 +10662,13 @@ __metadata: languageName: node linkType: hard +"index-to-position@npm:^0.1.1": + version: 0.1.2 + resolution: "index-to-position@npm:0.1.2" + checksum: 7c91bde8bafc22684b74a7a24915bee4691cba48352ddb4ebe3b20a3a87bc0fa7a05f586137245ca8f92222a11f341f7631ff7f38cd78a523505d2d02dbfa257 + languageName: node + linkType: hard + "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" @@ -11786,14 +10767,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": - version: 1.0.5 - resolution: "internal-slot@npm:1.0.5" +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": + version: 1.0.6 + resolution: "internal-slot@npm:1.0.6" dependencies: - get-intrinsic: "npm:^1.2.0" - has: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.2" + hasown: "npm:^2.0.0" side-channel: "npm:^1.0.4" - checksum: 66d8a66b4b5310c042e8ad00ce895dc55cb25165a3a7da0d7862ca18d69d3b1ba86511b4bf3baf4273d744d3f6e9154574af45189ef11135a444945309e39e4a + checksum: aa37cafc8ffbf513a340de58f40d5017b4949d99722d7e4f0e24b182455bdd258000d4bb1d7b4adcf9f8979b97049b99fe9defa9db8e18a78071d2637ac143fb languageName: node linkType: hard @@ -11885,6 +10866,15 @@ __metadata: languageName: node linkType: hard +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + "is-bigint@npm:^1.0.1": version: 1.0.4 resolution: "is-bigint@npm:1.0.4" @@ -11929,12 +10919,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": - version: 2.12.0 - resolution: "is-core-module@npm:2.12.0" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" dependencies: - has: "npm:^1.0.3" - checksum: 21f78f05de2f261339c10da0a68a25f7671a1864bc4e19fbfb7aeb9486a8ced98f5192f3226af8f696c6c1b545029307df850e384799a574953d6676ae20fefc + hasown: "npm:^2.0.0" + checksum: 2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 languageName: node linkType: hard @@ -11954,6 +10944,15 @@ __metadata: languageName: node linkType: hard +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -11968,6 +10967,15 @@ __metadata: languageName: node linkType: hard +"is-generator-function@npm:^1.0.10": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + "is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -12164,16 +11172,12 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.9": + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - checksum: b71268a2e5f493f2b95af4cbfe7a65254a822f07d57f20c18f084347cd45f11810915fe37d7a6831fe4b81def24621a042fd1169ec558c50f830b591bc8c1f66 + which-typed-array: "npm:^1.1.11" + checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae languageName: node linkType: hard @@ -12300,13 +11304,13 @@ __metadata: linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: 10ecb00a50cac2f506af8231ce523ffa1ac1310db0435c8ffaabb50c1d72539906583aa13c84f8835dc103998b9989edc3c1de989d2e2a96a91a9ba44e5db6b9 + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: @@ -12319,14 +11323,27 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.1 + resolution: "istanbul-lib-instrument@npm:6.0.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 313d61aca3f82a04ad9377841d05061d603ea3d4a4dd281fdda2479ec4ddbc86dc1792c73651f21c93480570d1ecadc5f63011e2df86f30ee662b62c0c00e3d8 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^3.0.0" + make-dir: "npm:^4.0.0" supports-color: "npm:^7.1.0" - checksum: 81b0d5187c7603ed71bdea0b701a7329f8146549ca19aa26d91b4a163aea756f9d55c1a6dc1dcd087e24dfcb99baa69e266a68644fbfd5dc98107d6f6f5948d2 + checksum: 84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 languageName: node linkType: hard @@ -12342,12 +11359,25 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" + version: 3.1.6 + resolution: "istanbul-reports@npm:3.1.6" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 3a147171bffdbd3034856410b6ec81637871d17d10986513328fec23df6b666f66bd08ea480f5b7a5b9f7e8abc30f3e3c2e7d1b661fc57cdc479aaaa677b1011 + checksum: ec3f1bdbc51b3e0b325a5b9f4ad31a247697f31001df4e81075f7980413f14da1b5adfec574fd156efd3b0464023f61320f6718efc66ee72b32d89611cef99dd + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 languageName: node linkType: hard @@ -12371,59 +11401,59 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-changed-files@npm:29.5.0" +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" dependencies: execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" p-limit: "npm:^3.1.0" - checksum: 96334c78507a13c0f11f1360d893ade78fba7fd169825ca4acf7565156ceddd89b952be81c00378fa87ab642d3f44902c34a20f21b561e985e79f6e81fa7e9a8 + checksum: e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b languageName: node linkType: hard -"jest-circus@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-circus@npm:29.5.0" +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" dependencies: - "@jest/environment": "npm:^29.5.0" - "@jest/expect": "npm:^29.5.0" - "@jest/test-result": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" co: "npm:^4.6.0" - dedent: "npm:^0.7.0" + dedent: "npm:^1.0.0" is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^29.5.0" - jest-matcher-utils: "npm:^29.5.0" - jest-message-util: "npm:^29.5.0" - jest-runtime: "npm:^29.5.0" - jest-snapshot: "npm:^29.5.0" - jest-util: "npm:^29.5.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" p-limit: "npm:^3.1.0" - pretty-format: "npm:^29.5.0" + pretty-format: "npm:^29.7.0" pure-rand: "npm:^6.0.0" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" - checksum: 77f77b826941f67e9794e185072ee612cbddf53a1cfbf736de86176b7dc54e54aef151cf31b492adaef221f550924fd60dbaa01c9b939c3a4bfb46d8392c60a8 + checksum: 8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e languageName: node linkType: hard -"jest-cli@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-cli@npm:29.5.0" +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" dependencies: - "@jest/core": "npm:^29.5.0" - "@jest/test-result": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" import-local: "npm:^3.0.2" - jest-config: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - jest-validate: "npm:^29.5.0" - prompts: "npm:^2.0.1" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" yargs: "npm:^17.3.1" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -12432,34 +11462,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: d63df7e329760bc036d11980883399de86b41a7fa93bbc2e79feef28284b096dec40afc21796504555ccbf32806bfc78cf64a63eac9093bb4f036b282b409863 + checksum: a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a languageName: node linkType: hard -"jest-config@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-config@npm:29.5.0" +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" dependencies: "@babel/core": "npm:^7.11.6" - "@jest/test-sequencer": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" - babel-jest: "npm:^29.5.0" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" chalk: "npm:^4.0.0" ci-info: "npm:^3.2.0" deepmerge: "npm:^4.2.2" glob: "npm:^7.1.3" graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^29.5.0" - jest-environment-node: "npm:^29.5.0" - jest-get-type: "npm:^29.4.3" - jest-regex-util: "npm:^29.4.3" - jest-resolve: "npm:^29.5.0" - jest-runner: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - jest-validate: "npm:^29.5.0" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" micromatch: "npm:^4.0.4" parse-json: "npm:^5.2.0" - pretty-format: "npm:^29.5.0" + pretty-format: "npm:^29.7.0" slash: "npm:^3.0.0" strip-json-comments: "npm:^3.1.1" peerDependencies: @@ -12470,156 +11500,156 @@ __metadata: optional: true ts-node: optional: true - checksum: 01780eb66815e3d31d237aab5d7611ea59e0cdf159cbab2a7c682cb08bde6d053c17a528547440fb1b0294c26ebfd5b54ad35d8c9439f6fae76960ee0bc90197 + checksum: bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 languageName: node linkType: hard -"jest-diff@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-diff@npm:29.5.0" +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" dependencies: chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.4.3" - jest-get-type: "npm:^29.4.3" - pretty-format: "npm:^29.5.0" - checksum: 00fda597fa6ee22774453c3cd35c2210bd7f749cf48ad7a41c13b898b2943c9c047842720eb928cdb949b9de87204d8d8987bf12aefdb2f0504f5f4112cab5b0 + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 languageName: node linkType: hard -"jest-docblock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-docblock@npm:29.4.3" +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" dependencies: detect-newline: "npm:^3.0.0" - checksum: 25cdea8fe77ff09d958abd347e26dcd8766ca69d9935bc626a89d694c91d33be06d4c088b02e4b3f143f532f726a10dff0bfe1e2387a0972a95addf5d64ed407 + checksum: d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 languageName: node linkType: hard -"jest-each@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-each@npm:29.5.0" +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.4.3" - jest-util: "npm:^29.5.0" - pretty-format: "npm:^29.5.0" - checksum: 214f6b5adfc0d6a3e837769018b7a7b69f41e99aac939fe4730bcca23f69e3566ed23706f95a396b20e63e6b9f90990053fc3c1662808036d4f41e4d6d32641d + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 languageName: node linkType: hard "jest-environment-jsdom@npm:^29.4.3": - version: 29.5.0 - resolution: "jest-environment-jsdom@npm:29.5.0" + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" dependencies: - "@jest/environment": "npm:^29.5.0" - "@jest/fake-timers": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/jsdom": "npm:^20.0.0" "@types/node": "npm:*" - jest-mock: "npm:^29.5.0" - jest-util: "npm:^29.5.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" jsdom: "npm:^20.0.0" peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 972a1bdfb1d508a359951ec11ade5dfad7cfabea0ab9f7746737ba10e0c6381e34f2b4acb03c7e5eb623611813310dfb0775eb0607c5537b7618234d04aab2ac + checksum: 139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-node@npm:29.5.0" +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" dependencies: - "@jest/environment": "npm:^29.5.0" - "@jest/fake-timers": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" - jest-mock: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - checksum: 2e636a095ff9a9e0aa20fda5b4c06eebed8f3ba2411062bdf724b114eedafd49b880167998af9f77aa8aa68231621aebe3998389d73433e9553ea5735cad1e14 + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b languageName: node linkType: hard -"jest-get-type@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-get-type@npm:29.4.3" - checksum: 874b0ced6b1cc677ff7fcf0dc86d02674617a7d0b73d47097604fb3ca460178d16104efdd3837e8b8bf0520ad5d210838c07483b058802b457b8413e60628fd0 +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" "@types/graceful-fs": "npm:^4.1.3" "@types/node": "npm:*" anymatch: "npm:^3.0.3" fb-watchman: "npm:^2.0.0" fsevents: "npm:^2.3.2" graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^29.4.3" - jest-util: "npm:^29.5.0" - jest-worker: "npm:^29.5.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" micromatch: "npm:^4.0.4" walker: "npm:^1.0.8" dependenciesMeta: fsevents: optional: true - checksum: 162edfa185478db9ebe7dff73f3475ef2c205d94fa2b0fc3b41aba4fc29bab274d4a76ca41ca20ea7d9d6ed2b0d8519e298cfffbf5cad6631412d8961c190612 + checksum: 2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c languageName: node linkType: hard -"jest-leak-detector@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-leak-detector@npm:29.5.0" +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" dependencies: - jest-get-type: "npm:^29.4.3" - pretty-format: "npm:^29.5.0" - checksum: d7db5d4a7cb676fc151f533d6887f3d6bbb4e35346346cbed0b5583c296b13af2d3c8434b30f62b0eb9c711718c7f4bd48496c47af3a20320ee162e33d64aaf2 + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-matcher-utils@npm:29.5.0" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: "npm:^4.0.0" - jest-diff: "npm:^29.5.0" - jest-get-type: "npm:^29.4.3" - pretty-format: "npm:^29.5.0" - checksum: 0a3ae95ef5c5c4ac2b2c503c2f57e173fa82725722e1fadcd902fd801afe17d9d36e9366820959465f553627bf1e481a0e4a540125f3b4371eec674b3557f7f3 + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e languageName: node linkType: hard -"jest-message-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-message-util@npm:29.5.0" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" "@types/stack-utils": "npm:^2.0.0" chalk: "npm:^4.0.0" graceful-fs: "npm:^4.2.9" micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.5.0" + pretty-format: "npm:^29.7.0" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" - checksum: 706e89cacc89c090af584f4687c4e7f0616706481e468ec7c88270e07ae7458a829e477b7b3dff56b75d801f799d65eb2c28d6453c25dd02bea0fd98f0809dbb + checksum: 850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 languageName: node linkType: hard -"jest-mock@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-mock@npm:29.5.0" +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" - jest-util: "npm:^29.5.0" - checksum: c5b71d397d6acd44d99cd48dad8ca76334fc5a27e120da72d264d7527a9efc7c6fc431d79de64d0b73aa0ab26a2d0712498e323d42b9e03bee05e983b0d2035c + jest-util: "npm:^29.7.0" + checksum: 7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac languageName: node linkType: hard @@ -12635,194 +11665,191 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: a7a4508bda47c5177e7337fb6fb22e9adab414ba141f224c9992c86973da1ccf5c69040e63636090ad26ef3a123d28bec950fa99496c157444b4f847e5e5a670 +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve-dependencies@npm:29.5.0" +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - jest-regex-util: "npm:^29.4.3" - jest-snapshot: "npm:^29.5.0" - checksum: fbe513b7d905c4a70be17fd1cb4bd83da1e82cceb47ed7ceababbe11c75f1d0c18eadeb3f4ebb6997ba979f35fa18dfd02e1d57eb556675e47b35675fde0aac7 + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d languageName: node linkType: hard -"jest-resolve@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" dependencies: chalk: "npm:^4.0.0" graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.5.0" + jest-haste-map: "npm:^29.7.0" jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^29.5.0" - jest-validate: "npm:^29.5.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" resolve: "npm:^1.20.0" resolve.exports: "npm:^2.0.0" slash: "npm:^3.0.0" - checksum: e7ea3b1cf865a7e63ad297d0f43a093dde145f9ca72dc8e75b6c7eb3af60fe78e4f7d024fd92fa280419a4ca038d42a9268d4d5d512958d11347e680daca1f12 + checksum: 59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 languageName: node linkType: hard -"jest-runner@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runner@npm:29.5.0" +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" dependencies: - "@jest/console": "npm:^29.5.0" - "@jest/environment": "npm:^29.5.0" - "@jest/test-result": "npm:^29.5.0" - "@jest/transform": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" emittery: "npm:^0.13.1" graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^29.4.3" - jest-environment-node: "npm:^29.5.0" - jest-haste-map: "npm:^29.5.0" - jest-leak-detector: "npm:^29.5.0" - jest-message-util: "npm:^29.5.0" - jest-resolve: "npm:^29.5.0" - jest-runtime: "npm:^29.5.0" - jest-util: "npm:^29.5.0" - jest-watcher: "npm:^29.5.0" - jest-worker: "npm:^29.5.0" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" p-limit: "npm:^3.1.0" source-map-support: "npm:0.5.13" - checksum: 96f47976b9bcc0554455c200d02ebc1547b9a7749b05353c0d55aff535509032c0c12ea25ccc294350f62c14665dbc1e00b15e0d1c52207edfb807e4fec4a36a + checksum: 2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 languageName: node linkType: hard -"jest-runtime@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runtime@npm:29.5.0" +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" dependencies: - "@jest/environment": "npm:^29.5.0" - "@jest/fake-timers": "npm:^29.5.0" - "@jest/globals": "npm:^29.5.0" - "@jest/source-map": "npm:^29.4.3" - "@jest/test-result": "npm:^29.5.0" - "@jest/transform": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" cjs-module-lexer: "npm:^1.0.0" collect-v8-coverage: "npm:^1.0.0" glob: "npm:^7.1.3" graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.5.0" - jest-message-util: "npm:^29.5.0" - jest-mock: "npm:^29.5.0" - jest-regex-util: "npm:^29.4.3" - jest-resolve: "npm:^29.5.0" - jest-snapshot: "npm:^29.5.0" - jest-util: "npm:^29.5.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" slash: "npm:^3.0.0" strip-bom: "npm:^4.0.0" - checksum: 9b5c0a97e1f24945059695e056188041730a3f1dc5924153e323eb7429244e10e7cc877b13d057869d6621c460deae11b77a2a2e9ab56e22b56864a3e44c4448 + checksum: 7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 languageName: node linkType: hard -"jest-snapshot@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-snapshot@npm:29.5.0" +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" dependencies: "@babel/core": "npm:^7.11.6" "@babel/generator": "npm:^7.7.2" "@babel/plugin-syntax-jsx": "npm:^7.7.2" "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/traverse": "npm:^7.7.2" "@babel/types": "npm:^7.3.3" - "@jest/expect-utils": "npm:^29.5.0" - "@jest/transform": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" - "@types/babel__traverse": "npm:^7.0.6" - "@types/prettier": "npm:^2.1.5" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" babel-preset-current-node-syntax: "npm:^1.0.0" chalk: "npm:^4.0.0" - expect: "npm:^29.5.0" + expect: "npm:^29.7.0" graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^29.5.0" - jest-get-type: "npm:^29.4.3" - jest-matcher-utils: "npm:^29.5.0" - jest-message-util: "npm:^29.5.0" - jest-util: "npm:^29.5.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" natural-compare: "npm:^1.4.0" - pretty-format: "npm:^29.5.0" - semver: "npm:^7.3.5" - checksum: db9957d9c8607d75bb08302605331b5d90fa738fafeed820ab8ebcb2c90f9e62fb4fec0b4c826c04a37557cbb7a9ed26a10b0c74d46ffedce2d6ae8a9c891b00 + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 languageName: node linkType: hard -"jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" chalk: "npm:^4.0.0" ci-info: "npm:^3.2.0" graceful-fs: "npm:^4.2.9" picomatch: "npm:^2.2.3" - checksum: c7f1dc8ae82cd9614a31e09806499560b4812beb57589b214241dd213d3cc6d24417593aef2caf2d3d9694925438849fec371ff36ca8a7f1be8438fd41e83373 + checksum: bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" dependencies: - "@jest/types": "npm:^29.5.0" + "@jest/types": "npm:^29.6.3" camelcase: "npm:^6.2.0" chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.4.3" + jest-get-type: "npm:^29.6.3" leven: "npm:^3.1.0" - pretty-format: "npm:^29.5.0" - checksum: 7aabde27a9b736df65902a1bb4ec63af518d4c95e12a910e7658140784168f08c662d5babe67dfa70d843dd2096bc08aa7090fef83c7a9d6bb0893793c3a599a + pretty-format: "npm:^29.7.0" + checksum: a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 languageName: node linkType: hard -"jest-watcher@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-watcher@npm:29.5.0" +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" dependencies: - "@jest/test-result": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" ansi-escapes: "npm:^4.2.1" chalk: "npm:^4.0.0" emittery: "npm:^0.13.1" - jest-util: "npm:^29.5.0" + jest-util: "npm:^29.7.0" string-length: "npm:^4.0.1" - checksum: 6a2e71e720183303913fc34fc24a3f87fca7fcfa638bc6c9109a4808b36251a1cb7fe98b956eb0d9c9ead1ad47c3dc3745289ee89e62c6c615168e92282069ca + checksum: ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 languageName: node linkType: hard -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" dependencies: "@types/node": "npm:*" - jest-util: "npm:^29.5.0" + jest-util: "npm:^29.7.0" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 4191ec3209cb1d838c931d47c7328fec7279eb7a5d40fa86bb3fac4d34cbad835349bc366150712259a274507fd210ddb450733032394d8e0b19640b3d3ac17d + checksum: 5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 languageName: node linkType: hard "jest@npm:^29.4.3": - version: 29.5.0 - resolution: "jest@npm:29.5.0" + version: 29.7.0 + resolution: "jest@npm:29.7.0" dependencies: - "@jest/core": "npm:^29.5.0" - "@jest/types": "npm:^29.5.0" + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" import-local: "npm:^3.0.2" - jest-cli: "npm:^29.5.0" + jest-cli: "npm:^29.7.0" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -12830,39 +11857,23 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 32e29cfa2373530ed323ea65dfb4fd5172026349be48ebb7a2dc5660adadd1c68f6b0fe2b67cc3ee723cc34e2d4552a852730ac787251b406cf58e37a90f6dac + checksum: f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b languageName: node linkType: hard -"jiti@npm:^1.17.1": - version: 1.19.1 - resolution: "jiti@npm:1.19.1" +"jiti@npm:^1.17.1, jiti@npm:^1.18.2, jiti@npm:^1.19.1": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" bin: jiti: bin/jiti.js - checksum: c09f15b3ef81f0fcda45f96aaecd130213c81d8a9b8a92f5eb4f8d21972b833b2ef494db8fb3e819b258ceb569b9d5cfa3facbd2d786ecf0bc0fd0e98cc862f7 - languageName: node - linkType: hard - -"jiti@npm:^1.18.2": - version: 1.18.2 - resolution: "jiti@npm:1.18.2" - bin: - jiti: bin/jiti.js - checksum: 578343e883838a5d6775350925d9e1a647e00132ade9c8cc318c163b692988612472f0af3cd9d92b8d8ca61e623092e86ab89563cbf6394900a5a39962e3c4e8 - languageName: node - linkType: hard - -"jose@npm:^4.11.4": - version: 4.14.4 - resolution: "jose@npm:4.14.4" - checksum: cb13d70f2336c0a45210f8e4e71ed8d4d82a884ad66776308f5ab9a90e2087419782e0b288d2a9070657620637f0d2dbcac6f3164ed9ba8903c0096e282cec3c + checksum: 7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f languageName: node linkType: hard -"js-sdsl@npm:^4.1.4": - version: 4.4.0 - resolution: "js-sdsl@npm:4.4.0" - checksum: 1eabe718867d293771074b5a14a82a115727b3d4abc9524fb9b0cb74293f447b90fe27bb74eb712b6400aeb7b869631c0a67d3347670cf22d067e77caeeb2f33 +"jose@npm:^5.0.0": + version: 5.1.0 + resolution: "jose@npm:5.1.0" + checksum: f838e065ea9bf21cc6215deb9932876488a00c5cdf82dc3caa61a618428ee9c0d1ca9940f68915f87244697af2a784fed3074ebf00201a9f592c1b35843a4857 languageName: node linkType: hard @@ -12963,6 +11974,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -13031,7 +12049,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.2": +"json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -13068,12 +12086,14 @@ __metadata: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" dependencies: - array-includes: "npm:^3.1.5" - object.assign: "npm:^4.1.3" - checksum: fb69ce100931e50d42c8f72a01495b7d090064824ce481cf7746449609c148a29aae6984624cf9066ac14bdf7978f8774461e120d5b50fa90b3bfe0a0e21ff77 + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 languageName: node linkType: hard @@ -13098,6 +12118,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + "keyvaluestorage-interface@npm:^1.0.0": version: 1.0.0 resolution: "keyvaluestorage-interface@npm:1.0.0" @@ -13119,7 +12148,7 @@ __metadata: languageName: node linkType: hard -"kolorist@npm:^1.2.10": +"kolorist@npm:^1.8.0": version: 1.8.0 resolution: "kolorist@npm:1.8.0" checksum: 73075db44a692bf6c34a649f3b4b3aea4993b84f6b754cbf7a8577e7c7db44c0bad87752bd23b0ce533f49de2244ce2ce03b7b1b667a85ae170a94782cc50f9b @@ -13143,16 +12172,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - checksum: e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - "libnpmaccess@npm:^6.0.4": version: 6.0.4 resolution: "libnpmaccess@npm:6.0.4" @@ -13191,11 +12210,11 @@ __metadata: languageName: node linkType: hard -"libnpmdiff@npm:^6.0.2": - version: 6.0.2 - resolution: "libnpmdiff@npm:6.0.2" +"libnpmdiff@npm:^6.0.3": + version: 6.0.3 + resolution: "libnpmdiff@npm:6.0.3" dependencies: - "@npmcli/arborist": "npm:^7.2.0" + "@npmcli/arborist": "npm:^7.2.1" "@npmcli/disparity-colors": "npm:^3.0.0" "@npmcli/installed-package-contents": "npm:^2.0.2" binary-extensions: "npm:^2.2.0" @@ -13204,7 +12223,7 @@ __metadata: npm-package-arg: "npm:^11.0.1" pacote: "npm:^17.0.4" tar: "npm:^6.2.0" - checksum: d860291cc13615a73cad62b4fc1b6fb05f0e4112c6eeb02c5f0dca4290ea3f129ae0e288222a60c79b9cc8051dfdb5c13df499883ed30a359763e66250bf5c9d + checksum: 84e619649e50243959b42f3ed03ddb02d34490ceffad475366ce0c848cf00757e9997bddcce1e73ba4fa8b9bca9f5fd09d75e8722cf5f706d3b48e2fc0dc7c46 languageName: node linkType: hard @@ -13230,12 +12249,12 @@ __metadata: languageName: node linkType: hard -"libnpmexec@npm:^7.0.2": - version: 7.0.2 - resolution: "libnpmexec@npm:7.0.2" +"libnpmexec@npm:^7.0.3": + version: 7.0.3 + resolution: "libnpmexec@npm:7.0.3" dependencies: - "@npmcli/arborist": "npm:^7.2.0" - "@npmcli/run-script": "npm:^7.0.1" + "@npmcli/arborist": "npm:^7.2.1" + "@npmcli/run-script": "npm:^7.0.2" ci-info: "npm:^3.7.1" npm-package-arg: "npm:^11.0.1" npmlog: "npm:^7.0.1" @@ -13245,7 +12264,7 @@ __metadata: read-package-json-fast: "npm:^3.0.2" semver: "npm:^7.3.7" walk-up-path: "npm:^3.0.1" - checksum: 57977dedd0e81d0a19ddbd7fb9dff98fb8f6de64dc730a643069975282b6dac19a26ed9561a45d786cb4c296648c2bd625547b7d7c49f989854792ff15571dca + checksum: c24b60a7dba18a88d6841fc70ac5e9649128e4f72487d1e0728cdc425e6e62e2261df5eaf580fe9795ab58713f30290f1212e1a47d6fc8e96e1c1590ad3b4a2d languageName: node linkType: hard @@ -13258,12 +12277,12 @@ __metadata: languageName: node linkType: hard -"libnpmfund@npm:^5.0.0": - version: 5.0.0 - resolution: "libnpmfund@npm:5.0.0" +"libnpmfund@npm:^5.0.1": + version: 5.0.1 + resolution: "libnpmfund@npm:5.0.1" dependencies: - "@npmcli/arborist": "npm:^7.2.0" - checksum: 25b468f713d48cfc13402ec4464708414fb03b60434705e050134c1a3794deb534256f6971ab905eadc7bb3a014f9ac477465a9f6c7ecbbed0fa54f74acc1227 + "@npmcli/arborist": "npm:^7.2.1" + checksum: e336f6d6c8453c5ee887c03a32c61dbe9fec1e95a00109e1e617271ff6e31d2273e1f548bf75bf9b9715bbfd616173f4e82f387cc25d8db867fdfc165ba256da languageName: node linkType: hard @@ -13318,15 +12337,15 @@ __metadata: languageName: node linkType: hard -"libnpmpack@npm:^6.0.2": - version: 6.0.2 - resolution: "libnpmpack@npm:6.0.2" +"libnpmpack@npm:^6.0.3": + version: 6.0.3 + resolution: "libnpmpack@npm:6.0.3" dependencies: - "@npmcli/arborist": "npm:^7.2.0" - "@npmcli/run-script": "npm:^7.0.1" + "@npmcli/arborist": "npm:^7.2.1" + "@npmcli/run-script": "npm:^7.0.2" npm-package-arg: "npm:^11.0.1" pacote: "npm:^17.0.4" - checksum: 39e5dbf584fe5db15021132b43dc53cb14fc0fd07bb6aa11cb93b33e622940995f94a7fee964a01392943b4081af48f4ece6a8b1a97e705c83f0b9383d0333a8 + checksum: 1a0c5255751650f2834921e0de95f92ccd66c051afa7c91992ebe7227c5f0c4f3cc85e1d5e7fcd925507c93222d8f0d47597b23bbe0240c23d1628169a5ce1d5 languageName: node linkType: hard @@ -13410,16 +12429,16 @@ __metadata: languageName: node linkType: hard -"libnpmversion@npm:^5.0.0": - version: 5.0.0 - resolution: "libnpmversion@npm:5.0.0" +"libnpmversion@npm:^5.0.1": + version: 5.0.1 + resolution: "libnpmversion@npm:5.0.1" dependencies: "@npmcli/git": "npm:^5.0.3" - "@npmcli/run-script": "npm:^7.0.1" + "@npmcli/run-script": "npm:^7.0.2" json-parse-even-better-errors: "npm:^3.0.0" proc-log: "npm:^3.0.0" semver: "npm:^7.3.7" - checksum: 66385911ed7108ba449fded3146d2e7ff24f08c1a087f6a93ace9b44a2fc8eea06e92d3c3b4ef403feebbbb8abfcb52a0757a6cc2dfa0b3986aedf7b101c7126 + checksum: e02f9daa0a2aa4a2431218dcb829207da7b9962abfcfdf143b9cfc398e48b8f8c1ad4d698f6208ba51b0e13dd0a7e0d50305e84cce45cb08707e32c263c1eaad languageName: node linkType: hard @@ -13437,13 +12456,6 @@ __metadata: languageName: node linkType: hard -"lines-and-columns@npm:^2.0.3": - version: 2.0.3 - resolution: "lines-and-columns@npm:2.0.3" - checksum: 09525c10010a925b7efe858f1dd3184eeac34f0a9bc34993075ec490efad71e948147746b18e9540279cc87cd44085b038f986903db3de65ffe96d38a7b91c4c - languageName: node - linkType: hard - "listr2@npm:^4.0.5": version: 4.0.5 resolution: "listr2@npm:4.0.5" @@ -13466,33 +12478,33 @@ __metadata: linkType: hard "lit-element@npm:^3.3.0": - version: 3.3.2 - resolution: "lit-element@npm:3.3.2" + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" dependencies: "@lit-labs/ssr-dom-shim": "npm:^1.1.0" "@lit/reactive-element": "npm:^1.3.0" - lit-html: "npm:^2.7.0" - checksum: cf351d743bcefff8072f717da76dce5dece249f65446fc0f151f93d1bccd4d3fe941020a536215e911509493ded24c0a3896d4441d6294defc119265ec0788b3 + lit-html: "npm:^2.8.0" + checksum: f44c12fa3423a4e9ca5b84651410687e14646bb270ac258325e6905affac64a575f041f8440377e7ebaefa3910b6f0d6b8b1e902cb1aa5d0849b3fdfbf4fb3b6 languageName: node linkType: hard -"lit-html@npm:^2.7.0": - version: 2.7.4 - resolution: "lit-html@npm:2.7.4" +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" dependencies: "@types/trusted-types": "npm:^2.0.2" - checksum: c1773c2b7e6e4585778d821463c2bc87589d4a4a2fb4032c8df0b28e6e3aa1f6238c8f6913d773564ef06eabc37b3b08f0eff4128f7df55bc159a444bfc47ce5 + checksum: 90057dee050803823ac884c1355b0213ab8c05fbe2ec63943c694b61aade5d36272068f3925f45a312835e504f9c9784738ef797009f0a756a750351eafb52d5 languageName: node linkType: hard -"lit@npm:2.7.5": - version: 2.7.5 - resolution: "lit@npm:2.7.5" +"lit@npm:2.8.0": + version: 2.8.0 + resolution: "lit@npm:2.8.0" dependencies: "@lit/reactive-element": "npm:^1.6.0" lit-element: "npm:^3.3.0" - lit-html: "npm:^2.7.0" - checksum: 1f7fa584a6aef241fb484c584207cf7415fcfad809ae80c36c0cdf4ab596d55c9edce0d6db2a95f0337c4bc778c013eeaee4d2c905948768c6439f04958cfb09 + lit-html: "npm:^2.8.0" + checksum: bf33c26b1937ee204aed1adbfa4b3d43a284e85aad8ea9763c7865365917426eded4e5888158b4136095ea42054812561fe272862b61775f1198fad3588b071f languageName: node linkType: hard @@ -13757,13 +12769,13 @@ __metadata: linkType: hard "luxon@npm:^3.2.1": - version: 3.3.0 - resolution: "luxon@npm:3.3.0" - checksum: 47f8e1e96b25441c799b8aa833b3f007fb1854713bcffc8c3384eda8e61fc9af1f038474d137274d2d386492f341c8a8c992fc78c213adfb3143780feba2776c + version: 3.4.3 + resolution: "luxon@npm:3.4.3" + checksum: 65ad727684d367af9c8fcbde05ad7989ef2436a4496b62d993059baaa641e90a5fa74e98f34ee2ff29f7af7f2b27238ca78b87834f9068624e4133d786f87bc7 languageName: node linkType: hard -"lz-string@npm:^1.4.4": +"lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" bin: @@ -13781,12 +12793,12 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" dependencies: - semver: "npm:^6.0.0" - checksum: 56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa + semver: "npm:^7.5.3" + checksum: 69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 languageName: node linkType: hard @@ -13871,18 +12883,18 @@ __metadata: linkType: hard "marked-terminal@npm:^5.1.1": - version: 5.1.1 - resolution: "marked-terminal@npm:5.1.1" + version: 5.2.0 + resolution: "marked-terminal@npm:5.2.0" dependencies: - ansi-escapes: "npm:^5.0.0" + ansi-escapes: "npm:^6.2.0" cardinal: "npm:^2.1.1" - chalk: "npm:^5.0.0" - cli-table3: "npm:^0.6.1" + chalk: "npm:^5.2.0" + cli-table3: "npm:^0.6.3" node-emoji: "npm:^1.11.0" - supports-hyperlinks: "npm:^2.2.0" + supports-hyperlinks: "npm:^2.3.0" peerDependencies: - marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - checksum: 51e0e93da37df1ac508649f6a1550f7b0b1dde72071b14cc1e6f641a23801b55554b485205bf68c04188762314cd44cae84851c600e0a7083d3d94025933e226 + marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 3f10966cf5c7973453442cf2cf8a5479c68c266723af0de9aa6f0687d40dd30b2820de002bb2c737274223c338ef5fcf1215c7f71092ffa35f448f105713b267 languageName: node linkType: hard @@ -13912,20 +12924,6 @@ __metadata: languageName: node linkType: hard -"mdn-data@npm:2.0.28": - version: 2.0.28 - resolution: "mdn-data@npm:2.0.28" - checksum: 20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b - languageName: node - linkType: hard - -"mdn-data@npm:2.0.30": - version: 2.0.30 - resolution: "mdn-data@npm:2.0.30" - checksum: a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 - languageName: node - linkType: hard - "memoizee@npm:^0.4.15": version: 0.4.15 resolution: "memoizee@npm:0.4.15" @@ -14249,10 +13247,10 @@ __metadata: languageName: node linkType: hard -"mock-socket@npm:^9.2.1": - version: 9.2.1 - resolution: "mock-socket@npm:9.2.1" - checksum: 63a5018d012cff46e22cf1c2c2000b9e2cd87f059136745bbb95c25e3379ae8ffb9ee9fc8f2608ff83e50c94e5376375c73d5e15d76ad1858f54456555d5c79e +"mock-socket@npm:^9.2.1, mock-socket@npm:^9.3.1": + version: 9.3.1 + resolution: "mock-socket@npm:9.3.1" + checksum: 0c53baa4acca12ed1ff9bddfdd4bc0cabe0fc96a3ed25a42a00d23b7a111eb6edfc2b44d93aef9a0c93a4a000b4d2d8dcff028488cd2a1e9cc416477ee341ce0 languageName: node linkType: hard @@ -14331,11 +13329,11 @@ __metadata: linkType: hard "nanoid@npm:^3.3.6": - version: 3.3.6 - resolution: "nanoid@npm:3.3.6" + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: 606b355960d0fcbe3d27924c4c52ef7d47d3b57208808ece73279420d91469b01ec1dce10fae512b6d4a8c5a5432b352b228336a8b2202a6ea68e67fa348e2ee + checksum: e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 languageName: node linkType: hard @@ -14360,7 +13358,7 @@ __metadata: languageName: node linkType: hard -"neo-async@npm:^2.6.0": +"neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d @@ -14391,65 +13389,36 @@ __metadata: languageName: node linkType: hard -"nock@npm:^13.3.0, nock@npm:^13.3.1": - version: 13.3.1 - resolution: "nock@npm:13.3.1" +"nock@npm:^13.3.0, nock@npm:^13.3.4": + version: 13.3.8 + resolution: "nock@npm:13.3.8" dependencies: debug: "npm:^4.1.0" json-stringify-safe: "npm:^5.0.1" - lodash: "npm:^4.17.21" propagate: "npm:^2.0.0" - checksum: 748cb727ff34569dabee9254d04251db89424670781d601ee0fa7caa29693f98d409bfb72636ccdb984e12e2e88cfce9ec802e506abdf5f8972b969bf0f763af - languageName: node - linkType: hard - -"node-domexception@npm:^1.0.0": - version: 1.0.0 - resolution: "node-domexception@npm:1.0.0" - checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b - languageName: node - linkType: hard - -"node-emoji@npm:^1.11.0": - version: 1.11.0 - resolution: "node-emoji@npm:1.11.0" - dependencies: - lodash: "npm:^4.17.21" - checksum: 5dac6502dbef087092d041fcc2686d8be61168593b3a9baf964d62652f55a3a9c2277f171b81cccb851ccef33f2d070f45e633fab1fda3264f8e1ae9041c673f + checksum: cf3a7b59495373651a92715c4f31a7d4050a70648e7c111a84805842ab47dd36a5648b4c9440fd2a9b44fa90c245da1641b90e15bbea018f895c45210dfe41f1 languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12": - version: 2.6.12 - resolution: "node-fetch@npm:2.6.12" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 10372e4b5ee07acadc15e6b2bc6fd8940582eea7b9b2a331f4e3665fdcd968498c1656f79f2fa572080ebb37ea80e1474a6478b3b36057ef901b63f4be8fd899 + linkType: hard + +"node-domexception@npm:^1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b languageName: node linkType: hard -"node-fetch@npm:^2.6.11": - version: 2.6.11 - resolution: "node-fetch@npm:2.6.11" +"node-emoji@npm:^1.11.0": + version: 1.11.0 + resolution: "node-emoji@npm:1.11.0" dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 3ec847ca43f678d07b80abfd85bdf06523c2554ee9a494c992c5fc61f5d9cde9f9f16aa33ff09a62f19eee9d54813b8850d7f054cdfee8b2daf789c57f8eeaea + lodash: "npm:^4.17.21" + checksum: 5dac6502dbef087092d041fcc2686d8be61168593b3a9baf964d62652f55a3a9c2277f171b81cccb851ccef33f2d070f45e633fab1fda3264f8e1ae9041c673f languageName: node linkType: hard -"node-fetch@npm:^2.6.7": - version: 2.6.9 - resolution: "node-fetch@npm:2.6.9" +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" dependencies: whatwg-url: "npm:^5.0.0" peerDependencies: @@ -14457,35 +13426,35 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 7a4a0e027e509b741bec4172749103f158da23187ff251cb988dd54ea7267519c3fa11838971da0f5f3c54e79da3174e7bd72aa2179c9f69887511ece16c9c0f + checksum: b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 languageName: node linkType: hard -"node-fetch@npm:^3.3.0, node-fetch@npm:^3.3.1": - version: 3.3.1 - resolution: "node-fetch@npm:3.3.1" +"node-fetch@npm:^3.3.0, node-fetch@npm:^3.3.2": + version: 3.3.2 + resolution: "node-fetch@npm:3.3.2" dependencies: data-uri-to-buffer: "npm:^4.0.0" fetch-blob: "npm:^3.1.4" formdata-polyfill: "npm:^4.0.10" - checksum: 78671bffed741a2f3ccb15588a42fd7e9db2bdc9f99f9f584e0c749307f9603d961692f0877d853b28a4d1375ab2253b19978dd3bfc0c3189b42adc340bef927 + checksum: f3d5e56190562221398c9f5750198b34cf6113aa304e34ee97c94fd300ec578b25b2c2906edba922050fce983338fde0d5d34fcb0fc3336ade5bd0e429ad7538 languageName: node linkType: hard "node-gyp-build@npm:^4.3.0": - version: 4.6.0 - resolution: "node-gyp-build@npm:4.6.0" + version: 4.6.1 + resolution: "node-gyp-build@npm:4.6.1" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 147add65942acd3cf641d11d9becd030128c7298a5b4aec4ebf3ad4afcc3d0298ad2562afba3e7b2bf70160c5e2e82235e3bc043ff9c52dc68bdd36c856764fe + checksum: bd7738c96608c1fa056344623b93d4bbdc63fec05862061e5489284639e3a53daa407b9158c45bfc2e33d0b419851ed5c1f03f4c9ba34726361e2a7b765c0ddc languageName: node linkType: hard -"node-gyp@npm:^10.0.0, node-gyp@npm:latest": - version: 10.0.0 - resolution: "node-gyp@npm:10.0.0" +"node-gyp@npm:^10.0.0, node-gyp@npm:^10.0.1, node-gyp@npm:latest": + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -14499,31 +13468,11 @@ __metadata: which: "npm:^4.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 6d18c65cae4f8cc87c8ff53bfa2626f43adfda5d5fbccbfe1c94c4e115f978f6c09072546ece2cffa36aa05ef30c261976cdcaa2c8beea069771f582b2989e93 + checksum: abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa languageName: node linkType: hard "node-gyp@npm:^9.0.0, node-gyp@npm:^9.1.0": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" - dependencies: - env-paths: "npm:^2.2.0" - glob: "npm:^7.1.4" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^10.0.3" - nopt: "npm:^6.0.0" - npmlog: "npm:^6.0.0" - rimraf: "npm:^3.0.2" - semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^2.0.2" - bin: - node-gyp: bin/node-gyp.js - checksum: 3285c110768eb65aadd9aa1d056f917e594ea22611d21fd535ab3677ea433d0a281e7f09bc73d53e64b02214f4379dbca476dc33faffe455b0ac1d5ba92802f4 - languageName: node - linkType: hard - -"node-gyp@npm:^9.4.0": version: 9.4.1 resolution: "node-gyp@npm:9.4.1" dependencies: @@ -14558,13 +13507,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.8": - version: 2.0.10 - resolution: "node-releases@npm:2.0.10" - checksum: 90947653e8e3d85bda4bcbf28d019693ccfb5d5947838ca64e91208b51d7bfc13ba930b8216389a4faffbad8145b2c616bf1f7a09c97a1a9ac57fd6ef6d01c5c - languageName: node - linkType: hard - "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -14908,17 +13850,17 @@ __metadata: linkType: hard "npm@npm:^10.0.0": - version: 10.2.1 - resolution: "npm@npm:10.2.1" + version: 10.2.3 + resolution: "npm@npm:10.2.3" dependencies: "@isaacs/string-locale-compare": "npm:^1.1.0" - "@npmcli/arborist": "npm:^7.2.0" + "@npmcli/arborist": "npm:^7.2.1" "@npmcli/config": "npm:^8.0.1" "@npmcli/fs": "npm:^3.1.0" "@npmcli/map-workspaces": "npm:^3.0.4" "@npmcli/package-json": "npm:^5.0.0" "@npmcli/promise-spawn": "npm:^7.0.0" - "@npmcli/run-script": "npm:^7.0.1" + "@npmcli/run-script": "npm:^7.0.2" "@sigstore/tuf": "npm:^2.1.0" abbrev: "npm:^2.0.0" archy: "npm:~1.0.0" @@ -14938,22 +13880,22 @@ __metadata: is-cidr: "npm:^4.0.2" json-parse-even-better-errors: "npm:^3.0.0" libnpmaccess: "npm:^8.0.1" - libnpmdiff: "npm:^6.0.2" - libnpmexec: "npm:^7.0.2" - libnpmfund: "npm:^5.0.0" + libnpmdiff: "npm:^6.0.3" + libnpmexec: "npm:^7.0.3" + libnpmfund: "npm:^5.0.1" libnpmhook: "npm:^10.0.0" libnpmorg: "npm:^6.0.1" - libnpmpack: "npm:^6.0.2" + libnpmpack: "npm:^6.0.3" libnpmpublish: "npm:^9.0.1" libnpmsearch: "npm:^7.0.0" libnpmteam: "npm:^6.0.0" - libnpmversion: "npm:^5.0.0" + libnpmversion: "npm:^5.0.1" make-fetch-happen: "npm:^13.0.0" minimatch: "npm:^9.0.3" minipass: "npm:^7.0.4" minipass-pipeline: "npm:^1.2.4" ms: "npm:^2.1.2" - node-gyp: "npm:^9.4.0" + node-gyp: "npm:^10.0.1" nopt: "npm:^7.2.0" normalize-package-data: "npm:^6.0.0" npm-audit-report: "npm:^5.0.0" @@ -14985,7 +13927,7 @@ __metadata: bin: npm: bin/npm-cli.js npx: bin/npx-cli.js - checksum: 418f761524561067c51ccd4ff4ad54ed57dcc63ec7986d7bc77c2053aa80030b71f305ae29054bdf63f5f4f1724149681bd636f83284d5f14fab309dc2185c18 + checksum: 0e5f09122c552644a56367c317b80238631cfa7508b0ed86a848582592dc316ae10da4d26567686a7b8c1a5f39c2b7746331cee1f6b9a05feae5bd2d5846b218 languageName: node linkType: hard @@ -15114,9 +14056,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.4 - resolution: "nwsapi@npm:2.2.4" - checksum: d6d297feed79e0fc984e7a9588fe20255a493c0645f35a3419b04662535311cc38126fa12d8e1a5ae8f18cc0de0ec0d36680e03fab44050f7117e0503ecc9c38 + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db languageName: node linkType: hard @@ -15134,10 +14076,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: 752bb5f4dc595e214157ea8f442adb77bdb850ace762b078d151d8b6486331ab12364997a89ee6509be1023b15adf2b3774437a7105f8a5043dfda11ed622411 +"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d languageName: node linkType: hard @@ -15158,7 +14100,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -15171,45 +14113,45 @@ __metadata: linkType: hard "object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" + version: 1.1.7 + resolution: "object.entries@npm:1.1.7" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8782c71db3a068ccbae9e0541e6b4ac2c25dc67c63f97b7e6ad3c88271d7820197e7398e37747f96542ed47c27f0b81148cdf14c42df15dc22f64818ae7bb5bf + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 languageName: node linkType: hard "object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" + version: 2.0.7 + resolution: "object.fromentries@npm:2.0.7" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: db6759ea68131cbdb70b1152f9984b49db03e81de4f6de079b39929bebd8b45501e5333ca2351991e07ee56f4651606c023396644e8f25c0806fa39a26c4c6e6 + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b languageName: node linkType: hard "object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" + version: 1.1.3 + resolution: "object.hasown@npm:1.1.3" dependencies: - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 419fc1c74a2aea7ebb4d49b79d5b1599a010b26c18eae35bd061ccdd013ccb749c499d8dd6ee21a91e6d7264ccc592573d0f13562970f76e25fc844d8c1b02ce + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 8a41ba4fb1208a85c2275e9b5098071beacc24345b9a71ab98ef0a1c61b34dc74c6b460ff1e1884c33843d8f2553df64a10eec2b74b3ed009e3b2710c826bd2c languageName: node linkType: hard "object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" + version: 1.1.7 + resolution: "object.values@npm:1.1.7" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 3381204390f10c9f653a4875a50d221c67b5c16cb80a6ac06c706fc82a7cad8400857d4c7a0731193b0abb56b84fe803eabcf7addcf32de76397bbf207e68c66 + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b languageName: node linkType: hard @@ -15256,31 +14198,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: "npm:~0.1.3" - fast-levenshtein: "npm:~2.0.6" - levn: "npm:~0.3.0" - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - word-wrap: "npm:~1.2.3" - checksum: ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": "npm:^1.2.3" deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.3" - checksum: 8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 + checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c languageName: node linkType: hard @@ -15468,16 +14396,6 @@ __metadata: languageName: node linkType: hard -"p-retry@npm:^4.0.0": - version: 4.6.2 - resolution: "p-retry@npm:4.6.2" - dependencies: - "@types/retry": "npm:0.12.0" - retry: "npm:^0.13.1" - checksum: d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 - languageName: node - linkType: hard - "p-timeout@npm:^3.2.0": version: 3.2.0 resolution: "p-timeout@npm:3.2.0" @@ -15641,16 +14559,15 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^7.0.0": - version: 7.1.1 - resolution: "parse-json@npm:7.1.1" +"parse-json@npm:^8.0.0": + version: 8.0.1 + resolution: "parse-json@npm:8.0.1" dependencies: - "@babel/code-frame": "npm:^7.21.4" - error-ex: "npm:^1.3.2" + "@babel/code-frame": "npm:^7.22.13" + index-to-position: "npm:^0.1.1" json-parse-even-better-errors: "npm:^3.0.0" - lines-and-columns: "npm:^2.0.3" - type-fest: "npm:^3.8.0" - checksum: a85ebc7430af7763fa52eb456d7efd35c35be5b06f04d8d80c37d0d33312ac6cdff12647acb9c95448dcc8b907dfafa81fb126e094aa132b0abc2a71b9df51d5 + type-fest: "npm:^4.7.1" + checksum: 32f31019303f66bf4130b737c4efef188dc019a2d57d1df09dc15a04901bcdb32b37d1647e2d45092ac202dc9c9f5cf5c26d9d9090bb6bcf19a37ecae16dc185 languageName: node linkType: hard @@ -15935,9 +14852,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.1, pirates@npm:^4.0.4": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: 58b6ff0f137a3d70ff34ac4802fd19819cdc19b53e9c95adecae6c7cfc77719a11f561ad85d46e79e520ef57c31145a564c8bc3bee8cfee75d441fab2928a51d + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard @@ -15979,18 +14896,6 @@ __metadata: languageName: node linkType: hard -"postcss-calc@npm:^9.0.0": - version: 9.0.0 - resolution: "postcss-calc@npm:9.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.11" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.2 - checksum: 2bbd89bb876b8ac83420fa1294485b4dd6c8e8a8e357de48250226468efb656f0a5d2528523592d4585e14632c158392f25edd03868b7ac4d8e7025988920e3d - languageName: node - linkType: hard - "postcss-colormin@npm:^5.3.1": version: 5.3.1 resolution: "postcss-colormin@npm:5.3.1" @@ -16005,20 +14910,6 @@ __metadata: languageName: node linkType: hard -"postcss-colormin@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-colormin@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-api: "npm:^3.0.0" - colord: "npm:^2.9.1" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: b05763b68f7f23333f408734f13be4bde641934ecbde25ac7d7fa648ab5e826716bffac0193067b317e861c6dabad81db9c012e865a83f81b6bce5c7e25c0fdd - languageName: node - linkType: hard - "postcss-convert-values@npm:^5.1.3": version: 5.1.3 resolution: "postcss-convert-values@npm:5.1.3" @@ -16031,18 +14922,6 @@ __metadata: languageName: node linkType: hard -"postcss-convert-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-convert-values@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c20d31a39e0ddf7db4fde0da62e293279b5ee84c36919f2e5760650fa6f2984f1a40bfdbe8d1f7829bd37b17e5e589535f0aaaf71d4df29ad203cef830b9d7a - languageName: node - linkType: hard - "postcss-discard-comments@npm:^5.1.2": version: 5.1.2 resolution: "postcss-discard-comments@npm:5.1.2" @@ -16052,15 +14931,6 @@ __metadata: languageName: node linkType: hard -"postcss-discard-comments@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-comments@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: c8792cd99c7696b21917d55937e02fb854a82ee308edf7564f18ad19bec4abf4756ba234e17f7d129d6b0dbaf6253bcddc435b1aeee190d4d26dcc2448f5453a - languageName: node - linkType: hard - "postcss-discard-duplicates@npm:^5.1.0": version: 5.1.0 resolution: "postcss-discard-duplicates@npm:5.1.0" @@ -16070,15 +14940,6 @@ __metadata: languageName: node linkType: hard -"postcss-discard-duplicates@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-duplicates@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 5fb0de3b187b09538a8c10f25bcc3e7b0865337a96a0599f8213864f0d52812f6c90142d170258293a30484b95e096dee28fc8fddb302016f93d4a8d269bb18f - languageName: node - linkType: hard - "postcss-discard-empty@npm:^5.1.1": version: 5.1.1 resolution: "postcss-discard-empty@npm:5.1.1" @@ -16088,15 +14949,6 @@ __metadata: languageName: node linkType: hard -"postcss-discard-empty@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-empty@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 5dfe01f93ee2bb85e71f7832498bd051b772b9c724a5630f749237b07a14b47c2b2800b4215ab4cf0d8cba29552725b40334f3ef9d349f7aacf410ad351715dc - languageName: node - linkType: hard - "postcss-discard-overridden@npm:^5.1.0": version: 5.1.0 resolution: "postcss-discard-overridden@npm:5.1.0" @@ -16106,15 +14958,6 @@ __metadata: languageName: node linkType: hard -"postcss-discard-overridden@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-overridden@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 3a0c91241a95a887ef10227c761fb2c48870966bda5530de635002e485abc2743dfbfdc96e3b6a21f10c6231f0cfbe1a0eae0a01a89629d64a711eab3ee008c6 - languageName: node - linkType: hard - "postcss-import@npm:^15.1.0": version: 15.1.0 resolution: "postcss-import@npm:15.1.0" @@ -16187,18 +15030,6 @@ __metadata: languageName: node linkType: hard -"postcss-merge-longhand@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-merge-longhand@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - stylehacks: "npm:^6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 0b67c590d301ab7f087ea7421e1eac0cccd2ff1c146a2dfa16d3f32b770d12a5999b8c6ea177efc443f4fb9df13b941c401365c634533878eef1982ad9d0bb98 - languageName: node - linkType: hard - "postcss-merge-rules@npm:^5.1.4": version: 5.1.4 resolution: "postcss-merge-rules@npm:5.1.4" @@ -16213,20 +15044,6 @@ __metadata: languageName: node linkType: hard -"postcss-merge-rules@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-merge-rules@npm:6.0.1" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-api: "npm:^3.0.0" - cssnano-utils: "npm:^4.0.0" - postcss-selector-parser: "npm:^6.0.5" - peerDependencies: - postcss: ^8.2.15 - checksum: b6a2a196905cd170757aa7b8bc74dab1fc7e2b2ca6a19c6d355fb7c41ff736023b4176c1008a7049f6a1b24a94a30d066c4e51229c1282a941f7fd6056085af7 - languageName: node - linkType: hard - "postcss-minify-font-values@npm:^5.1.0": version: 5.1.0 resolution: "postcss-minify-font-values@npm:5.1.0" @@ -16238,17 +15055,6 @@ __metadata: languageName: node linkType: hard -"postcss-minify-font-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-font-values@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 6b74b1ec19bf76dcae7947c42145cb200b38767680512728f76168ae246db453798760e56111bd28ade9011d3655a79da4b33a93e5349f98fb0c1b22cc65ff36 - languageName: node - linkType: hard - "postcss-minify-gradients@npm:^5.1.1": version: 5.1.1 resolution: "postcss-minify-gradients@npm:5.1.1" @@ -16262,19 +15068,6 @@ __metadata: languageName: node linkType: hard -"postcss-minify-gradients@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-gradients@npm:6.0.0" - dependencies: - colord: "npm:^2.9.1" - cssnano-utils: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 59046acd470bee151291ba99421846d776c4ed243acb05a005e74f64f92b968d712d35e727f5e4a90e632d6d6aeb3a01083469f50bfdf1fb9ecae7f4ae52d9b8 - languageName: node - linkType: hard - "postcss-minify-params@npm:^5.1.4": version: 5.1.4 resolution: "postcss-minify-params@npm:5.1.4" @@ -16288,19 +15081,6 @@ __metadata: languageName: node linkType: hard -"postcss-minify-params@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-params@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - cssnano-utils: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: d4d1469b7ad7fe53900eb19c156ec6dcfeaf71641d29ba4df31f47d8fa8ac700df5b8d3e3768e66d695d5356ed348cea901314653046c8e48422962f165a1933 - languageName: node - linkType: hard - "postcss-minify-selectors@npm:^5.2.1": version: 5.2.1 resolution: "postcss-minify-selectors@npm:5.2.1" @@ -16312,17 +15092,6 @@ __metadata: languageName: node linkType: hard -"postcss-minify-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-selectors@npm:6.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.5" - peerDependencies: - postcss: ^8.2.15 - checksum: 1cdd3bd231cf25f54ab370d959f727dfcbe839a1d97bcfd65add9df73747a45d299a009ff16111bbe78943e8f81dcf5f84ae4106847b23dd3652de7aadc0b297 - languageName: node - linkType: hard - "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" @@ -16333,15 +15102,15 @@ __metadata: linkType: hard "postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" + version: 4.0.3 + resolution: "postcss-modules-local-by-default@npm:4.0.3" dependencies: icss-utils: "npm:^5.0.0" postcss-selector-parser: "npm:^6.0.2" postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 8ee9c0d9918fd838854d434731371874b25c412dde135df981cc28d37d0660496389b0f8653dbcdbb6ee81f2bec90cb5b14668f6208f6f517400ac064e234c5a + checksum: be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 languageName: node linkType: hard @@ -16423,15 +15192,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-charset@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-charset@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 5232eac7f62097b1d349546182af2db7db34989867c147517cd407ab23c8450558a7f858eb8dac130959dae2d02d3460c5afa510e0ffe22221cb218f2bd79adb - languageName: node - linkType: hard - "postcss-normalize-display-values@npm:^5.1.0": version: 5.1.0 resolution: "postcss-normalize-display-values@npm:5.1.0" @@ -16443,17 +15203,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-display-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-display-values@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 58163258a52610fa0d2b61bd6e872b9a2b25da1f2209cbf34fad3b62a4139fff9e0e6b298dcd1adfe6ac556098aad8b79c387280f3a949180f8fb12e6b41fecf - languageName: node - linkType: hard - "postcss-normalize-positions@npm:^5.1.1": version: 5.1.1 resolution: "postcss-normalize-positions@npm:5.1.1" @@ -16465,17 +15214,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-positions@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-positions@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: de2ced6cfdf2931d7cbc8f9c96bb12487119dba1b454c7ac01fd19f7afdaa9bf6c63f59624281293379ead5a3d5e883007a3f192f02c40ab41528ccc5a399f5c - languageName: node - linkType: hard - "postcss-normalize-repeat-style@npm:^5.1.1": version: 5.1.1 resolution: "postcss-normalize-repeat-style@npm:5.1.1" @@ -16487,17 +15225,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-repeat-style@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 1643132094067709ca7d1fa2beededd28565c83bc8a6c2a4dec879a97e1d425ca1293a8832a45732eef12b52960f024330cfb654a8a222fb7ea768a75989c31e - languageName: node - linkType: hard - "postcss-normalize-string@npm:^5.1.0": version: 5.1.0 resolution: "postcss-normalize-string@npm:5.1.0" @@ -16509,17 +15236,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-string@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-string@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: d586ce274451229c6a3d625edef882b342ab7702babb632845c8c201c7bcc08481f282000d19d17edb7b5ef0b1982e715a16ab60990d124e937c4aef3304151e - languageName: node - linkType: hard - "postcss-normalize-timing-functions@npm:^5.1.0": version: 5.1.0 resolution: "postcss-normalize-timing-functions@npm:5.1.0" @@ -16531,17 +15247,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-timing-functions@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: a70742648cec15eea031096f2ad99c21c79228ce4c4ccc9f63c277c07e9e3add96298cc67b0b1797896507248153e0a662f85f490f53147ded7008b459dd5ba3 - languageName: node - linkType: hard - "postcss-normalize-unicode@npm:^5.1.1": version: 5.1.1 resolution: "postcss-normalize-unicode@npm:5.1.1" @@ -16554,18 +15259,6 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-unicode@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-unicode@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: cd9b06ed09c29ccc0b2cb222044d7ec49fb710fdd6f0878b26d7f3324478d8271a555ba3d82fc8d9fdcf8671a83c499cdfa09c0e73d4dee928adff4042ed8b22 - languageName: node - linkType: hard - "postcss-normalize-url@npm:^5.1.0": version: 5.1.0 resolution: "postcss-normalize-url@npm:5.1.0" @@ -16578,36 +15271,14 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-url@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-url@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 719a7feee4adf638cc0b4bc204d89485388ca81f0ad0a181a225122f488f956abd29f429d69e5a57fffe93fbd2a22eab7737bd8b55b19979efba26e008b2ec11 - languageName: node - linkType: hard - "postcss-normalize-whitespace@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-normalize-whitespace@npm:5.1.1" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 - languageName: node - linkType: hard - -"postcss-normalize-whitespace@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-whitespace@npm:6.0.0" + version: 5.1.1 + resolution: "postcss-normalize-whitespace@npm:5.1.1" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8421dd5813c1e555d7c2847dd8b71a5138ee2091341ebd1ea686d5b00cd46d249a29027e142289f873ca7f5fc995b51eb68f9693fec6d61cf951c759d109c37d + checksum: d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 languageName: node linkType: hard @@ -16623,18 +15294,6 @@ __metadata: languageName: node linkType: hard -"postcss-ordered-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-ordered-values@npm:6.0.0" - dependencies: - cssnano-utils: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: b01352b0ea014e0037a5b8b3bd866696924bfb2cf3b47b73547786a1954e6771c04790fbe4c651bf029bafdbfde70f49e611f9ef309e945f753425841f343017 - languageName: node - linkType: hard - "postcss-reduce-initial@npm:^5.1.2": version: 5.1.2 resolution: "postcss-reduce-initial@npm:5.1.2" @@ -16647,18 +15306,6 @@ __metadata: languageName: node linkType: hard -"postcss-reduce-initial@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-reduce-initial@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-api: "npm:^3.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 7cf6340bde9f70c7d9b20bc3ee53e883bf27ed56fcc3bb2a2c736b311d977098a7c3a6b9e4be4d2c159d0042bf7742bb5af59628cd89cf838968dacc5ae15c80 - languageName: node - linkType: hard - "postcss-reduce-transforms@npm:^5.1.0": version: 5.1.0 resolution: "postcss-reduce-transforms@npm:5.1.0" @@ -16670,24 +15317,13 @@ __metadata: languageName: node linkType: hard -"postcss-reduce-transforms@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-reduce-transforms@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 6da900d22dd8760b8a2ace32013036e3c4c4d9d560c31255eceea54563e3ddb2ca830bc9072fe2a1abacb8c48a008656887fc2f6ba1873e590342ad8e6bc269d - languageName: node - linkType: hard - "postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": - version: 6.0.12 - resolution: "postcss-selector-parser@npm:6.0.12" + version: 6.0.13 + resolution: "postcss-selector-parser@npm:6.0.13" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 48d4ed587cd26ff8646a71dd5e5b102755b9565381bdcee58c400b1f1df5e18aff923eb1c0442661aa914ff6c8e20e116413da51bea6af36afb069daae737294 + checksum: 51f099b27f7c7198ea1826470ef0adfa58b3bd3f59b390fda123baa0134880a5fa9720137b6009c4c1373357b144f700b0edac73335d0067422063129371444e languageName: node linkType: hard @@ -16703,18 +15339,6 @@ __metadata: languageName: node linkType: hard -"postcss-svgo@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-svgo@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - svgo: "npm:^3.0.2" - peerDependencies: - postcss: ^8.2.15 - checksum: ec567cd5e982e3c0393695628bc508b87dcfe4e4b2049930e79e6c629c349fad19403f0d39d76ceda3e0f15ffd065304e76152f397fae2f3f848cdb847a0b564 - languageName: node - linkType: hard - "postcss-unique-selectors@npm:^5.1.1": version: 5.1.1 resolution: "postcss-unique-selectors@npm:5.1.1" @@ -16726,17 +15350,6 @@ __metadata: languageName: node linkType: hard -"postcss-unique-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-unique-selectors@npm:6.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.5" - peerDependencies: - postcss: ^8.2.15 - checksum: 63e81a7965ff8874fdf39ef0ae0f12cc21352548733538f52eda73f0ed5a7fab7fda9090facf50395d07873c5a6f02d31a6171fd476c80858b03090ec4c61d31 - languageName: node - linkType: hard - "postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" @@ -16744,21 +15357,21 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.18, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.5": - version: 8.4.23 - resolution: "postcss@npm:8.4.23" +"postcss@npm:^8, postcss@npm:^8.4.18, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.5": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" dependencies: nanoid: "npm:^3.3.6" picocolors: "npm:^1.0.0" source-map-js: "npm:^1.0.2" - checksum: 35c2e26496be286a63706a0b8240fc4d2075a746466df530989208f60ea33cbc80c89420221cffb7d4fdd605afc385993f5f60302447e3047a7c0a8756b6471d + checksum: 748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf languageName: node linkType: hard "preact@npm:^10.12.1": - version: 10.13.2 - resolution: "preact@npm:10.13.2" - checksum: 58f0938c8d2682570079107d07bce2fe8201742d34d3d1e8837f4e521a5727b96faa1b67bd317efe8df67503e71e1c57f03792e0c63e3103e5334f5dbf11f84e + version: 10.18.2 + resolution: "preact@npm:10.18.2" + checksum: a92890a13c5d19fccc163e3d84c88a9da3c3996d0d9df6ca311c8018320a07e3ec4ecce0836cde46d940a031141d35fbe456123a794b8160bd8fa2d96c7d32a3 languageName: node linkType: hard @@ -16769,13 +15382,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - "prettier@npm:^2.8.4": version: 2.8.8 resolution: "prettier@npm:2.8.8" @@ -16796,14 +15402,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": - version: 29.5.0 - resolution: "pretty-format@npm:29.5.0" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: - "@jest/schemas": "npm:^29.4.3" + "@jest/schemas": "npm:^29.6.3" ansi-styles: "npm:^5.0.0" react-is: "npm:^18.0.0" - checksum: bcc0190d050196b64e501e5c2b44beb802d79a2b70b6fe6b24ae2d5e0f31237dfcb1f0ab2ada4678829b6ee38507ba292396301aff0a8122e575ffd45d5d037c + checksum: edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f languageName: node linkType: hard @@ -16936,9 +15542,9 @@ __metadata: linkType: hard "property-expr@npm:^2.0.5": - version: 2.0.5 - resolution: "property-expr@npm:2.0.5" - checksum: adf05900e3b0fceca83e1318edba211aec089010e43807abe608165d37640f2e54133a261151d2593a9e93bf3ae98a5ac768c5153e14e7d2b09fc9db48237860 + version: 2.0.6 + resolution: "property-expr@npm:2.0.6" + checksum: 69b7da15038a1146d6447c69c445306f66a33c425271235bb20507f1846dbf9577a8f9dfafe8acbfcb66f924b270157f155248308f026a68758f35fc72265b3c languageName: node linkType: hard @@ -16971,25 +15577,25 @@ __metadata: linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 8e6f7abdd3a6635820049e3731c623bbef3fedbf63bbc696b0d7237fdba4cefa069bc1fa62f2938b0fbae057550df7b5318f4a6bcece27f1907fc75c54160bee + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 languageName: node linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.2 - resolution: "pure-rand@npm:6.0.2" - checksum: 0556bee2e16a8d081a2b7630d9cb4e5dafd4e6bd6e4c61de1cf1ef5974f127847523e3d0e62884f6f5d64b66a5e93b05bd8f37ed009f3a4fe5089899e05914aa + version: 6.0.4 + resolution: "pure-rand@npm:6.0.4" + checksum: 0fe7b12f25b10ea5b804598a6f37e4bcf645d2be6d44fe963741f014bf0095bdb6ff525106d6da6e76addc8142358fd380f1a9b8c62ea4d5516bf26a96a37c95 languageName: node linkType: hard -"pvtsutils@npm:^1.3.2": - version: 1.3.3 - resolution: "pvtsutils@npm:1.3.3" +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": + version: 1.3.5 + resolution: "pvtsutils@npm:1.3.5" dependencies: tslib: "npm:^2.6.1" - checksum: 075c90bb70a6ad67ed18706ab4cfceaa6dcdd98a173baf31aee97a1c790930d5facd3f873a95505f33fd930a4aad0ed8e6747e6743e9a2c90dba48d1c0e8993d + checksum: d425aed316907e0b447a459bfb97c55d22270c3cfdba5a07ec90da0737b0e40f4f1771a444636f85bb6a453de90ff8c6b5f4f6ddba7597977166af49974b4534 languageName: node linkType: hard @@ -17141,11 +15747,11 @@ __metadata: linkType: hard "react-hook-form@npm:^7.43.2": - version: 7.43.9 - resolution: "react-hook-form@npm:7.43.9" + version: 7.48.2 + resolution: "react-hook-form@npm:7.48.2" peerDependencies: react: ^16.8.0 || ^17 || ^18 - checksum: 5aab031ae15b32daffb45abe32e00c9d66c511348b68589d4faa6c2309db54b9d2f738b400319b0c2ea87dfd5d85f3760393feafe2bf7a97d608aa736934151f + checksum: 77663276288d3e240da76c469612fec2bfb2dd34ed0512adb8554b8567e89a316c3df62266e51639f66a9a9d50ce175e8dc965f94bc31afecb460ed48333dafa languageName: node linkType: hard @@ -17171,26 +15777,26 @@ __metadata: linkType: hard "react-router-dom@npm:^6.8.1": - version: 6.11.1 - resolution: "react-router-dom@npm:6.11.1" + version: 6.18.0 + resolution: "react-router-dom@npm:6.18.0" dependencies: - "@remix-run/router": "npm:1.6.1" - react-router: "npm:6.11.1" + "@remix-run/router": "npm:1.11.0" + react-router: "npm:6.18.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 17f1f9c3d71604fb9e270b672a97accbee0bedf5b8cb03518fd20068aa4d653fcbb46c2dfd5cd04a41864bed21cc23c275d7af39e4be2224435529779bf7e7e4 + checksum: 9c2893f6b95ca2f25e0ee816d9467fcd18bf1e854d53cde6edf93efbb49972693a898dde6bb8e9ce3c9a2a26f27291b904740e84da9b92a1e560740d5677ce0c languageName: node linkType: hard -"react-router@npm:6.11.1": - version: 6.11.1 - resolution: "react-router@npm:6.11.1" +"react-router@npm:6.18.0": + version: 6.18.0 + resolution: "react-router@npm:6.18.0" dependencies: - "@remix-run/router": "npm:1.6.1" + "@remix-run/router": "npm:1.11.0" peerDependencies: react: ">=16.8" - checksum: 3b49692947ef2ddae134a15462e4fa47022d82c358cc90085b471989e4bc3c4e1637aa3a81389166b69db557ac420c289f64d64309f4d0bd87a6099e49aee6e1 + checksum: 185d240cb8c6119eefcb16e6df0fb0a75fb736eb1a1f24e7569783286295da48cf66e922c1eee43aa497e464cf2d455b89d1d552e288889ae0c355790b1eac0d languageName: node linkType: hard @@ -17291,14 +15897,14 @@ __metadata: languageName: node linkType: hard -"read-pkg-up@npm:^10.0.0": - version: 10.1.0 - resolution: "read-pkg-up@npm:10.1.0" +"read-pkg-up@npm:^11.0.0": + version: 11.0.0 + resolution: "read-pkg-up@npm:11.0.0" dependencies: - find-up: "npm:^6.3.0" - read-pkg: "npm:^8.1.0" - type-fest: "npm:^4.2.0" - checksum: 16a96ad664ff1a983e30aea2bd9490b65e4c6f29fa54c6b2a89c9f1474847b3a181c902c50c724678d5146043fd731d98aa2d8f9d6857e0ce84a30cbfc8a6b21 + find-up-simple: "npm:^1.0.0" + read-pkg: "npm:^9.0.0" + type-fest: "npm:^4.6.0" + checksum: 9dfe7b1088d22804e275c235e21d64acdfb81edb73373c9ef2707aae2db8309fd35f6de90f569f0159411c25972c5a321ae6cb6a54ec01e449ce9df0a0b2397a languageName: node linkType: hard @@ -17348,15 +15954,15 @@ __metadata: languageName: node linkType: hard -"read-pkg@npm:^8.0.0, read-pkg@npm:^8.1.0": - version: 8.1.0 - resolution: "read-pkg@npm:8.1.0" +"read-pkg@npm:^9.0.0": + version: 9.0.0 + resolution: "read-pkg@npm:9.0.0" dependencies: - "@types/normalize-package-data": "npm:^2.4.1" + "@types/normalize-package-data": "npm:^2.4.3" normalize-package-data: "npm:^6.0.0" - parse-json: "npm:^7.0.0" - type-fest: "npm:^4.2.0" - checksum: e50846bbfbe73f4b8fd8c23c523b2e9f1d78467297a870ff94a9e6db7eb65445a4a392bf2896b7566c1715d36492d92d368f1c4b38996dd3942fd1865eb22936 + parse-json: "npm:^8.0.0" + type-fest: "npm:^4.6.0" + checksum: b3399426db22f4da7c6ac8a8b0441d0c2dd67bd79c68e1b96a174c9f43caa15c977b79de1fc4307560568ba4ce819be1882c3d675903485396241651ff1d1a67 languageName: node linkType: hard @@ -17464,12 +16070,26 @@ __metadata: languageName: node linkType: hard +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.4 + resolution: "reflect.getprototypeof@npm:1.0.4" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 02104cdd22658b637efe6b1df73658edab539268347327c8250a72d0cb273dcdf280c284e2d94155d22601d022d16be1a816a8616d679e447cbcbde9860d15cb + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" dependencies: regenerate: "npm:^1.4.2" - checksum: 17818ea6f67c5a4884b9e18842edc4b3838a12f62e24f843e80fbb6d8cb649274b5b86d98bb02075074e02021850e597a92ff6b58bbe5caba4bf5fd8e4e38b56 + checksum: 89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d languageName: node linkType: hard @@ -17480,13 +16100,6 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 - languageName: node - linkType: hard - "regenerator-runtime@npm:^0.14.0": version: 0.14.0 resolution: "regenerator-runtime@npm:0.14.0" @@ -17494,23 +16107,23 @@ __metadata: languageName: node linkType: hard -"regenerator-transform@npm:^0.15.1": - version: 0.15.1 - resolution: "regenerator-transform@npm:0.15.1" +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" dependencies: "@babel/runtime": "npm:^7.8.4" - checksum: 6588e0c454e92ed6c2b3ed7ab24f61270aef47ae7052eceb5367cc15658948a2e84fdd6849f7c96e561d1f8a7474dc4c292166792e07498fdde226299b9ff374 + checksum: 7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": - version: 1.5.0 - resolution: "regexp.prototype.flags@npm:1.5.0" +"regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1": + version: 1.5.1 + resolution: "regexp.prototype.flags@npm:1.5.1" dependencies: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" - functions-have-names: "npm:^1.2.3" - checksum: 312b7966c5cd2e6837da4073e0e6450191e3c6e8f07276cbed35e170ea5606f91487b435eb3290593f8aed39b1191c44f5340e6e5392650feaf2b34a98378464 + set-function-name: "npm:^2.0.0" + checksum: 1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8 languageName: node linkType: hard @@ -17645,55 +16258,55 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.21.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2": - version: 1.22.2 - resolution: "resolve@npm:1.22.2" +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.21.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.8": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" dependencies: - is-core-module: "npm:^2.11.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: f9f424a8117d1c68371b4fbc64e6ac045115a3beacc4bd3617b751f7624b69ad40c47dc995585c7f13d4a09723a8f167847defb7d39fad70b0d43bbba05ff851 + checksum: 07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a languageName: node linkType: hard "resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" dependencies: - is-core-module: "npm:^2.9.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 1de92669e7c46cfe125294c66d5405e13288bb87b97e9bdab71693ceebbcc0255c789bde30e2834265257d330d8ff57414d7d88e3097d8f69951f3ce978bf045 + checksum: a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.21.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": - version: 1.22.2 - resolution: "resolve@patch:resolve@npm%3A1.22.2#optional!builtin::version=1.22.2&hash=c3c19d" +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.21.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: - is-core-module: "npm:^2.11.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: dcf068c4391941734efda06b6f778c013fd349cd4340f126de17c265a7b006c67de7e80e7aa06ecd29f3922e49f5561622b9faf98531f16aa9a896d22148c661 + checksum: 0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 languageName: node linkType: hard "resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#optional!builtin::version=2.0.0-next.4&hash=c3c19d" + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" dependencies: - is-core-module: "npm:^2.9.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: ed2bb51d616b9cd30fe85cf49f7a2240094d9fa01a221d361918462be81f683d1855b7f192391d2ab5325245b42464ca59690db5bd5dad0a326fc0de5974dd10 + checksum: 78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 languageName: node linkType: hard @@ -17714,13 +16327,6 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.13.1": - version: 0.13.1 - resolution: "retry@npm:0.13.1" - checksum: 9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 - languageName: node - linkType: hard - "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -17879,6 +16485,18 @@ __metadata: languageName: node linkType: hard +"safe-array-concat@npm:^1.0.1": + version: 1.0.1 + resolution: "safe-array-concat@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8 + languageName: node + linkType: hard + "safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -17933,15 +16551,15 @@ __metadata: linkType: hard "sass@npm:^1.58.3": - version: 1.62.1 - resolution: "sass@npm:1.62.1" + version: 1.69.5 + resolution: "sass@npm:1.69.5" dependencies: chokidar: "npm:>=3.0.0 <4.0.0" immutable: "npm:^4.0.0" source-map-js: "npm:>=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 19c3a945bd71d9c9ab3b01a97b0d218c92815b7f3e45a9bba37265b4c43e4ef12ab029c7257e02c1db2b85f7da91974af81e31d58940c9a54b50787ee4a50a3c + checksum: a9003a9482f2e467fc412cfe58ba4fa14fb78bef7e1283ce5d64a065f8a31114ec3bbf5d4e724f94eb8512c32c768a6f91f228c7f16a26a300bbf4db293b5608 languageName: node linkType: hard @@ -18025,24 +16643,15 @@ __metadata: linkType: hard "semver@npm:2 || 3 || 4 || 5": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver.js - checksum: 1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 + semver: bin/semver + checksum: e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 languageName: node linkType: hard -"semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -18051,18 +16660,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.5.0 - resolution: "semver@npm:7.5.0" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 203a556d7189c277b9774a325fd2695187b2822069094e0dbfcc56dfd10a1fd646a94e73812f249802a661f6437b2370ccb8ee330e7b9888b38e53c5a8216222 - languageName: node - linkType: hard - -"semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -18091,6 +16689,29 @@ __metadata: languageName: node linkType: hard +"set-function-length@npm:^1.1.1": + version: 1.1.1 + resolution: "set-function-length@npm:1.1.1" + dependencies: + define-data-property: "npm:^1.1.1" + get-intrinsic: "npm:^1.2.1" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + checksum: a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95 + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" + dependencies: + define-data-property: "npm:^1.0.1" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.0" + checksum: 6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a + languageName: node + linkType: hard + "setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" @@ -18247,13 +16868,12 @@ __metadata: languageName: node linkType: hard -"smoldot@npm:1.0.4": - version: 1.0.4 - resolution: "smoldot@npm:1.0.4" +"smoldot@npm:2.0.1": + version: 2.0.1 + resolution: "smoldot@npm:2.0.1" dependencies: - pako: "npm:^2.0.4" ws: "npm:^8.8.1" - checksum: db05d6220522717b27cf2494a6d1a49903d7a1be43156b6b995661c1551861f198dd057afd1ed95f2b766aedd2bbeea3e259ab5d42e7c6e04b1fe29e268ec6d7 + checksum: cb8a7fc4647dd734f210ecceb52b8cbbb02724fe478f7ce86d2ee9c8f2edaa2ca0a2addf521a7ba72b925bc70664e5fd6cb29e875301c261cfa21447448f3677 languageName: node linkType: hard @@ -18384,9 +17004,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.13 - resolution: "spdx-license-ids@npm:3.0.13" - checksum: a5cb77ea7be86d574c8876970920e34d9b37f2fb6e361e6b732b61267afbc63dd37831160b731f85c1478f5ba95ae00369742555920e3c694f047f7068d33318 + version: 3.0.16 + resolution: "spdx-license-ids@npm:3.0.16" + checksum: 7d88b8f01308948bb3ea69c066448f2776cf3d35a410d19afb836743086ced1566f6824ee8e6d67f8f25aa81fa86d8076a666c60ac4528caecd55e93edb5114e languageName: node linkType: hard @@ -18611,51 +17231,52 @@ __metadata: linkType: hard "string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" + version: 4.0.10 + resolution: "string.prototype.matchall@npm:4.0.10" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - get-intrinsic: "npm:^1.1.3" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.3" - regexp.prototype.flags: "npm:^1.4.3" + internal-slot: "npm:^1.0.5" + regexp.prototype.flags: "npm:^1.5.0" + set-function-name: "npm:^2.0.0" side-channel: "npm:^1.0.4" - checksum: 644523d05c1ee93bab7474e999a5734ee5f6ad2d7ad24ed6ea8706c270dc92b352bde0f2a5420bfbeed54e28cb6a770c3800e1988a5267a70fd5e677c7750abc + checksum: cd7495fb0de16d43efeee3887b98701941f3817bd5f09351ad1825b023d307720c86394d56d56380563d97767ab25bf5448db239fcecbb85c28e2180f23e324a languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.7": - version: 1.2.7 - resolution: "string.prototype.trim@npm:1.2.7" +"string.prototype.trim@npm:^1.2.8": + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 31698f6d718794e422db6fcfa6685dcd9243097273b3b2a8b7948b5d45a183cd336378893ff0d4a7b2531b604c32bb5c45193dd6da3d2f5504df5cd222372c09 + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" +"string.prototype.trimend@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 51b663e3195a74b58620a250b3fc4efb58951000f6e7d572a9f671c038f2f37f24a2b8c6994500a882aeab2f1c383fac1e8c023c01eb0c8b4e52d2f13b6c4513 + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" +"string.prototype.trimstart@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" dependencies: call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 13b9970d4e234002dfc8069c655c1fe19e83e10ced208b54858c41bb0f7544e581ac0ce746e92b279563664ad63910039f7253f36942113fec413b2b4e7c1fcd + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f languageName: node linkType: hard @@ -18732,7 +17353,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -18765,21 +17386,9 @@ __metadata: languageName: node linkType: hard -"stylehacks@npm:^6.0.0": - version: 6.0.0 - resolution: "stylehacks@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - postcss-selector-parser: "npm:^6.0.4" - peerDependencies: - postcss: ^8.2.15 - checksum: 6ce277c816dd826fdc765258d612a160bad03dae52ab51ef1676efae07e96923ebeb6880d6522eefc50d2e81cb90b632615120c73aed190f345e8d836def67b6 - languageName: node - linkType: hard - "sucrase@npm:^3.32.0": - version: 3.32.0 - resolution: "sucrase@npm:3.32.0" + version: 3.34.0 + resolution: "sucrase@npm:3.34.0" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.2" commander: "npm:^4.0.0" @@ -18791,7 +17400,7 @@ __metadata: bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: c5f2d0c49a2462da3440a14ed62caad655c27919408471141b6866b18be9b29635e8b5e9246cc476a2c3df84e94a8d5498903f0f4e765c50d95d9ff360b95f79 + checksum: 83e524f2b9386c7029fc9e46b8d608485866d08bea5a0a71e9e3442dc12e1d05a5ab555808d1922f45dd012fc71043479d778aac07391d9740daabe45730a056 languageName: node linkType: hard @@ -18829,7 +17438,7 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.2.0": +"supports-hyperlinks@npm:^2.3.0": version: 2.3.0 resolution: "supports-hyperlinks@npm:2.3.0" dependencies: @@ -18863,22 +17472,6 @@ __metadata: languageName: node linkType: hard -"svgo@npm:^3.0.2": - version: 3.0.2 - resolution: "svgo@npm:3.0.2" - dependencies: - "@trysound/sax": "npm:0.2.0" - commander: "npm:^7.2.0" - css-select: "npm:^5.1.0" - css-tree: "npm:^2.2.1" - csso: "npm:^5.0.5" - picocolors: "npm:^1.0.0" - bin: - svgo: bin/svgo - checksum: d682d416dd68cdcbab5e1e77b93d621325480e97dfe87777e845ea9a0ce05d03fc837ce17080af67e787f6b24430b805ff79f4591dda30a0ab4060b6a3ac2adf - languageName: node - linkType: hard - "swap-case@npm:^2.0.2": version: 2.0.2 resolution: "swap-case@npm:2.0.2" @@ -18896,18 +17489,18 @@ __metadata: linkType: hard "tailwindcss@npm:^3, tailwindcss@npm:^3.2.7": - version: 3.3.2 - resolution: "tailwindcss@npm:3.3.2" + version: 3.3.5 + resolution: "tailwindcss@npm:3.3.5" dependencies: "@alloc/quick-lru": "npm:^5.2.0" arg: "npm:^5.0.2" chokidar: "npm:^3.5.3" didyoumean: "npm:^1.2.2" dlv: "npm:^1.1.3" - fast-glob: "npm:^3.2.12" + fast-glob: "npm:^3.3.0" glob-parent: "npm:^6.0.2" is-glob: "npm:^4.0.3" - jiti: "npm:^1.18.2" + jiti: "npm:^1.19.1" lilconfig: "npm:^2.1.0" micromatch: "npm:^4.0.5" normalize-path: "npm:^3.0.0" @@ -18919,31 +17512,16 @@ __metadata: postcss-load-config: "npm:^4.0.1" postcss-nested: "npm:^6.0.1" postcss-selector-parser: "npm:^6.0.11" - postcss-value-parser: "npm:^4.2.0" resolve: "npm:^1.22.2" sucrase: "npm:^3.32.0" bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 334e9828da03daaf9ebb3a539fd8b940b3625d60caf6e51e05400fb723ed4fbcb2fb2f0dc0012a10ad9d1469127ab543bbbf8a672f4932e27509ac39c312af28 - languageName: node - linkType: hard - -"tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.14 - resolution: "tar@npm:6.1.14" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: da1c3e70c75620f3e49c2f2a2872901759a12c09787c313039c9a0afc3638ae2b3c47d62921efe593e44d0b56a3cc4228b776c835349f1f56b475befc6e021c3 + checksum: a57c0a9cdba9db19097e34e25b7e4690fab43f31ba200afc3bb9635a03036ca93e9884a17b616fb8a2486d57d2ecc9a06862ce4685b3ace57f7a67436e7594a0 languageName: node linkType: hard -"tar@npm:^6.2.0": +"tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.0": version: 6.2.0 resolution: "tar@npm:6.2.0" dependencies: @@ -19161,14 +17739,14 @@ __metadata: linkType: hard "tough-cookie@npm:^4.1.2": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" dependencies: psl: "npm:^1.1.33" punycode: "npm:^2.1.1" universalify: "npm:^0.2.0" url-parse: "npm:^1.5.3" - checksum: 1f9d97bc9ff22b41e107eca4a146064f916e567b5557795dbfe742f098557ba1101b8f7c4e02ac785236663f7f086c37dc595a5b9813ef8fb27f8d800dc9eb9b + checksum: 4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 languageName: node linkType: hard @@ -19275,17 +17853,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.4.0, tslib@npm:^2.5.3, tslib@npm:^2.6.1": - version: 2.6.1 - resolution: "tslib@npm:2.6.1" - checksum: a0382d386f5f1d6e3a39ab22bc56d1e08493da99ab3daf550e63bae6c08fdd6dd4fd20623ef387cad8262ce3fede98439257054fc025f2103cd4603b4509a052 - languageName: node - linkType: hard - -"tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e +"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.5.3, tslib@npm:^2.6.1, tslib@npm:^2.6.2": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb languageName: node linkType: hard @@ -19334,15 +17905,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: "npm:~1.1.2" - checksum: 776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -19392,7 +17954,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^1.0.1, type-fest@npm:^1.0.2": +"type-fest@npm:^1.0.1": version: 1.4.0 resolution: "type-fest@npm:1.4.0" checksum: a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 @@ -19406,17 +17968,17 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^3.8.0": +"type-fest@npm:^3.0.0": version: 3.13.1 resolution: "type-fest@npm:3.13.1" checksum: 547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 languageName: node linkType: hard -"type-fest@npm:^4.2.0": - version: 4.6.0 - resolution: "type-fest@npm:4.6.0" - checksum: 6f34c3cdb95948821fdfc5a70481791de99b2ba840fad87ac3fbdf77941e556eaeaa03c2ed136b366436560702004af7687d59b03d4f181c28289db1af903179 +"type-fest@npm:^4.6.0, type-fest@npm:^4.7.1": + version: 4.7.1 + resolution: "type-fest@npm:4.7.1" + checksum: e2cae05a6a5be98e5e5cfecee8782db1eb74594ceb1d85b5bfdb9b9ca5e236342f97435d3ff9edddd8eb92898af7f13555f85d1a53a69c362b0f56f2cceb8151 languageName: node linkType: hard @@ -19434,6 +17996,42 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-buffer@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + is-typed-array: "npm:^1.1.10" + checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.10" + checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-offset@npm:1.0.0" + dependencies: + available-typed-arrays: "npm:^1.0.5" + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.10" + checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.4": version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" @@ -19474,20 +18072,13 @@ __metadata: languageName: node linkType: hard -"ua-parser-js@npm:^1.0.33": +"ua-parser-js@npm:^1.0.33, ua-parser-js@npm:^1.0.35": version: 1.0.37 resolution: "ua-parser-js@npm:1.0.37" checksum: dac8cf82a55b2e097bd2286954e01454c4cfcf23c9d9b56961ce94bda3cec5a38ca536e6e84c20a4000a9d4b4a4abcbd98ec634ccebe21be36595ea3069126e4 languageName: node linkType: hard -"ua-parser-js@npm:^1.0.35": - version: 1.0.35 - resolution: "ua-parser-js@npm:1.0.35" - checksum: 4641332fdf163ecdec4810cc2335932754f1b71527097f06005a658de256e22f5836a4a7860619c9e611d578e0451ff39dbff1a9b83c6615e3b0b3dd29588c30 - languageName: node - linkType: hard - "uglify-js@npm:^3.1.4": version: 3.17.4 resolution: "uglify-js@npm:3.17.4" @@ -19525,6 +18116,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -19611,9 +18209,9 @@ __metadata: linkType: hard "universal-user-agent@npm:^6.0.0": - version: 6.0.0 - resolution: "universal-user-agent@npm:6.0.0" - checksum: ebeb0206963666c13bcf9ebc86d0577c7daed5870c05cd34d4972ee7a43b9ef20679baf2a8c83bf1b71d899bae67243ac4982d84ddaf9ba0355ff76595819961 + version: 6.0.1 + resolution: "universal-user-agent@npm:6.0.1" + checksum: 5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187 languageName: node linkType: hard @@ -19625,9 +18223,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a languageName: node linkType: hard @@ -19640,9 +18238,9 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.10, update-browserslist-db@npm:^1.0.11": - version: 1.0.11 - resolution: "update-browserslist-db@npm:1.0.11" +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" dependencies: escalade: "npm:^3.1.1" picocolors: "npm:^1.0.0" @@ -19650,7 +18248,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 280d5cf92e302d8de0c12ef840a6af26ec024a5158aa2020975cd01bf0ded09c709793a6f421e6d0f1a47557d6a1a10dc43af80f9c30b8fd0df9691eb98c1c69 + checksum: e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 languageName: node linkType: hard @@ -19767,13 +18365,13 @@ __metadata: linkType: hard "v8-to-istanbul@npm:^9.0.1": - version: 9.1.0 - resolution: "v8-to-istanbul@npm:9.1.0" + version: 9.1.3 + resolution: "v8-to-istanbul@npm:9.1.3" dependencies: "@jridgewell/trace-mapping": "npm:^0.3.12" "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^1.6.0" - checksum: 657ef7c52a514c1a0769663f96dd6f2cd11d2d3f6c8272d1035f4a543dca0b52c84b005beb7f0ca215eb98425c8bc4aa92a62826b1fc76abc1f7228d33ccbc60 + convert-source-map: "npm:^2.0.0" + checksum: 7acfc460731b629a0d547b231e9d510aaa826df67f4deeaeeb991b492f78faf3bb1aa4b54fa0f9b06d815bc69eb0a04a6c2180c16ba43a83cc5e5490fa160a96 languageName: node linkType: hard @@ -19805,18 +18403,21 @@ __metadata: languageName: node linkType: hard -"valtio@npm:1.10.5": - version: 1.10.5 - resolution: "valtio@npm:1.10.5" +"valtio@npm:1.11.2": + version: 1.11.2 + resolution: "valtio@npm:1.11.2" dependencies: proxy-compare: "npm:2.5.1" use-sync-external-store: "npm:1.2.0" peerDependencies: + "@types/react": ">=16.8" react: ">=16.8" peerDependenciesMeta: + "@types/react": + optional: true react: optional: true - checksum: f0ab44b408931bc611cf213414d4b513f9c0af5bc3540a15362f154471bfca2d103957df33d42672d5a1a90e1a7fc97d2371a800328936e0e886ef60e883fb05 + checksum: 9ed337d1da4a3730d429b3415c2cb63340998000e62fb3e545e2fc05d27f55fc510abc89046d6719b4cae02742cdb733fe235bade90bfae50a0e13ece2287106 languageName: node linkType: hard @@ -19828,8 +18429,8 @@ __metadata: linkType: hard "vite@npm:^3.2.5": - version: 3.2.6 - resolution: "vite@npm:3.2.6" + version: 3.2.7 + resolution: "vite@npm:3.2.7" dependencies: esbuild: "npm:^0.15.9" fsevents: "npm:~2.3.2" @@ -19861,7 +18462,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 4693a6ed8c6d949a6f6a60ac92969e0538417358d2a6837df3b919df49abd7a53b1a2d27d0b1263e2f50374cf4cbf1fce2e4658df270e3a4841fa90ed4e79556 + checksum: c2886de0ddf365afdec5fbdba84e85ed65db6b1c6bae216c29afdf3eac91111a4db1fb92e5039c078bd69df3342f7c7c486f6e1ba8185cbaad08e0977ba410f2 languageName: node linkType: hard @@ -20003,6 +18604,26 @@ __metadata: languageName: node linkType: hard +"which-builtin-type@npm:^1.1.3": + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" + dependencies: + function.prototype.name: "npm:^1.1.5" + has-tostringtag: "npm:^1.0.0" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.9" + checksum: 2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 + languageName: node + linkType: hard + "which-collection@npm:^1.0.1": version: 1.0.1 resolution: "which-collection@npm:1.0.1" @@ -20022,17 +18643,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.9": + version: 1.1.13 + resolution: "which-typed-array@npm:1.1.13" dependencies: available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" + call-bind: "npm:^1.0.4" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" has-tostringtag: "npm:^1.0.0" - is-typed-array: "npm:^1.1.10" - checksum: 7edb12cfd04bfe2e2d3ec3e6046417c59e6a8c72209e4fe41fe1a1a40a3b196626c2ca63dac2a0fa2491d5c37c065dfabd2fcf7c0c15f1d19f5640fef88f6368 + checksum: 9f5f1c42918df3d5b91c4315ed0051d5d874370998bf095c9ae0df374f0881f85094e3c384b8fb08ab7b4d4f54ba81c0aff75da6226e7c0589b83dfbec1cd4c9 languageName: node linkType: hard @@ -20067,13 +18687,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -20141,9 +18754,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0, ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.8.1": - version: 8.13.0 - resolution: "ws@npm:8.13.0" +"ws@npm:8.14.2, ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.14.1, ws@npm:^8.8.1": + version: 8.14.2 + resolution: "ws@npm:8.14.2" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -20152,11 +18765,11 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + checksum: 35b4c2da048b8015c797fd14bcb5a5766216ce65c8a5965616a5440ca7b6c3681ee3cbd0ea0c184a59975556e9d58f2002abf8485a14d11d3371770811050a16 languageName: node linkType: hard -"ws@npm:^7.4.0, ws@npm:^7.5.1": +"ws@npm:^7.5.1": version: 7.5.9 resolution: "ws@npm:7.5.9" peerDependencies: @@ -20241,17 +18854,10 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.1.1": - version: 2.2.2 - resolution: "yaml@npm:2.2.2" - checksum: a95bed9205a1f1cac11b315cb3f7ddf6b9979b85a478a18c86abf3066fd8d32c88f8de128c1ea97c2ac5f05de3268ff64e8286c241fd956851f1308044a50a9d - languageName: node - linkType: hard - -"yaml@npm:^2.3.1": - version: 2.3.1 - resolution: "yaml@npm:2.3.1" - checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3 +"yaml@npm:^2.1.1, yaml@npm:^2.3.1": + version: 2.3.4 + resolution: "yaml@npm:2.3.4" + checksum: cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 languageName: node linkType: hard @@ -20335,13 +18941,13 @@ __metadata: linkType: hard "yup@npm:^1.2.0": - version: 1.2.0 - resolution: "yup@npm:1.2.0" + version: 1.3.2 + resolution: "yup@npm:1.3.2" dependencies: property-expr: "npm:^2.0.5" tiny-case: "npm:^1.0.3" toposort: "npm:^2.0.2" type-fest: "npm:^2.19.0" - checksum: fa9f5491ab87e35a9c9cd5296992586850b9524853d52444dfe794a375df880a01b35c5c0364be457a9952f230ea9dd2a6f28d084c29b90abab9fdd84ee6f4c1 + checksum: 0820db84fc617b5a75b739bbdef73599bc36ad5a23f2746ae2e2600bb8bc7274a4f178336ab030f5d1a36774aeb08b891aa3fb6d88f64ef61f82ffc8e328b67d languageName: node linkType: hard From 8322b1136033d0d531660c4f1502ec6529f49d29 Mon Sep 17 00:00:00 2001 From: Nejc Date: Tue, 5 Dec 2023 11:11:40 +0100 Subject: [PATCH 29/33] feat: 288 allow users to withdraw from backstop pool in other assets (#292) * feat: backstop pool withdraw info * refactor: fee * feat: token price on redeem ui * feat: backstop poll withdraw in other assets * fix: removed orig files * fix: removed orig file * fix: types * feat: backstop pool withdraw * style: updated backstop pool ui * feat: pool withdraw * refactor: removed todo * fix: tests * style: swap ui update * style: swap table ui update * style: updated withdraw UI --- gql/gql.ts | 9 +- gql/graphql.ts | 12 +- jest.config.cjs | 1 + package.json | 17 +- src/GlobalStateProvider.tsx | 2 +- src/components/Apps/Unsupported/index.tsx | 49 +- src/components/Asset/Price/index.tsx | 4 +- src/components/Asset/Selector/Modal/index.tsx | 99 +-- src/components/Loader/Form/index.tsx | 40 ++ src/components/Selector/AssetSelector.tsx | 11 +- src/components/Table/index.tsx | 16 +- src/components/Transaction/Progress/index.tsx | 21 +- src/components/Transaction/Settings/index.tsx | 8 +- src/components/Wallet/NovaWallet/index.tsx | 5 +- src/components/Wallet/WalletConnect/index.tsx | 3 +- src/components/Wallet/index.tsx | 2 +- .../Pools/Backstop/AddLiquidity/index.tsx | 19 +- .../nabla/Pools/Backstop/Modals/index.tsx | 2 +- .../Backstop/WithdrawLiquidity/index.tsx | 131 +++- .../Pools/Backstop/WithdrawLiquidity/types.ts | 3 +- .../WithdrawLiquidity/useBackstopWithdraw.ts | 40 ++ .../WithdrawLiquidity/useSwapPoolWithdraw.ts | 82 +++ .../WithdrawLiquidity/useWithdrawLiquidity.ts | 96 ++- src/components/nabla/Pools/Backstop/index.tsx | 4 +- .../nabla/Pools/Swap/AddLiquidity/index.tsx | 19 +- .../nabla/Pools/Swap/Modals/index.tsx | 2 +- .../nabla/Pools/Swap/Redeem/index.tsx | 9 +- .../nabla/Pools/Swap/Redeem/useRedeem.ts | 2 +- .../Pools/Swap/WithdrawLiquidity/index.tsx | 19 +- src/components/nabla/Pools/Swap/columns.tsx | 19 +- src/components/nabla/Pools/Swap/index.tsx | 2 +- .../nabla/Pools/TokenAmount/index.tsx | 8 +- src/components/nabla/Price/index.tsx | 34 + src/components/nabla/Swap/From/index.tsx | 8 +- src/components/nabla/Swap/Progress/index.tsx | 2 +- src/components/nabla/Swap/To/index.tsx | 22 +- src/components/nabla/Swap/index.tsx | 6 +- src/config/apps/nabla.ts | 4 +- src/config/apps/types.ts | 8 +- src/constants/cache.ts | 1 + src/contracts/nabla/PriceOracle.ts | 591 ++++++++++++++++++ src/helpers/__tests__/calc.test.ts | 63 ++ src/helpers/calc.ts | 41 +- src/hooks/nabla/useBackstopPool.ts | 60 ++ src/hooks/nabla/useBackstopPools.ts | 6 + src/hooks/nabla/useSharesTargetWorth.ts | 3 +- src/hooks/nabla/useTokenPrice.ts | 20 + src/hooks/useClipboard.ts | 1 + src/hooks/useGetAppDataByTenant.ts | 3 +- src/hooks/usePriceFetcher.ts | 1 - src/services/walletConnect/index.ts | 9 +- src/shared/helpers.ts | 2 +- src/shared/useContract.ts | 4 +- src/shared/useContractWrite.ts | 3 +- tailwind.config.cjs | 8 +- yarn.lock | 115 +++- 56 files changed, 1506 insertions(+), 265 deletions(-) create mode 100644 src/components/Loader/Form/index.tsx create mode 100644 src/components/nabla/Pools/Backstop/WithdrawLiquidity/useBackstopWithdraw.ts create mode 100644 src/components/nabla/Pools/Backstop/WithdrawLiquidity/useSwapPoolWithdraw.ts create mode 100644 src/components/nabla/Price/index.tsx create mode 100644 src/contracts/nabla/PriceOracle.ts create mode 100644 src/helpers/__tests__/calc.test.ts create mode 100644 src/hooks/nabla/useBackstopPool.ts create mode 100644 src/hooks/nabla/useTokenPrice.ts diff --git a/gql/gql.ts b/gql/gql.ts index 21991c40..ede20cee 100644 --- a/gql/gql.ts +++ b/gql/gql.ts @@ -13,7 +13,8 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { - "\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n": types.GetBackstopPoolsDocument, + "\n query getBackstopPool($id: String!) {\n backstopPoolById(id: $id) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n decimals\n id\n name\n symbol\n }\n router {\n swapPools(where: { router_isNull: false, paused_not_eq: true }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n decimals\n id\n name\n symbol\n }\n }\n id\n }\n }\n }\n": types.GetBackstopPoolDocument, + "\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n router {\n swapPools(where: { router_isNull: false, paused_not_eq: true }) {\n id\n }\n id\n }\n }\n }\n": types.GetBackstopPoolsDocument, "\n query getSwapPools {\n swapPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n name\n symbol\n decimals\n }\n router {\n id\n paused\n }\n backstop {\n id\n liabilities\n paused\n reserves\n totalSupply\n }\n }\n }\n": types.GetSwapPoolsDocument, "\n query getTokens {\n nablaTokens {\n id\n name\n symbol\n decimals\n }\n }\n": types.GetTokensDocument, }; @@ -35,7 +36,11 @@ export function graphql(source: string): unknown; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"): (typeof documents)["\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n }\n }\n"]; +export function graphql(source: "\n query getBackstopPool($id: String!) {\n backstopPoolById(id: $id) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n decimals\n id\n name\n symbol\n }\n router {\n swapPools(where: { router_isNull: false, paused_not_eq: true }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n decimals\n id\n name\n symbol\n }\n }\n id\n }\n }\n }\n"): (typeof documents)["\n query getBackstopPool($id: String!) {\n backstopPoolById(id: $id) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n decimals\n id\n name\n symbol\n }\n router {\n swapPools(where: { router_isNull: false, paused_not_eq: true }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n decimals\n id\n name\n symbol\n }\n }\n id\n }\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n router {\n swapPools(where: { router_isNull: false, paused_not_eq: true }) {\n id\n }\n id\n }\n }\n }\n"): (typeof documents)["\n query getBackstopPools {\n backstopPools(where: { paused_eq: false }) {\n id\n liabilities\n paused\n reserves\n totalSupply\n token {\n id\n decimals\n name\n symbol\n }\n router {\n swapPools(where: { router_isNull: false, paused_not_eq: true }) {\n id\n }\n id\n }\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/gql/graphql.ts b/gql/graphql.ts index a9ecf15b..80b1c990 100644 --- a/gql/graphql.ts +++ b/gql/graphql.ts @@ -9150,10 +9150,17 @@ export type ZenlinkInfosConnection = { totalCount: Scalars['Int']['output']; }; +export type GetBackstopPoolQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type GetBackstopPoolQuery = { __typename?: 'Query', backstopPoolById?: { __typename?: 'BackstopPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any, token: { __typename?: 'NablaToken', decimals: number, id: string, name: string, symbol: string }, router: { __typename?: 'Router', id: string, swapPools: Array<{ __typename?: 'SwapPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any, token: { __typename?: 'NablaToken', decimals: number, id: string, name: string, symbol: string } }> } } | null }; + export type GetBackstopPoolsQueryVariables = Exact<{ [key: string]: never; }>; -export type GetBackstopPoolsQuery = { __typename?: 'Query', backstopPools: Array<{ __typename?: 'BackstopPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any, token: { __typename?: 'NablaToken', id: string, decimals: number, name: string, symbol: string } }> }; +export type GetBackstopPoolsQuery = { __typename?: 'Query', backstopPools: Array<{ __typename?: 'BackstopPool', id: string, liabilities: any, paused: boolean, reserves: any, totalSupply: any, token: { __typename?: 'NablaToken', id: string, decimals: number, name: string, symbol: string }, router: { __typename?: 'Router', id: string, swapPools: Array<{ __typename?: 'SwapPool', id: string }> } }> }; export type GetSwapPoolsQueryVariables = Exact<{ [key: string]: never; }>; @@ -9166,6 +9173,7 @@ export type GetTokensQueryVariables = Exact<{ [key: string]: never; }>; export type GetTokensQuery = { __typename?: 'Query', nablaTokens: Array<{ __typename?: 'NablaToken', id: string, name: string, symbol: string, decimals: number }> }; -export const GetBackstopPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getBackstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"backstopPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"paused_eq"},"value":{"kind":"BooleanValue","value":false}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetBackstopPoolDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getBackstopPool"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"backstopPoolById"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}},{"kind":"Field","name":{"kind":"Name","value":"router"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"swapPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"router_isNull"},"value":{"kind":"BooleanValue","value":false}},{"kind":"ObjectField","name":{"kind":"Name","value":"paused_not_eq"},"value":{"kind":"BooleanValue","value":true}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetBackstopPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getBackstopPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"backstopPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"paused_eq"},"value":{"kind":"BooleanValue","value":false}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}}]}},{"kind":"Field","name":{"kind":"Name","value":"router"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"swapPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"router_isNull"},"value":{"kind":"BooleanValue","value":false}},{"kind":"ObjectField","name":{"kind":"Name","value":"paused_not_eq"},"value":{"kind":"BooleanValue","value":true}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetSwapPoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getSwapPools"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"swapPools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"paused_eq"},"value":{"kind":"BooleanValue","value":false}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}},{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}},{"kind":"Field","name":{"kind":"Name","value":"router"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}}]}},{"kind":"Field","name":{"kind":"Name","value":"backstop"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"liabilities"}},{"kind":"Field","name":{"kind":"Name","value":"paused"}},{"kind":"Field","name":{"kind":"Name","value":"reserves"}},{"kind":"Field","name":{"kind":"Name","value":"totalSupply"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"nablaTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"decimals"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/jest.config.cjs b/jest.config.cjs index 197d4666..45340848 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -1,5 +1,6 @@ module.exports = { roots: ['/src'], + maxWorkers: 1, transform: { '\\.(ts|tsx)?$': 'babel-jest', }, diff --git a/package.json b/package.json index 3f860ebd..c3f15fe2 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@heroicons/react": "^2.0.18", "@hookform/resolvers": "^2.9.11", "@pendulum-chain/api": "^0.3.1", + "@pendulum-chain/api-solang": "^0.0.6", "@polkadot/api": "^9.9.1", "@polkadot/api-base": "^9.9.1", "@polkadot/api-contract": "^9.9.1", @@ -39,7 +40,7 @@ "@tanstack/query-sync-storage-persister": "~4.32.6", "@tanstack/react-query": "~4.32.6", "@tanstack/react-query-persist-client": "~4.32.6", - "@tanstack/react-table": "^8.9.3", + "@tanstack/react-table": "^8.10.7", "@walletconnect/modal": "^2.4.7", "@walletconnect/universal-provider": "^2.8.1", "big.js": "^6.2.1", @@ -51,7 +52,7 @@ "luxon": "^3.2.1", "match-sorter": "^6.3.1", "preact": "^10.12.1", - "react-daisyui": "^3.0.3", + "react-daisyui": "^3.1.2", "react-device-detect": "^2.2.3", "react-hook-form": "^7.43.2", "react-router-dom": "^6.8.1", @@ -59,7 +60,7 @@ "react-toastify": "^9.1.3", "stellar-sdk": "^10.4.1", "ts-node": "^10.9.1", - "yup": "^1.2.0" + "yup": "^1.3.2" }, "devDependencies": { "@babel/core": "^7.20.12", @@ -77,11 +78,11 @@ "@polkadot/types-known": "^9.9.1", "@preact/preset-vite": "^2.5.0", "@semantic-release/changelog": "^6.0.3", - "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/commit-analyzer": "^11.1.0", "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^9.2.1", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", + "@semantic-release/github": "^9.2.4", + "@semantic-release/npm": "^11.0.1", + "@semantic-release/release-notes-generator": "^12.1.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/preact": "^3.2.3", "@testing-library/preact-hooks": "^1.1.0", @@ -96,7 +97,7 @@ "@typescript-eslint/eslint-plugin": "^5.53.0", "@typescript-eslint/parser": "^5.53.0", "autoprefixer": "^10.4.13", - "daisyui": "^2.51.1", + "daisyui": "^2.52.0", "eslint": "^8.34.0", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-react": "^7.32.2", diff --git a/src/GlobalStateProvider.tsx b/src/GlobalStateProvider.tsx index 9791e6da..aeda9771 100644 --- a/src/GlobalStateProvider.tsx +++ b/src/GlobalStateProvider.tsx @@ -1,4 +1,4 @@ -import { WalletAccount, getWalletBySource } from '@talismn/connect-wallets'; +import { getWalletBySource, WalletAccount } from '@talismn/connect-wallets'; import { ComponentChildren, createContext } from 'preact'; import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'preact/compat'; import { useLocation } from 'react-router-dom'; diff --git a/src/components/Apps/Unsupported/index.tsx b/src/components/Apps/Unsupported/index.tsx index cdb1e0f2..5dd6454f 100644 --- a/src/components/Apps/Unsupported/index.tsx +++ b/src/components/Apps/Unsupported/index.tsx @@ -1,4 +1,6 @@ -import { Button } from 'react-daisyui'; +import {} from '@heroicons/react/20/solid'; +import { ExclamationTriangleIcon } from '@heroicons/react/24/outline'; +import { Alert, AlertProps, Button } from 'react-daisyui'; import { Apps } from '../../../config/apps'; import useSwitchChain from '../../../hooks/useSwitchChain'; import { TenantName } from '../../../models/Tenant'; @@ -12,24 +14,33 @@ export interface UnsupportedProps { const Unsupported = ({ app, tenant, supportedTenants }: UnsupportedProps): JSX.Element | null => { const { switchChain } = useSwitchChain(); return ( -
    -

    - {app} is not supported on {tenant}. - Switch to: -

    -
    - {supportedTenants.map((st) => ( - - ))} -
    +
    + ) as AlertProps['icon']} + status="warning" + className="inline-block w-auto mb-6" + > +
    +
    + {app} is not supported on {tenant}. + Switch to one of the following: +
    +
    + {supportedTenants.map((st) => ( + + ))} +
    +
    +
    ); }; diff --git a/src/components/Asset/Price/index.tsx b/src/components/Asset/Price/index.tsx index eb73fa4a..d1e33763 100644 --- a/src/components/Asset/Price/index.tsx +++ b/src/components/Asset/Price/index.tsx @@ -1,7 +1,7 @@ import { UseQueryOptions } from '@tanstack/react-query'; import { memo, useEffect, useState } from 'preact/compat'; import { usePriceFetcher } from '../../../hooks/usePriceFetcher'; -import { Skeleton } from '../../Skeleton'; +import { numberLoader } from '../../Loader'; export type TokenPriceProps = { address?: string; @@ -25,7 +25,7 @@ const TokenPrice = memo(({ symbol, prefix = null, loader, fallback = null }: Tok }, [pricesCache, symbol]); const isLoading = price === null; - if (isLoading) return <>{loader} || 10000; + if (isLoading) return <>{loader} || numberLoader; if (!price) return <>{fallback}; return ( diff --git a/src/components/Asset/Selector/Modal/index.tsx b/src/components/Asset/Selector/Modal/index.tsx index 8e8fc50c..f34518c6 100644 --- a/src/components/Asset/Selector/Modal/index.tsx +++ b/src/components/Asset/Selector/Modal/index.tsx @@ -1,23 +1,41 @@ import { CheckIcon } from '@heroicons/react/20/solid'; import { matchSorter } from 'match-sorter'; import { ChangeEvent, useMemo, useState } from 'preact/compat'; -import { Avatar, Button, Input, Modal, ModalProps } from 'react-daisyui'; -import { Token } from '../../../../../gql/graphql'; +import { Avatar, AvatarProps, Button, Input, Modal, ModalProps } from 'react-daisyui'; import { repeat } from '../../../../helpers/general'; import ModalCloseButton from '../../../Button/ModalClose'; import { Skeleton } from '../../../Skeleton'; -export interface AssetListProps { - assets?: Token[]; - onSelect: (asset: Token) => void; +export type SelectorToken = { + decimals: number; + id: string; + name: string; + symbol: string; +}; +export type SelectorValue = SelectorToken | Dict; + +export interface AssetListProps { + assets?: T[]; + map?: (value: T) => SelectorToken | undefined; + onSelect: (asset: T) => void; selected?: string; } -const AssetList = ({ assets, onSelect, selected }: AssetListProps): JSX.Element | null => { +const AssetList = ({ + assets, + onSelect, + selected, + map, +}: AssetListProps): JSX.Element | null => { const [filter, setFilter] = useState(); const filteredTokens = useMemo( - () => (filter && assets ? matchSorter(assets, filter, { keys: ['name', 'address', 'symbol'] }) : assets), + () => + filter && assets + ? matchSorter(assets, filter, { + keys: ['name', 'address', 'symbol', 'token.name', 'token.address', 'token.symbol'], + }) + : assets, [assets, filter], ); @@ -30,50 +48,61 @@ const AssetList = ({ assets, onSelect, selected }: AssetListProps): JSX.Element placeholder="Find by name or address" />
    - {filteredTokens?.map((token) => ( - - ))} + + ); + })}
    ); }; -export type AssetSelectorModalProps = { +export type AssetSelectorModalProps = { isLoading?: boolean; onClose: () => void; -} & AssetListProps & +} & AssetListProps & Omit; -export const AssetSelectorModal = ({ +export const AssetSelectorModal = ({ assets, selected, isLoading, onSelect, onClose, + map, ...rest -}: AssetSelectorModalProps) => { +}: AssetSelectorModalProps) => { return ( - +

    Select a token

    @@ -83,7 +112,7 @@ export const AssetSelectorModal = ({ {isLoading ? ( repeat() ) : ( - + )}
    diff --git a/src/components/Loader/Form/index.tsx b/src/components/Loader/Form/index.tsx new file mode 100644 index 00000000..8c50cc4a --- /dev/null +++ b/src/components/Loader/Form/index.tsx @@ -0,0 +1,40 @@ +import { repeat } from '../../../helpers/general'; +import { Skeleton } from '../../Skeleton'; + +export type FormLoaderProps = { + className?: string; + label?: boolean; + inputs?: number; + textarea?: boolean; + button?: boolean; +}; + +const FormLoader = ({ + className = '', + label, + inputs = 3, + textarea = true, + button = true, +}: FormLoaderProps): JSX.Element => { + return ( +
    + {repeat( +
    + {label && } + +
    , + inputs, + )} + {textarea && ( +
    + {label && } + +
    + )} + {button && } +
    + ); +}; + +export const defaultPageLoader = ; +export default FormLoader; diff --git a/src/components/Selector/AssetSelector.tsx b/src/components/Selector/AssetSelector.tsx index 39428386..40addfa9 100644 --- a/src/components/Selector/AssetSelector.tsx +++ b/src/components/Selector/AssetSelector.tsx @@ -18,13 +18,10 @@ interface AssetSelectorProps { function AssetSelector(props: AssetSelectorProps): JSX.Element { const { assets, selectedAsset, assetPrefix, assetSuffix } = props; - const items = assets.map((asset) => { - return { - displayName: assetDisplayName(asset, assetPrefix, assetSuffix), - id: asset.getCode(), - }; - }); - + const items = assets.map((asset) => ({ + displayName: assetDisplayName(asset, assetPrefix, assetSuffix), + id: asset.getCode(), + })); const selectedAssetItem = selectedAsset ? { displayName: assetDisplayName(selectedAsset, assetPrefix, assetSuffix), diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx index 222ac47d..11a3a8ae 100644 --- a/src/components/Table/index.tsx +++ b/src/components/Table/index.tsx @@ -49,6 +49,7 @@ export type TableProps = { /** Gives a className to odd rows (1,3,5,7,...), to help table rows readability. */ oddRowsClassname?: string; title?: string | JSX.Element; + fontSize?: string; }; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -65,6 +66,7 @@ const Table = ({ sortBy, evenRowsClassname, oddRowsClassname, + fontSize, title, }: TableProps): JSX.Element | null => { const totalCount = data.length; @@ -108,7 +110,9 @@ const Table = ({
    ) : null}
    {title &&
    {title}
    }
    @@ -121,12 +125,14 @@ const Table = ({
    -
    +
    {flexRender(header.column.columnDef.header, header.getContext())} {isSortable ? (
    diff --git a/src/components/Transaction/Progress/index.tsx b/src/components/Transaction/Progress/index.tsx index f0553e0b..e5e58d6e 100644 --- a/src/components/Transaction/Progress/index.tsx +++ b/src/components/Transaction/Progress/index.tsx @@ -26,12 +26,14 @@ const TransactionProgress = ({ mutation, children, onClose }: TransactionProgres <>
    -

    {isPending ? 'Waiting for confirmation' : 'Executing transaction'}

    -

    - {isPending ? 'Please confirm this transaction in your wallet' : 'Waiting for transaction to complete'} +

    + {isPending ? 'Waiting for confirmation' : 'Executing transaction'} +

    + {children} +

    + {isPending ? 'Confirm this transaction in your wallet' : 'Waiting for transaction to complete'}

    - {children} ); } @@ -39,17 +41,16 @@ const TransactionProgress = ({ mutation, children, onClose }: TransactionProgres <>
    {mutation.isSuccess ? ( - + ) : ( - + )}
    -
    -

    - {mutation.isSuccess ? 'Transaction successfull' : 'Transaction failed'} +
    +

    + {mutation.isSuccess ? 'Transaction successful' : 'Transaction failed'}

    - {children} {!!onClose && (

    -
    +
    + + { + setValue('slippage', slippage); + updateStorage({ slippage }); + }} + slippageProps={register('slippage', { + valueAsNumber: true, + onChange: (ev) => + updateStorage({ + slippage: Number(ev.currentTarget.value), + }), + })} + />
    - -
    + { + setValue('address', value.id && value.id.length > 5 ? value.id : null); + tokenModal[1].setFalse(); + }} + map={(pool) => pool.token} + selected={selectedPool.token.id} + onClose={tokenModal[1].setFalse} + />
    ); }; + +const WithdrawLiquidity = ({ data }: WithdrawLiquidityProps) => { + const { data: pool, isLoading } = useBackstopPool(data.id); + const filtered = useMemo(() => (pool ? filter(pool) : pool), [pool]); + + if (isLoading) return ; + if (!filtered) return <>Nothing found; + return ; +}; + export default WithdrawLiquidity; diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts index 787113ec..0e1297a3 100644 --- a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/types.ts @@ -1,4 +1,5 @@ export type WithdrawLiquidityValues = { amount: number; - address: string; + address?: string | null; + slippage?: number | null; }; diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useBackstopWithdraw.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useBackstopWithdraw.ts new file mode 100644 index 00000000..7eaa5c22 --- /dev/null +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useBackstopWithdraw.ts @@ -0,0 +1,40 @@ +import { useCallback } from 'react'; +import { config } from '../../../../../config'; +import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; +import { subtractPercentage } from '../../../../../helpers/calc'; +import { getValidSlippage } from '../../../../../helpers/transaction'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import { WithdrawLiquidityValues } from './types'; + +export type UseBackstopWithdrawProps = { + address: string; + onSuccess: () => void; +}; + +export const useBackstopWithdraw = ({ address, onSuccess }: UseBackstopWithdrawProps) => { + const mutation = useContractWrite({ + abi: backstopPoolAbi, + address, + method: 'withdraw', + onSuccess, + }); + const { mutate } = mutation; + + const onSubmit = useCallback( + async (variables: WithdrawLiquidityValues) => { + if (!variables.amount) return; + const vSlippage = getValidSlippage(variables.slippage || config.backstop.defaults.slippage); + mutate([ + decimalToNative(variables.amount, FixedU128Decimals).toString(), + decimalToNative(subtractPercentage(variables.amount, vSlippage), FixedU128Decimals).toString(), + ]); + }, + [mutate], + ); + + return { + onSubmit, + mutation, + }; +}; diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useSwapPoolWithdraw.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useSwapPoolWithdraw.ts new file mode 100644 index 00000000..89014100 --- /dev/null +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useSwapPoolWithdraw.ts @@ -0,0 +1,82 @@ +import { useCallback, useMemo } from 'react'; +import { BackstopPool, SwapPool } from '../../../../../../gql/graphql'; +import { config } from '../../../../../config'; +import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; +import { useGlobalState } from '../../../../../GlobalStateProvider'; +import { calcAvailablePoolWithdraw, subtractPercentage } from '../../../../../helpers/calc'; +import { getValidSlippage } from '../../../../../helpers/transaction'; +import { useSharesTargetWorth } from '../../../../../hooks/nabla/useSharesTargetWorth'; +import { useTokenPrice } from '../../../../../hooks/nabla/useTokenPrice'; +import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { useContractWrite } from '../../../../../shared/useContractWrite'; +import { WithdrawLiquidityValues } from './types'; + +export type UseSwapPoolWithdrawProps = { + pool: BackstopPool; + selectedPool: SwapPool; + deposit: number | undefined; + onSuccess: () => void; + enabled: boolean; +}; + +export const useSwapPoolWithdraw = ({ pool, selectedPool, deposit, onSuccess, enabled }: UseSwapPoolWithdrawProps) => { + const swapPoolAddress = selectedPool.id; + const { address: owner } = useGlobalState().walletAccount || {}; + + const mutation = useContractWrite({ + abi: backstopPoolAbi, + address: pool.id, + method: 'withdrawExcessSwapLiquidity', + onSuccess, + }); + const { mutate } = mutation; + + const onSubmit = useCallback( + async (variables: WithdrawLiquidityValues) => { + if (!variables.amount || !swapPoolAddress) return; + const vSlippage = getValidSlippage(variables.slippage || config.backstop.defaults.slippage); + mutate([ + swapPoolAddress, + decimalToNative(variables.amount, FixedU128Decimals).toString(), + decimalToNative(subtractPercentage(variables.amount, vSlippage), FixedU128Decimals).toString(), + ]); + }, + [mutate, swapPoolAddress], + ); + + const sharesQuery = useSharesTargetWorth( + { + address: swapPoolAddress, + amount: deposit, + abi: backstopPoolAbi, + }, + { enabled }, + ); + const shares = sharesQuery.data; + const bpPriceQuery = useTokenPrice(pool.token.id, owner, { enabled }); + const spPriceQuery = useTokenPrice(selectedPool.token.id, owner, { enabled }); + const bpPrice = bpPriceQuery.data; + const spPrice = spPriceQuery.data; + + const withdrawLimit = useMemo( + () => + calcAvailablePoolWithdraw({ + selectedPool, + deposit: BigInt(decimalToNative(deposit || 0).toString()), + shares, + bpPrice: bpPrice ? BigInt(bpPrice) : undefined, + spPrice: spPrice ? BigInt(spPrice) : undefined, + decimals: FixedU128Decimals, + }), + [selectedPool, deposit, shares, bpPrice, spPrice], + ); + + return { + onSubmit, + mutation, + isLoading: bpPriceQuery.isLoading || spPriceQuery.isLoading || sharesQuery.isLoading, + bpPriceQuery, + spPriceQuery, + withdrawLimit, + }; +}; diff --git a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts index e3f9b2ed..b931f21e 100644 --- a/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts +++ b/src/components/nabla/Pools/Backstop/WithdrawLiquidity/useWithdrawLiquidity.ts @@ -1,35 +1,44 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { useQueryClient } from '@tanstack/react-query'; -import { useMemo } from 'preact/compat'; +import { useCallback, useMemo } from 'preact/compat'; import { useForm, useWatch } from 'react-hook-form'; import { BackstopPool, SwapPool } from '../../../../../../gql/graphql'; import { cacheKeys } from '../../../../../constants/cache'; -import { backstopPoolAbi } from '../../../../../contracts/nabla/BackstopPool'; -import { subtractPercentage } from '../../../../../helpers/calc'; +import { storageKeys } from '../../../../../constants/localStorage'; +import { debounce } from '../../../../../helpers/function'; +import useBoolean from '../../../../../hooks/useBoolean'; import { useGetAppDataByTenant } from '../../../../../hooks/useGetAppDataByTenant'; +import { TransactionSettings } from '../../../../../models/Transaction'; import { useModalToggle } from '../../../../../services/modal'; -import { decimalToNative, FixedU128Decimals } from '../../../../../shared/parseNumbers'; +import { storageService } from '../../../../../services/storage/local'; +import { FixedU128Decimals } from '../../../../../shared/parseNumbers'; import { useContractBalance } from '../../../../../shared/useContractBalance'; -import { useContractWrite } from '../../../../../shared/useContractWrite'; +import { defaultValues } from '../../../Swap/useSwapComponent'; import schema from './schema'; import { WithdrawLiquidityValues } from './types'; +import { useBackstopWithdraw } from './useBackstopWithdraw'; +import { useSwapPoolWithdraw } from './useSwapPoolWithdraw'; +const storageSet = debounce(storageService.set, 1000); export const useWithdrawLiquidity = (pool: BackstopPool) => { const { id: poolAddress, token, router } = pool; const tokenAddress = token.id; const swapPools = router?.swapPools; - const queryClient = useQueryClient(); const { indexerUrl } = useGetAppDataByTenant('nabla').data || {}; + const queryClient = useQueryClient(); const toggle = useModalToggle(); + const tokenModal = useBoolean(); const balanceQuery = useContractBalance({ contractAddress: tokenAddress, decimals: FixedU128Decimals }); const depositQuery = useContractBalance({ contractAddress: poolAddress, decimals: FixedU128Decimals }); + const { refetch: balanceRefetch } = balanceQuery; + const { refetch: depositRefetch } = depositQuery; const form = useForm({ resolver: yupResolver(schema), defaultValues: {}, }); - + const { reset, getValues, handleSubmit } = form; const amount = Number( useWatch({ @@ -44,28 +53,6 @@ export const useWithdrawLiquidity = (pool: BackstopPool) => { name: 'address', }); - const mutation = useContractWrite({ - abi: backstopPoolAbi, - address: poolAddress, - method: 'withdraw', - onError: () => { - // ? log error - alert not needed as the transaction modal displays the error - }, - onSuccess: () => { - form.reset(); - balanceQuery.refetch(); - depositQuery.refetch(); - queryClient.refetchQueries([cacheKeys.swapPools, indexerUrl]); - }, - }); - - const onSubmit = form.handleSubmit((variables: WithdrawLiquidityValues) => - mutation.mutate([ - decimalToNative(variables.amount, FixedU128Decimals).toString(), - decimalToNative(subtractPercentage(variables.amount, 1), FixedU128Decimals).toString(), - ]), - ); - const pools = useMemo( () => [ @@ -81,5 +68,54 @@ export const useWithdrawLiquidity = (pool: BackstopPool) => { ); const selectedPool = useMemo(() => pools.find((t) => t.id === address) || pools[0], [address, pools]); - return { form, amount, mutation, onSubmit, toggle, balanceQuery, depositQuery, selectedPool, pools }; + const onWithdrawSuccess = useCallback(() => { + reset(); + balanceRefetch(); + depositRefetch(); + queryClient.refetchQueries([cacheKeys.backstopPools, indexerUrl]); + }, [balanceRefetch, depositRefetch, indexerUrl, queryClient, reset]); + + const backstopWithdraw = useBackstopWithdraw({ + address: poolAddress, + onSuccess: onWithdrawSuccess, + }); + + const isSwapPoolWithdraw = !!address && address.length > 5; + const swapPoolWithdraw = useSwapPoolWithdraw({ + pool, + deposit: depositQuery.balance || 0, + selectedPool, + enabled: isSwapPoolWithdraw, + onSuccess: onWithdrawSuccess, + }); + + const updateStorage = useCallback( + (newValues: Partial) => { + const prev = getValues(); + const updated = { + slippage: prev.slippage || defaultValues.slippage, + ...newValues, + }; + storageSet(storageKeys.POOL_SETTINGS, updated); + return updated; + }, + [getValues], + ); + + return { + address, + amount, + backstopWithdraw, + balanceQuery, + depositQuery, + form, + isSwapPoolWithdraw, + pools, + selectedPool, + swapPoolWithdraw, + tokenModal, + toggle, + updateStorage, + onSubmit: handleSubmit(address && address.length > 5 ? swapPoolWithdraw.onSubmit : backstopWithdraw.onSubmit), + }; }; diff --git a/src/components/nabla/Pools/Backstop/index.tsx b/src/components/nabla/Pools/Backstop/index.tsx index 8abe8f5e..fbf6d1b4 100644 --- a/src/components/nabla/Pools/Backstop/index.tsx +++ b/src/components/nabla/Pools/Backstop/index.tsx @@ -12,8 +12,8 @@ const BackstopPoolsBody = (): JSX.Element | null => { const { data, isLoading } = useBackstopPools(); if (isLoading) return ; - const pool = data?.[data.length - 1]; - if (!pool) return null; // TODO: empty state UI + const pool = data?.[0]; + if (!pool) return

    No backstop pools

    ; return ( <>
    diff --git a/src/components/nabla/Pools/Swap/AddLiquidity/index.tsx b/src/components/nabla/Pools/Swap/AddLiquidity/index.tsx index dba6593a..970bb1b8 100644 --- a/src/components/nabla/Pools/Swap/AddLiquidity/index.tsx +++ b/src/components/nabla/Pools/Swap/AddLiquidity/index.tsx @@ -47,16 +47,29 @@ const AddLiquidity = ({ data }: AddLiquidityProps): JSX.Element | null => { Balance: {balanceQuery.isLoading ? numberLoader : `${balanceQuery.formatted || 0} ${data.token.symbol}`}

    -
    +
    + +