@turtleclub/hooks 0.3.0 → 0.3.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +11 -133
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -133
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/src/campaigns-v2/index.ts +0 -1
- package/src/campaigns-v2/useUserCampaignPositions.ts +11 -29
- package/src/campaigns-v2/useTonCampaignPositions.ts +0 -141
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks/useConfig.ts","../src/hooks/client.ts","../src/hooks/endpoints/useOrganizations.ts","../src/hooks/endpoints/useExists.ts","../src/hooks/endpoints/useIndexerTvl.ts","../src/hooks/endpoints/useOrganizationDeals.ts","../src/hooks/endpoints/useOrganizationsDeals.ts","../src/hooks/endpoints/usePrepareSignup.ts","../src/hooks/endpoints/useProjectTvl.ts","../src/hooks/endpoints/useSignup.ts","../src/hooks/endpoints/earn/useCampaigns.ts","../src/hooks/endpoints/earn/useDeals.ts","../src/hooks/endpoints/earn/useRoute.ts","../src/hooks/endpoints/earn/useWalletBalances.ts","../src/hooks/endpoints/partner/usePartnerCampaigns.ts","../src/hooks/endpoints/partner/usePartnerDeals.ts","../src/hooks/endpoints/useGeocheck.ts","../src/campaigns-v2/index.ts","../src/campaigns-v2/useEvmCampaignPositions.ts","../src/campaigns-v2/useCampaign.ts","../src/campaigns-v2/api/builder/hooks.ts","../src/campaigns-v2/api/partners/api.ts","../src/campaigns-v2/utils/zod.ts","../src/campaigns-v2/utils/time.ts","../src/campaigns-v2/utils/array.ts","../src/campaigns-v2/utils/cn.ts","../src/campaigns-v2/utils/debank.ts","../src/campaigns-v2/chains/katana.ts","../src/campaigns-v2/utils/fn.ts","../src/campaigns-v2/utils/jwt.ts","../src/campaigns-v2/utils/log.ts","../src/campaigns-v2/utils/object.ts","../src/campaigns-v2/utils/tanstack-query.ts","../src/campaigns-v2/utils/url.ts","../src/campaigns-v2/api/builder/api.ts","../src/campaigns-v2/api/backends/fetch.ts","../src/campaigns-v2/stores/authTokensStore.ts","../src/campaigns-v2/api/partners/campaignSchemas.ts","../src/campaigns-v2/api/partners/dealSchemas.ts","../src/campaigns-v2/api/partners/organizationSchemas.ts","../src/campaigns-v2/api/partners/paymentSchemas.ts","../src/campaigns-v2/api/partners/treasurySchemas.ts","../src/campaigns-v2/api/partners/authApi.ts","../src/campaigns-v2/api/partners/authSchemas.ts","../src/campaigns-v2/types/auth.ts","../src/campaigns-v2/api/utils.ts","../src/campaigns-v2/api/partners/hooks.ts","../src/campaigns-v2/shared-constants.ts","../src/campaigns-v2/tac/constants.ts","../src/campaigns-v2/Katana/constants.ts","../src/campaigns-v2/contracts/lagoonVaultAbi.tsx","../src/campaigns-v2/contracts/morpho/morphoAbi.tsx","../src/campaigns-v2/api/index/api.ts","../src/campaigns-v2/api/index/z.ts","../src/campaigns-v2/api/index/hooks.ts","../src/campaigns-v2/constants.tsx","../src/campaigns-v2/chains.ts","../src/campaigns-v2/useTonCampaignPositions.ts","../src/campaigns-v2/useUserCampaignPositions.ts"],"sourcesContent":["// TODO: delete - prerelease trigger\n// Hooks\nexport * from \"./hooks/useConfig\";\nexport * from \"./hooks/client\";\n\n// Endpoint hooks\nexport * from \"./hooks/endpoints/useOrganizations\";\nexport * from \"./hooks/endpoints/useExists\";\nexport * from \"./hooks/endpoints/useIndexerTvl\";\nexport * from \"./hooks/endpoints/useOrganizationDeals\";\nexport * from \"./hooks/endpoints/useOrganizationsDeals\";\nexport * from \"./hooks/endpoints/usePrepareSignup\";\nexport * from \"./hooks/endpoints/useProjectTvl\";\nexport * from \"./hooks/endpoints/useSignup\";\n\n// Earn hooks\nexport * from \"./hooks/endpoints/earn\";\n\n// Partner hooks\nexport * from \"./hooks/endpoints/partner\";\nexport * from \"./hooks/endpoints/useGeocheck\";\n\n// Campaign hooks - now using campaigns-v2\nexport * as campaignsV2 from \"./campaigns-v2\";\n","import type { Config } from \"@turtleclub/api\";\nimport { defaultConfig } from \"@turtleclub/api\";\n\nexport function useConfig(): Config {\n // Placeholder implementation - in real app this would use TurtleProvider context\n return defaultConfig;\n}\n","import { createSyncStoragePersister } from \"@tanstack/query-sync-storage-persister\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { persistQueryClient } from \"@tanstack/react-query-persist-client\";\n\nexport const defaultQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\n// Only persist on client side\nif (typeof window !== 'undefined') {\n const localStoragePersister = createSyncStoragePersister({\n storage: window.localStorage,\n key: \"turtle-sdk\",\n });\n\n persistQueryClient({\n queryClient: defaultQueryClient,\n persister: localStoragePersister,\n });\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, organization, type OrganizationResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseOrganizationsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useOrganizations({\n config,\n queryClient,\n}: UseOrganizationsOptions = {}): UseQueryResult<OrganizationResponse | null> {\n const defaultConfig = useConfig();\n\n const query = useQuery(\n {\n queryKey: [\"organizations\"],\n queryFn: async () => {\n return await organization(config ?? defaultConfig);\n },\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n },\n queryClient ?? defaultQueryClient\n );\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, exists, type ExistsOptions } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseExistsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useExists(\n options?: ExistsOptions,\n { config, queryClient }: UseExistsOptions = {},\n): UseQueryResult<boolean | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"exists\", options?.user],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await exists(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n refetchOnWindowFocus: true,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, projectTvl, type ProjectTvlOptions } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UseIndexerTvlOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useIndexerTvl(\n options?: ProjectTvlOptions,\n { config, queryClient }: UseIndexerTvlOptions = {}\n): UseQueryResult<\n {\n protocol: string;\n tvl: number;\n assetTvl: number;\n debtTvl: number;\n }[],\n Error\n> {\n const defaultConfig = useConfig();\n\n const queryResult = useQuery(\n {\n queryKey: [\"indexer-tvl\", options?.projects],\n queryFn: async () => {\n return await projectTvl(config ?? defaultConfig);\n },\n select: (data) => {\n if (!data) return [];\n const result = Object.entries(data.projects)\n .map(([key, value]) => {\n if (!options?.projects.includes(key)) return null;\n return {\n protocol: key,\n tvl: value.tvl_usd,\n assetTvl: value.asset_tvl_usd,\n debtTvl: value.debt_tvl_usd,\n };\n })\n .filter(Boolean) as {\n protocol: string;\n tvl: number;\n assetTvl: number;\n debtTvl: number;\n }[];\n\n return result;\n },\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n },\n queryClient ?? defaultQueryClient\n );\n\n return queryResult;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, organizationDeals, type OrganizationDealsOptions, type OrganizationDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseOrganizationDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useOrganizationDeals(\n options?: OrganizationDealsOptions,\n { config, queryClient }: UseOrganizationDealsOptions = {},\n): UseQueryResult<OrganizationDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"organizationDeals\", options?.organizationId],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await organizationDeals(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, organizationsDeals, type OrganizationsDealsOptions, type OrganizationsDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseOrganizationsDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useOrganizationsDeals(\n options?: OrganizationsDealsOptions,\n { config, queryClient }: UseOrganizationsDealsOptions = {},\n): UseQueryResult<OrganizationsDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"organizationsDeals\", options?.organizationIds],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await organizationsDeals(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n throwOnError: true,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, prepareSignup, type PrepareSignupOptions, type PrepareSignupResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UsePrepareSignupOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function usePrepareSignup(\n options?: PrepareSignupOptions,\n { config, queryClient }: UsePrepareSignupOptions = {},\n): UseQueryResult<PrepareSignupResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"prepareSignup\", options?.user],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await prepareSignup(options, config ?? defaultConfig);\n },\n enabled,\n refetchInterval: 5 * 60 * 1000,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, projectTvl, type ProjectTvlOptions, type ProjectTvlResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseProjectTvlOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useProjectTvl(\n options?: ProjectTvlOptions,\n { config, queryClient }: UseProjectTvlOptions = {},\n): UseQueryResult<ProjectTvlResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"projectTvl\", options?.projects],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await projectTvl(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 7 * 60 * 1000,\n refetchInterval: 5 * 60 * 1000,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import {\n type QueryClient,\n useMutation,\n type UseMutationResult,\n useQuery,\n} from \"@tanstack/react-query\";\nimport { type Config, signup, type SignupOptions } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseSignupOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useSignup(\n options?: Omit<SignupOptions, \"signature\">,\n { config, queryClient }: UseSignupOptions = {}\n): UseMutationResult<boolean | null, Error, string, unknown> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const mutation = useMutation(\n {\n mutationFn: async (signature: string) => {\n if (!enabled) return null;\n\n return await signup({ ...options, signature }, config ?? defaultConfig);\n },\n },\n queryClient ?? defaultQueryClient\n );\n\n return mutation;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnCampaigns, type EarnCampaignsOptions, type EarnCampaignWithVaults } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UseEarnCampaignsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnCampaigns(\n options?: EarnCampaignsOptions,\n { config, queryClient }: UseEarnCampaignsOptions = {},\n): UseQueryResult<EarnCampaignWithVaults[] | null> {\n const defaultConfig = useConfig();\n const enabled = true; // Always enabled for campaigns\n\n const query = useQuery({\n queryKey: [\n \"earn-campaigns\",\n options?.idFilter,\n options?.protocolFilter,\n ],\n queryFn: async () => {\n return await earnCampaigns(options || {}, config ?? defaultConfig);\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnDeals, type EarnDealsOptions, type EarnDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UseEarnDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnDeals(\n options?: EarnDealsOptions,\n { config, queryClient }: UseEarnDealsOptions = {},\n): UseQueryResult<EarnDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"earn-deals\",\n options?.campaignId,\n options?.idFilter,\n options?.protocolFilter,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await earnDeals(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnRoute, type EarnRouteOptions, type EarnRouteResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../../client\";\nimport { useConfig } from \"../../useConfig\";\n\nexport interface UseEarnRouteOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnRoute(\n options?: EarnRouteOptions,\n { config, queryClient }: UseEarnRouteOptions = {},\n): UseQueryResult<EarnRouteResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"earnRoute\",\n options?.user,\n options?.chain,\n options?.slippage,\n options?.tokenIn,\n options?.tokenOut,\n options?.amount,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await earnRoute(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000, // 2 minutes - longer stale time for transaction stability\n refetchInterval: false, // Disable automatic refetch to prevent transaction state reset\n refetchOnWindowFocus: true,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport {\n type Config,\n earnWalletBalances,\n type EarnWalletBalancesOptions,\n type EarnWalletBalancesResponse,\n} from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../../client\";\nimport { useConfig } from \"../../useConfig\";\n\nexport interface UseEarnWalletBalancesOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnWalletBalances(\n options?: EarnWalletBalancesOptions,\n { config, queryClient }: UseEarnWalletBalancesOptions = {}\n): UseQueryResult<EarnWalletBalancesResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery(\n {\n queryKey: [\"earnWalletBalances\", options?.chain, options?.user],\n queryFn: async () => {\n if (!enabled) return null;\n\n return await earnWalletBalances(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 30 * 1000,\n refetchInterval: 15 * 1000,\n refetchOnWindowFocus: true,\n },\n queryClient ?? defaultQueryClient\n );\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnCampaigns, type EarnCampaignsOptions, type EarnCampaignWithVaults } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UsePartnerCampaignsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\n/**\n * Hook to fetch partner campaigns\n * Currently uses the same endpoint as earn campaigns\n */\nexport function usePartnerCampaigns(\n options?: EarnCampaignsOptions,\n { config, queryClient }: UsePartnerCampaignsOptions = {},\n): UseQueryResult<EarnCampaignWithVaults[] | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"partner-campaigns\",\n options?.idFilter,\n options?.protocolFilter,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await earnCampaigns(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, turtleDeals, type TurtleDealsOptions, type TurtleDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UsePartnerDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function usePartnerDeals(\n options?: TurtleDealsOptions,\n { config, queryClient }: UsePartnerDealsOptions = {},\n): UseQueryResult<TurtleDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"partner-deals\",\n options?.status,\n options?.protocol,\n options?.ids,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n const result = await turtleDeals(options || {}, config ?? defaultConfig);\n return result;\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, geocheck, type GeoCheckResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseGeocheckOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useGeocheck(\n { config, queryClient }: UseGeocheckOptions = {},\n): UseQueryResult<GeoCheckResponse> {\n const defaultConfig = useConfig();\n\n const query = useQuery({\n queryKey: [\"geocheck\"],\n queryFn: async () => {\n return await geocheck(config ?? defaultConfig);\n },\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 10 * 60 * 1000, // 10 minutes\n refetchOnWindowFocus: false,\n retry: 1,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","// Hooks exports\nexport { useEvmCampaignPositions } from \"./useEvmCampaignPositions\";\nexport { useTonCampaignPositions } from \"./useTonCampaignPositions\";\nexport { useUserCampaignPositions } from \"./useUserCampaignPositions\";\nexport { useCampaign, useTacCampaign, useKatanaCampaign } from \"./useCampaign\";\n\n// Types exports\nexport type { Position } from \"./useUserCampaignPositions\";\n\n// Constants exports\nexport { TAC_CAMPAIGN_NAME, KATANA_CAMPAIGN_NAME, ALL_CAMPAIGN_NAMES } from \"./shared-constants\";\nexport type { CampaignName } from \"./shared-constants\";\n\n// Vault constants exports\nexport {\n getVaultAddress,\n getVaultChain,\n getVaultChainId,\n getVaultDecimals,\n getVaultDeployment,\n getVaultDepositAssets,\n getVaultExposure,\n getVaultIncentives,\n getVaultIcon,\n getVaultEstApr,\n // getVaultAprTooltip,\n getVaultBoostText,\n sortVaults,\n groupVaults,\n} from \"./constants\";\n\n// Contracts exports\nexport { lagoonVaultAbi } from \"./contracts/lagoonVaultAbi\";\nexport { morphoAbi } from \"./contracts/morpho\";","import { useCallback, useMemo } from \"react\";\nimport { useAccount, usePublicClient } from \"wagmi\";\nimport { createPublicClient, erc20Abi, formatUnits, http } from \"viem\";\nimport type { Abi, Address } from \"viem\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useCampaign } from \"./useCampaign\";\nimport { lagoonVaultAbi } from \"./contracts/lagoonVaultAbi\";\nimport { morphoAbi } from \"./contracts/morpho\";\nimport { indexHooks } from \"./api/index/hooks\";\nimport {\n getVaultAddress,\n getVaultChain,\n getVaultChainId,\n getVaultDecimals,\n getVaultDeployment,\n} from \"./constants\";\nimport type { CampaignVaultSchema } from \"./api/partners/campaignSchemas\";\nimport { supportedChains } from \"./chains\";\n\nexport interface Position {\n vault: CampaignVaultSchema;\n userBalance: bigint;\n userTVL: number;\n}\n\ninterface Positions {\n userPositions: Position[];\n userTotalTVL: number;\n}\n\nexport function useEvmCampaignPositions({\n campaignName,\n userAddress,\n}: {\n campaignName: string;\n userAddress?: Address;\n}) {\n const { vaults } = useCampaign(campaignName);\n const { chain: userChain } = useAccount();\n const walletPublicClient = usePublicClient();\n\n const { configs, priceTokens } = useMemo(() => {\n if (!userAddress) return { configs: [], priceTokens: [] };\n\n const configs = vaults\n .map((vault) => {\n const vaultAddress = getVaultAddress(vault);\n const vaultChain = getVaultChain(vault);\n const vaultChainId = getVaultChainId(vault);\n if (!vaultChain || !vaultAddress || !vaultChainId) return null;\n if (vault.curveProviderConfig) {\n const deployment = vault.curveProviderConfig.deployments[0];\n return [\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.pool,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.gauge,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n ];\n }\n if (vault.stakeDAOProviderConfig) {\n const deployment = vault.stakeDAOProviderConfig.deployments[0];\n return [\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.vault,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.gauge,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n ];\n }\n\n const isLagoon = !!vault.lagoonProviderConfig;\n const isMorphoMarket = !!vault.morphoMarketProviderConfig;\n const tokenDecimals = getVaultDecimals(vault) ?? 18;\n\n return {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: vaultAddress,\n tokenDecimals,\n isLagoon,\n isMorphoMarket,\n };\n })\n .flatMap((c) => c)\n .filter((c): c is NonNullable<typeof c> => c !== null);\n\n // Create price tokens for usePricesNew hook\n const priceTokens = configs.map((config) => ({\n chain: config.vaultChain,\n address: config.tokenAddress,\n }));\n\n return { configs, priceTokens };\n }, [vaults, userAddress]);\n\n const { data: prices } = indexHooks.usePricesNew({ tokens: priceTokens });\n\n const {\n data: positions,\n isLoading,\n error: queryError,\n refetch: refetchUserPositions,\n } = useQuery<Positions>({\n queryKey: [\"positions\", userAddress, campaignName, configs?.length],\n queryFn: async () => {\n if (!configs || !prices) {\n return {\n userPositions: [],\n userTotalTVL: 0,\n };\n }\n\n // Group configs by chain for batching\n const configsByChain = new Map<number, typeof configs>();\n\n for (const config of configs) {\n if (!configsByChain.has(config.vaultChainId)) {\n configsByChain.set(config.vaultChainId, []);\n }\n configsByChain.get(config.vaultChainId)!.push(config);\n }\n\n const userPositionsById: Record<string, Position> = {};\n let userTotalTVL = 0;\n\n // Process each chain's vaults in batches\n for (const [chainId, chainConfigs] of configsByChain) {\n try {\n const chainConfig = supportedChains.find((c) => c.id === chainId);\n if (!chainConfig) {\n continue;\n }\n\n const isUserOnSameChain = userChain?.id === chainId;\n const chainPublicClient = isUserOnSameChain\n ? walletPublicClient\n : createPublicClient({\n chain: chainConfig,\n transport: http(chainConfig.rpcUrls.default.http[0]),\n });\n\n // Prepare multicall contracts\n const multicallContracts: Array<{\n address: `0x${string}`;\n abi: Abi;\n functionName: string;\n args: readonly any[];\n config: (typeof configs)[0];\n type: \"lagoon\" | \"morpho\" | \"erc20\";\n }> = [];\n\n for (const config of chainConfigs) {\n if (config.isLagoon) {\n // Add Lagoon vault calls\n multicallContracts.push(\n {\n address: config.tokenAddress as `0x${string}`,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [userAddress!],\n config,\n type: \"lagoon\",\n },\n {\n address: config.tokenAddress as `0x${string}`,\n abi: lagoonVaultAbi as Abi,\n functionName: \"maxMint\",\n args: [userAddress!],\n config,\n type: \"lagoon\",\n },\n {\n address: config.tokenAddress as `0x${string}`,\n abi: lagoonVaultAbi as Abi,\n functionName: \"pendingDepositRequest\",\n args: [0, userAddress!],\n config,\n type: \"lagoon\",\n }\n );\n } else if (config.isMorphoMarket) {\n const deployment = getVaultDeployment(config.vault);\n if (!deployment || !(\"marketId\" in deployment)) continue;\n\n multicallContracts.push({\n address: deployment.morpho as `0x${string}`,\n abi: morphoAbi as Abi,\n functionName: \"position\",\n args: [deployment.marketId, userAddress!],\n config,\n type: \"morpho\",\n });\n } else {\n // Standard ERC20 balance check\n multicallContracts.push({\n address: config.tokenAddress as `0x${string}`,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [userAddress!],\n config,\n type: \"erc20\",\n });\n }\n }\n\n // Execute calls in smaller batches to avoid hanging\n const results = [];\n const batchSize = 10; // Process in batches of 10\n\n // Check if chain supports multicall\n const supportsMulticall = chainConfig.contracts?.multicall3;\n\n if (supportsMulticall) {\n // Use multicall for chains that support it\n for (let i = 0; i < multicallContracts.length; i += batchSize) {\n const batch = multicallContracts.slice(i, i + batchSize);\n\n try {\n const batchResults = await chainPublicClient.multicall({\n contracts: batch.map(({ address, abi, functionName, args }) => ({\n address,\n abi,\n functionName,\n args,\n })),\n });\n results.push(...batchResults);\n } catch {\n // Fall back to individual calls for this batch\n for (const contract of batch) {\n try {\n const result = await chainPublicClient.readContract({\n address: contract.address,\n abi: contract.abi,\n functionName: contract.functionName,\n args: contract.args,\n });\n results.push({ status: \"success\", result });\n } catch (callError) {\n results.push({ status: \"failure\", error: callError });\n }\n }\n }\n }\n } else {\n // Use individual calls for chains that don't support multicall\n for (const contract of multicallContracts) {\n try {\n const result = await chainPublicClient.readContract({\n address: contract.address,\n abi: contract.abi,\n functionName: contract.functionName,\n args: contract.args,\n });\n results.push({ status: \"success\", result });\n } catch (callError) {\n results.push({ status: \"failure\", error: callError });\n }\n }\n }\n\n // Process results\n let callIndex = 0;\n for (const config of chainConfigs) {\n if (config.isLagoon) {\n // Process Lagoon results (3 calls per vault)\n const balanceResult = results[callIndex++];\n const maxMintResult = results[callIndex++];\n const pendingDepositRequestResult = results[callIndex++];\n\n const balance = balanceResult?.status === \"success\" ? balanceResult.result : null;\n const maxMint = maxMintResult?.status === \"success\" ? maxMintResult.result : null;\n const pendingDepositRequest =\n pendingDepositRequestResult?.status === \"success\"\n ? pendingDepositRequestResult.result\n : null;\n\n if (balance || maxMint || pendingDepositRequest) {\n let depositShares = 0n;\n if (pendingDepositRequest) {\n // Convert pending deposit to shares\n const depositSharesResult = await chainPublicClient.readContract({\n address: config.tokenAddress as `0x${string}`,\n abi: lagoonVaultAbi as Abi,\n functionName: \"convertToShares\",\n args: [pendingDepositRequest],\n });\n depositShares = depositSharesResult as bigint;\n }\n\n // Calculate total shares\n const totalShares = (balance as bigint) + (maxMint as bigint) + depositShares;\n const price = prices.prices[config.vaultChain]?.[config.tokenAddress] || 0;\n const decimals = config.tokenDecimals || 18;\n const userVaultTVL = Number(formatUnits(totalShares, decimals)) * price;\n\n if (userVaultTVL > 0) {\n const existingPosition = userPositionsById[config.vault.id];\n if (existingPosition) {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: existingPosition.userBalance + totalShares,\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: totalShares,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n } else if (config.isMorphoMarket) {\n const positionResult = results[callIndex++];\n const position = positionResult?.status === \"success\" ? positionResult.result : null;\n if (position) {\n const positionData = position as [bigint, bigint, bigint];\n const collateralBalance = positionData[2];\n const price = prices.prices[config.vaultChain]?.[config.tokenAddress] || 0;\n const userVaultTVL =\n Number(formatUnits(collateralBalance, config.tokenDecimals)) * price;\n\n if (userVaultTVL > 0) {\n const existingPosition = userPositionsById[config.vault.id];\n if (existingPosition) {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: existingPosition.userBalance + collateralBalance,\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: collateralBalance,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n } else {\n // Process ERC20 results\n const balanceResult = results[callIndex++];\n const balance = balanceResult?.status === \"success\" ? balanceResult.result : null;\n if (balance) {\n const price = prices.prices[config.vaultChain]?.[config.tokenAddress] || 0;\n const decimals = config.tokenDecimals || 18;\n const userVaultTVL = Number(formatUnits(balance as bigint, decimals)) * price;\n\n if (userVaultTVL > 0) {\n const existingPosition = userPositionsById[config.vault.id];\n if (existingPosition) {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: existingPosition.userBalance + (balance as bigint),\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: balance as bigint,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n }\n }\n } catch {\n // Continue with other chains even if one fails\n console.error(\"❌ Error processing chain\", chainId);\n }\n }\n\n const userPositions = Object.values(userPositionsById);\n\n return {\n userPositions,\n userTotalTVL,\n };\n },\n enabled: !!prices && !!userAddress,\n staleTime: 30_000, // 30 seconds\n gcTime: 60_000, // 1 minute\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n });\n\n const invalidateUserPositions = useCallback(async () => {\n await refetchUserPositions();\n }, [refetchUserPositions]);\n\n const result = useMemo(\n () => ({\n userPositions: positions?.userPositions ?? [],\n userTotalTVL: positions?.userTotalTVL ?? 0,\n isLoading,\n error: queryError,\n invalidateUserPositions,\n }),\n [positions, isLoading, queryError, invalidateUserPositions]\n );\n\n return result;\n}\n","import { useCallback, useMemo } from \"react\";\nimport { partnersHooks } from \"./api/partners/hooks\";\nimport { KATANA_CAMPAIGN_NAME, TAC_CAMPAIGN_NAME } from \"./shared-constants\";\nimport { TACCampaignEndDate } from \"./tac/constants\";\nimport { KatanaCampaignEndDate } from \"./Katana/constants\";\n\nexport function useCampaign(name: string) {\n const { data: vaultCampaign, isLoading, refetch: refetchVaultCampaign } = partnersHooks.useCampaignByName(name);\n\n const getIncentiveById = useCallback(\n (id: string) => {\n if (!vaultCampaign) return null;\n if (name === TAC_CAMPAIGN_NAME) {\n const mainIncentives = vaultCampaign.campaign.tacConfig?.incentives;\n const additionalIncentives = vaultCampaign.campaign.tacConfig?.additionalIncentives;\n const allIncentives = [...(mainIncentives ?? []), ...(additionalIncentives ?? [])];\n return allIncentives.find((incentive) => incentive.id === id) ?? null;\n }\n if (name === KATANA_CAMPAIGN_NAME) {\n const mainIncentives = vaultCampaign.campaign.katanaConfig?.incentives;\n const additionalIncentives = vaultCampaign.campaign.katanaConfig?.additionalIncentives;\n const allIncentives = [...(mainIncentives ?? []), ...(additionalIncentives ?? [])];\n return allIncentives.find((incentive) => incentive.id === id) ?? null;\n }\n return null;\n },\n [vaultCampaign, name],\n );\n\n const getVaultById = useCallback(\n (id: string | undefined | null) => {\n if (!vaultCampaign) return null;\n if (!id) return null;\n\n return vaultCampaign.vaults.find((vault) => vault.id === id);\n },\n [vaultCampaign],\n );\n\n const groups = useMemo(() => {\n if (vaultCampaign?.campaign.tacConfig) {\n return vaultCampaign.campaign.tacConfig.groups;\n }\n if (vaultCampaign?.campaign.katanaConfig) {\n return vaultCampaign.campaign.katanaConfig.groups;\n }\n return [];\n }, [vaultCampaign]);\n\n const campaignEndDate = useMemo(() => {\n if (name === TAC_CAMPAIGN_NAME) {\n return TACCampaignEndDate;\n }\n if (name === KATANA_CAMPAIGN_NAME) {\n return KatanaCampaignEndDate;\n }\n return \"\";\n }, [name]);\n\n const invalidateQueries = useCallback(async () => {\n await refetchVaultCampaign();\n }, [refetchVaultCampaign]);\n\n return {\n campaignName: name,\n vaultCampaign,\n campaign: vaultCampaign?.campaign,\n vaults: vaultCampaign?.vaults ?? [],\n groups,\n getIncentiveById,\n getVaultById,\n invalidateQueries,\n isLoading,\n campaignEndDate,\n };\n}\n\nexport function useTacCampaign() {\n return useCampaign(TAC_CAMPAIGN_NAME);\n}\n\nexport function useKatanaCampaign() {\n return useCampaign(KATANA_CAMPAIGN_NAME);\n}","import type { UseQueryResult } from \"@tanstack/react-query\";\nimport { useQueries, useQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport _ from \"lodash\";\nimport type { Hooks } from \"./types\";\nimport type { Any } from \"../../utils\";\n\ntype MapMap<Map extends Record<string, Hooks.Item>> = {\n [K in keyof Map]: Map[K] extends Hooks.Item ? Hooks.Fn<Map[K]> : never;\n};\n\ninterface Multicall<Map extends Record<string, Hooks.Item>> {\n multicall: {\n <const List extends [keyof Map, ...any[]][]>(list: List): UseQueryResult<any, any>[];\n };\n item: <K extends keyof Map>(key: K, ...args: Parameters<MapMap<Map>[K]>) => [K, ...Parameters<MapMap<Map>[K]>];\n}\n\nconst appVersion = typeof __COMMIT_HASH__ !== \"undefined\" ? __COMMIT_HASH__ : \"default-version\";\n\nexport function buildHooks<Map extends Record<string, Hooks.Item>>(\n map: Map,\n defaults: Hooks.Options = {},\n): MapMap<Map> & Multicall<Map> {\n const result = {} as Record<string, Hooks.Fn<Hooks.Item>>;\n\n for (const key in map) {\n const hookItem = map[key];\n const rawKey = key;\n\n result[key] = function (...args) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useQuery(\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useMemo(\n () => query(hookItem, rawKey, defaults, args),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...args],\n ),\n );\n };\n }\n\n const multicall: Multicall<Map> = {\n multicall(list) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useQueries({\n // eslint-disable-next-line react-hooks/rules-of-hooks\n queries: useMemo(() => list.map(([rawKey, ...args]) => query(map[rawKey], rawKey, defaults, args)), [list]),\n });\n },\n item<K extends keyof Map>(key: K, ...args: Parameters<MapMap<Map>[K]>) {\n return [key, ...args];\n },\n };\n\n return Object.assign(result, multicall) as Any;\n}\n\nfunction query(\n hookItem: Hooks.Item<Hooks.DefaultFn>,\n rawKey: string | number | symbol,\n defaults: Hooks.Options,\n args: Any[],\n) {\n const key =\n typeof hookItem.key === \"function\" ? [appVersion, ...hookItem.key(...args)] : [rawKey, appVersion, ...args];\n\n const options = _.defaults(typeof hookItem.options === \"function\" ? hookItem.options(...args) : {}, defaults);\n\n const fn = \"fn\" in hookItem ? hookItem.fn : hookItem;\n\n return {\n queryKey: key,\n queryFn: () => fn(...args),\n ...options,\n };\n}\n\nexport function item<F extends Hooks.DefaultFn>(item: F | Hooks.Item<F>): Hooks.Item<F> {\n if (\"fn\" in item) {\n return item;\n }\n\n return {\n fn: item,\n };\n}\n","import { z } from \"zod\";\nimport { buildApi, item } from \"../builder/api\";\nimport { fetchBackend } from \"../backends/fetch\";\nimport {\n getCampaignSchema,\n getCampaignsSchema,\n getUserCampaignIncentivesSchema,\n getUserCampaignVaultWithdrawalRequestsSchema,\n} from \"./campaignSchemas\";\nimport {\n getOrganizationCampaignsSchema,\n getOrganizationDealsSchema,\n getOrganizationsSchema,\n} from \"./organizationSchemas\";\nimport { getDealsSchema } from \"./dealSchemas\";\nimport { getPaymentsSchema } from \"./paymentSchemas\";\nimport { getTreasurySchema } from \"./treasurySchemas\";\n\nconst root = \"https://api.turtle.xyz\";\n\nexport const partnersApi = buildApi(\n fetchBackend,\n {\n root,\n },\n {\n getOrganizations: item({\n key: \"/turtle/organizations\",\n result: getOrganizationsSchema,\n }),\n getOrganizationDeals: item({\n input: z.string(),\n key: (organizationId: string) => `/turtle/organizations/${organizationId}/deals`,\n result: getOrganizationDealsSchema,\n }),\n getOrganizationCampaigns: item({\n input: z.string(),\n key: (organizationId: string) => `/turtle/organizations/${organizationId}/campaigns`,\n result: getOrganizationCampaignsSchema,\n }),\n getDeals: item({\n key: \"/turtle/deals\",\n result: getDealsSchema,\n }),\n getPayments: item({\n key: \"/turtle/payments\",\n result: getPaymentsSchema,\n }),\n getCampaigns: item({\n key: \"/turtle/campaigns\",\n result: getCampaignsSchema,\n }),\n getCampaignByName: item({\n input: z.string(),\n key: (name: string) => `/turtle/campaigns/${name}`,\n result: getCampaignSchema,\n }),\n getUserCampaignIncentives: item({\n input: z.object({\n campaignId: z.string(),\n userAddress: z.string(),\n }),\n key: ({ campaignId, userAddress }) =>\n `/turtle/campaigns/${campaignId}/incentives/${userAddress}`,\n result: getUserCampaignIncentivesSchema,\n }),\n getUserCampaignVaultWithdrawalRequests: item({\n input: z.object({\n campaignId: z.string(),\n userAddress: z.string(),\n }),\n key: ({ campaignId, userAddress }) =>\n `/turtle/campaigns/${campaignId}/vaults/withdrawal_requests/${userAddress}`,\n result: getUserCampaignVaultWithdrawalRequestsSchema,\n }),\n getGeoCheck: item({\n key: \"/turtle/geocheck\",\n result: z.object({ canInteract: z.boolean() }),\n }),\n getTreasury: item({\n input: z.object({\n oldSnapshots: z.boolean().optional(),\n }),\n key: ({ oldSnapshots = false }) => `/turtle/treasury?oldSnapshots=${oldSnapshots}`,\n result: getTreasurySchema,\n }),\n }\n);\n","import type { Address, Hex } from \"viem\";\nimport { isAddress, isHex } from \"viem\";\nimport { z } from \"zod\";\n\nexport const numz = {\n u8() {\n return z.number().int().min(0).max(256);\n },\n};\n\nexport const ethz = {\n address() {\n return z.custom<Address>(isAddress, \"Invalid address\");\n },\n hex() {\n return z.custom<Hex>(isHex, \"Invalid hex\");\n },\n};\n\nexport function zodKeys<T extends z.AnyZodObject>(obj: T): (keyof T[\"shape\"])[] {\n return Object.keys(obj.shape);\n}\n\nexport function parseZodArray<T extends z.ZodTypeAny>(\n validator: T,\n values: unknown[],\n log = false\n) {\n return values.reduce<z.infer<T>[]>((acc, item) => {\n try {\n acc.push(validator.parse(item));\n } catch (error) {\n if (log) console.error(error);\n }\n\n return acc;\n }, []);\n}\n","const timeScales = {\n ms: 1,\n secs: 1 * 1000,\n mins: 1 * 1000 * 60,\n hours: 1 * 1000 * 60 * 60,\n days: 1 * 1000 * 60 * 60 * 24,\n weeks: 1 * 1000 * 60 * 60 * 24 * 7,\n months: 1 * 1000 * 60 * 60 * 24 * 30,\n years: 1 * 1000 * 60 * 60 * 24 * 365,\n} as const;\n\nexport const ms = Object.fromEntries(\n Object.entries(timeScales).map(([key, value]) => [key, (num: number) => num * value]),\n) as {\n [K in keyof typeof timeScales]: (value: number) => number;\n};\n","export function isArray<T>(value: T | T[]): value is T[] {\n return Array.isArray(value);\n}\n\nexport function isReadonlyArray<T>(value: T | readonly T[]): value is readonly T[] {\n return Array.isArray(value);\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import {\n type Chain,\n arbitrum,\n avalanche,\n base,\n berachain,\n blast,\n boba,\n bsc,\n celo,\n fantom,\n fraxtal,\n gnosis,\n linea,\n mainnet,\n mantle,\n metis,\n mode,\n optimism,\n polygon,\n polygonZkEvm,\n scroll,\n swellchain,\n zksync,\n} from \"wagmi/chains\";\nimport { katana } from \"../chains/katana\";\n\nconst getEtherscanUrl = (walletId: string, explorerUrl: string) => {\n return `${explorerUrl}/address/${walletId}`;\n};\n\nconst chainMapping: Record<string, Chain> = {\n xdai: gnosis,\n frax: fraxtal,\n blast,\n boba,\n eth: mainnet,\n ethereum: mainnet,\n matic: polygon,\n arb: arbitrum,\n avax: avalanche,\n bsc,\n celo,\n ftm: fantom,\n op: optimism,\n scrl: scroll,\n mnt: mantle,\n mode,\n pze: polygonZkEvm,\n era: zksync,\n base,\n linea,\n metis,\n swell: swellchain,\n bera: berachain,\n katana,\n};\n\nexport const debankChainIdToExplorerURL = (chainId: string, walletId: string) => {\n if (chainId === \"peaq\") {\n return `https://peaq.subscan.io/reward?address=${walletId}&category=Reward&time_dimension=date&page=1`;\n }\n\n const chain = chainMapping[chainId];\n if (!chain?.blockExplorers?.default?.url) {\n return null;\n }\n\n return getEtherscanUrl(walletId, chain.blockExplorers.default.url);\n};\n","import { defineChain } from \"viem\";\n\nexport const katana = defineChain({\n id: 747474,\n name: \"Katana\",\n nativeCurrency: {\n decimals: 18,\n name: \"ETH\",\n symbol: \"ETH\",\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.katana.network\"],\n },\n public: {\n http: [\"https://rpc.katana.network\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Katana Explorer\",\n url: \"https://explorer.katanarpc.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xca11bde05977b3631167028862be2a173976ca11\",\n blockCreated: 1,\n },\n },\n});","import type { Any } from \"./types\";\n\nexport function runMaybeFn<T, Args extends Any[]>(fn: T | ((...args: Args) => T), ...args: Args): T {\n if (typeof fn === \"function\") {\n return (fn as (...args: Args) => T)(...args);\n } else {\n return fn;\n }\n}\n","export interface JwtPayload {\n exp: number;\n jti?: string;\n type?: string;\n user_id?: string;\n}\n\nexport function decodeJwt(token: string): JwtPayload | null {\n try {\n const parts = token.split(\".\");\n if (parts.length !== 3) return null;\n\n const payload = parts[1];\n const decoded = JSON.parse(atob(payload.replace(/-/g, \"+\").replace(/_/g, \"/\")));\n\n return decoded;\n } catch (error) {\n console.error(\"Error decoding JWT:\", error);\n return null;\n }\n}\n\nexport function getTokenExpirationDate(token: string): Date | null {\n const payload = decodeJwt(token);\n if (!payload?.exp) return null;\n\n return new Date(payload.exp * 1000); // Convert Unix timestamp to Date\n}\n","import type { ILogObj } from \"tslog\";\nimport { Logger } from \"tslog\";\n\nconst logger: Logger<ILogObj> = new Logger({ name: \"turtle\" });\n\nexport const log = {\n info: logger.info.bind(logger),\n warn: logger.warn.bind(logger),\n error: logger.error.bind(logger),\n debug: logger.debug.bind(logger),\n trace: logger.trace.bind(logger),\n};\n","import type { Obj } from \"./types\";\n\nexport function keys<T extends Obj>(obj: T): Array<keyof T> {\n return Object.keys(obj) as Array<keyof T>;\n}\n","import type { PersistedClient, Persister } from \"@tanstack/react-query-persist-client\";\n\n// Only import idb-keyval if we're not in Brave browser\nlet idbKeyval: typeof import(\"idb-keyval\") | null = null;\n\nif (typeof navigator === \"undefined\" || !navigator.userAgent.includes(\"Brave\")) {\n try {\n // Use dynamic import instead of require\n import(\"idb-keyval\")\n .then((module) => {\n idbKeyval = module;\n })\n .catch((err) => {\n console.warn(\"[Storage] Failed to load idb-keyval:\", err);\n });\n } catch (err) {\n console.warn(\"[Storage] Failed to load idb-keyval:\", err);\n }\n}\n\n/**\n * Check if IndexedDB is available and accessible\n */\nfunction isIndexedDBAvailable(): boolean {\n try {\n // Check if IndexedDB is supported\n if (typeof window === \"undefined\" || !window.indexedDB) {\n return false;\n }\n\n // For Brave and other privacy-focused browsers, we'll be more conservative\n // and assume IndexedDB might be blocked, so we'll rely on the actual\n // operations to determine availability\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Clear all storage (both IndexedDB and localStorage)\n */\nexport async function clearAllStorage(): Promise<void> {\n try {\n // Clear IndexedDB if available\n if (isIndexedDBAvailable() && idbKeyval) {\n try {\n // Get all keys from IndexedDB\n const allKeys = await idbKeyval.keys();\n for (const key of allKeys) {\n if (typeof key === \"string\" && key.startsWith(\"turtle-query-\")) {\n await idbKeyval.del(key);\n }\n }\n } catch (idbErr) {\n console.warn(\"[Storage] Failed to clear IndexedDB:\", idbErr);\n // If IndexedDB fails, we'll just clear localStorage\n }\n }\n } catch (err) {\n console.warn(\"[Storage] IndexedDB not available:\", err);\n }\n\n try {\n // Clear localStorage entries that start with our prefix\n const localStorageKeys = Object.keys(localStorage);\n for (const key of localStorageKeys) {\n if (key.startsWith(\"turtle-query-\")) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to clear localStorage:\", err);\n }\n}\n\n/**\n * Creates a localStorage-only persister for better compatibility with privacy-focused browsers\n */\nfunction createLocalStoragePersister(idbValidKey: IDBValidKey = \"reactQuery\"): Persister {\n const localStorageKey = `turtle-query-${String(idbValidKey)}`;\n\n return {\n persistClient: async (client: PersistedClient) => {\n const json = JSON.stringify(client, (_, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n return value;\n });\n\n try {\n localStorage.setItem(localStorageKey, json);\n } catch (err) {\n console.warn(\"[localStorage] Failed to persist client:\", err);\n }\n },\n async restoreClient() {\n try {\n const json = localStorage.getItem(localStorageKey) || undefined;\n if (!json) return undefined;\n\n const parsed = JSON.parse(json, (_, value) => {\n if (typeof value === \"string\" && value.match(/^\\d+n$/) && !Number.isNaN(Number(value.slice(0, -1)))) {\n return BigInt(value.slice(0, -1));\n }\n return value;\n }) as PersistedClient;\n\n return parsed;\n } catch (err) {\n console.warn(\"[localStorage] Failed to restore client:\", err);\n return undefined;\n }\n },\n removeClient: async () => {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (err) {\n console.warn(\"[localStorage] Failed to remove client:\", err);\n }\n },\n };\n}\n\n/**\n * Creates an Indexed DB persister with fallback to localStorage\n * @see https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport function createIDBPersister(idbValidKey: IDBValidKey = \"reactQuery\") {\n // For Brave and other privacy-focused browsers, use localStorage-only persister\n // to avoid IndexedDB issues\n if (typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"Brave\")) {\n return createLocalStoragePersister(idbValidKey);\n }\n\n const localStorageKey = `turtle-query-${String(idbValidKey)}`;\n let useIndexedDB = isIndexedDBAvailable();\n\n return {\n persistClient: async (client: PersistedClient) => {\n const json = JSON.stringify(client, (_, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n return value;\n });\n\n try {\n if (useIndexedDB) {\n await idbKeyval?.set(idbValidKey, json);\n } else {\n // Fallback to localStorage\n localStorage.setItem(localStorageKey, json);\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to persist client:\", err);\n // Disable IndexedDB for future operations if it fails\n useIndexedDB = false;\n // Try localStorage as fallback\n try {\n localStorage.setItem(localStorageKey, json);\n } catch (localStorageErr) {\n console.warn(\"[localStorage] Failed to persist client:\", localStorageErr);\n }\n }\n },\n async restoreClient() {\n let json: string | undefined;\n\n try {\n if (useIndexedDB) {\n json = await idbKeyval?.get<string>(idbValidKey);\n } else {\n // Fallback to localStorage\n json = localStorage.getItem(localStorageKey) || undefined;\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to restore client:\", err);\n // Disable IndexedDB for future operations if it fails\n useIndexedDB = false;\n // Try localStorage as fallback\n try {\n json = localStorage.getItem(localStorageKey) || undefined;\n } catch (localStorageErr) {\n console.warn(\"[localStorage] Failed to restore client:\", localStorageErr);\n return undefined;\n }\n }\n\n if (!json) return undefined;\n\n try {\n const parsed = JSON.parse(json, (_, value) => {\n if (typeof value === \"string\" && value.match(/^\\d+n$/) && !Number.isNaN(Number(value.slice(0, -1)))) {\n return BigInt(value.slice(0, -1));\n }\n return value;\n }) as PersistedClient;\n\n return parsed;\n } catch (err) {\n console.error(\"Error parsing persisted client:\", err);\n return undefined;\n }\n },\n removeClient: async () => {\n try {\n if (useIndexedDB) {\n await idbKeyval?.del(idbValidKey);\n } else {\n // Fallback to localStorage\n localStorage.removeItem(localStorageKey);\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to remove client:\", err);\n // Disable IndexedDB for future operations if it fails\n useIndexedDB = false;\n // Try localStorage as fallback\n try {\n localStorage.removeItem(localStorageKey);\n } catch (localStorageErr) {\n console.warn(\"[localStorage] Failed to remove client:\", localStorageErr);\n }\n }\n },\n } as Persister;\n}\n","export function joinUrl(...parts: string[]): string {\n if (parts.length < 2) return parts[0] || \"\";\n\n const cleanParts = parts.map((part, index) => {\n if (index !== 0) {\n return part.replace(/^\\/+/, \"\");\n }\n return part.replace(/\\/+$/, \"\");\n });\n\n return cleanParts.join(\"/\");\n}\n","import type { z } from \"zod\";\nimport type { Api } from \"./types\";\nimport type { Any } from \"../../utils\";\nimport { log, runMaybeFn } from \"../../utils\";\n\nexport function buildApi<Back extends Api.Backend, Map extends Record<string, Api.Item<Back>>>(\n backend: Back,\n config: Api.BackendConfig<Back>,\n map: Map,\n): {\n [K in keyof Map]: Map[K] extends Api.Item<Back> ? Api.Fn<Back, Map[K]> : never;\n} {\n const result = {} as Record<string, Api.Fn<Back, Api.Item<Back>>>;\n\n for (const key in map) {\n const apiItem = map[key];\n\n result[key] = async function fn(...args: unknown[]) {\n const rawInput = args[0] ?? null;\n const input = apiItem.input?.parse(rawInput);\n\n const key = runMaybeFn(apiItem.key, input);\n const options = runMaybeFn(apiItem.options, input);\n\n const result = await backend.get(config, options, key, input);\n\n try {\n const mappedResult = apiItem.map ? apiItem.map(result) : result;\n const value = (apiItem.result ?? backend.defaultResult).parse(mappedResult);\n\n return value;\n } catch (e: unknown) {\n const error = typeof e === \"object\" && e && \"message\" in e ? `${e.message}` : \"\";\n\n log.error(error);\n throw new Error(error);\n }\n };\n }\n\n return result as Any;\n}\n\nexport function item<\n Back extends Api.Backend,\n Input extends z.ZodTypeAny,\n Result extends z.ZodTypeAny,\n U extends Any = Extract<z.infer<Result>, Any>,\n>(item: Api.Item<Back, Input, Result, U>): Api.Item<Back, Input, Result, U> {\n return item;\n}\n","import { z } from \"zod\";\nimport _ from \"lodash\";\nimport type { Api } from \"../builder/types\";\nimport { isReadonlyArray, joinUrl, keys } from \"../../utils\";\nimport type { Any, Omit } from \"../../utils\";\nimport { useAuthTokensStore } from \"../../stores\";\n\nexport const methods = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n delete: \"delete\",\n} as const;\n\nexport type Method = keyof typeof methods;\n\ninterface Config {\n root: string;\n defaults?: Options;\n}\n\ninterface Options extends Omit<RequestInit, \"method\" | \"body\" | \"headers\"> {\n method?: Method;\n headers?: Record<string, string>;\n body?: Any;\n}\n\ninterface Init extends Omit<Options, \"headers\" | \"method\"> {\n headers: Record<string, string>;\n method: string;\n}\n\ntype MaybeOptions = Options | ((value: Any) => Options);\n\nconst defaultResult = z.string();\n\nexport type FetchBackend = Api.Backend<Config, string, MaybeOptions | readonly MaybeOptions[], typeof defaultResult>;\n\nexport const fetchBackend: FetchBackend = {\n defaultResult,\n async get(config, rawOptions = {}, key, input) {\n const path = key;\n const url = joinUrl(config.root, path);\n\n const options = [];\n\n if (config.defaults) {\n options.push(config.defaults);\n }\n\n options.push(...(isReadonlyArray(rawOptions) ? rawOptions : [rawOptions]));\n\n const init = options.reduce<Init>(\n (acc, cur) => {\n return _.merge(acc, typeof cur === \"function\" ? cur(input) : cur);\n },\n {\n method: \"get\",\n headers: {},\n body: undefined,\n },\n );\n\n init.method = init.method.toUpperCase();\n\n if (init.body) {\n if (init.method === \"GET\") {\n throw new Error(\"GET request cannot have a body\");\n }\n\n init.headers[\"Content-Type\"] = \"application/json\";\n init.body = JSON.stringify(init.body);\n }\n\n const response = await fetch(url, init);\n const text = await response.text();\n\n let parsedResponse;\n try {\n parsedResponse = JSON.parse(text);\n } catch {\n parsedResponse = text;\n }\n\n if (response.status !== 200) {\n if (typeof parsedResponse === \"object\" && parsedResponse !== null && \"error\" in parsedResponse) {\n return parsedResponse;\n }\n throw new Error(text);\n }\n\n return parsedResponse;\n },\n};\n\nexport const methodOptions = keys(methods).reduce(\n (acc, method) => {\n acc[method] = () => ({ method });\n return acc;\n },\n {} as unknown as Record<Method, <T>(value: T) => Options>,\n);\n\nexport function simpleJson<T>(value: T) {\n return {\n body: value,\n } as const satisfies Options;\n}\n\nexport function simpleAuthorization(key: string) {\n return function <T>(value: T) {\n return {\n headers: {\n Authorization: value[key as keyof T] as string,\n },\n } as const satisfies Options;\n };\n}\n\nexport function autoAuthorization() {\n return function () {\n const accessToken = useAuthTokensStore.getState().getAccessToken();\n\n if (!accessToken) {\n return {};\n }\n\n return {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n } as const satisfies Options;\n };\n}\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\nimport type { z } from \"zod\";\nimport { getTokenExpirationDate } from \"../utils\";\nimport type { authTokensSchema } from \"../api/partners/authSchemas\";\n\ntype AuthTokens = z.infer<typeof authTokensSchema>;\n\ninterface AuthTokensWithExpiryDate {\n accessToken: string;\n accessTokenExpiresAt: string;\n refreshToken: string | null;\n refreshTokenExpiresAt: string | null;\n}\n\ninterface AuthTokensStore {\n tokens: AuthTokensWithExpiryDate | null;\n currentAddress: string | null;\n\n setTokens: (address: string, tokens: AuthTokens) => void;\n getTokens: () => AuthTokensWithExpiryDate | null;\n clearTokens: () => void;\n isAuthenticated: () => boolean;\n\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n}\n\nexport const useAuthTokensStore = create<AuthTokensStore>()(\n persist(\n (set, get) => ({\n tokens: null,\n currentAddress: null,\n\n setTokens: (address: string, tokens: AuthTokens) => {\n const accessTokenExpiresAt = getTokenExpirationDate(tokens.accessToken)?.toISOString() || \"\";\n const refreshTokenExpiresAt = tokens.refreshToken\n ? getTokenExpirationDate(tokens.refreshToken)?.toISOString() || null\n : null;\n\n const authTokens: AuthTokensWithExpiryDate = {\n accessToken: tokens.accessToken,\n accessTokenExpiresAt,\n refreshToken: tokens.refreshToken,\n refreshTokenExpiresAt,\n };\n\n set({\n tokens: authTokens,\n currentAddress: address.toLowerCase(),\n });\n },\n\n getTokens: () => {\n return get().tokens;\n },\n\n clearTokens: () => {\n set({\n tokens: null,\n currentAddress: null,\n });\n },\n\n isAuthenticated: () => {\n return get().tokens !== null;\n },\n\n getAccessToken: () => {\n const { tokens } = get();\n return tokens?.accessToken || null;\n },\n\n getRefreshToken: () => {\n const { tokens } = get();\n return tokens?.refreshToken || null;\n },\n }),\n {\n name: \"turtle:auth-tokens\",\n // Excluding functions from persistence\n partialize: (state) => ({ tokens: state.tokens, currentAddress: state.currentAddress }),\n },\n ),\n);\n","import { z } from \"zod\";\nimport { ethz } from \"../../utils\";\nimport { earnConfigSchema } from \"../partners/dealSchemas\";\n\nexport const contractConfig = z.object({\n address: ethz.address(),\n abi: z.any(),\n});\n\nexport const vaultTokenSchema = z.object({\n address: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n});\n\nexport const vedaWithdrawalRequestMetadataSchema = z.object({\n amountOfAssets: z.number(),\n amountOfShares: z.number(),\n assetOut: ethz.address(),\n creationTime: z.number(),\n nonce: z.number(),\n secondsToDeadline: z.number(),\n secondsToMaturity: z.number(),\n user: ethz.address(),\n});\n\nexport const lagoonWithdrawalClaimMetadataSchema = z.object({\n claimableAmount: z.string(),\n});\n\nexport const yieldFiWithdrawalRequestMetadataSchema = z.object({\n receiptId: z.number(),\n});\n\nexport const vaultWithdrawalRequestSchema = z.object({\n vaultId: z.string(),\n provider: z.string(),\n userAddress: ethz.address(),\n createdAt: z.string(),\n maturesAt: z.string(),\n expiresAt: z.string().optional(),\n status: z.string(),\n inputToken: vaultTokenSchema,\n amountIn: z.string(),\n outputToken: vaultTokenSchema,\n minAmountOut: z.string(),\n vedaWithdrawalRequestMetadata: vedaWithdrawalRequestMetadataSchema.optional(),\n lagoonWithdrawalClaimMetadata: lagoonWithdrawalClaimMetadataSchema.optional(),\n yieldFiWithdrawalRequestMetadata: yieldFiWithdrawalRequestMetadataSchema.optional(),\n});\n\nexport const getUserCampaignVaultWithdrawalRequestsSchema = z.object({\n withdrawalRequests: z.array(vaultWithdrawalRequestSchema),\n});\n\nexport const getUserCampaignIncentivesSchema = z.object({\n totalValueUSD: z.number(),\n vaultIncentives: z\n .array(\n z.object({\n vaultId: z.string(),\n address: ethz.address(),\n name: z.string(),\n tooltip: z.string(),\n iconUrl: z.string(),\n totalAmount: z.number(),\n adjustedAmount: z.number(),\n penalty: z.number(),\n phase: z.string(),\n sharesNeeded: z.number(),\n priceUSD: z.number(),\n valueUSD: z.number(),\n adjustedValueUSD: z.number(),\n isDepositBonus: z.boolean().optional().default(false),\n }),\n )\n .optional(),\n});\n\nexport const campaignGroupSchema = z.object({\n name: z.string(),\n description: z.string(),\n rank: z.number().optional(),\n tvlUSD: z.number(),\n});\n\nexport const baseIncentiveSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n tooltip: z.string().optional(),\n iconUrl: z.string().optional(),\n apr: z.number().optional(),\n estApr: z.boolean().optional(),\n dailyRewardRate: z.number().optional(),\n phase: z.string().optional(),\n});\n\nexport const detailedIncentiveSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n tooltip: z.string().optional(),\n iconUrl: z.string().optional(),\n apr: z.number().optional(),\n estApr: z.boolean().optional(),\n dailyRewardRate: z.number().optional(),\n address: ethz.address().optional(),\n supply: z.number().optional(),\n priceUSD: z.number().optional(),\n amount: z.number().optional(),\n distributed: z.number().optional(),\n remaining: z.number().optional(),\n estFDV: z.record(z.string(), z.number()).optional(),\n phase: z.string().optional(),\n});\n\nexport const tacCampaignConfigSchema = z.object({\n totalTvlUSD: z.number(),\n groups: z.array(campaignGroupSchema),\n incentives: z.array(detailedIncentiveSchema).optional(),\n additionalIncentives: z.array(baseIncentiveSchema).optional(),\n});\n\nexport const katanaCampaignConfigSchema = z.object({\n totalTvlUSD: z.number(),\n groups: z.array(campaignGroupSchema),\n incentives: z.array(detailedIncentiveSchema).optional(),\n additionalIncentives: z.array(baseIncentiveSchema).optional(),\n});\n\nexport const tacVaultConfigSchema = z.object({\n group: z.string(),\n exposure: z.array(z.string()),\n incentives: z.array(baseIncentiveSchema).nullable().optional().default([]),\n});\n\nexport const katanaVaultConfigSchema = z.object({\n group: z.string(),\n exposure: z.array(z.string()),\n incentives: z.array(baseIncentiveSchema).nullable().optional().default([]),\n});\n\nexport const depositAssetSchema = z.object({\n symbol: z.string(),\n name: z.string(),\n address: z.string(),\n decimals: z.number(),\n iconUrl: z.string(),\n priceUSD: z.number(),\n});\n\nexport const vedaVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n tellerWithLayerZero: ethz.address(),\n boringVault: ethz.address(),\n boringOnChainQueue: ethz.address(),\n accountant: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const vedaVaultProviderConfigSchema = z.object({\n deployments: z.array(vedaVaultDeploymentSchema),\n});\n\nexport const upshiftVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const upshiftVaultProviderConfigSchema = z.object({\n deployments: z.array(upshiftVaultDeploymentSchema),\n});\n\nexport const midasVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n token: ethz.address(),\n depositVault: ethz.address(),\n redemptionVault: ethz.address(),\n baseAsset: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const midasVaultProviderConfigSchema = z.object({\n deployments: z.array(midasVaultDeploymentSchema),\n});\n\nexport const lagoonVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const lagoonVaultProviderConfigSchema = z.object({\n deployments: z.array(lagoonVaultDeploymentSchema),\n});\n\nexport const concreteVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const concreteVaultProviderConfigSchema = z.object({\n deployments: z.array(concreteVaultDeploymentSchema),\n});\n\nexport const cianVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const cianVaultProviderConfigSchema = z.object({\n deployments: z.array(cianVaultDeploymentSchema),\n});\n\nexport const yieldfiVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const yieldfiVaultProviderConfigSchema = z.object({\n deployments: z.array(yieldfiVaultDeploymentSchema),\n});\n\nexport const curveDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n pool: ethz.address(),\n gauge: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const curveConfigSchema = z.object({\n deployments: z.array(curveDeploymentConfigSchema),\n});\n\nexport const stakeDAODeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n gauge: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const stakeDAOConfigSchema = z.object({\n deployments: z.array(stakeDAODeploymentConfigSchema),\n});\n\nexport const morphoVaultDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const morphoVaultConfigSchema = z.object({\n deployments: z.array(morphoVaultDeploymentConfigSchema),\n});\n\nexport const morphoMarketDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n collateralToken: z.object({\n address: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n }),\n depositUrl: z.string().optional(),\n morpho: ethz.address(),\n marketId: z.string(),\n});\n\nexport const morphoMarketConfigSchema = z.object({\n deployments: z.array(morphoMarketDeploymentConfigSchema),\n});\n\nexport const yearnVaultDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const yearnConfigSchema = z.object({\n deployments: z.array(yearnVaultDeploymentConfigSchema),\n});\n\nexport const campaignVaultSchema = z.object({\n id: z.string(),\n name: z.string(),\n shortName: z.string(),\n description: z.string(),\n iconUrl: z.string(),\n campaign: z.string(),\n curator: z.string(),\n provider: z.string(),\n tvlUSD: z.number(),\n depositDisabled: z.boolean(),\n depositDisabledReason: z.string().optional(),\n withdrawalDisabled: z.boolean(),\n withdrawalDisabledReason: z.string().optional(),\n tacCampaignConfig: tacVaultConfigSchema.nullable().optional(),\n katanaCampaignConfig: katanaVaultConfigSchema.nullable().optional(),\n earnConfig: earnConfigSchema.optional(),\n vedaProviderConfig: vedaVaultProviderConfigSchema.optional(),\n upshiftProviderConfig: upshiftVaultProviderConfigSchema.optional(),\n midasProviderConfig: midasVaultProviderConfigSchema.optional(),\n lagoonProviderConfig: lagoonVaultProviderConfigSchema.optional(),\n concreteProviderConfig: concreteVaultProviderConfigSchema.optional(),\n cianProviderConfig: cianVaultProviderConfigSchema.optional(),\n yieldfiProviderConfig: yieldfiVaultProviderConfigSchema.optional(),\n curveProviderConfig: curveConfigSchema.optional(),\n morphoVaultProviderConfig: morphoVaultConfigSchema.optional(),\n morphoMarketProviderConfig: morphoMarketConfigSchema.optional(),\n stakeDAOProviderConfig: stakeDAOConfigSchema.optional(),\n yearnProviderConfig: yearnConfigSchema.optional(),\n});\n\nexport const getCampaignSchema = z.object({\n campaign: z.object({\n id: z.string(),\n organizationId: z.string(),\n name: z.string(),\n description: z.string(),\n iconUrl: z.string(),\n status: z.string(),\n startedAt: z.string().optional(),\n endedAt: z.string().optional(),\n tvlUSD: z.number(),\n totalUsers: z.number(),\n chains: z.array(z.string()),\n tacConfig: tacCampaignConfigSchema.optional(),\n katanaConfig: katanaCampaignConfigSchema.optional(),\n }),\n vaults: z.array(campaignVaultSchema),\n});\n\nexport const getCampaignsSchema = z.object({\n campaigns: z.array(getCampaignSchema),\n});\n\nexport type VaultWithdrawalRequestSchema = z.infer<typeof vaultWithdrawalRequestSchema>;\nexport type CampaignVaultSchema = z.infer<typeof campaignVaultSchema>;\nexport type CampaignSchema = z.infer<typeof getCampaignSchema>;\nexport type CampaignGroupSchema = z.infer<typeof campaignGroupSchema>;\nexport type UserCampaignIncentivesSchema = z.infer<typeof getUserCampaignIncentivesSchema>;\nexport type UserCampaignVaultWithdrawalRequestsSchema = z.infer<typeof getUserCampaignVaultWithdrawalRequestsSchema>;\nexport type TacCampaignConfigSchema = z.infer<typeof tacCampaignConfigSchema>;\nexport type KatanaCampaignConfigSchema = z.infer<typeof katanaCampaignConfigSchema>;\nexport type TacVaultConfigSchema = z.infer<typeof tacVaultConfigSchema>;\nexport type VedaWithdrawalRequestMetadataSchema = z.infer<typeof vedaWithdrawalRequestMetadataSchema>;\nexport type LagoonWithdrawalClaimMetadataSchema = z.infer<typeof lagoonWithdrawalClaimMetadataSchema>;\nexport type YieldFiWithdrawalRequestMetadataSchema = z.infer<typeof yieldFiWithdrawalRequestMetadataSchema>;\nexport type GetCampaignsSchema = z.infer<typeof getCampaignsSchema>;\nexport type CampaignDetailedIncentiveSchema = z.infer<typeof detailedIncentiveSchema>;\nexport type CampaignBaseIncentiveSchema = z.infer<typeof baseIncentiveSchema>;","import { z } from \"zod\";\nimport { ethz } from \"../../utils\";\n\nexport const yieldPctSchema = z.object({\n min: z.number(),\n max: z.number(),\n});\n\nexport const incentiveSchema = z.object({\n pointsProjectId: z.string().optional(),\n pointsDetailId: z.string().optional(),\n pointsSeasonId: z.string().optional(),\n incentiveType: z.string(),\n incentiveName: z.string(),\n turtleBoostPct: z.number().optional(),\n yieldPct: yieldPctSchema.optional(),\n tooltip: z.string().optional(),\n seasonNumber: z.number().optional(),\n tvlConfig: z\n .object({\n showDebt: z.boolean(),\n })\n .optional(),\n});\n\nexport const tvlOnlyConfigSchema = z.object({\n tvlId: z.string(),\n});\n\nexport const earnTokenSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n address: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n});\n\nexport const earnConfigSchema = z.object({\n tokens: z.array(earnTokenSchema).optional(),\n});\n\nexport const dealSchema = z.object({\n id: z.string(),\n organizationId: z.string(),\n name: z.string(),\n title: z.string(),\n subtitle: z.string(),\n description: z.string(),\n iconUrl: z.string(),\n dealUrl: z.string(),\n accessType: z.string(),\n dealType: z.string(),\n paymentStatus: z.string(),\n status: z.string(),\n statusTooltip: z.string(),\n chains: z.array(z.string()),\n exposure: z.array(z.string()),\n startedAt: z.string().optional(),\n endedAt: z.string().optional(),\n earnConfig: earnConfigSchema.optional(),\n boostConfig: incentiveSchema.optional(),\n tvlOnlyConfig: tvlOnlyConfigSchema.optional(),\n});\n\nexport const getDealsSchema = z.object({\n deals: z.array(dealSchema),\n});\n\nexport type DealSchema = z.infer<typeof dealSchema>;\nexport type GetDealsSchema = z.infer<typeof getDealsSchema>;\nexport type EarnTokenSchema = z.infer<typeof earnTokenSchema>;\nexport type EarnConfigSchema = z.infer<typeof earnConfigSchema>;\n","import { z } from \"zod\";\nimport { dealSchema } from \"./dealSchemas\";\nimport { getCampaignSchema } from \"./campaignSchemas\";\n\nexport const organizationSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n landingUrl: z.string(),\n iconUrl: z.string(),\n organizationType: z.string(),\n turtleRefCode: z.string(),\n});\n\nexport const getOrganizationsSchema = z.object({\n organizations: z.array(organizationSchema),\n});\n\nexport const getOrganizationDealsSchema = z.object({\n organization: organizationSchema,\n deals: z.array(dealSchema),\n});\n\nexport const getOrganizationCampaignsSchema = z.object({\n organization: organizationSchema,\n campaigns: z.array(getCampaignSchema),\n});\n\nexport type OrganizationSchema = z.infer<typeof organizationSchema>;\nexport type GetOrganizationsSchema = z.infer<typeof getOrganizationsSchema>;\nexport type GetOrganizationDealsSchema = z.infer<typeof getOrganizationDealsSchema>;\nexport type GetOrganizationCampaignsSchema = z.infer<typeof getOrganizationCampaignsSchema>;\n","import { z } from \"zod\";\nimport { ethz } from \"../../utils\";\n\nexport const paymentSchema = z.object({\n id: z.string(),\n dealId: z.string(),\n transactionId: z.string(),\n paidAt: z.string(),\n amount: z.number(),\n chain: z.string(),\n tokenAddress: ethz.address(),\n tokenSymbol: z.string(),\n tokenIconUrl: z.string(),\n price: z.number(),\n value: z.number(),\n});\n\nexport const getPaymentsSchema = z.object({\n payments: z.array(paymentSchema),\n});\n\nexport type PaymentSchema = z.infer<typeof paymentSchema>;\nexport type GetPaymentsSchema = z.infer<typeof getPaymentsSchema>;\n","import { z } from \"zod\";\n\nexport const tokenSchema = z.object({\n id: z.string(),\n chain: z.string(),\n name: z.string(),\n symbol: z.string(),\n displaySymbol: z.string(),\n decimals: z.number(),\n logoUrl: z.string(),\n protocolId: z.string(),\n});\n\nexport const chainSchema = z.object({\n id: z.string(),\n communityId: z.number(),\n name: z.string(),\n logoUrl: z.string(),\n nativeTokenId: z.string(),\n wrappedTokenId: z.string(),\n});\n\nexport const protocolSchema = z.object({\n id: z.string(),\n name: z.string(),\n chain: z.string(),\n logoUrl: z.string(),\n siteUrl: z.string(),\n});\n\nexport const tokenSnapshotSchema = z.object({\n id: z.number(),\n snapshotId: z.number(),\n walletId: z.string(),\n tokenId: z.string(),\n token: tokenSchema,\n tokenChain: z.string(),\n chain: chainSchema,\n amount: z.number(),\n price: z.number(),\n});\n\nexport const protocolSnapshotSchema = z.object({\n id: z.number(),\n snapshotId: z.number(),\n walletId: z.string(),\n protocolId: z.string(),\n protocol: protocolSchema,\n protocolChain: z.string(),\n chain: chainSchema,\n tvl: z.number(),\n assetUsdValue: z.number(),\n debtUsdValue: z.number(),\n});\n\nexport const treasurySnapshotSchema = z.object({\n id: z.number(),\n timestamp: z.number(),\n totalUsdValue: z.number(),\n tokenSnapshots: z.array(tokenSnapshotSchema),\n protocolSnapshots: z.array(protocolSnapshotSchema),\n});\n\nexport const getTreasurySchema = z.object({\n treasurySnapshots: z.array(treasurySnapshotSchema),\n});\n\nexport type TokenSchema = z.infer<typeof tokenSchema>;\nexport type TokenSnapshotSchema = z.infer<typeof tokenSnapshotSchema>;\nexport type ChainSchema = z.infer<typeof chainSchema>;\nexport type ProtocolSchema = z.infer<typeof protocolSchema>;\nexport type ProtocolSnapshotSchema = z.infer<typeof protocolSnapshotSchema>;\nexport type TreasurySnapshotSchema = z.infer<typeof treasurySnapshotSchema>;\nexport type GetTreasurySchema = z.infer<typeof getTreasurySchema>;\n","import { z } from \"zod\";\nimport { buildApi, item } from \"../builder/api\";\nimport { autoAuthorization, fetchBackend, methodOptions, simpleJson } from \"../backends/fetch\";\nimport {\n addAuthMethodSchema,\n authenticateInputSchema,\n authenticateResultSchema,\n authMethodsSchema,\n authTokensSchema,\n getWalletSignatureSchema,\n successSchema,\n userSchema,\n} from \"./authSchemas\";\nimport { AuthenticateMethod } from \"../../types\";\nimport { ethz } from \"../../utils\";\nimport { handleApiResponse } from \"../utils\";\n\nconst root = \"https://api.turtle.xyz\";\n\nexport const authApi = buildApi(\n fetchBackend,\n {\n root,\n },\n {\n getWalletSignature: item({\n input: z.object({\n address: z.string(),\n walletEcosystem: z.string(),\n url: z.string(),\n }),\n key: \"/auth/get-wallet-signature-message\",\n result: getWalletSignatureSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n authenticate: item({\n input: authenticateInputSchema,\n key: \"/auth/authenticate\",\n result: authenticateResultSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson],\n }),\n refreshTokens: item({\n input: z.object({\n refreshToken: z.string(),\n rotateRefreshToken: z.boolean(),\n }),\n key: \"/auth/refresh\",\n result: z.object({\n authTokens: authTokensSchema,\n }),\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n addAuthenticationMethod: item({\n input: addAuthMethodSchema,\n key: \"/auth/user/add-authentication-method\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getAuthMethods: item({\n input: z.object({\n isAuthenticated: z.boolean(),\n accessToken: z.string().nullable(),\n }),\n key: \"/auth/user/auth-methods\",\n result: authMethodsSchema,\n options: [autoAuthorization()],\n }),\n unlinkAuthenticationMethod: item({\n input: z.object({\n id: z.string(),\n method: z.nativeEnum(AuthenticateMethod),\n }),\n key: \"/auth/user/unlink-authentication-method\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getUser: item({\n key: \"/auth/user\",\n result: z.object({ user: userSchema }),\n options: [autoAuthorization()],\n }),\n updateUser: item({\n input: userSchema.partial(),\n key: \"/auth/user\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.put, simpleJson, autoAuthorization()],\n }),\n updateMainWallet: item({\n input: z.object({ walletId: z.string() }),\n key: \"/auth/user/update-main-wallet\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n createReferral: item({\n input: z.object({\n referral: z.string(),\n }),\n key: \"/auth/user/referral\",\n result: z.object({\n referral: z.object({\n id: z.string(),\n referralId: z.string(),\n isEnabled: z.boolean(),\n }),\n }),\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getUserReferral: item({\n input: z.string().nullable(),\n key: \"/auth/user/referral\",\n result: z.object({\n referral: z\n .object({\n id: z.string(),\n isEnabled: z.boolean(),\n referralId: z.string(),\n })\n .nullable(),\n referredBy: z\n .object({\n id: z.string(),\n isEnabled: z.boolean(),\n referralId: z.string(),\n })\n .nullable(),\n }),\n options: [autoAuthorization()],\n }),\n useReferral: item({\n input: z.object({\n referral: z.string(),\n }),\n key: ({ referral }) => `/auth/user/refer/${referral}`,\n result: z.object({\n success: z.boolean(),\n }),\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getUserReferralCount: item({\n input: ethz.address().optional(),\n key: \"/auth/user/referral-stats\",\n result: z.object({ totalReferees: z.number().int() }),\n options: [autoAuthorization()],\n }),\n getReferralExists: item({\n input: z.string(),\n key: (referral) => `/auth/referral/${referral}/exists`,\n result: z.object({\n exists: z.boolean(),\n }),\n options: [autoAuthorization()],\n }),\n }\n);\n","import z from \"zod\";\nimport { AuthenticateMethod, SupportedSocialProvider, SupportedWalletEcosystem } from \"../../types\";\n\nexport const getWalletSignatureSchema = z.object({\n nonce: z.string(),\n message: z.string(),\n});\n\nexport const authenticateInputSchema = z.object({\n method: z.string(),\n walletInput: z.object({\n address: z.string(),\n ecosystem: z.string(),\n signature: z.string(),\n nonce: z.string(),\n partialHash: z.string().optional()\n }),\n});\n\nexport const authTokensSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().nullable(),\n});\n\nexport const userRoleSchema = z.enum([\"turtle-admin\", \"admin\", \"user\"]);\n\nexport const permissionSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n});\n\nexport const userSchema = z.object({\n id: z.string(),\n email: z.string().nullable().optional(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n username: z.string().optional(),\n role: userRoleSchema,\n permissions: z.array(permissionSchema),\n telegramHandle: z.string().optional(),\n avatarUrl: z.string().optional(),\n});\n\nexport const authenticateResultSchema = z.object({\n authTokens: authTokensSchema,\n user: userSchema,\n});\n\nexport const authMethodsSchema = z.object({\n socials: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n }),\n ),\n wallets: z.array(\n z.object({\n address: z.string(),\n ecosystem: z.nativeEnum(SupportedWalletEcosystem),\n id: z.string(),\n isMain: z.boolean(),\n }),\n ),\n});\n\nexport const addAuthMethodSchema = z.discriminatedUnion(\"method\", [\n z.object({\n method: z.literal(AuthenticateMethod.WALLET),\n walletInput: z.object({\n address: z.string(),\n ecosystem: z.nativeEnum(SupportedWalletEcosystem),\n nonce: z.string(),\n signature: z.string(),\n }),\n }),\n\n z.object({\n method: z.literal(AuthenticateMethod.SOCIAL),\n socialInput: z.object({\n provider: z.nativeEnum(SupportedSocialProvider),\n token: z.string(),\n }),\n }),\n]);\n\nexport const successSchema = z.object({\n success: z.boolean(),\n});\n","export enum AuthenticateMethod {\n WALLET = \"wallet\",\n SOCIAL = \"social\",\n}\n\nexport enum SupportedWalletEcosystem {\n EVM = \"evm\",\n}\n\nexport enum SupportedSocialProvider {\n GOOGLE = \"google\",\n}\n","export function handleApiResponse<T>(response: T | { error: string; status: string }): T {\n if (typeof response === \"object\" && response !== null && \"error\" in response) {\n throw new Error(response.error);\n }\n return response as T;\n}\n","import { buildHooks, item } from \"../builder/hooks\";\nimport { partnersApi } from \"./api\";\nimport type {\n CampaignSchema,\n GetCampaignsSchema,\n UserCampaignIncentivesSchema,\n UserCampaignVaultWithdrawalRequestsSchema,\n} from \"./campaignSchemas\";\nimport type {\n GetOrganizationCampaignsSchema,\n GetOrganizationDealsSchema,\n GetOrganizationsSchema,\n} from \"./organizationSchemas\";\nimport type { GetDealsSchema } from \"./dealSchemas\";\nimport type { GetPaymentsSchema } from \"./paymentSchemas\";\nimport type { GetTreasurySchema } from \"./treasurySchemas\";\nimport { authApi } from \"./authApi\";\n\nconst REFRESH_INTERVAL = 60_000;\nconst TREASURY_REFRESH_INTERVAL = 300_000;\n\nexport const partnersHooks = buildHooks({\n useOrganizations: item({\n key: [\"organizations\"],\n fn: partnersApi.getOrganizations,\n options: () => ({\n placeholderData: (previous: GetOrganizationsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useOrganizationDeals: item({\n key: (organizationId: string) => [\"organization\", organizationId, \"deals\"],\n fn: partnersApi.getOrganizationDeals,\n options: () => ({\n placeholderData: (previous: GetOrganizationDealsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useOrganizationCampaigns: item({\n key: (organizationId: string) => [\"organization\", organizationId, \"campaigns\"],\n fn: partnersApi.getOrganizationCampaigns,\n options: () => ({\n placeholderData: (previous: GetOrganizationCampaignsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useDeals: item({\n key: [\"deals\"],\n fn: partnersApi.getDeals,\n options: () => ({\n placeholderData: (previous: GetDealsSchema) => previous,\n gcTime: 60_000,\n }),\n }),\n usePayments: item({\n key: [\"payments\"],\n fn: partnersApi.getPayments,\n options: () => ({\n placeholderData: (previous: GetPaymentsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useCampaigns: item({\n key: [\"campaigns\"],\n fn: partnersApi.getCampaigns,\n options: () => ({\n placeholderData: (previous: GetCampaignsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n refetchInterval: REFRESH_INTERVAL,\n }),\n }),\n useCampaignByName: item({\n key: (name: string) => [\"campaign\", name],\n fn: partnersApi.getCampaignByName,\n options: () => ({\n placeholderData: (previous: CampaignSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n refetchInterval: REFRESH_INTERVAL,\n }),\n }),\n useUserCampaignIncentives: item({\n key: ({ campaignId, userAddress }) => [\"incentives\", campaignId, userAddress],\n fn: partnersApi.getUserCampaignIncentives,\n options: ({ campaignId, userAddress }) => ({\n enabled: !!campaignId && !!userAddress,\n placeholderData: (previous: UserCampaignIncentivesSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useUserCampaignVaultWithdrawalRequests: item({\n key: ({ campaignId, userAddress }) => [\"withdrawal_requests\", campaignId, userAddress],\n fn: partnersApi.getUserCampaignVaultWithdrawalRequests,\n options: ({ campaignId, userAddress }) => ({\n enabled: !!campaignId && !!userAddress,\n placeholderData: (previous: UserCampaignVaultWithdrawalRequestsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useGeoCheck: item({\n key: () => [\"geoCheck\"],\n fn: partnersApi.getGeoCheck,\n options: () => ({\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useTreasury: item({\n key: ({ oldSnapshots }) => [\"treasury\", oldSnapshots],\n fn: partnersApi.getTreasury,\n options: () => ({\n placeholderData: (previous: GetTreasurySchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n refetchInterval: TREASURY_REFRESH_INTERVAL,\n }),\n }),\n useAuthMethods: item({\n key: ({ isAuthenticated, accessToken }) => [\"authMethods\", isAuthenticated, accessToken],\n fn: authApi.getAuthMethods,\n options: ({ isAuthenticated }) => ({\n enabled: isAuthenticated,\n }),\n }),\n useUserReferral: item({\n key: (accessToken) => [\"useUserReferral\", accessToken],\n fn: authApi.getUserReferral,\n options: (accessToken) => ({ enabled: !!accessToken }),\n }),\n useUserReferralCount: item({\n key: (user) => [\"useUserReferralCount\", user],\n fn: authApi.getUserReferralCount,\n options: (user) => ({ enabled: !!user, cacheTime: 0, staleTime: 0, refetchOnMount: \"always\" }),\n }),\n useReferralExists: item({\n key: (referral) => [\"useReferralExists\", referral],\n fn: authApi.getReferralExists,\n options: (referral) => ({ enabled: referral.length > 0, cacheTime: 0, staleTime: 0, refetchOnMount: \"always\" }),\n }),\n});\n","export const TAC_CAMPAIGN_NAME = \"tac\";\nexport const KATANA_CAMPAIGN_NAME = \"katana\";\n\nexport const ALL_CAMPAIGN_NAMES = [TAC_CAMPAIGN_NAME, KATANA_CAMPAIGN_NAME] as const;\n\nexport type CampaignName = (typeof ALL_CAMPAIGN_NAMES)[number];","export const exposureFilters = [\n { label: \"Overview\", value: \"overview\" },\n { label: \"BTC\", value: \"btc\" },\n { label: \"ETH\", value: \"eth\" },\n { label: \"TON\", value: \"ton\" },\n { label: \"STABLES\", value: \"stables\" },\n];\n\nexport const Partners = [{ tooltip: \"TAC\", icon: \"/images/vaults/tac.png\" }];\n\nexport const Chains = [\n { tooltip: \"TAC\", icon: \"/images/vaults/tac.png\" },\n { tooltip: \"TON\", icon: \"/images/vaults/ton.png\" },\n { tooltip: \"Ethereum\", icon: \"/images/vaults/eth.png\" },\n];\n\nexport const Infrastructure = [\n {\n tooltip: \"Veda provides the core smart contract infrastructure for managing vault funds.\",\n icon: \"/images/vaults/veda.png\",\n url: \"https://veda.tech/\",\n },\n {\n tooltip:\n \"Merkl provides the indexing infrastructure to track activity across vaults and assign incentives accordingly.\",\n icon: \"/images/vaults/merkl.png\",\n url: \"https://merkl.xyz/\",\n },\n];\n\nexport const TACCampaignEndDate = \"2025-06-30\";\nexport const BASE_TAC_REWARD = 3;\n\nexport const getTacBoostText = (boost: number | undefined | null) => {\n const base = `${BASE_TAC_REWARD} TAC per $1k/day`;\n if (!boost) return base;\n return `${boost} * ${base}`;\n};\n\nexport const tacAprDisclaimer =\n \"Uses a $375mm estimated FDV for the TAC token economy. TAC rewards are subject to a 45 day vesting period. APR is not guaranteed. See vault card for a detailed breakdown on vault APR.\";\n\nexport const userInfoHeaderText =\n \"Phase 1 rewards are fully vested. Phase 2 rewards vest linearly from July 15th to August 30th. Withdrawing liquidity will slash your Phase 2 rewards.\";\n\nexport const secondaryPositionVaultIds = [\n // StakeDAO\n \"8742a82a-6253-4f1e-a2f9-31f88c08d4b8\",\n \"04961971-c60e-48e0-8422-acaf54d00060\",\n \"957a464c-0b43-4cea-8778-4aaa6cc10d54\",\n // Curve\n \"10e60097-d856-4dc9-9178-3178a0192dec\",\n \"da89b23e-5a79-4126-95f9-e78155a0fa36\",\n \"29bec461-fce9-4617-9631-15b4efe908c3\",\n // Morpho\n \"8f9b1255-e17a-4e72-bdae-48ad21f0cff1\",\n \"a1b07e63-0265-4551-887a-0583db30a525\",\n \"d14c7f81-e5ac-47f0-b0a2-cfdfff97e69f\",\n \"10df431e-1b83-4233-bc2f-c3e971c2e472\",\n \"bd552877-415d-40a9-9ccc-993d88c8f0af\",\n \"01ba91d4-dcfc-42b0-8c05-e3f7930116a3\",\n // Pendle\n \"45a8ce4a-d21a-451e-8eeb-8dafd166895d\",\n \"364278c2-cfee-4319-8fd6-a530913330f9\",\n \"9f624121-25cc-49e9-8e1c-d252ee483e76\",\n];","export const exposureFilters = [\n { label: \"Overview\", value: \"overview\" },\n { label: \"BTC\", value: \"btc\" },\n { label: \"ETH\", value: \"eth\" },\n { label: \"STABLES\", value: \"stables\" },\n];\n\nexport const Partners = [{ tooltip: \"Katana\", icon: \"/networks/katana.svg\" }];\n\nexport const Chains = [\n { tooltip: \"Katana\", icon: \"/networks/katana.svg\" },\n { tooltip: \"Ethereum\", icon: \"/images/vaults/eth.png\" },\n];\n\nexport const Infrastructure = [\n {\n tooltip:\n \"Merkl provides the indexing infrastructure to track activity across vaults and assign incentives accordingly.\",\n icon: \"/images/vaults/merkl.png\",\n url: \"https://merkl.xyz/\",\n },\n {\n tooltip: \"Yearn provides the core smart contract infrastructure for managing vault funds.\",\n icon: \"/images/vaults/yearn.png\",\n url: \"https://yearn.finance/\",\n },\n];\n\nexport const katanaAprDisclaimer =\n \"Uses a $1bn estimated FDV for the KAT token economy. APR is not guaranteed. See vault card for a detailed breakdown on vault APR.\";\n\nexport const KatanaCampaignEndDate = \"2025-08-27\";","export const lagoonVaultAbi = [\n {\n inputs: [{ internalType: \"bool\", name: \"disable\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n { inputs: [{ internalType: \"uint256\", name: \"maxRate\", type: \"uint256\" }], name: \"AboveMaxRate\", type: \"error\" },\n { inputs: [{ internalType: \"address\", name: \"target\", type: \"address\" }], name: \"AddressEmptyCode\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"AddressInsufficientBalance\",\n type: \"error\",\n },\n { inputs: [], name: \"CantDepositNativeToken\", type: \"error\" },\n { inputs: [], name: \"Closed\", type: \"error\" },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"allowance\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"needed\", type: \"uint256\" },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"sender\", type: \"address\" },\n { internalType: \"uint256\", name: \"balance\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"needed\", type: \"uint256\" },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"approver\", type: \"address\" }],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"receiver\", type: \"address\" }],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n { inputs: [{ internalType: \"address\", name: \"sender\", type: \"address\" }], name: \"ERC20InvalidSender\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"spender\", type: \"address\" }],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxDeposit\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxMint\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxRedeem\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxWithdraw\",\n type: \"error\",\n },\n { inputs: [], name: \"ERC7540InvalidOperator\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewDepositDisabled\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewMintDisabled\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewRedeemDisabled\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewWithdrawDisabled\", type: \"error\" },\n { inputs: [], name: \"EnforcedPause\", type: \"error\" },\n { inputs: [], name: \"ExpectedPause\", type: \"error\" },\n { inputs: [], name: \"FailedInnerCall\", type: \"error\" },\n { inputs: [], name: \"InvalidInitialization\", type: \"error\" },\n { inputs: [], name: \"MathOverflowedMulDiv\", type: \"error\" },\n { inputs: [], name: \"NewTotalAssetsMissing\", type: \"error\" },\n { inputs: [{ internalType: \"enum State\", name: \"currentState\", type: \"uint8\" }], name: \"NotClosing\", type: \"error\" },\n { inputs: [], name: \"NotInitializing\", type: \"error\" },\n { inputs: [{ internalType: \"enum State\", name: \"currentState\", type: \"uint8\" }], name: \"NotOpen\", type: \"error\" },\n { inputs: [], name: \"NotWhitelisted\", type: \"error\" },\n { inputs: [], name: \"OnlyAsyncDepositAllowed\", type: \"error\" },\n { inputs: [], name: \"OnlyOneRequestAllowed\", type: \"error\" },\n { inputs: [{ internalType: \"address\", name: \"safe\", type: \"address\" }], name: \"OnlySafe\", type: \"error\" },\n { inputs: [], name: \"OnlySyncDepositAllowed\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"valuationManager\", type: \"address\" }],\n name: \"OnlyValuationManager\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"whitelistManager\", type: \"address\" }],\n name: \"OnlyWhitelistManager\",\n type: \"error\",\n },\n { inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }], name: \"OwnableInvalidOwner\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"OwnableUnauthorizedAccount\",\n type: \"error\",\n },\n { inputs: [], name: \"RequestIdNotClaimable\", type: \"error\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n name: \"RequestNotCancelable\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"SafeERC20FailedOperation\",\n type: \"error\",\n },\n { inputs: [], name: \"ValuationUpdateNotAllowed\", type: \"error\" },\n { inputs: [], name: \"WrongNewTotalAssets\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"spender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"DepositRequest\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"DepositRequestCanceled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"DepositSync\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"address\", name: \"oldReceiver\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"newReceiver\", type: \"address\" },\n ],\n name: \"FeeReceiverUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint256\", name: \"oldHighWaterMark\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"newHighWaterMark\", type: \"uint256\" },\n ],\n name: \"HighWaterMarkUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint64\", name: \"version\", type: \"uint64\" }],\n name: \"Initialized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" }],\n name: \"NewTotalAssetsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"operator\", type: \"address\" },\n { indexed: false, internalType: \"bool\", name: \"approved\", type: \"bool\" },\n ],\n name: \"OperatorSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferStarted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n indexed: false,\n internalType: \"struct Rates\",\n name: \"oldRates\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n indexed: false,\n internalType: \"struct Rates\",\n name: \"newRate\",\n type: \"tuple\",\n },\n { indexed: false, internalType: \"uint256\", name: \"timestamp\", type: \"uint256\" },\n ],\n name: \"RatesUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"RedeemRequest\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"referral\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"Referral\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"uint40\", name: \"epochId\", type: \"uint40\" },\n { indexed: true, internalType: \"uint40\", name: \"settledId\", type: \"uint40\" },\n { indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"assetsDeposited\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"sharesMinted\", type: \"uint256\" },\n ],\n name: \"SettleDeposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"uint40\", name: \"epochId\", type: \"uint40\" },\n { indexed: true, internalType: \"uint40\", name: \"settledId\", type: \"uint40\" },\n { indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"assetsWithdrawed\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"sharesBurned\", type: \"uint256\" },\n ],\n name: \"SettleRedeem\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"enum State\", name: \"state\", type: \"uint8\" }],\n name: \"StateUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint128\", name: \"oldLifespan\", type: \"uint128\" },\n { indexed: false, internalType: \"uint128\", name: \"newLifespan\", type: \"uint128\" },\n ],\n name: \"TotalAssetsLifespanUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" }],\n name: \"TotalAssetsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"address\", name: \"oldManager\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"newManager\", type: \"address\" },\n ],\n name: \"ValuationManagerUpdated\",\n type: \"event\",\n },\n { anonymous: false, inputs: [], name: \"WhitelistDisabled\", type: \"event\" },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"address\", name: \"oldManager\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"newManager\", type: \"address\" },\n ],\n name: \"WhitelistManagerUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"account\", type: \"address\" },\n { indexed: false, internalType: \"bool\", name: \"authorized\", type: \"bool\" },\n ],\n name: \"WhitelistUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"MAX_MANAGEMENT_RATE\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MAX_PERFORMANCE_RATE\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MAX_PROTOCOL_RATE\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"acceptOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [{ internalType: \"address[]\", name: \"accounts\", type: \"address[]\" }],\n name: \"addToWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"asset\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"cancelRequestDeposit\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"sharesToRedeem\", type: \"uint256\" }],\n name: \"claimSharesAndRequestRedeem\",\n outputs: [{ internalType: \"uint40\", name: \"requestId\", type: \"uint40\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address[]\", name: \"controllers\", type: \"address[]\" }],\n name: \"claimSharesOnBehalf\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"claimableDepositRequest\",\n outputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"claimableRedeemRequest\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"close\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n name: \"convertToAssets\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n ],\n name: \"convertToAssets\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n name: \"convertToShares\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n ],\n name: \"convertToShares\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"deposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"deposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"disableWhitelist\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n { inputs: [], name: \"expireTotalAssets\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [],\n name: \"feeRates\",\n outputs: [\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n internalType: \"struct Rates\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getRolesStorage\",\n outputs: [\n {\n components: [\n { internalType: \"address\", name: \"whitelistManager\", type: \"address\" },\n { internalType: \"address\", name: \"feeReceiver\", type: \"address\" },\n { internalType: \"address\", name: \"safe\", type: \"address\" },\n { internalType: \"contract FeeRegistry\", name: \"feeRegistry\", type: \"address\" },\n { internalType: \"address\", name: \"valuationManager\", type: \"address\" },\n ],\n internalType: \"struct Roles.RolesStorage\",\n name: \"_rolesStorage\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n { internalType: \"address\", name: \"feeRegistry\", type: \"address\" },\n { internalType: \"address\", name: \"wrappedNativeToken\", type: \"address\" },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"initiateClosing\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n ],\n name: \"isOperator\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isTotalAssetsValid\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"isWhitelisted\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxMint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxRedeem\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxWithdraw\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"mint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"mint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"pause\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [],\n name: \"paused\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"pendingDepositRequest\",\n outputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pendingOwner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"pendingRedeemRequest\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewMint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewRedeem\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewWithdraw\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"redeem\",\n outputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"renounceOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n ],\n name: \"requestDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"referral\", type: \"address\" },\n ],\n name: \"requestDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n ],\n name: \"requestRedeem\",\n outputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address[]\", name: \"accounts\", type: \"address[]\" }],\n name: \"revokeFromWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"safe\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n { internalType: \"bool\", name: \"approved\", type: \"bool\" },\n ],\n name: \"setOperator\",\n outputs: [{ internalType: \"bool\", name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"settleDeposit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"settleRedeem\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"share\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes4\", name: \"interfaceId\", type: \"bytes4\" }],\n name: \"supportsInterface\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"referral\", type: \"address\" },\n ],\n name: \"syncDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalAssets\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"unpause\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [{ internalType: \"address\", name: \"_feeReceiver\", type: \"address\" }],\n name: \"updateFeeReceiver\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"updateNewTotalAssets\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n internalType: \"struct Rates\",\n name: \"newRates\",\n type: \"tuple\",\n },\n ],\n name: \"updateRates\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint128\", name: \"lifespan\", type: \"uint128\" }],\n name: \"updateTotalAssetsLifespan\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_valuationManager\", type: \"address\" }],\n name: \"updateValuationManager\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_whitelistManager\", type: \"address\" }],\n name: \"updateWhitelistManager\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"withdraw\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n","export const morphoAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"uint256\", name: \"prevBorrowRate\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"interest\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"feeShares\", type: \"uint256\" },\n ],\n name: \"AccrueInterest\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Borrow\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n ],\n name: \"CreateMarket\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: true, internalType: \"address\", name: \"irm\", type: \"address\" }],\n name: \"EnableIrm\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"lltv\", type: \"uint256\" }],\n name: \"EnableLltv\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"token\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"FlashLoan\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"authorizer\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"usedNonce\", type: \"uint256\" },\n ],\n name: \"IncrementNonce\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"borrower\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"repaidAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"repaidShares\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"seizedAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"badDebtAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"badDebtShares\", type: \"uint256\" },\n ],\n name: \"Liquidate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Repay\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"authorizer\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"authorized\", type: \"address\" },\n { indexed: false, internalType: \"bool\", name: \"newIsAuthorized\", type: \"bool\" },\n ],\n name: \"SetAuthorization\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"uint256\", name: \"newFee\", type: \"uint256\" },\n ],\n name: \"SetFee\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: true, internalType: \"address\", name: \"newFeeRecipient\", type: \"address\" }],\n name: \"SetFeeRecipient\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"SetOwner\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Supply\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"SupplyCollateral\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"WithdrawCollateral\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n ],\n name: \"accrueInterest\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"borrow\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n ],\n name: \"createMarket\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"irm\", type: \"address\" }],\n name: \"enableIrm\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"lltv\", type: \"uint256\" }],\n name: \"enableLltv\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes32[]\", name: \"slots\", type: \"bytes32[]\" }],\n name: \"extSloads\",\n outputs: [{ internalType: \"bytes32[]\", name: \"res\", type: \"bytes32[]\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeRecipient\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"flashLoan\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"Id\", name: \"\", type: \"bytes32\" }],\n name: \"idToMarketParams\",\n outputs: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"\", type: \"address\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"isAuthorized\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"isIrmEnabled\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"isLltvEnabled\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"address\", name: \"borrower\", type: \"address\" },\n { internalType: \"uint256\", name: \"seizedAssets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"repaidShares\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"liquidate\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"Id\", name: \"\", type: \"bytes32\" }],\n name: \"market\",\n outputs: [\n { internalType: \"uint128\", name: \"totalSupplyAssets\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"totalSupplyShares\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"totalBorrowAssets\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"totalBorrowShares\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"lastUpdate\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"fee\", type: \"uint128\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"nonce\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"Id\", name: \"\", type: \"bytes32\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"position\",\n outputs: [\n { internalType: \"uint256\", name: \"supplyShares\", type: \"uint256\" },\n { internalType: \"uint128\", name: \"borrowShares\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"collateral\", type: \"uint128\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"repay\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"authorized\", type: \"address\" },\n { internalType: \"bool\", name: \"newIsAuthorized\", type: \"bool\" },\n ],\n name: \"setAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"authorizer\", type: \"address\" },\n { internalType: \"address\", name: \"authorized\", type: \"address\" },\n { internalType: \"bool\", name: \"isAuthorized\", type: \"bool\" },\n { internalType: \"uint256\", name: \"nonce\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n ],\n internalType: \"struct Authorization\",\n name: \"authorization\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"uint8\", name: \"v\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"r\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"s\", type: \"bytes32\" },\n ],\n internalType: \"struct Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n ],\n name: \"setAuthorizationWithSig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"newFee\", type: \"uint256\" },\n ],\n name: \"setFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newFeeRecipient\", type: \"address\" }],\n name: \"setFeeRecipient\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"setOwner\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"supply\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"supplyCollateral\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"withdraw\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"withdrawCollateral\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n","import { z } from \"zod\";\nimport { buildApi, item } from \"../builder/api\";\nimport { fetchBackend, methodOptions, simpleJson } from \"../backends/fetch\";\nimport { pricesInputSchema, pricesSchema, projectsTvlSchema } from \"./z\";\n\nconst root = \"https://index.turtle.vision\";\n\nexport const indexApi = buildApi(\n fetchBackend,\n {\n root,\n },\n {\n getPrices: item({\n input: z.object({\n pairs: pricesInputSchema,\n }),\n key: ({ pairs }) => `/prices?pairs=${pairs.map((pair) => `${pair.chain}:${pair.token}`).join(\",\")}`,\n result: pricesSchema,\n }),\n getPricesNew: item({\n input: z.object({\n tokens: z.array(\n z.object({\n address: z.string(),\n chain: z.string(),\n }),\n ),\n }),\n key: \"/prices/new\",\n result: pricesSchema,\n options: [methodOptions.post, simpleJson],\n }),\n getProjectTvl: item({\n input: z.array(z.string()),\n key: (projects) => `/tvl/projects?projects=${projects.join(\",\")}`,\n result: projectsTvlSchema,\n }),\n },\n);\n","import { z } from \"zod\";\n\nexport const pricesSchema = z.object({\n prices: z.record(z.string(), z.record(z.string(), z.number())),\n error: z.string().optional(),\n});\n\nexport const pricesInputSchema = z.array(z.object({ chain: z.string(), token: z.string() }));\n\nexport const projectTvlSchema = z.object({\n tvl_usd: z.number(),\n asset_tvl_usd: z.number(),\n debt_tvl_usd: z.number(),\n error: z.string().optional(),\n});\n\nexport const projectsTvlSchema = z.object({\n projects: z.record(z.string(), projectTvlSchema),\n error: z.string().optional(),\n});\n","import { buildHooks, item } from \"../builder/hooks\";\nimport { indexApi } from \"./api\";\nimport { ms } from \"../../utils\";\n\nexport const indexHooks = buildHooks(\n {\n usePrices: item({\n fn: indexApi.getPrices,\n key: ({ pairs }) => [\"usePrices\", pairs],\n options: ({ pairs }) => ({ enabled: !!pairs, refetchOnMount: \"always\" }),\n }),\n usePricesNew: item({\n fn: indexApi.getPricesNew,\n key: ({ tokens }) => [\"usePricesNew\", tokens],\n options: ({ tokens }) => ({ enabled: !!tokens, refetchOnMount: \"always\" }),\n }),\n useProjectTvl: item({\n fn: indexApi.getProjectTvl,\n key: (projects) => [\"useProjectTvl\", projects],\n options: (projects) => ({ enabled: !!projects, refetchOnMount: \"always\" }),\n }),\n },\n {\n refetchInterval: ms.mins(5),\n },\n);\n","import { BASE_TAC_REWARD } from \"./tac/constants\";\nimport type {\n CampaignDetailedIncentiveSchema,\n CampaignGroupSchema,\n CampaignSchema,\n CampaignVaultSchema,\n} from \"./api/partners/campaignSchemas\";\n\n// TODO: These icons need to be handled differently in the widget\n// For now, we'll use placeholder components\nconst VedaIcon = ({ className }: { className?: string }) => <div className={className}>Veda</div>;\nconst UpshiftIcon = ({ className }: { className?: string }) => <div className={className}>Upshift</div>;\nconst MidasIcon = ({ className }: { className?: string }) => <div className={className}>Midas</div>;\nconst LagoonIcon = ({ className }: { className?: string }) => <div className={className}>Lagoon</div>;\nconst YieldfiIcon = ({ className }: { className?: string }) => <div className={className}>Yieldfi</div>;\nconst ConcreteIcon = ({ className }: { className?: string }) => <div className={className}>Concrete</div>;\nconst CianIcon = ({ className }: { className?: string }) => <div className={className}>Cian</div>;\nconst Info = ({ className }: { className?: string }) => <div className={className}>ℹ️</div>;\n\n// TODO: Import these utilities from @turtleclub/utils\nconst capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\nconst formatNumber = (num: number, decimals?: number) => num.toFixed(decimals ?? 2);\nconst getBaseUrl = () => typeof window !== 'undefined' ? window.location.origin : '';\n\n\nexport const getCuratorIcon = (curator: string) => {\n const curatorIconName = curator.toLowerCase().split(\" \").join(\"-\");\n try {\n const pngPath = `/images/vaults/${curatorIconName}.png`;\n return new URL(pngPath, getBaseUrl()).href;\n } catch {\n try {\n const svgPath = `/images/vaults/${curatorIconName}.svg`;\n return new URL(svgPath, getBaseUrl()).href;\n } catch {\n return \"/fallback-icon.svg\";\n }\n }\n};\n\nexport const getVaultDeployment = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n if (vault.vedaProviderConfig) {\n return vault.vedaProviderConfig.deployments[0];\n }\n if (vault.upshiftProviderConfig) {\n return vault.upshiftProviderConfig.deployments[0];\n }\n if (vault.midasProviderConfig) {\n return vault.midasProviderConfig.deployments[0];\n }\n if (vault.lagoonProviderConfig) {\n return vault.lagoonProviderConfig.deployments[0];\n }\n if (vault.concreteProviderConfig) {\n return vault.concreteProviderConfig.deployments[0];\n }\n if (vault.cianProviderConfig) {\n return vault.cianProviderConfig.deployments[0];\n }\n if (vault.yieldfiProviderConfig) {\n return vault.yieldfiProviderConfig.deployments[0];\n }\n if (vault.curveProviderConfig) {\n return vault.curveProviderConfig.deployments[0];\n }\n if (vault.morphoVaultProviderConfig) {\n return vault.morphoVaultProviderConfig.deployments[0];\n }\n if (vault.morphoMarketProviderConfig) {\n return vault.morphoMarketProviderConfig.deployments[0];\n }\n if (vault.stakeDAOProviderConfig) {\n return vault.stakeDAOProviderConfig.deployments[0];\n }\n if (vault.yearnProviderConfig) {\n return vault.yearnProviderConfig.deployments[0];\n }\n return undefined;\n};\n\nexport const getVaultChain = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n return deployment.chain;\n};\n\nexport const getVaultChainId = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n return deployment.chainId;\n};\n\nexport const getVaultButtonTooltip = ({\n action,\n vault,\n canInteract,\n userAuthenticated,\n chainId,\n contractSupported,\n}: {\n action?: \"deposit\" | \"withdrawal\";\n vault?: CampaignVaultSchema;\n canInteract: boolean | null;\n userAuthenticated: boolean;\n chainId: number | null | undefined;\n contractSupported: boolean;\n}) => {\n if (!canInteract && vault?.vedaProviderConfig) {\n return \"Due to geographical restrictions you can't use this vault.\";\n }\n if (!userAuthenticated) {\n return \"Please connect a wallet.\";\n }\n const vaultChainId = getVaultChainId(vault);\n const vaultChain = getVaultChain(vault);\n if (!vaultChain || chainId !== vaultChainId) {\n return `Please connect to ${capitalize(vaultChain)} network to interact with this vault.`;\n }\n if (!contractSupported) {\n return \"Protocol is not currently supported by Turtle. Use the manage button to interact with this protocol.\";\n }\n if (action === \"deposit\" && !vault?.depositDisabled) {\n return vault.depositDisabledReason || \"Deposits are currently disabled for this vault.\";\n }\n if (action === \"withdrawal\" && vault?.withdrawalDisabled) {\n return vault.withdrawalDisabledReason || \"Withdrawals are currently disabled for this vault.\";\n }\n return \"\";\n};\n\nexport const getVaultAddress = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n if (vault.vedaProviderConfig) {\n return vault.vedaProviderConfig.deployments[0].boringVault;\n }\n if (vault.upshiftProviderConfig) {\n return vault.upshiftProviderConfig.deployments[0].vault;\n }\n if (vault.midasProviderConfig) {\n return vault.midasProviderConfig.deployments[0].token;\n }\n if (vault.lagoonProviderConfig) {\n return vault.lagoonProviderConfig.deployments[0].vault;\n }\n if (vault.concreteProviderConfig) {\n return vault.concreteProviderConfig.deployments[0].vault;\n }\n if (vault.cianProviderConfig) {\n return vault.cianProviderConfig.deployments[0].vault;\n }\n if (vault.yieldfiProviderConfig) {\n return vault.yieldfiProviderConfig.deployments[0].vault;\n }\n if (vault.curveProviderConfig) {\n return vault.curveProviderConfig.deployments[0].pool;\n }\n if (vault.morphoVaultProviderConfig) {\n return vault.morphoVaultProviderConfig.deployments[0].vault;\n }\n if (vault.morphoMarketProviderConfig) {\n return vault.morphoMarketProviderConfig.deployments[0].collateralToken.address;\n }\n if (vault.stakeDAOProviderConfig) {\n return vault.stakeDAOProviderConfig.deployments[0].vault;\n }\n if (vault.yearnProviderConfig) {\n return vault.yearnProviderConfig.deployments[0].vault;\n }\n return undefined;\n};\n\nexport const getVaultContractSupported = (vault: CampaignVaultSchema) => {\n return (\n vault.vedaProviderConfig !== undefined ||\n vault.upshiftProviderConfig !== undefined ||\n vault.midasProviderConfig !== undefined ||\n vault.lagoonProviderConfig !== undefined ||\n vault.concreteProviderConfig !== undefined ||\n vault.cianProviderConfig !== undefined ||\n vault.yieldfiProviderConfig !== undefined ||\n vault.morphoVaultProviderConfig !== undefined ||\n vault.stakeDAOProviderConfig !== undefined ||\n vault.yearnProviderConfig !== undefined ||\n vault.curveProviderConfig !== undefined\n );\n};\n\nexport const getVaultHasConfig = (vault: CampaignVaultSchema) => {\n return (\n vault.vedaProviderConfig !== undefined ||\n vault.upshiftProviderConfig !== undefined ||\n vault.midasProviderConfig !== undefined ||\n vault.lagoonProviderConfig !== undefined ||\n vault.concreteProviderConfig !== undefined ||\n vault.cianProviderConfig !== undefined ||\n vault.yieldfiProviderConfig !== undefined ||\n vault.curveProviderConfig !== undefined ||\n vault.morphoVaultProviderConfig !== undefined ||\n vault.morphoMarketProviderConfig !== undefined ||\n vault.stakeDAOProviderConfig !== undefined ||\n vault.yearnProviderConfig !== undefined\n );\n};\n\nconst getExplorerUrl = (chain: string, address: string) => {\n if (chain === \"ethereum\") {\n return `https://etherscan.io/address/${address}`;\n } else if (chain === \"katana\") {\n return `https://explorer.katanarpc.com/address/${address}`;\n }\n return `https://etherscan.io/address/${address}`;\n};\n\nexport const getVaultExplorerUrl = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n const address = getVaultAddress(vault);\n if (!deployment || !address) return undefined;\n return getExplorerUrl(deployment.chain, address);\n};\n\nexport const getVaultDecimals = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n if (\"decimals\" in deployment) {\n return deployment.decimals;\n }\n if (\"collateralToken\" in deployment) {\n return deployment.collateralToken.decimals;\n }\n return undefined;\n};\n\nexport const getVaultDepositAssets = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n if (\"depositAssets\" in deployment) {\n return deployment.depositAssets;\n }\n return undefined;\n};\n\nexport const getVaultDepositUrl = (vault: CampaignVaultSchema) => {\n return getVaultDeployment(vault)?.depositUrl;\n};\n\nexport const getVaultGroupName = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n if (vault.katanaCampaignConfig) {\n return vault.katanaCampaignConfig.group;\n }\n if (vault.tacCampaignConfig) {\n return vault.tacCampaignConfig.group;\n }\n return undefined;\n};\n\nexport const getVaultBoostText = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n if (vault.katanaCampaignConfig && vault.katanaCampaignConfig.incentives) {\n const katIncentive = vault.katanaCampaignConfig.incentives.find((incentive) => incentive.id === \"KAT\");\n if (!katIncentive?.dailyRewardRate || katIncentive.dailyRewardRate === 0) return undefined;\n return `${formatNumber(katIncentive?.dailyRewardRate ?? 0, 2)} KAT per $1k/day`;\n }\n if (vault.tacCampaignConfig && vault.tacCampaignConfig.incentives) {\n const tacIncentive = vault.tacCampaignConfig.incentives.find((incentive) => incentive.id === \"TAC\");\n if (!tacIncentive?.dailyRewardRate || tacIncentive.dailyRewardRate === 0) return undefined;\n return `TAC Boost ${tacIncentive?.dailyRewardRate ? (tacIncentive.dailyRewardRate / BASE_TAC_REWARD).toFixed(2) : \"0\"}x`;\n }\n return undefined;\n};\n\nexport const getVaultExposure = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n if (vault.katanaCampaignConfig) {\n return vault.katanaCampaignConfig.exposure;\n }\n if (vault.tacCampaignConfig) {\n return vault.tacCampaignConfig.exposure;\n }\n return undefined;\n};\n\nexport const getVaultIcon = (vault: CampaignVaultSchema) => {\n if (vault.vedaProviderConfig) return <VedaIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.upshiftProviderConfig) return <UpshiftIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.midasProviderConfig) return <MidasIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.lagoonProviderConfig) return <LagoonIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.concreteProviderConfig) return <ConcreteIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.cianProviderConfig) return <CianIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.yieldfiProviderConfig) return <YieldfiIcon className=\"h-[24px] w-[77px]\" />;\n return null;\n};\n\nexport const getCampaignIncentives = (campaign: CampaignSchema[\"campaign\"] | undefined | null) => {\n if (!campaign) return [];\n if (campaign.tacConfig) {\n const { incentives, additionalIncentives } = campaign.tacConfig;\n return [...(incentives ?? []), ...(additionalIncentives ?? [])];\n }\n if (campaign.katanaConfig) {\n const { incentives, additionalIncentives } = campaign.katanaConfig;\n return [...(incentives ?? []), ...(additionalIncentives ?? [])];\n }\n return [];\n};\n\nexport const getVaultIncentives = (\n campaign: CampaignSchema[\"campaign\"] | undefined | null,\n vault: CampaignVaultSchema | undefined | null,\n): CampaignDetailedIncentiveSchema[] => {\n if (!campaign || !vault) return [];\n const campaignIncentives = getCampaignIncentives(campaign);\n let vaultIncentives: CampaignDetailedIncentiveSchema[] = [];\n if (vault.katanaCampaignConfig) {\n vaultIncentives = vault.katanaCampaignConfig.incentives ?? [];\n }\n if (vault.tacCampaignConfig) {\n vaultIncentives = vault.tacCampaignConfig.incentives ?? [];\n }\n return campaignIncentives\n .map((incentive) => {\n const vaultIncentive = vaultIncentives?.find((v) => v.id === incentive.id);\n return {\n ...incentive,\n name: vaultIncentive?.name || incentive.name,\n dailyRewardRate: vaultIncentive?.dailyRewardRate || incentive.dailyRewardRate,\n tooltip: vaultIncentive?.tooltip || incentive.tooltip,\n apr: vaultIncentive?.apr || incentive.apr,\n phase: vaultIncentive?.phase || incentive.phase,\n };\n })\n .filter((incentive) => vaultIncentives?.some((v) => v.id === incentive.id))\n .sort((a, b) => (b.apr ?? 0) - (a.apr ?? 0));\n};\n\n// Common function to group incentives by phase\nconst groupIncentivesByPhase = (incentives: CampaignDetailedIncentiveSchema[]) => {\n const incentivesByPhase = new Map<string, CampaignDetailedIncentiveSchema[]>();\n const globalIncentives: CampaignDetailedIncentiveSchema[] = [];\n\n incentives.forEach((incentive) => {\n if (incentive.phase) {\n if (!incentivesByPhase.has(incentive.phase)) {\n incentivesByPhase.set(incentive.phase, []);\n }\n incentivesByPhase.get(incentive.phase)!.push(incentive);\n } else {\n globalIncentives.push(incentive);\n }\n });\n\n return { incentivesByPhase, globalIncentives };\n};\n\n// Common function to sort phases consistently\nconst sortPhases = (phases: string[], incentives: CampaignDetailedIncentiveSchema[]) => {\n return phases.sort((a, b) => {\n const aPhase = incentives.find((incentive) => incentive.phase === a);\n const bPhase = incentives.find((incentive) => incentive.phase === b);\n if (aPhase?.phase?.toLowerCase().includes(\"pre\")) {\n return -1;\n }\n if (bPhase?.phase?.toLowerCase().includes(\"pre\")) {\n return 1;\n }\n if (aPhase?.phase && bPhase?.phase) {\n return aPhase.phase.localeCompare(bPhase.phase, undefined, { numeric: true });\n }\n return 0;\n });\n};\n\n// Common function to get incentives for a specific phase\nconst getPhaseIncentives = (\n phase: string,\n incentivesByPhase: Map<string, CampaignDetailedIncentiveSchema[]>,\n globalIncentives: CampaignDetailedIncentiveSchema[],\n) => {\n const phaseIncentives = incentivesByPhase.get(phase)!;\n return [...globalIncentives, ...phaseIncentives];\n};\n\nexport const getVaultEstApr = (\n campaign: CampaignSchema[\"campaign\"] | undefined | null,\n vault: CampaignVaultSchema | undefined | null,\n) => {\n if (!vault) return undefined;\n if (!campaign) return undefined;\n const incentives = getVaultIncentives(campaign, vault);\n\n // Group incentives by phase\n const { incentivesByPhase, globalIncentives } = groupIncentivesByPhase(incentives);\n\n // If no phases, calculate total APR as before\n if (incentivesByPhase.size === 0) {\n const apr = incentives.reduce((acc, incentive) => acc + (incentive.apr ?? 0), 0);\n if (apr === 0) return undefined;\n return formatNumber(apr);\n }\n\n // Get the first phase (sorted the same way as in tooltip)\n const phases = sortPhases(Array.from(incentivesByPhase.keys()), incentives);\n\n const firstPhase = phases[0];\n const firstPhaseIncentives = getPhaseIncentives(firstPhase, incentivesByPhase, globalIncentives);\n\n const apr = firstPhaseIncentives.reduce((acc, incentive) => acc + (incentive.apr ?? 0), 0);\n if (apr === 0) return undefined;\n return formatNumber(apr);\n};\n\n// Helper function to render individual incentive items\nconst renderIncentiveItem = (incentive: CampaignDetailedIncentiveSchema) => (\n <div key={incentive.id} className=\"mb-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {incentive.iconUrl && (\n <img\n src={incentive.iconUrl}\n alt={incentive.name || incentive.id}\n className=\"size-4 rounded-full\"\n loading=\"lazy\"\n />\n )}\n <span className=\"font-medium\">\n {incentive.estApr ? \"Est. \" : \"\"}\n {incentive.name || incentive.id}\n </span>\n </div>\n <span className=\"font-semibold\">\n {incentive.apr !== undefined ? `${incentive.estApr ? \"≈ \" : \"\"}${incentive.apr.toFixed(2)}%` : \"-\"}\n </span>\n </div>\n {incentive.tooltip && <div className=\"mt-0.5 text-xs text-wise-white/60\">{incentive.tooltip}</div>}\n </div>\n);\n\n// Helper function to render total APR section\nconst renderTotalApr = (totalApr: number, incentives: CampaignDetailedIncentiveSchema[]) => {\n const hasEstApr = incentives.some((incentive) => incentive.estApr);\n\n return (\n <>\n <div className=\"mb-2 border-b border-wise-white/10\" />\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium\">Total APR</span>\n <span className=\"font-semibold\">\n {hasEstApr ? \"≈ \" : \"= \"}\n {totalApr.toFixed(2)}%\n </span>\n </div>\n </>\n );\n};\n\n// Helper function to render incentive breakdown\nconst renderIncentiveBreakdown = (\n title: string,\n incentives: CampaignDetailedIncentiveSchema[],\n showSeparator = false,\n) => {\n const totalApr = incentives.reduce((acc, incentive) => acc + (incentive.apr ?? 0), 0);\n\n return (\n <div>\n <div className=\"text-base font-semibold\">{title}</div>\n <div className=\"mb-2 border-b border-wise-white/10\" />\n {incentives.map(renderIncentiveItem)}\n {renderTotalApr(totalApr, incentives)}\n {showSeparator && <div className=\"my-4 h-px bg-neon-green\" />}\n </div>\n );\n};\n\n// export const getVaultAprTooltip = (\n// campaign: CampaignSchema[\"campaign\"] | undefined | null,\n// vault: CampaignVaultSchema | undefined | null,\n// ) => {\n// if (!vault) return undefined;\n// const incentives = getVaultIncentives(campaign, vault);\n// // Group incentives by phase\n// const { incentivesByPhase, globalIncentives } = groupIncentivesByPhase(incentives);\n\n// // If no phases, show the original single breakdown\n// if (incentivesByPhase.size === 0) {\n// return (\n// <Tooltip\n// trigger={<Info className=\"size-3 text-neon-green\" />}\n// maxWidth=\"800px\"\n// content={\n// <div className=\"min-w-[250px] whitespace-normal break-words px-2 text-xs text-wise-white\">\n// {renderIncentiveBreakdown(\"Vault APR\", incentives)}\n// </div>\n// }\n// />\n// );\n// }\n\n// // Show phase breakdowns\n// const phases = sortPhases(Array.from(incentivesByPhase.keys()), incentives);\n\n// return (\n// <Tooltip\n// trigger={<Info className=\"size-3 text-neon-green\" />}\n// maxWidth=\"800px\"\n// content={\n// <div className=\"min-w-[250px] whitespace-normal break-words px-2 text-xs text-wise-white\">\n// {phases.map((phase, phaseIndex) => {\n// const phaseIncentives = getPhaseIncentives(phase, incentivesByPhase, globalIncentives);\n\n// return (\n// <div key={phase}>\n// {renderIncentiveBreakdown(`${phase} Vault APR`, phaseIncentives, phaseIndex < phases.length - 1)}\n// </div>\n// );\n// })}\n// </div>\n// }\n// />\n// );\n// };\n\nexport const sortVaults = (groups: CampaignGroupSchema[], vaults: CampaignVaultSchema[]) => {\n const groupToRank = groups.reduce(\n (acc, group) => {\n acc[group.name] = group.rank ?? 0;\n return acc;\n },\n {} as Record<string, number>,\n );\n\n return vaults.sort((a, b) => {\n // First sort by group rank\n const aGroupRank = groupToRank[getVaultGroupName(a) ?? \"\"];\n const bGroupRank = groupToRank[getVaultGroupName(b) ?? \"\"];\n if (aGroupRank !== bGroupRank) {\n return aGroupRank - bGroupRank;\n }\n\n // First sort by TVL (non-zero first, then highest to lowest)\n const aHasTVL = a.tvlUSD > 0;\n const bHasTVL = b.tvlUSD > 0;\n if (aHasTVL !== bHasTVL) {\n return aHasTVL ? -1 : 1;\n }\n if (aHasTVL && bHasTVL) {\n return b.tvlUSD - a.tvlUSD;\n }\n\n // Then sort by non-nil config\n const aHasConfig = getVaultHasConfig(a);\n const bHasConfig = getVaultHasConfig(b);\n if (aHasConfig !== bHasConfig) {\n return aHasConfig ? -1 : 1;\n }\n\n // Then sort by curator status (non-TBD curators first)\n const aHasValidCurator = a.curator && a.curator !== \"TBD\";\n const bHasValidCurator = b.curator && b.curator !== \"TBD\";\n if (aHasValidCurator !== bHasValidCurator) {\n return aHasValidCurator ? -1 : 1;\n }\n\n // Finally sort alphabetically by name\n return a.name.localeCompare(b.name);\n });\n};\n\nexport const groupVaults = (groups: CampaignGroupSchema[], vaults: CampaignVaultSchema[]) => {\n groups.sort((a, b) => {\n if (!a.rank || !b.rank) return 0;\n return a.rank - b.rank;\n });\n\n return groups.map((group, index) => {\n const filteredVaults = vaults.filter((vault) => getVaultGroupName(vault) === group.name);\n const sortedVaults = sortVaults(groups, filteredVaults);\n return {\n id: index,\n title: group.description,\n items: sortedVaults,\n };\n });\n};","// DELETE THIS FILE AFTER POSITIONS REFACTOR\nimport {\n arbitrum,\n avalanche,\n base,\n blast,\n boba,\n bsc,\n celo,\n Chain,\n fantom,\n fraxtal,\n gnosis,\n immutableZkEvm,\n linea,\n mainnet,\n metis,\n optimism,\n polygon,\n scroll,\n sepolia,\n zkSync,\n} from \"viem/chains\";\n\nconst katana: Chain = {\n id: 747474,\n name: \"Katana\",\n nativeCurrency: {\n name: \"ETH\",\n symbol: \"ETH\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.katana.network\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Katana Explorer\",\n url: \"https://katanascan.com\",\n },\n },\n};\n\nexport const supportedChains = [\n arbitrum,\n avalanche,\n base,\n blast,\n boba,\n bsc,\n celo,\n fantom,\n fraxtal,\n gnosis,\n immutableZkEvm,\n katana,\n linea,\n mainnet,\n metis,\n optimism,\n polygon,\n scroll,\n sepolia,\n zkSync,\n] as const;\n","import { useCallback, useMemo } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { TonClient4 } from \"@ton/ton\";\nimport { useCampaign } from \"./useCampaign\";\nimport type { CampaignVaultSchema } from \"./api/partners/campaignSchemas\";\n\nexport interface Position {\n vault: CampaignVaultSchema;\n userBalance: bigint;\n userTVL: number;\n}\n\ninterface Positions {\n userPositions: Position[];\n userTotalTVL: number;\n}\n\nexport function useTonCampaignPositions({\n campaignName,\n userAddress,\n}: {\n campaignName: string;\n userAddress?: string;\n}) {\n const { vaults } = useCampaign(campaignName);\n\n const isTestnet = userAddress?.includes(\"0Q\");\n const tonClient4 = useMemo(() => {\n const endpoint = isTestnet \n ? \"https://testnet-v4.tonhubapi.com\"\n : \"https://mainnet-v4.tonhubapi.com\";\n \n return new TonClient4({ endpoint });\n }, [isTestnet]);\n\n //Add Ecosystem for Ton Vaults\n const tonVaults = useMemo(() => {\n if (!userAddress) return [];\n\n return vaults.filter(vault => \n vault.vedaProviderConfig?.deployments[0]\n );\n }, [vaults, userAddress]);\n\n const {\n data: positions,\n isLoading,\n error: queryError,\n refetch: refetchUserPositions,\n } = useQuery<Positions>({\n queryKey: [\"ton-positions\", userAddress, campaignName, tonVaults.length],\n queryFn: async () => {\n if (!userAddress || tonVaults.length === 0) {\n return {\n userPositions: [],\n userTotalTVL: 0,\n };\n }\n\n const userPositionsById: Record<string, Position> = {};\n let userTotalTVL = 0;\n\n for (const vault of tonVaults) {\n let userBalance = 0n;\n let userVaultTVL = 0;\n\n if (vault.vedaProviderConfig?.deployments[0].chainId === 239) {\n const apiEndpoint = isTestnet \n ? \"https://testnet.tonapi.io/v2\" \n : \"https://tonapi.io/v2\";\n const response = await fetch(`${apiEndpoint}/accounts/${userAddress}/jettons`);\n const data = await response.json();\n \n const tacTONBalance = data.balances?.find((balance: any) => \n balance.jetton?.symbol === 'tacTON'\n );\n \n if (tacTONBalance) {\n const rawBalance = BigInt(tacTONBalance.balance);\n const decimals = tacTONBalance.jetton?.decimals || 9;\n const readableBalance = Number(rawBalance) / Math.pow(10, decimals);\n \n userVaultTVL = readableBalance * (2.9629) * (1.4/2008.205653); // TODO: Use live price\n userBalance = BigInt(Math.floor(readableBalance * 1e9));\n } else {\n userBalance = 0n;\n userVaultTVL = 0;\n }\n }\n\n if (userBalance > 0n || userVaultTVL > 0) {\n const existingPosition = userPositionsById[vault.id];\n if (existingPosition) {\n userPositionsById[vault.id] = {\n vault: vault,\n userBalance: existingPosition.userBalance + userBalance,\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[vault.id] = {\n vault: vault,\n userBalance: userBalance,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n\n const userPositions = Object.values(userPositionsById);\n\n return {\n userPositions,\n userTotalTVL,\n };\n },\n enabled: !!userAddress && tonVaults.length > 0,\n staleTime: 30_000, // 30 seconds\n gcTime: 60_000, // 1 minute\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n });\n\n const invalidateUserPositions = useCallback(async () => {\n await refetchUserPositions();\n }, [refetchUserPositions]);\n\n const result = useMemo(\n () => ({\n userPositions: positions?.userPositions ?? [],\n userTotalTVL: positions?.userTotalTVL ?? 0,\n isLoading,\n error: queryError,\n invalidateUserPositions,\n }),\n [positions, isLoading, queryError, invalidateUserPositions],\n );\n\n return result;\n}","import { useCallback, useMemo } from \"react\";\nimport type { Address } from \"viem\";\nimport { useCampaign } from \"./useCampaign\";\nimport type { CampaignVaultSchema } from \"./api/partners/campaignSchemas\";\nimport { useEvmCampaignPositions } from \"./useEvmCampaignPositions\";\nimport { useTonCampaignPositions } from \"./useTonCampaignPositions\";\n\nexport interface Position {\n vault: CampaignVaultSchema;\n userBalance: bigint;\n userTVL: number;\n}\n\nexport function useUserCampaignPositions({\n campaignName,\n userAddress,\n}: {\n campaignName: string;\n userAddress?: string | Address;\n}) {\n const { vaults } = useCampaign(campaignName);\n\n const hasTONVaults = vaults.some(vault => \n vault.vedaProviderConfig?.[1]\n );\n\n const hasEVMVaults = vaults.some(vault => \n !vault.vedaProviderConfig?.[1]\n );\n\n const evmPositions = useEvmCampaignPositions({\n campaignName,\n userAddress: hasEVMVaults ? (userAddress as Address) : undefined,\n });\n\n const tonPositions = useTonCampaignPositions({\n campaignName,\n userAddress: hasTONVaults ? (userAddress as string) : undefined,\n });\n\n const userPositions = useMemo(() => [\n ...evmPositions.userPositions,\n ...tonPositions.userPositions,\n ], [evmPositions.userPositions, tonPositions.userPositions]);\n\n const userTotalTVL = useMemo(() => \n evmPositions.userTotalTVL + tonPositions.userTotalTVL,\n [evmPositions.userTotalTVL, tonPositions.userTotalTVL]\n );\n\n const isLoading = evmPositions.isLoading || tonPositions.isLoading;\n const error = evmPositions.error || tonPositions.error;\n\n const invalidateUserPositions = useCallback(async () => {\n await Promise.all([\n evmPositions.invalidateUserPositions(),\n tonPositions.invalidateUserPositions(),\n ]);\n }, [evmPositions.invalidateUserPositions, tonPositions.invalidateUserPositions]);\n\n return {\n userPositions,\n userTotalTVL,\n isLoading,\n error,\n invalidateUserPositions,\n };\n}"],"mappings":"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","names":["import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react","import_viem","import_react_query","import_react","import_react_query","_","item","import_zod","import_viem","module","key","result","item","import_zod","import_lodash","_","import_zod","import_zod","import_zod","import_zod","import_zod","item","import_zod","import_zod","AuthenticateMethod","SupportedWalletEcosystem","SupportedSocialProvider","z","root","item","import_zod","import_zod","root","item","apr","import_chains","katana","configs","priceTokens","result","import_react","import_react_query","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/useConfig.ts","../src/hooks/client.ts","../src/hooks/endpoints/useOrganizations.ts","../src/hooks/endpoints/useExists.ts","../src/hooks/endpoints/useIndexerTvl.ts","../src/hooks/endpoints/useOrganizationDeals.ts","../src/hooks/endpoints/useOrganizationsDeals.ts","../src/hooks/endpoints/usePrepareSignup.ts","../src/hooks/endpoints/useProjectTvl.ts","../src/hooks/endpoints/useSignup.ts","../src/hooks/endpoints/earn/useCampaigns.ts","../src/hooks/endpoints/earn/useDeals.ts","../src/hooks/endpoints/earn/useRoute.ts","../src/hooks/endpoints/earn/useWalletBalances.ts","../src/hooks/endpoints/partner/usePartnerCampaigns.ts","../src/hooks/endpoints/partner/usePartnerDeals.ts","../src/hooks/endpoints/useGeocheck.ts","../src/campaigns-v2/index.ts","../src/campaigns-v2/useEvmCampaignPositions.ts","../src/campaigns-v2/useCampaign.ts","../src/campaigns-v2/api/builder/hooks.ts","../src/campaigns-v2/api/partners/api.ts","../src/campaigns-v2/utils/zod.ts","../src/campaigns-v2/utils/time.ts","../src/campaigns-v2/utils/array.ts","../src/campaigns-v2/utils/cn.ts","../src/campaigns-v2/utils/debank.ts","../src/campaigns-v2/chains/katana.ts","../src/campaigns-v2/utils/fn.ts","../src/campaigns-v2/utils/jwt.ts","../src/campaigns-v2/utils/log.ts","../src/campaigns-v2/utils/object.ts","../src/campaigns-v2/utils/tanstack-query.ts","../src/campaigns-v2/utils/url.ts","../src/campaigns-v2/api/builder/api.ts","../src/campaigns-v2/api/backends/fetch.ts","../src/campaigns-v2/stores/authTokensStore.ts","../src/campaigns-v2/api/partners/campaignSchemas.ts","../src/campaigns-v2/api/partners/dealSchemas.ts","../src/campaigns-v2/api/partners/organizationSchemas.ts","../src/campaigns-v2/api/partners/paymentSchemas.ts","../src/campaigns-v2/api/partners/treasurySchemas.ts","../src/campaigns-v2/api/partners/authApi.ts","../src/campaigns-v2/api/partners/authSchemas.ts","../src/campaigns-v2/types/auth.ts","../src/campaigns-v2/api/utils.ts","../src/campaigns-v2/api/partners/hooks.ts","../src/campaigns-v2/shared-constants.ts","../src/campaigns-v2/tac/constants.ts","../src/campaigns-v2/Katana/constants.ts","../src/campaigns-v2/contracts/lagoonVaultAbi.tsx","../src/campaigns-v2/contracts/morpho/morphoAbi.tsx","../src/campaigns-v2/api/index/api.ts","../src/campaigns-v2/api/index/z.ts","../src/campaigns-v2/api/index/hooks.ts","../src/campaigns-v2/constants.tsx","../src/campaigns-v2/chains.ts","../src/campaigns-v2/useUserCampaignPositions.ts"],"sourcesContent":["// TODO: delete - prerelease trigger\n// Hooks\nexport * from \"./hooks/useConfig\";\nexport * from \"./hooks/client\";\n\n// Endpoint hooks\nexport * from \"./hooks/endpoints/useOrganizations\";\nexport * from \"./hooks/endpoints/useExists\";\nexport * from \"./hooks/endpoints/useIndexerTvl\";\nexport * from \"./hooks/endpoints/useOrganizationDeals\";\nexport * from \"./hooks/endpoints/useOrganizationsDeals\";\nexport * from \"./hooks/endpoints/usePrepareSignup\";\nexport * from \"./hooks/endpoints/useProjectTvl\";\nexport * from \"./hooks/endpoints/useSignup\";\n\n// Earn hooks\nexport * from \"./hooks/endpoints/earn\";\n\n// Partner hooks\nexport * from \"./hooks/endpoints/partner\";\nexport * from \"./hooks/endpoints/useGeocheck\";\n\n// Campaign hooks - now using campaigns-v2\nexport * as campaignsV2 from \"./campaigns-v2\";\n","import type { Config } from \"@turtleclub/api\";\nimport { defaultConfig } from \"@turtleclub/api\";\n\nexport function useConfig(): Config {\n // Placeholder implementation - in real app this would use TurtleProvider context\n return defaultConfig;\n}\n","import { createSyncStoragePersister } from \"@tanstack/query-sync-storage-persister\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { persistQueryClient } from \"@tanstack/react-query-persist-client\";\n\nexport const defaultQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\n// Only persist on client side\nif (typeof window !== 'undefined') {\n const localStoragePersister = createSyncStoragePersister({\n storage: window.localStorage,\n key: \"turtle-sdk\",\n });\n\n persistQueryClient({\n queryClient: defaultQueryClient,\n persister: localStoragePersister,\n });\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, organization, type OrganizationResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseOrganizationsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useOrganizations({\n config,\n queryClient,\n}: UseOrganizationsOptions = {}): UseQueryResult<OrganizationResponse | null> {\n const defaultConfig = useConfig();\n\n const query = useQuery(\n {\n queryKey: [\"organizations\"],\n queryFn: async () => {\n return await organization(config ?? defaultConfig);\n },\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n },\n queryClient ?? defaultQueryClient\n );\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, exists, type ExistsOptions } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseExistsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useExists(\n options?: ExistsOptions,\n { config, queryClient }: UseExistsOptions = {},\n): UseQueryResult<boolean | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"exists\", options?.user],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await exists(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n refetchOnWindowFocus: true,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, projectTvl, type ProjectTvlOptions } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UseIndexerTvlOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useIndexerTvl(\n options?: ProjectTvlOptions,\n { config, queryClient }: UseIndexerTvlOptions = {}\n): UseQueryResult<\n {\n protocol: string;\n tvl: number;\n assetTvl: number;\n debtTvl: number;\n }[],\n Error\n> {\n const defaultConfig = useConfig();\n\n const queryResult = useQuery(\n {\n queryKey: [\"indexer-tvl\", options?.projects],\n queryFn: async () => {\n return await projectTvl(config ?? defaultConfig);\n },\n select: (data) => {\n if (!data) return [];\n const result = Object.entries(data.projects)\n .map(([key, value]) => {\n if (!options?.projects.includes(key)) return null;\n return {\n protocol: key,\n tvl: value.tvl_usd,\n assetTvl: value.asset_tvl_usd,\n debtTvl: value.debt_tvl_usd,\n };\n })\n .filter(Boolean) as {\n protocol: string;\n tvl: number;\n assetTvl: number;\n debtTvl: number;\n }[];\n\n return result;\n },\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n },\n queryClient ?? defaultQueryClient\n );\n\n return queryResult;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, organizationDeals, type OrganizationDealsOptions, type OrganizationDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseOrganizationDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useOrganizationDeals(\n options?: OrganizationDealsOptions,\n { config, queryClient }: UseOrganizationDealsOptions = {},\n): UseQueryResult<OrganizationDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"organizationDeals\", options?.organizationId],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await organizationDeals(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, organizationsDeals, type OrganizationsDealsOptions, type OrganizationsDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseOrganizationsDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useOrganizationsDeals(\n options?: OrganizationsDealsOptions,\n { config, queryClient }: UseOrganizationsDealsOptions = {},\n): UseQueryResult<OrganizationsDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"organizationsDeals\", options?.organizationIds],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await organizationsDeals(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000,\n refetchInterval: 1 * 60 * 1000,\n throwOnError: true,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, prepareSignup, type PrepareSignupOptions, type PrepareSignupResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UsePrepareSignupOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function usePrepareSignup(\n options?: PrepareSignupOptions,\n { config, queryClient }: UsePrepareSignupOptions = {},\n): UseQueryResult<PrepareSignupResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"prepareSignup\", options?.user],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await prepareSignup(options, config ?? defaultConfig);\n },\n enabled,\n refetchInterval: 5 * 60 * 1000,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, projectTvl, type ProjectTvlOptions, type ProjectTvlResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseProjectTvlOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useProjectTvl(\n options?: ProjectTvlOptions,\n { config, queryClient }: UseProjectTvlOptions = {},\n): UseQueryResult<ProjectTvlResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\"projectTvl\", options?.projects],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await projectTvl(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 7 * 60 * 1000,\n refetchInterval: 5 * 60 * 1000,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import {\n type QueryClient,\n useMutation,\n type UseMutationResult,\n useQuery,\n} from \"@tanstack/react-query\";\nimport { type Config, signup, type SignupOptions } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseSignupOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useSignup(\n options?: Omit<SignupOptions, \"signature\">,\n { config, queryClient }: UseSignupOptions = {}\n): UseMutationResult<boolean | null, Error, string, unknown> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const mutation = useMutation(\n {\n mutationFn: async (signature: string) => {\n if (!enabled) return null;\n\n return await signup({ ...options, signature }, config ?? defaultConfig);\n },\n },\n queryClient ?? defaultQueryClient\n );\n\n return mutation;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnCampaigns, type EarnCampaignsOptions, type EarnCampaignWithVaults } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UseEarnCampaignsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnCampaigns(\n options?: EarnCampaignsOptions,\n { config, queryClient }: UseEarnCampaignsOptions = {},\n): UseQueryResult<EarnCampaignWithVaults[] | null> {\n const defaultConfig = useConfig();\n const enabled = true; // Always enabled for campaigns\n\n const query = useQuery({\n queryKey: [\n \"earn-campaigns\",\n options?.idFilter,\n options?.protocolFilter,\n ],\n queryFn: async () => {\n return await earnCampaigns(options || {}, config ?? defaultConfig);\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnDeals, type EarnDealsOptions, type EarnDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UseEarnDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnDeals(\n options?: EarnDealsOptions,\n { config, queryClient }: UseEarnDealsOptions = {},\n): UseQueryResult<EarnDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"earn-deals\",\n options?.campaignId,\n options?.idFilter,\n options?.protocolFilter,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await earnDeals(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnRoute, type EarnRouteOptions, type EarnRouteResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../../client\";\nimport { useConfig } from \"../../useConfig\";\n\nexport interface UseEarnRouteOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnRoute(\n options?: EarnRouteOptions,\n { config, queryClient }: UseEarnRouteOptions = {},\n): UseQueryResult<EarnRouteResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"earnRoute\",\n options?.user,\n options?.chain,\n options?.slippage,\n options?.tokenIn,\n options?.tokenOut,\n options?.amount,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await earnRoute(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 2 * 60 * 1000, // 2 minutes - longer stale time for transaction stability\n refetchInterval: false, // Disable automatic refetch to prevent transaction state reset\n refetchOnWindowFocus: true,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport {\n type Config,\n earnWalletBalances,\n type EarnWalletBalancesOptions,\n type EarnWalletBalancesResponse,\n} from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../../client\";\nimport { useConfig } from \"../../useConfig\";\n\nexport interface UseEarnWalletBalancesOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useEarnWalletBalances(\n options?: EarnWalletBalancesOptions,\n { config, queryClient }: UseEarnWalletBalancesOptions = {}\n): UseQueryResult<EarnWalletBalancesResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery(\n {\n queryKey: [\"earnWalletBalances\", options?.chain, options?.user],\n queryFn: async () => {\n if (!enabled) return null;\n\n return await earnWalletBalances(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 30 * 1000,\n refetchInterval: 15 * 1000,\n refetchOnWindowFocus: true,\n },\n queryClient ?? defaultQueryClient\n );\n\n return query;\n}\n","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, earnCampaigns, type EarnCampaignsOptions, type EarnCampaignWithVaults } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UsePartnerCampaignsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\n/**\n * Hook to fetch partner campaigns\n * Currently uses the same endpoint as earn campaigns\n */\nexport function usePartnerCampaigns(\n options?: EarnCampaignsOptions,\n { config, queryClient }: UsePartnerCampaignsOptions = {},\n): UseQueryResult<EarnCampaignWithVaults[] | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"partner-campaigns\",\n options?.idFilter,\n options?.protocolFilter,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n return await earnCampaigns(options, config ?? defaultConfig);\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, turtleDeals, type TurtleDealsOptions, type TurtleDealsResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"@/hooks/client\";\nimport { useConfig } from \"@/hooks/useConfig\";\n\nexport interface UsePartnerDealsOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function usePartnerDeals(\n options?: TurtleDealsOptions,\n { config, queryClient }: UsePartnerDealsOptions = {},\n): UseQueryResult<TurtleDealsResponse | null> {\n const defaultConfig = useConfig();\n const enabled = options !== undefined;\n\n const query = useQuery({\n queryKey: [\n \"partner-deals\",\n options?.status,\n options?.protocol,\n options?.ids,\n ],\n queryFn: async () => {\n if (!enabled)\n return null;\n\n const result = await turtleDeals(options || {}, config ?? defaultConfig);\n return result;\n },\n enabled,\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n gcTime: 30 * 60 * 1000, // 30 minutos de cache\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}","import { type QueryClient, useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { type Config, geocheck, type GeoCheckResponse } from \"@turtleclub/api\";\nimport { defaultQueryClient } from \"../client\";\nimport { useConfig } from \"../useConfig\";\n\nexport interface UseGeocheckOptions {\n config?: Config;\n queryClient?: QueryClient;\n}\n\nexport function useGeocheck(\n { config, queryClient }: UseGeocheckOptions = {},\n): UseQueryResult<GeoCheckResponse> {\n const defaultConfig = useConfig();\n\n const query = useQuery({\n queryKey: [\"geocheck\"],\n queryFn: async () => {\n return await geocheck(config ?? defaultConfig);\n },\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 10 * 60 * 1000, // 10 minutes\n refetchOnWindowFocus: false,\n retry: 1,\n }, queryClient ?? defaultQueryClient);\n\n return query;\n}\n","// Hooks exports\nexport { useEvmCampaignPositions } from \"./useEvmCampaignPositions\";\nexport { useUserCampaignPositions } from \"./useUserCampaignPositions\";\nexport { useCampaign, useTacCampaign, useKatanaCampaign } from \"./useCampaign\";\n\n// Types exports\nexport type { Position } from \"./useUserCampaignPositions\";\n\n// Constants exports\nexport { TAC_CAMPAIGN_NAME, KATANA_CAMPAIGN_NAME, ALL_CAMPAIGN_NAMES } from \"./shared-constants\";\nexport type { CampaignName } from \"./shared-constants\";\n\n// Vault constants exports\nexport {\n getVaultAddress,\n getVaultChain,\n getVaultChainId,\n getVaultDecimals,\n getVaultDeployment,\n getVaultDepositAssets,\n getVaultExposure,\n getVaultIncentives,\n getVaultIcon,\n getVaultEstApr,\n // getVaultAprTooltip,\n getVaultBoostText,\n sortVaults,\n groupVaults,\n} from \"./constants\";\n\n// Contracts exports\nexport { lagoonVaultAbi } from \"./contracts/lagoonVaultAbi\";\nexport { morphoAbi } from \"./contracts/morpho\";","import { useCallback, useMemo } from \"react\";\nimport { useAccount, usePublicClient } from \"wagmi\";\nimport { createPublicClient, erc20Abi, formatUnits, http } from \"viem\";\nimport type { Abi, Address } from \"viem\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useCampaign } from \"./useCampaign\";\nimport { lagoonVaultAbi } from \"./contracts/lagoonVaultAbi\";\nimport { morphoAbi } from \"./contracts/morpho\";\nimport { indexHooks } from \"./api/index/hooks\";\nimport {\n getVaultAddress,\n getVaultChain,\n getVaultChainId,\n getVaultDecimals,\n getVaultDeployment,\n} from \"./constants\";\nimport type { CampaignVaultSchema } from \"./api/partners/campaignSchemas\";\nimport { supportedChains } from \"./chains\";\n\nexport interface Position {\n vault: CampaignVaultSchema;\n userBalance: bigint;\n userTVL: number;\n}\n\ninterface Positions {\n userPositions: Position[];\n userTotalTVL: number;\n}\n\nexport function useEvmCampaignPositions({\n campaignName,\n userAddress,\n}: {\n campaignName: string;\n userAddress?: Address;\n}) {\n const { vaults } = useCampaign(campaignName);\n const { chain: userChain } = useAccount();\n const walletPublicClient = usePublicClient();\n\n const { configs, priceTokens } = useMemo(() => {\n if (!userAddress) return { configs: [], priceTokens: [] };\n\n const configs = vaults\n .map((vault) => {\n const vaultAddress = getVaultAddress(vault);\n const vaultChain = getVaultChain(vault);\n const vaultChainId = getVaultChainId(vault);\n if (!vaultChain || !vaultAddress || !vaultChainId) return null;\n if (vault.curveProviderConfig) {\n const deployment = vault.curveProviderConfig.deployments[0];\n return [\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.pool,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.gauge,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n ];\n }\n if (vault.stakeDAOProviderConfig) {\n const deployment = vault.stakeDAOProviderConfig.deployments[0];\n return [\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.vault,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: deployment.gauge,\n tokenDecimals: deployment.decimals,\n isLagoon: false,\n isMorphoMarket: false,\n },\n ];\n }\n\n const isLagoon = !!vault.lagoonProviderConfig;\n const isMorphoMarket = !!vault.morphoMarketProviderConfig;\n const tokenDecimals = getVaultDecimals(vault) ?? 18;\n\n return {\n vault,\n vaultChain,\n vaultChainId,\n tokenAddress: vaultAddress,\n tokenDecimals,\n isLagoon,\n isMorphoMarket,\n };\n })\n .flatMap((c) => c)\n .filter((c): c is NonNullable<typeof c> => c !== null);\n\n // Create price tokens for usePricesNew hook\n const priceTokens = configs.map((config) => ({\n chain: config.vaultChain,\n address: config.tokenAddress,\n }));\n\n return { configs, priceTokens };\n }, [vaults, userAddress]);\n\n const { data: prices } = indexHooks.usePricesNew({ tokens: priceTokens });\n\n const {\n data: positions,\n isLoading,\n error: queryError,\n refetch: refetchUserPositions,\n } = useQuery<Positions>({\n queryKey: [\"positions\", userAddress, campaignName, configs?.length],\n queryFn: async () => {\n if (!configs || !prices) {\n return {\n userPositions: [],\n userTotalTVL: 0,\n };\n }\n\n // Group configs by chain for batching\n const configsByChain = new Map<number, typeof configs>();\n\n for (const config of configs) {\n if (!configsByChain.has(config.vaultChainId)) {\n configsByChain.set(config.vaultChainId, []);\n }\n configsByChain.get(config.vaultChainId)!.push(config);\n }\n\n const userPositionsById: Record<string, Position> = {};\n let userTotalTVL = 0;\n\n // Process each chain's vaults in batches\n for (const [chainId, chainConfigs] of configsByChain) {\n try {\n const chainConfig = supportedChains.find((c) => c.id === chainId);\n if (!chainConfig) {\n continue;\n }\n\n const isUserOnSameChain = userChain?.id === chainId;\n const chainPublicClient = isUserOnSameChain\n ? walletPublicClient\n : createPublicClient({\n chain: chainConfig,\n transport: http(chainConfig.rpcUrls.default.http[0]),\n });\n\n // Prepare multicall contracts\n const multicallContracts: Array<{\n address: `0x${string}`;\n abi: Abi;\n functionName: string;\n args: readonly any[];\n config: (typeof configs)[0];\n type: \"lagoon\" | \"morpho\" | \"erc20\";\n }> = [];\n\n for (const config of chainConfigs) {\n if (config.isLagoon) {\n // Add Lagoon vault calls\n multicallContracts.push(\n {\n address: config.tokenAddress as `0x${string}`,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [userAddress!],\n config,\n type: \"lagoon\",\n },\n {\n address: config.tokenAddress as `0x${string}`,\n abi: lagoonVaultAbi as Abi,\n functionName: \"maxMint\",\n args: [userAddress!],\n config,\n type: \"lagoon\",\n },\n {\n address: config.tokenAddress as `0x${string}`,\n abi: lagoonVaultAbi as Abi,\n functionName: \"pendingDepositRequest\",\n args: [0, userAddress!],\n config,\n type: \"lagoon\",\n }\n );\n } else if (config.isMorphoMarket) {\n const deployment = getVaultDeployment(config.vault);\n if (!deployment || !(\"marketId\" in deployment)) continue;\n\n multicallContracts.push({\n address: deployment.morpho as `0x${string}`,\n abi: morphoAbi as Abi,\n functionName: \"position\",\n args: [deployment.marketId, userAddress!],\n config,\n type: \"morpho\",\n });\n } else {\n // Standard ERC20 balance check\n multicallContracts.push({\n address: config.tokenAddress as `0x${string}`,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [userAddress!],\n config,\n type: \"erc20\",\n });\n }\n }\n\n // Execute calls in smaller batches to avoid hanging\n const results = [];\n const batchSize = 10; // Process in batches of 10\n\n // Check if chain supports multicall\n const supportsMulticall = chainConfig.contracts?.multicall3;\n\n if (supportsMulticall) {\n // Use multicall for chains that support it\n for (let i = 0; i < multicallContracts.length; i += batchSize) {\n const batch = multicallContracts.slice(i, i + batchSize);\n\n try {\n const batchResults = await chainPublicClient.multicall({\n contracts: batch.map(({ address, abi, functionName, args }) => ({\n address,\n abi,\n functionName,\n args,\n })),\n });\n results.push(...batchResults);\n } catch {\n // Fall back to individual calls for this batch\n for (const contract of batch) {\n try {\n const result = await chainPublicClient.readContract({\n address: contract.address,\n abi: contract.abi,\n functionName: contract.functionName,\n args: contract.args,\n });\n results.push({ status: \"success\", result });\n } catch (callError) {\n results.push({ status: \"failure\", error: callError });\n }\n }\n }\n }\n } else {\n // Use individual calls for chains that don't support multicall\n for (const contract of multicallContracts) {\n try {\n const result = await chainPublicClient.readContract({\n address: contract.address,\n abi: contract.abi,\n functionName: contract.functionName,\n args: contract.args,\n });\n results.push({ status: \"success\", result });\n } catch (callError) {\n results.push({ status: \"failure\", error: callError });\n }\n }\n }\n\n // Process results\n let callIndex = 0;\n for (const config of chainConfigs) {\n if (config.isLagoon) {\n // Process Lagoon results (3 calls per vault)\n const balanceResult = results[callIndex++];\n const maxMintResult = results[callIndex++];\n const pendingDepositRequestResult = results[callIndex++];\n\n const balance = balanceResult?.status === \"success\" ? balanceResult.result : null;\n const maxMint = maxMintResult?.status === \"success\" ? maxMintResult.result : null;\n const pendingDepositRequest =\n pendingDepositRequestResult?.status === \"success\"\n ? pendingDepositRequestResult.result\n : null;\n\n if (balance || maxMint || pendingDepositRequest) {\n let depositShares = 0n;\n if (pendingDepositRequest) {\n // Convert pending deposit to shares\n const depositSharesResult = await chainPublicClient.readContract({\n address: config.tokenAddress as `0x${string}`,\n abi: lagoonVaultAbi as Abi,\n functionName: \"convertToShares\",\n args: [pendingDepositRequest],\n });\n depositShares = depositSharesResult as bigint;\n }\n\n // Calculate total shares\n const totalShares = (balance as bigint) + (maxMint as bigint) + depositShares;\n const price = prices.prices[config.vaultChain]?.[config.tokenAddress] || 0;\n const decimals = config.tokenDecimals || 18;\n const userVaultTVL = Number(formatUnits(totalShares, decimals)) * price;\n\n if (userVaultTVL > 0) {\n const existingPosition = userPositionsById[config.vault.id];\n if (existingPosition) {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: existingPosition.userBalance + totalShares,\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: totalShares,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n } else if (config.isMorphoMarket) {\n const positionResult = results[callIndex++];\n const position = positionResult?.status === \"success\" ? positionResult.result : null;\n if (position) {\n const positionData = position as [bigint, bigint, bigint];\n const collateralBalance = positionData[2];\n const price = prices.prices[config.vaultChain]?.[config.tokenAddress] || 0;\n const userVaultTVL =\n Number(formatUnits(collateralBalance, config.tokenDecimals)) * price;\n\n if (userVaultTVL > 0) {\n const existingPosition = userPositionsById[config.vault.id];\n if (existingPosition) {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: existingPosition.userBalance + collateralBalance,\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: collateralBalance,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n } else {\n // Process ERC20 results\n const balanceResult = results[callIndex++];\n const balance = balanceResult?.status === \"success\" ? balanceResult.result : null;\n if (balance) {\n const price = prices.prices[config.vaultChain]?.[config.tokenAddress] || 0;\n const decimals = config.tokenDecimals || 18;\n const userVaultTVL = Number(formatUnits(balance as bigint, decimals)) * price;\n\n if (userVaultTVL > 0) {\n const existingPosition = userPositionsById[config.vault.id];\n if (existingPosition) {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: existingPosition.userBalance + (balance as bigint),\n userTVL: existingPosition.userTVL + userVaultTVL,\n };\n } else {\n userPositionsById[config.vault.id] = {\n vault: config.vault,\n userBalance: balance as bigint,\n userTVL: userVaultTVL,\n };\n }\n userTotalTVL += userVaultTVL;\n }\n }\n }\n }\n } catch {\n // Continue with other chains even if one fails\n console.error(\"❌ Error processing chain\", chainId);\n }\n }\n\n const userPositions = Object.values(userPositionsById);\n\n return {\n userPositions,\n userTotalTVL,\n };\n },\n enabled: !!prices && !!userAddress,\n staleTime: 30_000, // 30 seconds\n gcTime: 60_000, // 1 minute\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n });\n\n const invalidateUserPositions = useCallback(async () => {\n await refetchUserPositions();\n }, [refetchUserPositions]);\n\n const result = useMemo(\n () => ({\n userPositions: positions?.userPositions ?? [],\n userTotalTVL: positions?.userTotalTVL ?? 0,\n isLoading,\n error: queryError,\n invalidateUserPositions,\n }),\n [positions, isLoading, queryError, invalidateUserPositions]\n );\n\n return result;\n}\n","import { useCallback, useMemo } from \"react\";\nimport { partnersHooks } from \"./api/partners/hooks\";\nimport { KATANA_CAMPAIGN_NAME, TAC_CAMPAIGN_NAME } from \"./shared-constants\";\nimport { TACCampaignEndDate } from \"./tac/constants\";\nimport { KatanaCampaignEndDate } from \"./Katana/constants\";\n\nexport function useCampaign(name: string) {\n const { data: vaultCampaign, isLoading, refetch: refetchVaultCampaign } = partnersHooks.useCampaignByName(name);\n\n const getIncentiveById = useCallback(\n (id: string) => {\n if (!vaultCampaign) return null;\n if (name === TAC_CAMPAIGN_NAME) {\n const mainIncentives = vaultCampaign.campaign.tacConfig?.incentives;\n const additionalIncentives = vaultCampaign.campaign.tacConfig?.additionalIncentives;\n const allIncentives = [...(mainIncentives ?? []), ...(additionalIncentives ?? [])];\n return allIncentives.find((incentive) => incentive.id === id) ?? null;\n }\n if (name === KATANA_CAMPAIGN_NAME) {\n const mainIncentives = vaultCampaign.campaign.katanaConfig?.incentives;\n const additionalIncentives = vaultCampaign.campaign.katanaConfig?.additionalIncentives;\n const allIncentives = [...(mainIncentives ?? []), ...(additionalIncentives ?? [])];\n return allIncentives.find((incentive) => incentive.id === id) ?? null;\n }\n return null;\n },\n [vaultCampaign, name],\n );\n\n const getVaultById = useCallback(\n (id: string | undefined | null) => {\n if (!vaultCampaign) return null;\n if (!id) return null;\n\n return vaultCampaign.vaults.find((vault) => vault.id === id);\n },\n [vaultCampaign],\n );\n\n const groups = useMemo(() => {\n if (vaultCampaign?.campaign.tacConfig) {\n return vaultCampaign.campaign.tacConfig.groups;\n }\n if (vaultCampaign?.campaign.katanaConfig) {\n return vaultCampaign.campaign.katanaConfig.groups;\n }\n return [];\n }, [vaultCampaign]);\n\n const campaignEndDate = useMemo(() => {\n if (name === TAC_CAMPAIGN_NAME) {\n return TACCampaignEndDate;\n }\n if (name === KATANA_CAMPAIGN_NAME) {\n return KatanaCampaignEndDate;\n }\n return \"\";\n }, [name]);\n\n const invalidateQueries = useCallback(async () => {\n await refetchVaultCampaign();\n }, [refetchVaultCampaign]);\n\n return {\n campaignName: name,\n vaultCampaign,\n campaign: vaultCampaign?.campaign,\n vaults: vaultCampaign?.vaults ?? [],\n groups,\n getIncentiveById,\n getVaultById,\n invalidateQueries,\n isLoading,\n campaignEndDate,\n };\n}\n\nexport function useTacCampaign() {\n return useCampaign(TAC_CAMPAIGN_NAME);\n}\n\nexport function useKatanaCampaign() {\n return useCampaign(KATANA_CAMPAIGN_NAME);\n}","import type { UseQueryResult } from \"@tanstack/react-query\";\nimport { useQueries, useQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport _ from \"lodash\";\nimport type { Hooks } from \"./types\";\nimport type { Any } from \"../../utils\";\n\ntype MapMap<Map extends Record<string, Hooks.Item>> = {\n [K in keyof Map]: Map[K] extends Hooks.Item ? Hooks.Fn<Map[K]> : never;\n};\n\ninterface Multicall<Map extends Record<string, Hooks.Item>> {\n multicall: {\n <const List extends [keyof Map, ...any[]][]>(list: List): UseQueryResult<any, any>[];\n };\n item: <K extends keyof Map>(key: K, ...args: Parameters<MapMap<Map>[K]>) => [K, ...Parameters<MapMap<Map>[K]>];\n}\n\nconst appVersion = typeof __COMMIT_HASH__ !== \"undefined\" ? __COMMIT_HASH__ : \"default-version\";\n\nexport function buildHooks<Map extends Record<string, Hooks.Item>>(\n map: Map,\n defaults: Hooks.Options = {},\n): MapMap<Map> & Multicall<Map> {\n const result = {} as Record<string, Hooks.Fn<Hooks.Item>>;\n\n for (const key in map) {\n const hookItem = map[key];\n const rawKey = key;\n\n result[key] = function (...args) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useQuery(\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useMemo(\n () => query(hookItem, rawKey, defaults, args),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...args],\n ),\n );\n };\n }\n\n const multicall: Multicall<Map> = {\n multicall(list) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useQueries({\n // eslint-disable-next-line react-hooks/rules-of-hooks\n queries: useMemo(() => list.map(([rawKey, ...args]) => query(map[rawKey], rawKey, defaults, args)), [list]),\n });\n },\n item<K extends keyof Map>(key: K, ...args: Parameters<MapMap<Map>[K]>) {\n return [key, ...args];\n },\n };\n\n return Object.assign(result, multicall) as Any;\n}\n\nfunction query(\n hookItem: Hooks.Item<Hooks.DefaultFn>,\n rawKey: string | number | symbol,\n defaults: Hooks.Options,\n args: Any[],\n) {\n const key =\n typeof hookItem.key === \"function\" ? [appVersion, ...hookItem.key(...args)] : [rawKey, appVersion, ...args];\n\n const options = _.defaults(typeof hookItem.options === \"function\" ? hookItem.options(...args) : {}, defaults);\n\n const fn = \"fn\" in hookItem ? hookItem.fn : hookItem;\n\n return {\n queryKey: key,\n queryFn: () => fn(...args),\n ...options,\n };\n}\n\nexport function item<F extends Hooks.DefaultFn>(item: F | Hooks.Item<F>): Hooks.Item<F> {\n if (\"fn\" in item) {\n return item;\n }\n\n return {\n fn: item,\n };\n}\n","import { z } from \"zod\";\nimport { buildApi, item } from \"../builder/api\";\nimport { fetchBackend } from \"../backends/fetch\";\nimport {\n getCampaignSchema,\n getCampaignsSchema,\n getUserCampaignIncentivesSchema,\n getUserCampaignVaultWithdrawalRequestsSchema,\n} from \"./campaignSchemas\";\nimport {\n getOrganizationCampaignsSchema,\n getOrganizationDealsSchema,\n getOrganizationsSchema,\n} from \"./organizationSchemas\";\nimport { getDealsSchema } from \"./dealSchemas\";\nimport { getPaymentsSchema } from \"./paymentSchemas\";\nimport { getTreasurySchema } from \"./treasurySchemas\";\n\nconst root = \"https://api.turtle.xyz\";\n\nexport const partnersApi = buildApi(\n fetchBackend,\n {\n root,\n },\n {\n getOrganizations: item({\n key: \"/turtle/organizations\",\n result: getOrganizationsSchema,\n }),\n getOrganizationDeals: item({\n input: z.string(),\n key: (organizationId: string) => `/turtle/organizations/${organizationId}/deals`,\n result: getOrganizationDealsSchema,\n }),\n getOrganizationCampaigns: item({\n input: z.string(),\n key: (organizationId: string) => `/turtle/organizations/${organizationId}/campaigns`,\n result: getOrganizationCampaignsSchema,\n }),\n getDeals: item({\n key: \"/turtle/deals\",\n result: getDealsSchema,\n }),\n getPayments: item({\n key: \"/turtle/payments\",\n result: getPaymentsSchema,\n }),\n getCampaigns: item({\n key: \"/turtle/campaigns\",\n result: getCampaignsSchema,\n }),\n getCampaignByName: item({\n input: z.string(),\n key: (name: string) => `/turtle/campaigns/${name}`,\n result: getCampaignSchema,\n }),\n getUserCampaignIncentives: item({\n input: z.object({\n campaignId: z.string(),\n userAddress: z.string(),\n }),\n key: ({ campaignId, userAddress }) =>\n `/turtle/campaigns/${campaignId}/incentives/${userAddress}`,\n result: getUserCampaignIncentivesSchema,\n }),\n getUserCampaignVaultWithdrawalRequests: item({\n input: z.object({\n campaignId: z.string(),\n userAddress: z.string(),\n }),\n key: ({ campaignId, userAddress }) =>\n `/turtle/campaigns/${campaignId}/vaults/withdrawal_requests/${userAddress}`,\n result: getUserCampaignVaultWithdrawalRequestsSchema,\n }),\n getGeoCheck: item({\n key: \"/turtle/geocheck\",\n result: z.object({ canInteract: z.boolean() }),\n }),\n getTreasury: item({\n input: z.object({\n oldSnapshots: z.boolean().optional(),\n }),\n key: ({ oldSnapshots = false }) => `/turtle/treasury?oldSnapshots=${oldSnapshots}`,\n result: getTreasurySchema,\n }),\n }\n);\n","import type { Address, Hex } from \"viem\";\nimport { isAddress, isHex } from \"viem\";\nimport { z } from \"zod\";\n\nexport const numz = {\n u8() {\n return z.number().int().min(0).max(256);\n },\n};\n\nexport const ethz = {\n address() {\n return z.custom<Address>(isAddress, \"Invalid address\");\n },\n hex() {\n return z.custom<Hex>(isHex, \"Invalid hex\");\n },\n};\n\nexport function zodKeys<T extends z.AnyZodObject>(obj: T): (keyof T[\"shape\"])[] {\n return Object.keys(obj.shape);\n}\n\nexport function parseZodArray<T extends z.ZodTypeAny>(\n validator: T,\n values: unknown[],\n log = false\n) {\n return values.reduce<z.infer<T>[]>((acc, item) => {\n try {\n acc.push(validator.parse(item));\n } catch (error) {\n if (log) console.error(error);\n }\n\n return acc;\n }, []);\n}\n","const timeScales = {\n ms: 1,\n secs: 1 * 1000,\n mins: 1 * 1000 * 60,\n hours: 1 * 1000 * 60 * 60,\n days: 1 * 1000 * 60 * 60 * 24,\n weeks: 1 * 1000 * 60 * 60 * 24 * 7,\n months: 1 * 1000 * 60 * 60 * 24 * 30,\n years: 1 * 1000 * 60 * 60 * 24 * 365,\n} as const;\n\nexport const ms = Object.fromEntries(\n Object.entries(timeScales).map(([key, value]) => [key, (num: number) => num * value]),\n) as {\n [K in keyof typeof timeScales]: (value: number) => number;\n};\n","export function isArray<T>(value: T | T[]): value is T[] {\n return Array.isArray(value);\n}\n\nexport function isReadonlyArray<T>(value: T | readonly T[]): value is readonly T[] {\n return Array.isArray(value);\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import {\n type Chain,\n arbitrum,\n avalanche,\n base,\n berachain,\n blast,\n boba,\n bsc,\n celo,\n fantom,\n fraxtal,\n gnosis,\n linea,\n mainnet,\n mantle,\n metis,\n mode,\n optimism,\n polygon,\n polygonZkEvm,\n scroll,\n swellchain,\n zksync,\n} from \"wagmi/chains\";\nimport { katana } from \"../chains/katana\";\n\nconst getEtherscanUrl = (walletId: string, explorerUrl: string) => {\n return `${explorerUrl}/address/${walletId}`;\n};\n\nconst chainMapping: Record<string, Chain> = {\n xdai: gnosis,\n frax: fraxtal,\n blast,\n boba,\n eth: mainnet,\n ethereum: mainnet,\n matic: polygon,\n arb: arbitrum,\n avax: avalanche,\n bsc,\n celo,\n ftm: fantom,\n op: optimism,\n scrl: scroll,\n mnt: mantle,\n mode,\n pze: polygonZkEvm,\n era: zksync,\n base,\n linea,\n metis,\n swell: swellchain,\n bera: berachain,\n katana,\n};\n\nexport const debankChainIdToExplorerURL = (chainId: string, walletId: string) => {\n if (chainId === \"peaq\") {\n return `https://peaq.subscan.io/reward?address=${walletId}&category=Reward&time_dimension=date&page=1`;\n }\n\n const chain = chainMapping[chainId];\n if (!chain?.blockExplorers?.default?.url) {\n return null;\n }\n\n return getEtherscanUrl(walletId, chain.blockExplorers.default.url);\n};\n","import { defineChain } from \"viem\";\n\nexport const katana = defineChain({\n id: 747474,\n name: \"Katana\",\n nativeCurrency: {\n decimals: 18,\n name: \"ETH\",\n symbol: \"ETH\",\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.katana.network\"],\n },\n public: {\n http: [\"https://rpc.katana.network\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Katana Explorer\",\n url: \"https://explorer.katanarpc.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xca11bde05977b3631167028862be2a173976ca11\",\n blockCreated: 1,\n },\n },\n});","import type { Any } from \"./types\";\n\nexport function runMaybeFn<T, Args extends Any[]>(fn: T | ((...args: Args) => T), ...args: Args): T {\n if (typeof fn === \"function\") {\n return (fn as (...args: Args) => T)(...args);\n } else {\n return fn;\n }\n}\n","export interface JwtPayload {\n exp: number;\n jti?: string;\n type?: string;\n user_id?: string;\n}\n\nexport function decodeJwt(token: string): JwtPayload | null {\n try {\n const parts = token.split(\".\");\n if (parts.length !== 3) return null;\n\n const payload = parts[1];\n const decoded = JSON.parse(atob(payload.replace(/-/g, \"+\").replace(/_/g, \"/\")));\n\n return decoded;\n } catch (error) {\n console.error(\"Error decoding JWT:\", error);\n return null;\n }\n}\n\nexport function getTokenExpirationDate(token: string): Date | null {\n const payload = decodeJwt(token);\n if (!payload?.exp) return null;\n\n return new Date(payload.exp * 1000); // Convert Unix timestamp to Date\n}\n","import type { ILogObj } from \"tslog\";\nimport { Logger } from \"tslog\";\n\nconst logger: Logger<ILogObj> = new Logger({ name: \"turtle\" });\n\nexport const log = {\n info: logger.info.bind(logger),\n warn: logger.warn.bind(logger),\n error: logger.error.bind(logger),\n debug: logger.debug.bind(logger),\n trace: logger.trace.bind(logger),\n};\n","import type { Obj } from \"./types\";\n\nexport function keys<T extends Obj>(obj: T): Array<keyof T> {\n return Object.keys(obj) as Array<keyof T>;\n}\n","import type { PersistedClient, Persister } from \"@tanstack/react-query-persist-client\";\n\n// Only import idb-keyval if we're not in Brave browser\nlet idbKeyval: typeof import(\"idb-keyval\") | null = null;\n\nif (typeof navigator === \"undefined\" || !navigator.userAgent.includes(\"Brave\")) {\n try {\n // Use dynamic import instead of require\n import(\"idb-keyval\")\n .then((module) => {\n idbKeyval = module;\n })\n .catch((err) => {\n console.warn(\"[Storage] Failed to load idb-keyval:\", err);\n });\n } catch (err) {\n console.warn(\"[Storage] Failed to load idb-keyval:\", err);\n }\n}\n\n/**\n * Check if IndexedDB is available and accessible\n */\nfunction isIndexedDBAvailable(): boolean {\n try {\n // Check if IndexedDB is supported\n if (typeof window === \"undefined\" || !window.indexedDB) {\n return false;\n }\n\n // For Brave and other privacy-focused browsers, we'll be more conservative\n // and assume IndexedDB might be blocked, so we'll rely on the actual\n // operations to determine availability\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Clear all storage (both IndexedDB and localStorage)\n */\nexport async function clearAllStorage(): Promise<void> {\n try {\n // Clear IndexedDB if available\n if (isIndexedDBAvailable() && idbKeyval) {\n try {\n // Get all keys from IndexedDB\n const allKeys = await idbKeyval.keys();\n for (const key of allKeys) {\n if (typeof key === \"string\" && key.startsWith(\"turtle-query-\")) {\n await idbKeyval.del(key);\n }\n }\n } catch (idbErr) {\n console.warn(\"[Storage] Failed to clear IndexedDB:\", idbErr);\n // If IndexedDB fails, we'll just clear localStorage\n }\n }\n } catch (err) {\n console.warn(\"[Storage] IndexedDB not available:\", err);\n }\n\n try {\n // Clear localStorage entries that start with our prefix\n const localStorageKeys = Object.keys(localStorage);\n for (const key of localStorageKeys) {\n if (key.startsWith(\"turtle-query-\")) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to clear localStorage:\", err);\n }\n}\n\n/**\n * Creates a localStorage-only persister for better compatibility with privacy-focused browsers\n */\nfunction createLocalStoragePersister(idbValidKey: IDBValidKey = \"reactQuery\"): Persister {\n const localStorageKey = `turtle-query-${String(idbValidKey)}`;\n\n return {\n persistClient: async (client: PersistedClient) => {\n const json = JSON.stringify(client, (_, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n return value;\n });\n\n try {\n localStorage.setItem(localStorageKey, json);\n } catch (err) {\n console.warn(\"[localStorage] Failed to persist client:\", err);\n }\n },\n async restoreClient() {\n try {\n const json = localStorage.getItem(localStorageKey) || undefined;\n if (!json) return undefined;\n\n const parsed = JSON.parse(json, (_, value) => {\n if (typeof value === \"string\" && value.match(/^\\d+n$/) && !Number.isNaN(Number(value.slice(0, -1)))) {\n return BigInt(value.slice(0, -1));\n }\n return value;\n }) as PersistedClient;\n\n return parsed;\n } catch (err) {\n console.warn(\"[localStorage] Failed to restore client:\", err);\n return undefined;\n }\n },\n removeClient: async () => {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (err) {\n console.warn(\"[localStorage] Failed to remove client:\", err);\n }\n },\n };\n}\n\n/**\n * Creates an Indexed DB persister with fallback to localStorage\n * @see https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport function createIDBPersister(idbValidKey: IDBValidKey = \"reactQuery\") {\n // For Brave and other privacy-focused browsers, use localStorage-only persister\n // to avoid IndexedDB issues\n if (typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"Brave\")) {\n return createLocalStoragePersister(idbValidKey);\n }\n\n const localStorageKey = `turtle-query-${String(idbValidKey)}`;\n let useIndexedDB = isIndexedDBAvailable();\n\n return {\n persistClient: async (client: PersistedClient) => {\n const json = JSON.stringify(client, (_, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n return value;\n });\n\n try {\n if (useIndexedDB) {\n await idbKeyval?.set(idbValidKey, json);\n } else {\n // Fallback to localStorage\n localStorage.setItem(localStorageKey, json);\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to persist client:\", err);\n // Disable IndexedDB for future operations if it fails\n useIndexedDB = false;\n // Try localStorage as fallback\n try {\n localStorage.setItem(localStorageKey, json);\n } catch (localStorageErr) {\n console.warn(\"[localStorage] Failed to persist client:\", localStorageErr);\n }\n }\n },\n async restoreClient() {\n let json: string | undefined;\n\n try {\n if (useIndexedDB) {\n json = await idbKeyval?.get<string>(idbValidKey);\n } else {\n // Fallback to localStorage\n json = localStorage.getItem(localStorageKey) || undefined;\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to restore client:\", err);\n // Disable IndexedDB for future operations if it fails\n useIndexedDB = false;\n // Try localStorage as fallback\n try {\n json = localStorage.getItem(localStorageKey) || undefined;\n } catch (localStorageErr) {\n console.warn(\"[localStorage] Failed to restore client:\", localStorageErr);\n return undefined;\n }\n }\n\n if (!json) return undefined;\n\n try {\n const parsed = JSON.parse(json, (_, value) => {\n if (typeof value === \"string\" && value.match(/^\\d+n$/) && !Number.isNaN(Number(value.slice(0, -1)))) {\n return BigInt(value.slice(0, -1));\n }\n return value;\n }) as PersistedClient;\n\n return parsed;\n } catch (err) {\n console.error(\"Error parsing persisted client:\", err);\n return undefined;\n }\n },\n removeClient: async () => {\n try {\n if (useIndexedDB) {\n await idbKeyval?.del(idbValidKey);\n } else {\n // Fallback to localStorage\n localStorage.removeItem(localStorageKey);\n }\n } catch (err) {\n console.warn(\"[Storage] Failed to remove client:\", err);\n // Disable IndexedDB for future operations if it fails\n useIndexedDB = false;\n // Try localStorage as fallback\n try {\n localStorage.removeItem(localStorageKey);\n } catch (localStorageErr) {\n console.warn(\"[localStorage] Failed to remove client:\", localStorageErr);\n }\n }\n },\n } as Persister;\n}\n","export function joinUrl(...parts: string[]): string {\n if (parts.length < 2) return parts[0] || \"\";\n\n const cleanParts = parts.map((part, index) => {\n if (index !== 0) {\n return part.replace(/^\\/+/, \"\");\n }\n return part.replace(/\\/+$/, \"\");\n });\n\n return cleanParts.join(\"/\");\n}\n","import type { z } from \"zod\";\nimport type { Api } from \"./types\";\nimport type { Any } from \"../../utils\";\nimport { log, runMaybeFn } from \"../../utils\";\n\nexport function buildApi<Back extends Api.Backend, Map extends Record<string, Api.Item<Back>>>(\n backend: Back,\n config: Api.BackendConfig<Back>,\n map: Map,\n): {\n [K in keyof Map]: Map[K] extends Api.Item<Back> ? Api.Fn<Back, Map[K]> : never;\n} {\n const result = {} as Record<string, Api.Fn<Back, Api.Item<Back>>>;\n\n for (const key in map) {\n const apiItem = map[key];\n\n result[key] = async function fn(...args: unknown[]) {\n const rawInput = args[0] ?? null;\n const input = apiItem.input?.parse(rawInput);\n\n const key = runMaybeFn(apiItem.key, input);\n const options = runMaybeFn(apiItem.options, input);\n\n const result = await backend.get(config, options, key, input);\n\n try {\n const mappedResult = apiItem.map ? apiItem.map(result) : result;\n const value = (apiItem.result ?? backend.defaultResult).parse(mappedResult);\n\n return value;\n } catch (e: unknown) {\n const error = typeof e === \"object\" && e && \"message\" in e ? `${e.message}` : \"\";\n\n log.error(error);\n throw new Error(error);\n }\n };\n }\n\n return result as Any;\n}\n\nexport function item<\n Back extends Api.Backend,\n Input extends z.ZodTypeAny,\n Result extends z.ZodTypeAny,\n U extends Any = Extract<z.infer<Result>, Any>,\n>(item: Api.Item<Back, Input, Result, U>): Api.Item<Back, Input, Result, U> {\n return item;\n}\n","import { z } from \"zod\";\nimport _ from \"lodash\";\nimport type { Api } from \"../builder/types\";\nimport { isReadonlyArray, joinUrl, keys } from \"../../utils\";\nimport type { Any, Omit } from \"../../utils\";\nimport { useAuthTokensStore } from \"../../stores\";\n\nexport const methods = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n delete: \"delete\",\n} as const;\n\nexport type Method = keyof typeof methods;\n\ninterface Config {\n root: string;\n defaults?: Options;\n}\n\ninterface Options extends Omit<RequestInit, \"method\" | \"body\" | \"headers\"> {\n method?: Method;\n headers?: Record<string, string>;\n body?: Any;\n}\n\ninterface Init extends Omit<Options, \"headers\" | \"method\"> {\n headers: Record<string, string>;\n method: string;\n}\n\ntype MaybeOptions = Options | ((value: Any) => Options);\n\nconst defaultResult = z.string();\n\nexport type FetchBackend = Api.Backend<Config, string, MaybeOptions | readonly MaybeOptions[], typeof defaultResult>;\n\nexport const fetchBackend: FetchBackend = {\n defaultResult,\n async get(config, rawOptions = {}, key, input) {\n const path = key;\n const url = joinUrl(config.root, path);\n\n const options = [];\n\n if (config.defaults) {\n options.push(config.defaults);\n }\n\n options.push(...(isReadonlyArray(rawOptions) ? rawOptions : [rawOptions]));\n\n const init = options.reduce<Init>(\n (acc, cur) => {\n return _.merge(acc, typeof cur === \"function\" ? cur(input) : cur);\n },\n {\n method: \"get\",\n headers: {},\n body: undefined,\n },\n );\n\n init.method = init.method.toUpperCase();\n\n if (init.body) {\n if (init.method === \"GET\") {\n throw new Error(\"GET request cannot have a body\");\n }\n\n init.headers[\"Content-Type\"] = \"application/json\";\n init.body = JSON.stringify(init.body);\n }\n\n const response = await fetch(url, init);\n const text = await response.text();\n\n let parsedResponse;\n try {\n parsedResponse = JSON.parse(text);\n } catch {\n parsedResponse = text;\n }\n\n if (response.status !== 200) {\n if (typeof parsedResponse === \"object\" && parsedResponse !== null && \"error\" in parsedResponse) {\n return parsedResponse;\n }\n throw new Error(text);\n }\n\n return parsedResponse;\n },\n};\n\nexport const methodOptions = keys(methods).reduce(\n (acc, method) => {\n acc[method] = () => ({ method });\n return acc;\n },\n {} as unknown as Record<Method, <T>(value: T) => Options>,\n);\n\nexport function simpleJson<T>(value: T) {\n return {\n body: value,\n } as const satisfies Options;\n}\n\nexport function simpleAuthorization(key: string) {\n return function <T>(value: T) {\n return {\n headers: {\n Authorization: value[key as keyof T] as string,\n },\n } as const satisfies Options;\n };\n}\n\nexport function autoAuthorization() {\n return function () {\n const accessToken = useAuthTokensStore.getState().getAccessToken();\n\n if (!accessToken) {\n return {};\n }\n\n return {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n } as const satisfies Options;\n };\n}\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\nimport type { z } from \"zod\";\nimport { getTokenExpirationDate } from \"../utils\";\nimport type { authTokensSchema } from \"../api/partners/authSchemas\";\n\ntype AuthTokens = z.infer<typeof authTokensSchema>;\n\ninterface AuthTokensWithExpiryDate {\n accessToken: string;\n accessTokenExpiresAt: string;\n refreshToken: string | null;\n refreshTokenExpiresAt: string | null;\n}\n\ninterface AuthTokensStore {\n tokens: AuthTokensWithExpiryDate | null;\n currentAddress: string | null;\n\n setTokens: (address: string, tokens: AuthTokens) => void;\n getTokens: () => AuthTokensWithExpiryDate | null;\n clearTokens: () => void;\n isAuthenticated: () => boolean;\n\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n}\n\nexport const useAuthTokensStore = create<AuthTokensStore>()(\n persist(\n (set, get) => ({\n tokens: null,\n currentAddress: null,\n\n setTokens: (address: string, tokens: AuthTokens) => {\n const accessTokenExpiresAt = getTokenExpirationDate(tokens.accessToken)?.toISOString() || \"\";\n const refreshTokenExpiresAt = tokens.refreshToken\n ? getTokenExpirationDate(tokens.refreshToken)?.toISOString() || null\n : null;\n\n const authTokens: AuthTokensWithExpiryDate = {\n accessToken: tokens.accessToken,\n accessTokenExpiresAt,\n refreshToken: tokens.refreshToken,\n refreshTokenExpiresAt,\n };\n\n set({\n tokens: authTokens,\n currentAddress: address.toLowerCase(),\n });\n },\n\n getTokens: () => {\n return get().tokens;\n },\n\n clearTokens: () => {\n set({\n tokens: null,\n currentAddress: null,\n });\n },\n\n isAuthenticated: () => {\n return get().tokens !== null;\n },\n\n getAccessToken: () => {\n const { tokens } = get();\n return tokens?.accessToken || null;\n },\n\n getRefreshToken: () => {\n const { tokens } = get();\n return tokens?.refreshToken || null;\n },\n }),\n {\n name: \"turtle:auth-tokens\",\n // Excluding functions from persistence\n partialize: (state) => ({ tokens: state.tokens, currentAddress: state.currentAddress }),\n },\n ),\n);\n","import { z } from \"zod\";\nimport { ethz } from \"../../utils\";\nimport { earnConfigSchema } from \"../partners/dealSchemas\";\n\nexport const contractConfig = z.object({\n address: ethz.address(),\n abi: z.any(),\n});\n\nexport const vaultTokenSchema = z.object({\n address: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n});\n\nexport const vedaWithdrawalRequestMetadataSchema = z.object({\n amountOfAssets: z.number(),\n amountOfShares: z.number(),\n assetOut: ethz.address(),\n creationTime: z.number(),\n nonce: z.number(),\n secondsToDeadline: z.number(),\n secondsToMaturity: z.number(),\n user: ethz.address(),\n});\n\nexport const lagoonWithdrawalClaimMetadataSchema = z.object({\n claimableAmount: z.string(),\n});\n\nexport const yieldFiWithdrawalRequestMetadataSchema = z.object({\n receiptId: z.number(),\n});\n\nexport const vaultWithdrawalRequestSchema = z.object({\n vaultId: z.string(),\n provider: z.string(),\n userAddress: ethz.address(),\n createdAt: z.string(),\n maturesAt: z.string(),\n expiresAt: z.string().optional(),\n status: z.string(),\n inputToken: vaultTokenSchema,\n amountIn: z.string(),\n outputToken: vaultTokenSchema,\n minAmountOut: z.string(),\n vedaWithdrawalRequestMetadata: vedaWithdrawalRequestMetadataSchema.optional(),\n lagoonWithdrawalClaimMetadata: lagoonWithdrawalClaimMetadataSchema.optional(),\n yieldFiWithdrawalRequestMetadata: yieldFiWithdrawalRequestMetadataSchema.optional(),\n});\n\nexport const getUserCampaignVaultWithdrawalRequestsSchema = z.object({\n withdrawalRequests: z.array(vaultWithdrawalRequestSchema),\n});\n\nexport const getUserCampaignIncentivesSchema = z.object({\n totalValueUSD: z.number(),\n vaultIncentives: z\n .array(\n z.object({\n vaultId: z.string(),\n address: ethz.address(),\n name: z.string(),\n tooltip: z.string(),\n iconUrl: z.string(),\n totalAmount: z.number(),\n adjustedAmount: z.number(),\n penalty: z.number(),\n phase: z.string(),\n sharesNeeded: z.number(),\n priceUSD: z.number(),\n valueUSD: z.number(),\n adjustedValueUSD: z.number(),\n isDepositBonus: z.boolean().optional().default(false),\n }),\n )\n .optional(),\n});\n\nexport const campaignGroupSchema = z.object({\n name: z.string(),\n description: z.string(),\n rank: z.number().optional(),\n tvlUSD: z.number(),\n});\n\nexport const baseIncentiveSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n tooltip: z.string().optional(),\n iconUrl: z.string().optional(),\n apr: z.number().optional(),\n estApr: z.boolean().optional(),\n dailyRewardRate: z.number().optional(),\n phase: z.string().optional(),\n});\n\nexport const detailedIncentiveSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n tooltip: z.string().optional(),\n iconUrl: z.string().optional(),\n apr: z.number().optional(),\n estApr: z.boolean().optional(),\n dailyRewardRate: z.number().optional(),\n address: ethz.address().optional(),\n supply: z.number().optional(),\n priceUSD: z.number().optional(),\n amount: z.number().optional(),\n distributed: z.number().optional(),\n remaining: z.number().optional(),\n estFDV: z.record(z.string(), z.number()).optional(),\n phase: z.string().optional(),\n});\n\nexport const tacCampaignConfigSchema = z.object({\n totalTvlUSD: z.number(),\n groups: z.array(campaignGroupSchema),\n incentives: z.array(detailedIncentiveSchema).optional(),\n additionalIncentives: z.array(baseIncentiveSchema).optional(),\n});\n\nexport const katanaCampaignConfigSchema = z.object({\n totalTvlUSD: z.number(),\n groups: z.array(campaignGroupSchema),\n incentives: z.array(detailedIncentiveSchema).optional(),\n additionalIncentives: z.array(baseIncentiveSchema).optional(),\n});\n\nexport const tacVaultConfigSchema = z.object({\n group: z.string(),\n exposure: z.array(z.string()),\n incentives: z.array(baseIncentiveSchema).nullable().optional().default([]),\n});\n\nexport const katanaVaultConfigSchema = z.object({\n group: z.string(),\n exposure: z.array(z.string()),\n incentives: z.array(baseIncentiveSchema).nullable().optional().default([]),\n});\n\nexport const depositAssetSchema = z.object({\n symbol: z.string(),\n name: z.string(),\n address: z.string(),\n decimals: z.number(),\n iconUrl: z.string(),\n priceUSD: z.number(),\n});\n\nexport const vedaVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n tellerWithLayerZero: ethz.address(),\n boringVault: ethz.address(),\n boringOnChainQueue: ethz.address(),\n accountant: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const vedaVaultProviderConfigSchema = z.object({\n deployments: z.array(vedaVaultDeploymentSchema),\n});\n\nexport const upshiftVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const upshiftVaultProviderConfigSchema = z.object({\n deployments: z.array(upshiftVaultDeploymentSchema),\n});\n\nexport const midasVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n token: ethz.address(),\n depositVault: ethz.address(),\n redemptionVault: ethz.address(),\n baseAsset: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const midasVaultProviderConfigSchema = z.object({\n deployments: z.array(midasVaultDeploymentSchema),\n});\n\nexport const lagoonVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const lagoonVaultProviderConfigSchema = z.object({\n deployments: z.array(lagoonVaultDeploymentSchema),\n});\n\nexport const concreteVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const concreteVaultProviderConfigSchema = z.object({\n deployments: z.array(concreteVaultDeploymentSchema),\n});\n\nexport const cianVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const cianVaultProviderConfigSchema = z.object({\n deployments: z.array(cianVaultDeploymentSchema),\n});\n\nexport const yieldfiVaultDeploymentSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const yieldfiVaultProviderConfigSchema = z.object({\n deployments: z.array(yieldfiVaultDeploymentSchema),\n});\n\nexport const curveDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n pool: ethz.address(),\n gauge: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const curveConfigSchema = z.object({\n deployments: z.array(curveDeploymentConfigSchema),\n});\n\nexport const stakeDAODeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n gauge: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const stakeDAOConfigSchema = z.object({\n deployments: z.array(stakeDAODeploymentConfigSchema),\n});\n\nexport const morphoVaultDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const morphoVaultConfigSchema = z.object({\n deployments: z.array(morphoVaultDeploymentConfigSchema),\n});\n\nexport const morphoMarketDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n collateralToken: z.object({\n address: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n }),\n depositUrl: z.string().optional(),\n morpho: ethz.address(),\n marketId: z.string(),\n});\n\nexport const morphoMarketConfigSchema = z.object({\n deployments: z.array(morphoMarketDeploymentConfigSchema),\n});\n\nexport const yearnVaultDeploymentConfigSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n vault: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n depositUrl: z.string().optional(),\n depositAssets: z.array(depositAssetSchema),\n});\n\nexport const yearnConfigSchema = z.object({\n deployments: z.array(yearnVaultDeploymentConfigSchema),\n});\n\nexport const campaignVaultSchema = z.object({\n id: z.string(),\n name: z.string(),\n shortName: z.string(),\n description: z.string(),\n iconUrl: z.string(),\n campaign: z.string(),\n curator: z.string(),\n provider: z.string(),\n tvlUSD: z.number(),\n depositDisabled: z.boolean(),\n depositDisabledReason: z.string().optional(),\n withdrawalDisabled: z.boolean(),\n withdrawalDisabledReason: z.string().optional(),\n tacCampaignConfig: tacVaultConfigSchema.nullable().optional(),\n katanaCampaignConfig: katanaVaultConfigSchema.nullable().optional(),\n earnConfig: earnConfigSchema.optional(),\n vedaProviderConfig: vedaVaultProviderConfigSchema.optional(),\n upshiftProviderConfig: upshiftVaultProviderConfigSchema.optional(),\n midasProviderConfig: midasVaultProviderConfigSchema.optional(),\n lagoonProviderConfig: lagoonVaultProviderConfigSchema.optional(),\n concreteProviderConfig: concreteVaultProviderConfigSchema.optional(),\n cianProviderConfig: cianVaultProviderConfigSchema.optional(),\n yieldfiProviderConfig: yieldfiVaultProviderConfigSchema.optional(),\n curveProviderConfig: curveConfigSchema.optional(),\n morphoVaultProviderConfig: morphoVaultConfigSchema.optional(),\n morphoMarketProviderConfig: morphoMarketConfigSchema.optional(),\n stakeDAOProviderConfig: stakeDAOConfigSchema.optional(),\n yearnProviderConfig: yearnConfigSchema.optional(),\n});\n\nexport const getCampaignSchema = z.object({\n campaign: z.object({\n id: z.string(),\n organizationId: z.string(),\n name: z.string(),\n description: z.string(),\n iconUrl: z.string(),\n status: z.string(),\n startedAt: z.string().optional(),\n endedAt: z.string().optional(),\n tvlUSD: z.number(),\n totalUsers: z.number(),\n chains: z.array(z.string()),\n tacConfig: tacCampaignConfigSchema.optional(),\n katanaConfig: katanaCampaignConfigSchema.optional(),\n }),\n vaults: z.array(campaignVaultSchema),\n});\n\nexport const getCampaignsSchema = z.object({\n campaigns: z.array(getCampaignSchema),\n});\n\nexport type VaultWithdrawalRequestSchema = z.infer<typeof vaultWithdrawalRequestSchema>;\nexport type CampaignVaultSchema = z.infer<typeof campaignVaultSchema>;\nexport type CampaignSchema = z.infer<typeof getCampaignSchema>;\nexport type CampaignGroupSchema = z.infer<typeof campaignGroupSchema>;\nexport type UserCampaignIncentivesSchema = z.infer<typeof getUserCampaignIncentivesSchema>;\nexport type UserCampaignVaultWithdrawalRequestsSchema = z.infer<typeof getUserCampaignVaultWithdrawalRequestsSchema>;\nexport type TacCampaignConfigSchema = z.infer<typeof tacCampaignConfigSchema>;\nexport type KatanaCampaignConfigSchema = z.infer<typeof katanaCampaignConfigSchema>;\nexport type TacVaultConfigSchema = z.infer<typeof tacVaultConfigSchema>;\nexport type VedaWithdrawalRequestMetadataSchema = z.infer<typeof vedaWithdrawalRequestMetadataSchema>;\nexport type LagoonWithdrawalClaimMetadataSchema = z.infer<typeof lagoonWithdrawalClaimMetadataSchema>;\nexport type YieldFiWithdrawalRequestMetadataSchema = z.infer<typeof yieldFiWithdrawalRequestMetadataSchema>;\nexport type GetCampaignsSchema = z.infer<typeof getCampaignsSchema>;\nexport type CampaignDetailedIncentiveSchema = z.infer<typeof detailedIncentiveSchema>;\nexport type CampaignBaseIncentiveSchema = z.infer<typeof baseIncentiveSchema>;","import { z } from \"zod\";\nimport { ethz } from \"../../utils\";\n\nexport const yieldPctSchema = z.object({\n min: z.number(),\n max: z.number(),\n});\n\nexport const incentiveSchema = z.object({\n pointsProjectId: z.string().optional(),\n pointsDetailId: z.string().optional(),\n pointsSeasonId: z.string().optional(),\n incentiveType: z.string(),\n incentiveName: z.string(),\n turtleBoostPct: z.number().optional(),\n yieldPct: yieldPctSchema.optional(),\n tooltip: z.string().optional(),\n seasonNumber: z.number().optional(),\n tvlConfig: z\n .object({\n showDebt: z.boolean(),\n })\n .optional(),\n});\n\nexport const tvlOnlyConfigSchema = z.object({\n tvlId: z.string(),\n});\n\nexport const earnTokenSchema = z.object({\n chain: z.string(),\n chainId: z.number(),\n address: ethz.address(),\n symbol: z.string(),\n decimals: z.number(),\n});\n\nexport const earnConfigSchema = z.object({\n tokens: z.array(earnTokenSchema).optional(),\n});\n\nexport const dealSchema = z.object({\n id: z.string(),\n organizationId: z.string(),\n name: z.string(),\n title: z.string(),\n subtitle: z.string(),\n description: z.string(),\n iconUrl: z.string(),\n dealUrl: z.string(),\n accessType: z.string(),\n dealType: z.string(),\n paymentStatus: z.string(),\n status: z.string(),\n statusTooltip: z.string(),\n chains: z.array(z.string()),\n exposure: z.array(z.string()),\n startedAt: z.string().optional(),\n endedAt: z.string().optional(),\n earnConfig: earnConfigSchema.optional(),\n boostConfig: incentiveSchema.optional(),\n tvlOnlyConfig: tvlOnlyConfigSchema.optional(),\n});\n\nexport const getDealsSchema = z.object({\n deals: z.array(dealSchema),\n});\n\nexport type DealSchema = z.infer<typeof dealSchema>;\nexport type GetDealsSchema = z.infer<typeof getDealsSchema>;\nexport type EarnTokenSchema = z.infer<typeof earnTokenSchema>;\nexport type EarnConfigSchema = z.infer<typeof earnConfigSchema>;\n","import { z } from \"zod\";\nimport { dealSchema } from \"./dealSchemas\";\nimport { getCampaignSchema } from \"./campaignSchemas\";\n\nexport const organizationSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n landingUrl: z.string(),\n iconUrl: z.string(),\n organizationType: z.string(),\n turtleRefCode: z.string(),\n});\n\nexport const getOrganizationsSchema = z.object({\n organizations: z.array(organizationSchema),\n});\n\nexport const getOrganizationDealsSchema = z.object({\n organization: organizationSchema,\n deals: z.array(dealSchema),\n});\n\nexport const getOrganizationCampaignsSchema = z.object({\n organization: organizationSchema,\n campaigns: z.array(getCampaignSchema),\n});\n\nexport type OrganizationSchema = z.infer<typeof organizationSchema>;\nexport type GetOrganizationsSchema = z.infer<typeof getOrganizationsSchema>;\nexport type GetOrganizationDealsSchema = z.infer<typeof getOrganizationDealsSchema>;\nexport type GetOrganizationCampaignsSchema = z.infer<typeof getOrganizationCampaignsSchema>;\n","import { z } from \"zod\";\nimport { ethz } from \"../../utils\";\n\nexport const paymentSchema = z.object({\n id: z.string(),\n dealId: z.string(),\n transactionId: z.string(),\n paidAt: z.string(),\n amount: z.number(),\n chain: z.string(),\n tokenAddress: ethz.address(),\n tokenSymbol: z.string(),\n tokenIconUrl: z.string(),\n price: z.number(),\n value: z.number(),\n});\n\nexport const getPaymentsSchema = z.object({\n payments: z.array(paymentSchema),\n});\n\nexport type PaymentSchema = z.infer<typeof paymentSchema>;\nexport type GetPaymentsSchema = z.infer<typeof getPaymentsSchema>;\n","import { z } from \"zod\";\n\nexport const tokenSchema = z.object({\n id: z.string(),\n chain: z.string(),\n name: z.string(),\n symbol: z.string(),\n displaySymbol: z.string(),\n decimals: z.number(),\n logoUrl: z.string(),\n protocolId: z.string(),\n});\n\nexport const chainSchema = z.object({\n id: z.string(),\n communityId: z.number(),\n name: z.string(),\n logoUrl: z.string(),\n nativeTokenId: z.string(),\n wrappedTokenId: z.string(),\n});\n\nexport const protocolSchema = z.object({\n id: z.string(),\n name: z.string(),\n chain: z.string(),\n logoUrl: z.string(),\n siteUrl: z.string(),\n});\n\nexport const tokenSnapshotSchema = z.object({\n id: z.number(),\n snapshotId: z.number(),\n walletId: z.string(),\n tokenId: z.string(),\n token: tokenSchema,\n tokenChain: z.string(),\n chain: chainSchema,\n amount: z.number(),\n price: z.number(),\n});\n\nexport const protocolSnapshotSchema = z.object({\n id: z.number(),\n snapshotId: z.number(),\n walletId: z.string(),\n protocolId: z.string(),\n protocol: protocolSchema,\n protocolChain: z.string(),\n chain: chainSchema,\n tvl: z.number(),\n assetUsdValue: z.number(),\n debtUsdValue: z.number(),\n});\n\nexport const treasurySnapshotSchema = z.object({\n id: z.number(),\n timestamp: z.number(),\n totalUsdValue: z.number(),\n tokenSnapshots: z.array(tokenSnapshotSchema),\n protocolSnapshots: z.array(protocolSnapshotSchema),\n});\n\nexport const getTreasurySchema = z.object({\n treasurySnapshots: z.array(treasurySnapshotSchema),\n});\n\nexport type TokenSchema = z.infer<typeof tokenSchema>;\nexport type TokenSnapshotSchema = z.infer<typeof tokenSnapshotSchema>;\nexport type ChainSchema = z.infer<typeof chainSchema>;\nexport type ProtocolSchema = z.infer<typeof protocolSchema>;\nexport type ProtocolSnapshotSchema = z.infer<typeof protocolSnapshotSchema>;\nexport type TreasurySnapshotSchema = z.infer<typeof treasurySnapshotSchema>;\nexport type GetTreasurySchema = z.infer<typeof getTreasurySchema>;\n","import { z } from \"zod\";\nimport { buildApi, item } from \"../builder/api\";\nimport { autoAuthorization, fetchBackend, methodOptions, simpleJson } from \"../backends/fetch\";\nimport {\n addAuthMethodSchema,\n authenticateInputSchema,\n authenticateResultSchema,\n authMethodsSchema,\n authTokensSchema,\n getWalletSignatureSchema,\n successSchema,\n userSchema,\n} from \"./authSchemas\";\nimport { AuthenticateMethod } from \"../../types\";\nimport { ethz } from \"../../utils\";\nimport { handleApiResponse } from \"../utils\";\n\nconst root = \"https://api.turtle.xyz\";\n\nexport const authApi = buildApi(\n fetchBackend,\n {\n root,\n },\n {\n getWalletSignature: item({\n input: z.object({\n address: z.string(),\n walletEcosystem: z.string(),\n url: z.string(),\n }),\n key: \"/auth/get-wallet-signature-message\",\n result: getWalletSignatureSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n authenticate: item({\n input: authenticateInputSchema,\n key: \"/auth/authenticate\",\n result: authenticateResultSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson],\n }),\n refreshTokens: item({\n input: z.object({\n refreshToken: z.string(),\n rotateRefreshToken: z.boolean(),\n }),\n key: \"/auth/refresh\",\n result: z.object({\n authTokens: authTokensSchema,\n }),\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n addAuthenticationMethod: item({\n input: addAuthMethodSchema,\n key: \"/auth/user/add-authentication-method\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getAuthMethods: item({\n input: z.object({\n isAuthenticated: z.boolean(),\n accessToken: z.string().nullable(),\n }),\n key: \"/auth/user/auth-methods\",\n result: authMethodsSchema,\n options: [autoAuthorization()],\n }),\n unlinkAuthenticationMethod: item({\n input: z.object({\n id: z.string(),\n method: z.nativeEnum(AuthenticateMethod),\n }),\n key: \"/auth/user/unlink-authentication-method\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getUser: item({\n key: \"/auth/user\",\n result: z.object({ user: userSchema }),\n options: [autoAuthorization()],\n }),\n updateUser: item({\n input: userSchema.partial(),\n key: \"/auth/user\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.put, simpleJson, autoAuthorization()],\n }),\n updateMainWallet: item({\n input: z.object({ walletId: z.string() }),\n key: \"/auth/user/update-main-wallet\",\n result: successSchema,\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n createReferral: item({\n input: z.object({\n referral: z.string(),\n }),\n key: \"/auth/user/referral\",\n result: z.object({\n referral: z.object({\n id: z.string(),\n referralId: z.string(),\n isEnabled: z.boolean(),\n }),\n }),\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getUserReferral: item({\n input: z.string().nullable(),\n key: \"/auth/user/referral\",\n result: z.object({\n referral: z\n .object({\n id: z.string(),\n isEnabled: z.boolean(),\n referralId: z.string(),\n })\n .nullable(),\n referredBy: z\n .object({\n id: z.string(),\n isEnabled: z.boolean(),\n referralId: z.string(),\n })\n .nullable(),\n }),\n options: [autoAuthorization()],\n }),\n useReferral: item({\n input: z.object({\n referral: z.string(),\n }),\n key: ({ referral }) => `/auth/user/refer/${referral}`,\n result: z.object({\n success: z.boolean(),\n }),\n map: handleApiResponse,\n options: [methodOptions.post, simpleJson, autoAuthorization()],\n }),\n getUserReferralCount: item({\n input: ethz.address().optional(),\n key: \"/auth/user/referral-stats\",\n result: z.object({ totalReferees: z.number().int() }),\n options: [autoAuthorization()],\n }),\n getReferralExists: item({\n input: z.string(),\n key: (referral) => `/auth/referral/${referral}/exists`,\n result: z.object({\n exists: z.boolean(),\n }),\n options: [autoAuthorization()],\n }),\n }\n);\n","import z from \"zod\";\nimport { AuthenticateMethod, SupportedSocialProvider, SupportedWalletEcosystem } from \"../../types\";\n\nexport const getWalletSignatureSchema = z.object({\n nonce: z.string(),\n message: z.string(),\n});\n\nexport const authenticateInputSchema = z.object({\n method: z.string(),\n walletInput: z.object({\n address: z.string(),\n ecosystem: z.string(),\n signature: z.string(),\n nonce: z.string(),\n partialHash: z.string().optional()\n }),\n});\n\nexport const authTokensSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().nullable(),\n});\n\nexport const userRoleSchema = z.enum([\"turtle-admin\", \"admin\", \"user\"]);\n\nexport const permissionSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n});\n\nexport const userSchema = z.object({\n id: z.string(),\n email: z.string().nullable().optional(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n username: z.string().optional(),\n role: userRoleSchema,\n permissions: z.array(permissionSchema),\n telegramHandle: z.string().optional(),\n avatarUrl: z.string().optional(),\n});\n\nexport const authenticateResultSchema = z.object({\n authTokens: authTokensSchema,\n user: userSchema,\n});\n\nexport const authMethodsSchema = z.object({\n socials: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n }),\n ),\n wallets: z.array(\n z.object({\n address: z.string(),\n ecosystem: z.nativeEnum(SupportedWalletEcosystem),\n id: z.string(),\n isMain: z.boolean(),\n }),\n ),\n});\n\nexport const addAuthMethodSchema = z.discriminatedUnion(\"method\", [\n z.object({\n method: z.literal(AuthenticateMethod.WALLET),\n walletInput: z.object({\n address: z.string(),\n ecosystem: z.nativeEnum(SupportedWalletEcosystem),\n nonce: z.string(),\n signature: z.string(),\n }),\n }),\n\n z.object({\n method: z.literal(AuthenticateMethod.SOCIAL),\n socialInput: z.object({\n provider: z.nativeEnum(SupportedSocialProvider),\n token: z.string(),\n }),\n }),\n]);\n\nexport const successSchema = z.object({\n success: z.boolean(),\n});\n","export enum AuthenticateMethod {\n WALLET = \"wallet\",\n SOCIAL = \"social\",\n}\n\nexport enum SupportedWalletEcosystem {\n EVM = \"evm\",\n}\n\nexport enum SupportedSocialProvider {\n GOOGLE = \"google\",\n}\n","export function handleApiResponse<T>(response: T | { error: string; status: string }): T {\n if (typeof response === \"object\" && response !== null && \"error\" in response) {\n throw new Error(response.error);\n }\n return response as T;\n}\n","import { buildHooks, item } from \"../builder/hooks\";\nimport { partnersApi } from \"./api\";\nimport type {\n CampaignSchema,\n GetCampaignsSchema,\n UserCampaignIncentivesSchema,\n UserCampaignVaultWithdrawalRequestsSchema,\n} from \"./campaignSchemas\";\nimport type {\n GetOrganizationCampaignsSchema,\n GetOrganizationDealsSchema,\n GetOrganizationsSchema,\n} from \"./organizationSchemas\";\nimport type { GetDealsSchema } from \"./dealSchemas\";\nimport type { GetPaymentsSchema } from \"./paymentSchemas\";\nimport type { GetTreasurySchema } from \"./treasurySchemas\";\nimport { authApi } from \"./authApi\";\n\nconst REFRESH_INTERVAL = 60_000;\nconst TREASURY_REFRESH_INTERVAL = 300_000;\n\nexport const partnersHooks = buildHooks({\n useOrganizations: item({\n key: [\"organizations\"],\n fn: partnersApi.getOrganizations,\n options: () => ({\n placeholderData: (previous: GetOrganizationsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useOrganizationDeals: item({\n key: (organizationId: string) => [\"organization\", organizationId, \"deals\"],\n fn: partnersApi.getOrganizationDeals,\n options: () => ({\n placeholderData: (previous: GetOrganizationDealsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useOrganizationCampaigns: item({\n key: (organizationId: string) => [\"organization\", organizationId, \"campaigns\"],\n fn: partnersApi.getOrganizationCampaigns,\n options: () => ({\n placeholderData: (previous: GetOrganizationCampaignsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useDeals: item({\n key: [\"deals\"],\n fn: partnersApi.getDeals,\n options: () => ({\n placeholderData: (previous: GetDealsSchema) => previous,\n gcTime: 60_000,\n }),\n }),\n usePayments: item({\n key: [\"payments\"],\n fn: partnersApi.getPayments,\n options: () => ({\n placeholderData: (previous: GetPaymentsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useCampaigns: item({\n key: [\"campaigns\"],\n fn: partnersApi.getCampaigns,\n options: () => ({\n placeholderData: (previous: GetCampaignsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n refetchInterval: REFRESH_INTERVAL,\n }),\n }),\n useCampaignByName: item({\n key: (name: string) => [\"campaign\", name],\n fn: partnersApi.getCampaignByName,\n options: () => ({\n placeholderData: (previous: CampaignSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n refetchInterval: REFRESH_INTERVAL,\n }),\n }),\n useUserCampaignIncentives: item({\n key: ({ campaignId, userAddress }) => [\"incentives\", campaignId, userAddress],\n fn: partnersApi.getUserCampaignIncentives,\n options: ({ campaignId, userAddress }) => ({\n enabled: !!campaignId && !!userAddress,\n placeholderData: (previous: UserCampaignIncentivesSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useUserCampaignVaultWithdrawalRequests: item({\n key: ({ campaignId, userAddress }) => [\"withdrawal_requests\", campaignId, userAddress],\n fn: partnersApi.getUserCampaignVaultWithdrawalRequests,\n options: ({ campaignId, userAddress }) => ({\n enabled: !!campaignId && !!userAddress,\n placeholderData: (previous: UserCampaignVaultWithdrawalRequestsSchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useGeoCheck: item({\n key: () => [\"geoCheck\"],\n fn: partnersApi.getGeoCheck,\n options: () => ({\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n }),\n }),\n useTreasury: item({\n key: ({ oldSnapshots }) => [\"treasury\", oldSnapshots],\n fn: partnersApi.getTreasury,\n options: () => ({\n placeholderData: (previous: GetTreasurySchema) => previous,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n refetchInterval: TREASURY_REFRESH_INTERVAL,\n }),\n }),\n useAuthMethods: item({\n key: ({ isAuthenticated, accessToken }) => [\"authMethods\", isAuthenticated, accessToken],\n fn: authApi.getAuthMethods,\n options: ({ isAuthenticated }) => ({\n enabled: isAuthenticated,\n }),\n }),\n useUserReferral: item({\n key: (accessToken) => [\"useUserReferral\", accessToken],\n fn: authApi.getUserReferral,\n options: (accessToken) => ({ enabled: !!accessToken }),\n }),\n useUserReferralCount: item({\n key: (user) => [\"useUserReferralCount\", user],\n fn: authApi.getUserReferralCount,\n options: (user) => ({ enabled: !!user, cacheTime: 0, staleTime: 0, refetchOnMount: \"always\" }),\n }),\n useReferralExists: item({\n key: (referral) => [\"useReferralExists\", referral],\n fn: authApi.getReferralExists,\n options: (referral) => ({ enabled: referral.length > 0, cacheTime: 0, staleTime: 0, refetchOnMount: \"always\" }),\n }),\n});\n","export const TAC_CAMPAIGN_NAME = \"tac\";\nexport const KATANA_CAMPAIGN_NAME = \"katana\";\n\nexport const ALL_CAMPAIGN_NAMES = [TAC_CAMPAIGN_NAME, KATANA_CAMPAIGN_NAME] as const;\n\nexport type CampaignName = (typeof ALL_CAMPAIGN_NAMES)[number];","export const exposureFilters = [\n { label: \"Overview\", value: \"overview\" },\n { label: \"BTC\", value: \"btc\" },\n { label: \"ETH\", value: \"eth\" },\n { label: \"TON\", value: \"ton\" },\n { label: \"STABLES\", value: \"stables\" },\n];\n\nexport const Partners = [{ tooltip: \"TAC\", icon: \"/images/vaults/tac.png\" }];\n\nexport const Chains = [\n { tooltip: \"TAC\", icon: \"/images/vaults/tac.png\" },\n { tooltip: \"TON\", icon: \"/images/vaults/ton.png\" },\n { tooltip: \"Ethereum\", icon: \"/images/vaults/eth.png\" },\n];\n\nexport const Infrastructure = [\n {\n tooltip: \"Veda provides the core smart contract infrastructure for managing vault funds.\",\n icon: \"/images/vaults/veda.png\",\n url: \"https://veda.tech/\",\n },\n {\n tooltip:\n \"Merkl provides the indexing infrastructure to track activity across vaults and assign incentives accordingly.\",\n icon: \"/images/vaults/merkl.png\",\n url: \"https://merkl.xyz/\",\n },\n];\n\nexport const TACCampaignEndDate = \"2025-06-30\";\nexport const BASE_TAC_REWARD = 3;\n\nexport const getTacBoostText = (boost: number | undefined | null) => {\n const base = `${BASE_TAC_REWARD} TAC per $1k/day`;\n if (!boost) return base;\n return `${boost} * ${base}`;\n};\n\nexport const tacAprDisclaimer =\n \"Uses a $375mm estimated FDV for the TAC token economy. TAC rewards are subject to a 45 day vesting period. APR is not guaranteed. See vault card for a detailed breakdown on vault APR.\";\n\nexport const userInfoHeaderText =\n \"Phase 1 rewards are fully vested. Phase 2 rewards vest linearly from July 15th to August 30th. Withdrawing liquidity will slash your Phase 2 rewards.\";\n\nexport const secondaryPositionVaultIds = [\n // StakeDAO\n \"8742a82a-6253-4f1e-a2f9-31f88c08d4b8\",\n \"04961971-c60e-48e0-8422-acaf54d00060\",\n \"957a464c-0b43-4cea-8778-4aaa6cc10d54\",\n // Curve\n \"10e60097-d856-4dc9-9178-3178a0192dec\",\n \"da89b23e-5a79-4126-95f9-e78155a0fa36\",\n \"29bec461-fce9-4617-9631-15b4efe908c3\",\n // Morpho\n \"8f9b1255-e17a-4e72-bdae-48ad21f0cff1\",\n \"a1b07e63-0265-4551-887a-0583db30a525\",\n \"d14c7f81-e5ac-47f0-b0a2-cfdfff97e69f\",\n \"10df431e-1b83-4233-bc2f-c3e971c2e472\",\n \"bd552877-415d-40a9-9ccc-993d88c8f0af\",\n \"01ba91d4-dcfc-42b0-8c05-e3f7930116a3\",\n // Pendle\n \"45a8ce4a-d21a-451e-8eeb-8dafd166895d\",\n \"364278c2-cfee-4319-8fd6-a530913330f9\",\n \"9f624121-25cc-49e9-8e1c-d252ee483e76\",\n];","export const exposureFilters = [\n { label: \"Overview\", value: \"overview\" },\n { label: \"BTC\", value: \"btc\" },\n { label: \"ETH\", value: \"eth\" },\n { label: \"STABLES\", value: \"stables\" },\n];\n\nexport const Partners = [{ tooltip: \"Katana\", icon: \"/networks/katana.svg\" }];\n\nexport const Chains = [\n { tooltip: \"Katana\", icon: \"/networks/katana.svg\" },\n { tooltip: \"Ethereum\", icon: \"/images/vaults/eth.png\" },\n];\n\nexport const Infrastructure = [\n {\n tooltip:\n \"Merkl provides the indexing infrastructure to track activity across vaults and assign incentives accordingly.\",\n icon: \"/images/vaults/merkl.png\",\n url: \"https://merkl.xyz/\",\n },\n {\n tooltip: \"Yearn provides the core smart contract infrastructure for managing vault funds.\",\n icon: \"/images/vaults/yearn.png\",\n url: \"https://yearn.finance/\",\n },\n];\n\nexport const katanaAprDisclaimer =\n \"Uses a $1bn estimated FDV for the KAT token economy. APR is not guaranteed. See vault card for a detailed breakdown on vault APR.\";\n\nexport const KatanaCampaignEndDate = \"2025-08-27\";","export const lagoonVaultAbi = [\n {\n inputs: [{ internalType: \"bool\", name: \"disable\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n { inputs: [{ internalType: \"uint256\", name: \"maxRate\", type: \"uint256\" }], name: \"AboveMaxRate\", type: \"error\" },\n { inputs: [{ internalType: \"address\", name: \"target\", type: \"address\" }], name: \"AddressEmptyCode\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"AddressInsufficientBalance\",\n type: \"error\",\n },\n { inputs: [], name: \"CantDepositNativeToken\", type: \"error\" },\n { inputs: [], name: \"Closed\", type: \"error\" },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"allowance\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"needed\", type: \"uint256\" },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"sender\", type: \"address\" },\n { internalType: \"uint256\", name: \"balance\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"needed\", type: \"uint256\" },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"approver\", type: \"address\" }],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"receiver\", type: \"address\" }],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n { inputs: [{ internalType: \"address\", name: \"sender\", type: \"address\" }], name: \"ERC20InvalidSender\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"spender\", type: \"address\" }],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxDeposit\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxMint\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxRedeem\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"max\", type: \"uint256\" },\n ],\n name: \"ERC4626ExceededMaxWithdraw\",\n type: \"error\",\n },\n { inputs: [], name: \"ERC7540InvalidOperator\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewDepositDisabled\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewMintDisabled\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewRedeemDisabled\", type: \"error\" },\n { inputs: [], name: \"ERC7540PreviewWithdrawDisabled\", type: \"error\" },\n { inputs: [], name: \"EnforcedPause\", type: \"error\" },\n { inputs: [], name: \"ExpectedPause\", type: \"error\" },\n { inputs: [], name: \"FailedInnerCall\", type: \"error\" },\n { inputs: [], name: \"InvalidInitialization\", type: \"error\" },\n { inputs: [], name: \"MathOverflowedMulDiv\", type: \"error\" },\n { inputs: [], name: \"NewTotalAssetsMissing\", type: \"error\" },\n { inputs: [{ internalType: \"enum State\", name: \"currentState\", type: \"uint8\" }], name: \"NotClosing\", type: \"error\" },\n { inputs: [], name: \"NotInitializing\", type: \"error\" },\n { inputs: [{ internalType: \"enum State\", name: \"currentState\", type: \"uint8\" }], name: \"NotOpen\", type: \"error\" },\n { inputs: [], name: \"NotWhitelisted\", type: \"error\" },\n { inputs: [], name: \"OnlyAsyncDepositAllowed\", type: \"error\" },\n { inputs: [], name: \"OnlyOneRequestAllowed\", type: \"error\" },\n { inputs: [{ internalType: \"address\", name: \"safe\", type: \"address\" }], name: \"OnlySafe\", type: \"error\" },\n { inputs: [], name: \"OnlySyncDepositAllowed\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"valuationManager\", type: \"address\" }],\n name: \"OnlyValuationManager\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"whitelistManager\", type: \"address\" }],\n name: \"OnlyWhitelistManager\",\n type: \"error\",\n },\n { inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }], name: \"OwnableInvalidOwner\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"OwnableUnauthorizedAccount\",\n type: \"error\",\n },\n { inputs: [], name: \"RequestIdNotClaimable\", type: \"error\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n name: \"RequestNotCancelable\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"SafeERC20FailedOperation\",\n type: \"error\",\n },\n { inputs: [], name: \"ValuationUpdateNotAllowed\", type: \"error\" },\n { inputs: [], name: \"WrongNewTotalAssets\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"spender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"DepositRequest\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"DepositRequestCanceled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"DepositSync\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"address\", name: \"oldReceiver\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"newReceiver\", type: \"address\" },\n ],\n name: \"FeeReceiverUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint256\", name: \"oldHighWaterMark\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"newHighWaterMark\", type: \"uint256\" },\n ],\n name: \"HighWaterMarkUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint64\", name: \"version\", type: \"uint64\" }],\n name: \"Initialized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" }],\n name: \"NewTotalAssetsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"operator\", type: \"address\" },\n { indexed: false, internalType: \"bool\", name: \"approved\", type: \"bool\" },\n ],\n name: \"OperatorSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferStarted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n indexed: false,\n internalType: \"struct Rates\",\n name: \"oldRates\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n indexed: false,\n internalType: \"struct Rates\",\n name: \"newRate\",\n type: \"tuple\",\n },\n { indexed: false, internalType: \"uint256\", name: \"timestamp\", type: \"uint256\" },\n ],\n name: \"RatesUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"controller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"RedeemRequest\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"referral\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"Referral\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"uint40\", name: \"epochId\", type: \"uint40\" },\n { indexed: true, internalType: \"uint40\", name: \"settledId\", type: \"uint40\" },\n { indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"assetsDeposited\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"sharesMinted\", type: \"uint256\" },\n ],\n name: \"SettleDeposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"uint40\", name: \"epochId\", type: \"uint40\" },\n { indexed: true, internalType: \"uint40\", name: \"settledId\", type: \"uint40\" },\n { indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"assetsWithdrawed\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"sharesBurned\", type: \"uint256\" },\n ],\n name: \"SettleRedeem\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"enum State\", name: \"state\", type: \"uint8\" }],\n name: \"StateUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint128\", name: \"oldLifespan\", type: \"uint128\" },\n { indexed: false, internalType: \"uint128\", name: \"newLifespan\", type: \"uint128\" },\n ],\n name: \"TotalAssetsLifespanUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"totalAssets\", type: \"uint256\" }],\n name: \"TotalAssetsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"address\", name: \"oldManager\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"newManager\", type: \"address\" },\n ],\n name: \"ValuationManagerUpdated\",\n type: \"event\",\n },\n { anonymous: false, inputs: [], name: \"WhitelistDisabled\", type: \"event\" },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"address\", name: \"oldManager\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"newManager\", type: \"address\" },\n ],\n name: \"WhitelistManagerUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"account\", type: \"address\" },\n { indexed: false, internalType: \"bool\", name: \"authorized\", type: \"bool\" },\n ],\n name: \"WhitelistUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"MAX_MANAGEMENT_RATE\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MAX_PERFORMANCE_RATE\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MAX_PROTOCOL_RATE\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"acceptOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [{ internalType: \"address[]\", name: \"accounts\", type: \"address[]\" }],\n name: \"addToWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"asset\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"cancelRequestDeposit\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"sharesToRedeem\", type: \"uint256\" }],\n name: \"claimSharesAndRequestRedeem\",\n outputs: [{ internalType: \"uint40\", name: \"requestId\", type: \"uint40\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address[]\", name: \"controllers\", type: \"address[]\" }],\n name: \"claimSharesOnBehalf\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"claimableDepositRequest\",\n outputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"claimableRedeemRequest\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"close\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n name: \"convertToAssets\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n ],\n name: \"convertToAssets\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n name: \"convertToShares\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n ],\n name: \"convertToShares\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"deposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"deposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"disableWhitelist\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n { inputs: [], name: \"expireTotalAssets\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [],\n name: \"feeRates\",\n outputs: [\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n internalType: \"struct Rates\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getRolesStorage\",\n outputs: [\n {\n components: [\n { internalType: \"address\", name: \"whitelistManager\", type: \"address\" },\n { internalType: \"address\", name: \"feeReceiver\", type: \"address\" },\n { internalType: \"address\", name: \"safe\", type: \"address\" },\n { internalType: \"contract FeeRegistry\", name: \"feeRegistry\", type: \"address\" },\n { internalType: \"address\", name: \"valuationManager\", type: \"address\" },\n ],\n internalType: \"struct Roles.RolesStorage\",\n name: \"_rolesStorage\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n { internalType: \"address\", name: \"feeRegistry\", type: \"address\" },\n { internalType: \"address\", name: \"wrappedNativeToken\", type: \"address\" },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"initiateClosing\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n ],\n name: \"isOperator\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isTotalAssetsValid\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"isWhitelisted\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxMint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxRedeem\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"controller\", type: \"address\" }],\n name: \"maxWithdraw\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"mint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"mint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"pause\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [],\n name: \"paused\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"pendingDepositRequest\",\n outputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pendingOwner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"requestId\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"pendingRedeemRequest\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewMint\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewRedeem\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"previewWithdraw\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"redeem\",\n outputs: [{ internalType: \"uint256\", name: \"assets\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"renounceOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n ],\n name: \"requestDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"referral\", type: \"address\" },\n ],\n name: \"requestDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n ],\n name: \"requestRedeem\",\n outputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address[]\", name: \"accounts\", type: \"address[]\" }],\n name: \"revokeFromWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"safe\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n { internalType: \"bool\", name: \"approved\", type: \"bool\" },\n ],\n name: \"setOperator\",\n outputs: [{ internalType: \"bool\", name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"settleDeposit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"settleRedeem\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"share\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes4\", name: \"interfaceId\", type: \"bytes4\" }],\n name: \"supportsInterface\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"referral\", type: \"address\" },\n ],\n name: \"syncDeposit\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalAssets\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { inputs: [], name: \"unpause\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [{ internalType: \"address\", name: \"_feeReceiver\", type: \"address\" }],\n name: \"updateFeeReceiver\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newTotalAssets\", type: \"uint256\" }],\n name: \"updateNewTotalAssets\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint16\", name: \"managementRate\", type: \"uint16\" },\n { internalType: \"uint16\", name: \"performanceRate\", type: \"uint16\" },\n ],\n internalType: \"struct Rates\",\n name: \"newRates\",\n type: \"tuple\",\n },\n ],\n name: \"updateRates\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint128\", name: \"lifespan\", type: \"uint128\" }],\n name: \"updateTotalAssetsLifespan\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_valuationManager\", type: \"address\" }],\n name: \"updateValuationManager\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_whitelistManager\", type: \"address\" }],\n name: \"updateWhitelistManager\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"controller\", type: \"address\" },\n ],\n name: \"withdraw\",\n outputs: [{ internalType: \"uint256\", name: \"shares\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n","export const morphoAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"uint256\", name: \"prevBorrowRate\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"interest\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"feeShares\", type: \"uint256\" },\n ],\n name: \"AccrueInterest\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Borrow\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n ],\n name: \"CreateMarket\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: true, internalType: \"address\", name: \"irm\", type: \"address\" }],\n name: \"EnableIrm\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"lltv\", type: \"uint256\" }],\n name: \"EnableLltv\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"token\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"FlashLoan\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"authorizer\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"usedNonce\", type: \"uint256\" },\n ],\n name: \"IncrementNonce\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"borrower\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"repaidAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"repaidShares\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"seizedAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"badDebtAssets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"badDebtShares\", type: \"uint256\" },\n ],\n name: \"Liquidate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Repay\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"authorizer\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"authorized\", type: \"address\" },\n { indexed: false, internalType: \"bool\", name: \"newIsAuthorized\", type: \"bool\" },\n ],\n name: \"SetAuthorization\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"uint256\", name: \"newFee\", type: \"uint256\" },\n ],\n name: \"SetFee\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: true, internalType: \"address\", name: \"newFeeRecipient\", type: \"address\" }],\n name: \"SetFeeRecipient\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"SetOwner\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Supply\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: true, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"SupplyCollateral\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"Id\", name: \"id\", type: \"bytes32\" },\n { indexed: false, internalType: \"address\", name: \"caller\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"receiver\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n ],\n name: \"WithdrawCollateral\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n ],\n name: \"accrueInterest\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"borrow\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n ],\n name: \"createMarket\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"irm\", type: \"address\" }],\n name: \"enableIrm\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"lltv\", type: \"uint256\" }],\n name: \"enableLltv\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes32[]\", name: \"slots\", type: \"bytes32[]\" }],\n name: \"extSloads\",\n outputs: [{ internalType: \"bytes32[]\", name: \"res\", type: \"bytes32[]\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeRecipient\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"flashLoan\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"Id\", name: \"\", type: \"bytes32\" }],\n name: \"idToMarketParams\",\n outputs: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"\", type: \"address\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"isAuthorized\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"isIrmEnabled\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"isLltvEnabled\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"address\", name: \"borrower\", type: \"address\" },\n { internalType: \"uint256\", name: \"seizedAssets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"repaidShares\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"liquidate\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"Id\", name: \"\", type: \"bytes32\" }],\n name: \"market\",\n outputs: [\n { internalType: \"uint128\", name: \"totalSupplyAssets\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"totalSupplyShares\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"totalBorrowAssets\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"totalBorrowShares\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"lastUpdate\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"fee\", type: \"uint128\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"nonce\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"Id\", name: \"\", type: \"bytes32\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"position\",\n outputs: [\n { internalType: \"uint256\", name: \"supplyShares\", type: \"uint256\" },\n { internalType: \"uint128\", name: \"borrowShares\", type: \"uint128\" },\n { internalType: \"uint128\", name: \"collateral\", type: \"uint128\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"repay\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"authorized\", type: \"address\" },\n { internalType: \"bool\", name: \"newIsAuthorized\", type: \"bool\" },\n ],\n name: \"setAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"authorizer\", type: \"address\" },\n { internalType: \"address\", name: \"authorized\", type: \"address\" },\n { internalType: \"bool\", name: \"isAuthorized\", type: \"bool\" },\n { internalType: \"uint256\", name: \"nonce\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n ],\n internalType: \"struct Authorization\",\n name: \"authorization\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"uint8\", name: \"v\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"r\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"s\", type: \"bytes32\" },\n ],\n internalType: \"struct Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n ],\n name: \"setAuthorizationWithSig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"newFee\", type: \"uint256\" },\n ],\n name: \"setFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newFeeRecipient\", type: \"address\" }],\n name: \"setFeeRecipient\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"setOwner\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"supply\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"supplyCollateral\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"shares\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"withdraw\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"loanToken\", type: \"address\" },\n { internalType: \"address\", name: \"collateralToken\", type: \"address\" },\n { internalType: \"address\", name: \"oracle\", type: \"address\" },\n { internalType: \"address\", name: \"irm\", type: \"address\" },\n { internalType: \"uint256\", name: \"lltv\", type: \"uint256\" },\n ],\n internalType: \"struct MarketParams\",\n name: \"marketParams\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"assets\", type: \"uint256\" },\n { internalType: \"address\", name: \"onBehalf\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"withdrawCollateral\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n","import { z } from \"zod\";\nimport { buildApi, item } from \"../builder/api\";\nimport { fetchBackend, methodOptions, simpleJson } from \"../backends/fetch\";\nimport { pricesInputSchema, pricesSchema, projectsTvlSchema } from \"./z\";\n\nconst root = \"https://index.turtle.vision\";\n\nexport const indexApi = buildApi(\n fetchBackend,\n {\n root,\n },\n {\n getPrices: item({\n input: z.object({\n pairs: pricesInputSchema,\n }),\n key: ({ pairs }) => `/prices?pairs=${pairs.map((pair) => `${pair.chain}:${pair.token}`).join(\",\")}`,\n result: pricesSchema,\n }),\n getPricesNew: item({\n input: z.object({\n tokens: z.array(\n z.object({\n address: z.string(),\n chain: z.string(),\n }),\n ),\n }),\n key: \"/prices/new\",\n result: pricesSchema,\n options: [methodOptions.post, simpleJson],\n }),\n getProjectTvl: item({\n input: z.array(z.string()),\n key: (projects) => `/tvl/projects?projects=${projects.join(\",\")}`,\n result: projectsTvlSchema,\n }),\n },\n);\n","import { z } from \"zod\";\n\nexport const pricesSchema = z.object({\n prices: z.record(z.string(), z.record(z.string(), z.number())),\n error: z.string().optional(),\n});\n\nexport const pricesInputSchema = z.array(z.object({ chain: z.string(), token: z.string() }));\n\nexport const projectTvlSchema = z.object({\n tvl_usd: z.number(),\n asset_tvl_usd: z.number(),\n debt_tvl_usd: z.number(),\n error: z.string().optional(),\n});\n\nexport const projectsTvlSchema = z.object({\n projects: z.record(z.string(), projectTvlSchema),\n error: z.string().optional(),\n});\n","import { buildHooks, item } from \"../builder/hooks\";\nimport { indexApi } from \"./api\";\nimport { ms } from \"../../utils\";\n\nexport const indexHooks = buildHooks(\n {\n usePrices: item({\n fn: indexApi.getPrices,\n key: ({ pairs }) => [\"usePrices\", pairs],\n options: ({ pairs }) => ({ enabled: !!pairs, refetchOnMount: \"always\" }),\n }),\n usePricesNew: item({\n fn: indexApi.getPricesNew,\n key: ({ tokens }) => [\"usePricesNew\", tokens],\n options: ({ tokens }) => ({ enabled: !!tokens, refetchOnMount: \"always\" }),\n }),\n useProjectTvl: item({\n fn: indexApi.getProjectTvl,\n key: (projects) => [\"useProjectTvl\", projects],\n options: (projects) => ({ enabled: !!projects, refetchOnMount: \"always\" }),\n }),\n },\n {\n refetchInterval: ms.mins(5),\n },\n);\n","import { BASE_TAC_REWARD } from \"./tac/constants\";\nimport type {\n CampaignDetailedIncentiveSchema,\n CampaignGroupSchema,\n CampaignSchema,\n CampaignVaultSchema,\n} from \"./api/partners/campaignSchemas\";\n\n// TODO: These icons need to be handled differently in the widget\n// For now, we'll use placeholder components\nconst VedaIcon = ({ className }: { className?: string }) => <div className={className}>Veda</div>;\nconst UpshiftIcon = ({ className }: { className?: string }) => <div className={className}>Upshift</div>;\nconst MidasIcon = ({ className }: { className?: string }) => <div className={className}>Midas</div>;\nconst LagoonIcon = ({ className }: { className?: string }) => <div className={className}>Lagoon</div>;\nconst YieldfiIcon = ({ className }: { className?: string }) => <div className={className}>Yieldfi</div>;\nconst ConcreteIcon = ({ className }: { className?: string }) => <div className={className}>Concrete</div>;\nconst CianIcon = ({ className }: { className?: string }) => <div className={className}>Cian</div>;\nconst Info = ({ className }: { className?: string }) => <div className={className}>ℹ️</div>;\n\n// TODO: Import these utilities from @turtleclub/utils\nconst capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\nconst formatNumber = (num: number, decimals?: number) => num.toFixed(decimals ?? 2);\nconst getBaseUrl = () => typeof window !== 'undefined' ? window.location.origin : '';\n\n\nexport const getCuratorIcon = (curator: string) => {\n const curatorIconName = curator.toLowerCase().split(\" \").join(\"-\");\n try {\n const pngPath = `/images/vaults/${curatorIconName}.png`;\n return new URL(pngPath, getBaseUrl()).href;\n } catch {\n try {\n const svgPath = `/images/vaults/${curatorIconName}.svg`;\n return new URL(svgPath, getBaseUrl()).href;\n } catch {\n return \"/fallback-icon.svg\";\n }\n }\n};\n\nexport const getVaultDeployment = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n if (vault.vedaProviderConfig) {\n return vault.vedaProviderConfig.deployments[0];\n }\n if (vault.upshiftProviderConfig) {\n return vault.upshiftProviderConfig.deployments[0];\n }\n if (vault.midasProviderConfig) {\n return vault.midasProviderConfig.deployments[0];\n }\n if (vault.lagoonProviderConfig) {\n return vault.lagoonProviderConfig.deployments[0];\n }\n if (vault.concreteProviderConfig) {\n return vault.concreteProviderConfig.deployments[0];\n }\n if (vault.cianProviderConfig) {\n return vault.cianProviderConfig.deployments[0];\n }\n if (vault.yieldfiProviderConfig) {\n return vault.yieldfiProviderConfig.deployments[0];\n }\n if (vault.curveProviderConfig) {\n return vault.curveProviderConfig.deployments[0];\n }\n if (vault.morphoVaultProviderConfig) {\n return vault.morphoVaultProviderConfig.deployments[0];\n }\n if (vault.morphoMarketProviderConfig) {\n return vault.morphoMarketProviderConfig.deployments[0];\n }\n if (vault.stakeDAOProviderConfig) {\n return vault.stakeDAOProviderConfig.deployments[0];\n }\n if (vault.yearnProviderConfig) {\n return vault.yearnProviderConfig.deployments[0];\n }\n return undefined;\n};\n\nexport const getVaultChain = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n return deployment.chain;\n};\n\nexport const getVaultChainId = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n return deployment.chainId;\n};\n\nexport const getVaultButtonTooltip = ({\n action,\n vault,\n canInteract,\n userAuthenticated,\n chainId,\n contractSupported,\n}: {\n action?: \"deposit\" | \"withdrawal\";\n vault?: CampaignVaultSchema;\n canInteract: boolean | null;\n userAuthenticated: boolean;\n chainId: number | null | undefined;\n contractSupported: boolean;\n}) => {\n if (!canInteract && vault?.vedaProviderConfig) {\n return \"Due to geographical restrictions you can't use this vault.\";\n }\n if (!userAuthenticated) {\n return \"Please connect a wallet.\";\n }\n const vaultChainId = getVaultChainId(vault);\n const vaultChain = getVaultChain(vault);\n if (!vaultChain || chainId !== vaultChainId) {\n return `Please connect to ${capitalize(vaultChain)} network to interact with this vault.`;\n }\n if (!contractSupported) {\n return \"Protocol is not currently supported by Turtle. Use the manage button to interact with this protocol.\";\n }\n if (action === \"deposit\" && !vault?.depositDisabled) {\n return vault.depositDisabledReason || \"Deposits are currently disabled for this vault.\";\n }\n if (action === \"withdrawal\" && vault?.withdrawalDisabled) {\n return vault.withdrawalDisabledReason || \"Withdrawals are currently disabled for this vault.\";\n }\n return \"\";\n};\n\nexport const getVaultAddress = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n if (vault.vedaProviderConfig) {\n return vault.vedaProviderConfig.deployments[0].boringVault;\n }\n if (vault.upshiftProviderConfig) {\n return vault.upshiftProviderConfig.deployments[0].vault;\n }\n if (vault.midasProviderConfig) {\n return vault.midasProviderConfig.deployments[0].token;\n }\n if (vault.lagoonProviderConfig) {\n return vault.lagoonProviderConfig.deployments[0].vault;\n }\n if (vault.concreteProviderConfig) {\n return vault.concreteProviderConfig.deployments[0].vault;\n }\n if (vault.cianProviderConfig) {\n return vault.cianProviderConfig.deployments[0].vault;\n }\n if (vault.yieldfiProviderConfig) {\n return vault.yieldfiProviderConfig.deployments[0].vault;\n }\n if (vault.curveProviderConfig) {\n return vault.curveProviderConfig.deployments[0].pool;\n }\n if (vault.morphoVaultProviderConfig) {\n return vault.morphoVaultProviderConfig.deployments[0].vault;\n }\n if (vault.morphoMarketProviderConfig) {\n return vault.morphoMarketProviderConfig.deployments[0].collateralToken.address;\n }\n if (vault.stakeDAOProviderConfig) {\n return vault.stakeDAOProviderConfig.deployments[0].vault;\n }\n if (vault.yearnProviderConfig) {\n return vault.yearnProviderConfig.deployments[0].vault;\n }\n return undefined;\n};\n\nexport const getVaultContractSupported = (vault: CampaignVaultSchema) => {\n return (\n vault.vedaProviderConfig !== undefined ||\n vault.upshiftProviderConfig !== undefined ||\n vault.midasProviderConfig !== undefined ||\n vault.lagoonProviderConfig !== undefined ||\n vault.concreteProviderConfig !== undefined ||\n vault.cianProviderConfig !== undefined ||\n vault.yieldfiProviderConfig !== undefined ||\n vault.morphoVaultProviderConfig !== undefined ||\n vault.stakeDAOProviderConfig !== undefined ||\n vault.yearnProviderConfig !== undefined ||\n vault.curveProviderConfig !== undefined\n );\n};\n\nexport const getVaultHasConfig = (vault: CampaignVaultSchema) => {\n return (\n vault.vedaProviderConfig !== undefined ||\n vault.upshiftProviderConfig !== undefined ||\n vault.midasProviderConfig !== undefined ||\n vault.lagoonProviderConfig !== undefined ||\n vault.concreteProviderConfig !== undefined ||\n vault.cianProviderConfig !== undefined ||\n vault.yieldfiProviderConfig !== undefined ||\n vault.curveProviderConfig !== undefined ||\n vault.morphoVaultProviderConfig !== undefined ||\n vault.morphoMarketProviderConfig !== undefined ||\n vault.stakeDAOProviderConfig !== undefined ||\n vault.yearnProviderConfig !== undefined\n );\n};\n\nconst getExplorerUrl = (chain: string, address: string) => {\n if (chain === \"ethereum\") {\n return `https://etherscan.io/address/${address}`;\n } else if (chain === \"katana\") {\n return `https://explorer.katanarpc.com/address/${address}`;\n }\n return `https://etherscan.io/address/${address}`;\n};\n\nexport const getVaultExplorerUrl = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n const address = getVaultAddress(vault);\n if (!deployment || !address) return undefined;\n return getExplorerUrl(deployment.chain, address);\n};\n\nexport const getVaultDecimals = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n if (\"decimals\" in deployment) {\n return deployment.decimals;\n }\n if (\"collateralToken\" in deployment) {\n return deployment.collateralToken.decimals;\n }\n return undefined;\n};\n\nexport const getVaultDepositAssets = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n const deployment = getVaultDeployment(vault);\n if (!deployment) return undefined;\n if (\"depositAssets\" in deployment) {\n return deployment.depositAssets;\n }\n return undefined;\n};\n\nexport const getVaultDepositUrl = (vault: CampaignVaultSchema) => {\n return getVaultDeployment(vault)?.depositUrl;\n};\n\nexport const getVaultGroupName = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n if (vault.katanaCampaignConfig) {\n return vault.katanaCampaignConfig.group;\n }\n if (vault.tacCampaignConfig) {\n return vault.tacCampaignConfig.group;\n }\n return undefined;\n};\n\nexport const getVaultBoostText = (vault: CampaignVaultSchema) => {\n if (!vault) return undefined;\n if (vault.katanaCampaignConfig && vault.katanaCampaignConfig.incentives) {\n const katIncentive = vault.katanaCampaignConfig.incentives.find((incentive) => incentive.id === \"KAT\");\n if (!katIncentive?.dailyRewardRate || katIncentive.dailyRewardRate === 0) return undefined;\n return `${formatNumber(katIncentive?.dailyRewardRate ?? 0, 2)} KAT per $1k/day`;\n }\n if (vault.tacCampaignConfig && vault.tacCampaignConfig.incentives) {\n const tacIncentive = vault.tacCampaignConfig.incentives.find((incentive) => incentive.id === \"TAC\");\n if (!tacIncentive?.dailyRewardRate || tacIncentive.dailyRewardRate === 0) return undefined;\n return `TAC Boost ${tacIncentive?.dailyRewardRate ? (tacIncentive.dailyRewardRate / BASE_TAC_REWARD).toFixed(2) : \"0\"}x`;\n }\n return undefined;\n};\n\nexport const getVaultExposure = (vault: CampaignVaultSchema | undefined | null) => {\n if (!vault) return undefined;\n if (vault.katanaCampaignConfig) {\n return vault.katanaCampaignConfig.exposure;\n }\n if (vault.tacCampaignConfig) {\n return vault.tacCampaignConfig.exposure;\n }\n return undefined;\n};\n\nexport const getVaultIcon = (vault: CampaignVaultSchema) => {\n if (vault.vedaProviderConfig) return <VedaIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.upshiftProviderConfig) return <UpshiftIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.midasProviderConfig) return <MidasIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.lagoonProviderConfig) return <LagoonIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.concreteProviderConfig) return <ConcreteIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.cianProviderConfig) return <CianIcon className=\"h-[24px] w-[77px]\" />;\n if (vault.yieldfiProviderConfig) return <YieldfiIcon className=\"h-[24px] w-[77px]\" />;\n return null;\n};\n\nexport const getCampaignIncentives = (campaign: CampaignSchema[\"campaign\"] | undefined | null) => {\n if (!campaign) return [];\n if (campaign.tacConfig) {\n const { incentives, additionalIncentives } = campaign.tacConfig;\n return [...(incentives ?? []), ...(additionalIncentives ?? [])];\n }\n if (campaign.katanaConfig) {\n const { incentives, additionalIncentives } = campaign.katanaConfig;\n return [...(incentives ?? []), ...(additionalIncentives ?? [])];\n }\n return [];\n};\n\nexport const getVaultIncentives = (\n campaign: CampaignSchema[\"campaign\"] | undefined | null,\n vault: CampaignVaultSchema | undefined | null,\n): CampaignDetailedIncentiveSchema[] => {\n if (!campaign || !vault) return [];\n const campaignIncentives = getCampaignIncentives(campaign);\n let vaultIncentives: CampaignDetailedIncentiveSchema[] = [];\n if (vault.katanaCampaignConfig) {\n vaultIncentives = vault.katanaCampaignConfig.incentives ?? [];\n }\n if (vault.tacCampaignConfig) {\n vaultIncentives = vault.tacCampaignConfig.incentives ?? [];\n }\n return campaignIncentives\n .map((incentive) => {\n const vaultIncentive = vaultIncentives?.find((v) => v.id === incentive.id);\n return {\n ...incentive,\n name: vaultIncentive?.name || incentive.name,\n dailyRewardRate: vaultIncentive?.dailyRewardRate || incentive.dailyRewardRate,\n tooltip: vaultIncentive?.tooltip || incentive.tooltip,\n apr: vaultIncentive?.apr || incentive.apr,\n phase: vaultIncentive?.phase || incentive.phase,\n };\n })\n .filter((incentive) => vaultIncentives?.some((v) => v.id === incentive.id))\n .sort((a, b) => (b.apr ?? 0) - (a.apr ?? 0));\n};\n\n// Common function to group incentives by phase\nconst groupIncentivesByPhase = (incentives: CampaignDetailedIncentiveSchema[]) => {\n const incentivesByPhase = new Map<string, CampaignDetailedIncentiveSchema[]>();\n const globalIncentives: CampaignDetailedIncentiveSchema[] = [];\n\n incentives.forEach((incentive) => {\n if (incentive.phase) {\n if (!incentivesByPhase.has(incentive.phase)) {\n incentivesByPhase.set(incentive.phase, []);\n }\n incentivesByPhase.get(incentive.phase)!.push(incentive);\n } else {\n globalIncentives.push(incentive);\n }\n });\n\n return { incentivesByPhase, globalIncentives };\n};\n\n// Common function to sort phases consistently\nconst sortPhases = (phases: string[], incentives: CampaignDetailedIncentiveSchema[]) => {\n return phases.sort((a, b) => {\n const aPhase = incentives.find((incentive) => incentive.phase === a);\n const bPhase = incentives.find((incentive) => incentive.phase === b);\n if (aPhase?.phase?.toLowerCase().includes(\"pre\")) {\n return -1;\n }\n if (bPhase?.phase?.toLowerCase().includes(\"pre\")) {\n return 1;\n }\n if (aPhase?.phase && bPhase?.phase) {\n return aPhase.phase.localeCompare(bPhase.phase, undefined, { numeric: true });\n }\n return 0;\n });\n};\n\n// Common function to get incentives for a specific phase\nconst getPhaseIncentives = (\n phase: string,\n incentivesByPhase: Map<string, CampaignDetailedIncentiveSchema[]>,\n globalIncentives: CampaignDetailedIncentiveSchema[],\n) => {\n const phaseIncentives = incentivesByPhase.get(phase)!;\n return [...globalIncentives, ...phaseIncentives];\n};\n\nexport const getVaultEstApr = (\n campaign: CampaignSchema[\"campaign\"] | undefined | null,\n vault: CampaignVaultSchema | undefined | null,\n) => {\n if (!vault) return undefined;\n if (!campaign) return undefined;\n const incentives = getVaultIncentives(campaign, vault);\n\n // Group incentives by phase\n const { incentivesByPhase, globalIncentives } = groupIncentivesByPhase(incentives);\n\n // If no phases, calculate total APR as before\n if (incentivesByPhase.size === 0) {\n const apr = incentives.reduce((acc, incentive) => acc + (incentive.apr ?? 0), 0);\n if (apr === 0) return undefined;\n return formatNumber(apr);\n }\n\n // Get the first phase (sorted the same way as in tooltip)\n const phases = sortPhases(Array.from(incentivesByPhase.keys()), incentives);\n\n const firstPhase = phases[0];\n const firstPhaseIncentives = getPhaseIncentives(firstPhase, incentivesByPhase, globalIncentives);\n\n const apr = firstPhaseIncentives.reduce((acc, incentive) => acc + (incentive.apr ?? 0), 0);\n if (apr === 0) return undefined;\n return formatNumber(apr);\n};\n\n// Helper function to render individual incentive items\nconst renderIncentiveItem = (incentive: CampaignDetailedIncentiveSchema) => (\n <div key={incentive.id} className=\"mb-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {incentive.iconUrl && (\n <img\n src={incentive.iconUrl}\n alt={incentive.name || incentive.id}\n className=\"size-4 rounded-full\"\n loading=\"lazy\"\n />\n )}\n <span className=\"font-medium\">\n {incentive.estApr ? \"Est. \" : \"\"}\n {incentive.name || incentive.id}\n </span>\n </div>\n <span className=\"font-semibold\">\n {incentive.apr !== undefined ? `${incentive.estApr ? \"≈ \" : \"\"}${incentive.apr.toFixed(2)}%` : \"-\"}\n </span>\n </div>\n {incentive.tooltip && <div className=\"mt-0.5 text-xs text-wise-white/60\">{incentive.tooltip}</div>}\n </div>\n);\n\n// Helper function to render total APR section\nconst renderTotalApr = (totalApr: number, incentives: CampaignDetailedIncentiveSchema[]) => {\n const hasEstApr = incentives.some((incentive) => incentive.estApr);\n\n return (\n <>\n <div className=\"mb-2 border-b border-wise-white/10\" />\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium\">Total APR</span>\n <span className=\"font-semibold\">\n {hasEstApr ? \"≈ \" : \"= \"}\n {totalApr.toFixed(2)}%\n </span>\n </div>\n </>\n );\n};\n\n// Helper function to render incentive breakdown\nconst renderIncentiveBreakdown = (\n title: string,\n incentives: CampaignDetailedIncentiveSchema[],\n showSeparator = false,\n) => {\n const totalApr = incentives.reduce((acc, incentive) => acc + (incentive.apr ?? 0), 0);\n\n return (\n <div>\n <div className=\"text-base font-semibold\">{title}</div>\n <div className=\"mb-2 border-b border-wise-white/10\" />\n {incentives.map(renderIncentiveItem)}\n {renderTotalApr(totalApr, incentives)}\n {showSeparator && <div className=\"my-4 h-px bg-neon-green\" />}\n </div>\n );\n};\n\n// export const getVaultAprTooltip = (\n// campaign: CampaignSchema[\"campaign\"] | undefined | null,\n// vault: CampaignVaultSchema | undefined | null,\n// ) => {\n// if (!vault) return undefined;\n// const incentives = getVaultIncentives(campaign, vault);\n// // Group incentives by phase\n// const { incentivesByPhase, globalIncentives } = groupIncentivesByPhase(incentives);\n\n// // If no phases, show the original single breakdown\n// if (incentivesByPhase.size === 0) {\n// return (\n// <Tooltip\n// trigger={<Info className=\"size-3 text-neon-green\" />}\n// maxWidth=\"800px\"\n// content={\n// <div className=\"min-w-[250px] whitespace-normal break-words px-2 text-xs text-wise-white\">\n// {renderIncentiveBreakdown(\"Vault APR\", incentives)}\n// </div>\n// }\n// />\n// );\n// }\n\n// // Show phase breakdowns\n// const phases = sortPhases(Array.from(incentivesByPhase.keys()), incentives);\n\n// return (\n// <Tooltip\n// trigger={<Info className=\"size-3 text-neon-green\" />}\n// maxWidth=\"800px\"\n// content={\n// <div className=\"min-w-[250px] whitespace-normal break-words px-2 text-xs text-wise-white\">\n// {phases.map((phase, phaseIndex) => {\n// const phaseIncentives = getPhaseIncentives(phase, incentivesByPhase, globalIncentives);\n\n// return (\n// <div key={phase}>\n// {renderIncentiveBreakdown(`${phase} Vault APR`, phaseIncentives, phaseIndex < phases.length - 1)}\n// </div>\n// );\n// })}\n// </div>\n// }\n// />\n// );\n// };\n\nexport const sortVaults = (groups: CampaignGroupSchema[], vaults: CampaignVaultSchema[]) => {\n const groupToRank = groups.reduce(\n (acc, group) => {\n acc[group.name] = group.rank ?? 0;\n return acc;\n },\n {} as Record<string, number>,\n );\n\n return vaults.sort((a, b) => {\n // First sort by group rank\n const aGroupRank = groupToRank[getVaultGroupName(a) ?? \"\"];\n const bGroupRank = groupToRank[getVaultGroupName(b) ?? \"\"];\n if (aGroupRank !== bGroupRank) {\n return aGroupRank - bGroupRank;\n }\n\n // First sort by TVL (non-zero first, then highest to lowest)\n const aHasTVL = a.tvlUSD > 0;\n const bHasTVL = b.tvlUSD > 0;\n if (aHasTVL !== bHasTVL) {\n return aHasTVL ? -1 : 1;\n }\n if (aHasTVL && bHasTVL) {\n return b.tvlUSD - a.tvlUSD;\n }\n\n // Then sort by non-nil config\n const aHasConfig = getVaultHasConfig(a);\n const bHasConfig = getVaultHasConfig(b);\n if (aHasConfig !== bHasConfig) {\n return aHasConfig ? -1 : 1;\n }\n\n // Then sort by curator status (non-TBD curators first)\n const aHasValidCurator = a.curator && a.curator !== \"TBD\";\n const bHasValidCurator = b.curator && b.curator !== \"TBD\";\n if (aHasValidCurator !== bHasValidCurator) {\n return aHasValidCurator ? -1 : 1;\n }\n\n // Finally sort alphabetically by name\n return a.name.localeCompare(b.name);\n });\n};\n\nexport const groupVaults = (groups: CampaignGroupSchema[], vaults: CampaignVaultSchema[]) => {\n groups.sort((a, b) => {\n if (!a.rank || !b.rank) return 0;\n return a.rank - b.rank;\n });\n\n return groups.map((group, index) => {\n const filteredVaults = vaults.filter((vault) => getVaultGroupName(vault) === group.name);\n const sortedVaults = sortVaults(groups, filteredVaults);\n return {\n id: index,\n title: group.description,\n items: sortedVaults,\n };\n });\n};","// DELETE THIS FILE AFTER POSITIONS REFACTOR\nimport {\n arbitrum,\n avalanche,\n base,\n blast,\n boba,\n bsc,\n celo,\n Chain,\n fantom,\n fraxtal,\n gnosis,\n immutableZkEvm,\n linea,\n mainnet,\n metis,\n optimism,\n polygon,\n scroll,\n sepolia,\n zkSync,\n} from \"viem/chains\";\n\nconst katana: Chain = {\n id: 747474,\n name: \"Katana\",\n nativeCurrency: {\n name: \"ETH\",\n symbol: \"ETH\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.katana.network\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Katana Explorer\",\n url: \"https://katanascan.com\",\n },\n },\n};\n\nexport const supportedChains = [\n arbitrum,\n avalanche,\n base,\n blast,\n boba,\n bsc,\n celo,\n fantom,\n fraxtal,\n gnosis,\n immutableZkEvm,\n katana,\n linea,\n mainnet,\n metis,\n optimism,\n polygon,\n scroll,\n sepolia,\n zkSync,\n] as const;\n","import { useCallback, useMemo } from \"react\";\nimport type { Address } from \"viem\";\nimport { useCampaign } from \"./useCampaign\";\nimport type { CampaignVaultSchema } from \"./api/partners/campaignSchemas\";\nimport { useEvmCampaignPositions } from \"./useEvmCampaignPositions\";\n\nexport interface Position {\n vault: CampaignVaultSchema;\n userBalance: bigint;\n userTVL: number;\n}\n\nexport function useUserCampaignPositions({\n campaignName,\n userAddress,\n}: {\n campaignName: string;\n userAddress?: string | Address;\n}) {\n const { vaults } = useCampaign(campaignName);\n\n const hasEVMVaults = vaults.some((vault: any) => !vault.vedaProviderConfig?.[1]);\n\n const evmPositions = useEvmCampaignPositions({\n campaignName,\n userAddress: hasEVMVaults ? (userAddress as Address) : undefined,\n });\n\n const userPositions = useMemo(\n () => [...evmPositions.userPositions],\n [evmPositions.userPositions]\n );\n\n const userTotalTVL = useMemo(() => evmPositions.userTotalTVL, [evmPositions.userTotalTVL]);\n\n const isLoading = evmPositions.isLoading;\n const error = evmPositions.error;\n\n const invalidateUserPositions = useCallback(async () => {\n await Promise.all([evmPositions.invalidateUserPositions()]);\n }, [evmPositions.invalidateUserPositions]);\n\n return {\n userPositions,\n userTotalTVL,\n isLoading,\n error,\n invalidateUserPositions,\n };\n}\n"],"mappings":"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","names":["import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react_query","import_api","defaultConfig","query","import_react","import_viem","import_react_query","import_react","import_react_query","_","item","import_zod","import_viem","module","key","result","item","import_zod","import_lodash","_","import_zod","import_zod","import_zod","import_zod","import_zod","item","import_zod","import_zod","AuthenticateMethod","SupportedWalletEcosystem","SupportedSocialProvider","z","root","item","import_zod","import_zod","root","item","apr","import_chains","katana","configs","priceTokens","result","import_react"]}
|