{"version":3,"sources":["../src/marketplace/react.tsx","../src/marketplace/client.ts"],"sourcesContent":["import {\n  createContext,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n  useEffect,\n  type ReactNode,\n} from \"react\";\nimport {\n  useQuery,\n  useQueryClient,\n  type UseQueryOptions,\n  type UseQueryResult,\n  type QueryClient,\n  QueryClientProvider,\n} from \"@tanstack/react-query\";\nimport type {\n  CollectionListingsOptions,\n  CollectionOrdersOptions,\n  CollectionSummaryOptions,\n  FetchCollectionTokensOptions,\n  FetchCollectionTokensResult,\n  FetchTokenBalancesOptions,\n  FetchTokenBalancesResult,\n  MarketplaceClient,\n  MarketplaceClientConfig,\n  MarketplaceFees,\n  NormalizedCollection,\n  RoyaltyFee,\n  RoyaltyFeeOptions,\n  TokenDetailsOptions,\n  TokenDetails,\n} from \"./types\";\nimport { fetchTokenBalances } from \"./tokens\";\nimport { createMarketplaceClient } from \"./client\";\nimport type { OrderModel } from \"../modules/marketplace\";\n\n// ============================================================================\n// Marketplace Client Context\n// ============================================================================\n\nexport type MarketplaceClientStatus = \"idle\" | \"loading\" | \"ready\" | \"error\";\n\nexport interface MarketplaceClientContextValue {\n  client: MarketplaceClient | null;\n  status: MarketplaceClientStatus;\n  error: Error | null;\n  refresh: () => Promise<MarketplaceClient | null>;\n}\n\nconst MarketplaceClientContext = createContext<\n  MarketplaceClientContextValue | undefined\n>(undefined);\n\ninterface MarketplaceClientProviderBaseProps {\n  children: ReactNode;\n  queryClient?: QueryClient;\n  onClientReady?: (client: MarketplaceClient) => void;\n}\n\ninterface MarketplaceClientProviderWithConfig\n  extends MarketplaceClientProviderBaseProps {\n  config: MarketplaceClientConfig;\n  client?: undefined;\n}\n\ninterface MarketplaceClientProviderWithClient\n  extends MarketplaceClientProviderBaseProps {\n  config?: MarketplaceClientConfig;\n  client: MarketplaceClient;\n}\n\nexport type MarketplaceClientProviderProps =\n  | MarketplaceClientProviderWithConfig\n  | MarketplaceClientProviderWithClient;\n\ninterface ProviderState {\n  client: MarketplaceClient | null;\n  status: MarketplaceClientStatus;\n  error: Error | null;\n}\n\nexport function MarketplaceClientProvider(\n  props: MarketplaceClientProviderProps,\n) {\n  const { children, queryClient: externalQueryClient, onClientReady } = props;\n\n  const [state, setState] = useState<ProviderState>({\n    client: props.client ?? null,\n    status: props.client ? \"ready\" : \"idle\",\n    error: null,\n  });\n\n  const initialize = useCallback(async () => {\n    if (\"client\" in props && props.client) {\n      setState({ client: props.client, status: \"ready\", error: null });\n      onClientReady?.(props.client);\n      return props.client;\n    }\n\n    if (!(\"config\" in props) || !props.config) {\n      const error = new Error(\n        \"MarketplaceClientProvider: either `client` or `config` must be provided.\",\n      );\n      setState({ client: null, status: \"error\", error });\n      return null;\n    }\n\n    setState((prev) => ({\n      ...prev,\n      status: \"loading\",\n      error: null,\n    }));\n\n    try {\n      const client = await createMarketplaceClient(props.config);\n      setState({ client, status: \"ready\", error: null });\n      onClientReady?.(client);\n      return client;\n    } catch (err) {\n      const error =\n        err instanceof Error ? err : new Error(String(err ?? \"Unknown error\"));\n      setState({ client: null, status: \"error\", error });\n      return null;\n    }\n  }, [props, onClientReady]);\n\n  useEffect(() => {\n    void initialize();\n  }, [initialize]);\n\n  const refresh = useCallback(async () => {\n    return initialize();\n  }, [initialize]);\n\n  const contextValue = useMemo<MarketplaceClientContextValue>(\n    () => ({\n      client: state.client,\n      status: state.status,\n      error: state.error,\n      refresh,\n    }),\n    [state, refresh],\n  );\n\n  const content = (\n    <MarketplaceClientContext.Provider value={contextValue}>\n      {children}\n    </MarketplaceClientContext.Provider>\n  );\n\n  // If an external QueryClient is provided, wrap with QueryClientProvider\n  if (externalQueryClient) {\n    return (\n      <QueryClientProvider client={externalQueryClient}>\n        {content}\n      </QueryClientProvider>\n    );\n  }\n\n  return content;\n}\n\nexport function useMarketplaceClient(): MarketplaceClientContextValue {\n  const context = useContext(MarketplaceClientContext);\n  if (!context) {\n    throw new Error(\n      \"useMarketplaceClient must be used within a MarketplaceClientProvider or a compatible context bridge.\",\n    );\n  }\n  return context;\n}\n\nexport { MarketplaceClientContext };\n\n// ============================================================================\n// Query key factory\n// ============================================================================\n\nexport const marketplaceKeys = {\n  all: [\"marketplace\"] as const,\n  collection: (address: string) =>\n    [...marketplaceKeys.all, \"collection\", address] as const,\n  collectionTokens: (options: FetchCollectionTokensOptions) =>\n    [\n      ...marketplaceKeys.all,\n      \"collectionTokens\",\n      options.address,\n      options.project,\n      options.cursor,\n      options.limit,\n      options.tokenIds,\n      options.attributeFilters\n        ? serializeFilters(options.attributeFilters)\n        : undefined,\n    ] as const,\n  collectionOrders: (options: CollectionOrdersOptions) =>\n    [\n      ...marketplaceKeys.all,\n      \"collectionOrders\",\n      options.collection,\n      options.tokenId,\n      options.status,\n      options.category,\n      options.limit,\n      options.orderIds,\n    ] as const,\n  collectionListings: (options: CollectionListingsOptions) =>\n    [\n      ...marketplaceKeys.all,\n      \"collectionListings\",\n      options.collection,\n      options.tokenId,\n      options.limit,\n      options.verifyOwnership,\n    ] as const,\n  token: (options: TokenDetailsOptions) =>\n    [\n      ...marketplaceKeys.all,\n      \"token\",\n      options.collection,\n      options.tokenId,\n      options.projectId,\n    ] as const,\n  fees: () => [...marketplaceKeys.all, \"fees\"] as const,\n  royaltyFee: (options: RoyaltyFeeOptions) =>\n    [\n      ...marketplaceKeys.all,\n      \"royaltyFee\",\n      options.collection,\n      options.tokenId,\n      options.amount.toString(),\n    ] as const,\n  tokenBalances: (options: FetchTokenBalancesOptions) =>\n    [\n      ...marketplaceKeys.all,\n      \"tokenBalances\",\n      options.project,\n      options.contractAddresses,\n      options.accountAddresses,\n      options.tokenIds,\n      options.cursor,\n      options.limit,\n    ] as const,\n};\n\nfunction serializeFilters(\n  filters: FetchCollectionTokensOptions[\"attributeFilters\"],\n): string {\n  if (!filters) return \"\";\n  return JSON.stringify(\n    Object.entries(filters)\n      .sort(([a], [b]) => a.localeCompare(b))\n      .map(([k, v]) => [k, v != null ? String(v) : null]),\n  );\n}\n\n// ============================================================================\n// TanStack Query hooks\n// ============================================================================\n\nfunction ensureClient(client: MarketplaceClient | null): MarketplaceClient {\n  if (!client) throw new Error(\"MarketplaceClient not ready\");\n  return client;\n}\n\ntype QueryOptions<T> = Omit<UseQueryOptions<T, Error>, \"queryKey\" | \"queryFn\">;\n\nexport function useMarketplaceCollection(\n  options: CollectionSummaryOptions,\n  queryOptions?: QueryOptions<NormalizedCollection | null> & {\n    enabled?: boolean;\n  },\n): UseQueryResult<NormalizedCollection | null, Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.collection(options.address),\n    queryFn: () => ensureClient(client).getCollection(options),\n    enabled:\n      isReady && Boolean(options.address) && (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceCollectionTokens(\n  options: FetchCollectionTokensOptions,\n  queryOptions?: QueryOptions<FetchCollectionTokensResult> & {\n    enabled?: boolean;\n  },\n): UseQueryResult<FetchCollectionTokensResult, Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.collectionTokens(options),\n    queryFn: () => ensureClient(client).listCollectionTokens(options),\n    enabled:\n      isReady && Boolean(options.address) && (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceCollectionOrders(\n  options: CollectionOrdersOptions,\n  queryOptions?: QueryOptions<OrderModel[]> & { enabled?: boolean },\n): UseQueryResult<OrderModel[], Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.collectionOrders(options),\n    queryFn: () => ensureClient(client).getCollectionOrders(options),\n    enabled:\n      isReady && Boolean(options.collection) && (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceCollectionListings(\n  options: CollectionListingsOptions,\n  queryOptions?: QueryOptions<OrderModel[]> & { enabled?: boolean },\n): UseQueryResult<OrderModel[], Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.collectionListings(options),\n    queryFn: () => ensureClient(client).listCollectionListings(options),\n    enabled:\n      isReady && Boolean(options.collection) && (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceToken(\n  options: TokenDetailsOptions,\n  queryOptions?: QueryOptions<TokenDetails | null> & { enabled?: boolean },\n): UseQueryResult<TokenDetails | null, Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.token(options),\n    queryFn: () => ensureClient(client).getToken(options),\n    enabled:\n      isReady &&\n      Boolean(options.collection) &&\n      Boolean(options.tokenId) &&\n      (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceTokenBalances(\n  options: FetchTokenBalancesOptions,\n  queryOptions?: QueryOptions<FetchTokenBalancesResult> & {\n    enabled?: boolean;\n  },\n): UseQueryResult<FetchTokenBalancesResult, Error> {\n  return useQuery({\n    queryKey: marketplaceKeys.tokenBalances(options),\n    queryFn: () => fetchTokenBalances(options),\n    enabled: queryOptions?.enabled ?? true,\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceFees(\n  queryOptions?: QueryOptions<MarketplaceFees | null> & { enabled?: boolean },\n): UseQueryResult<MarketplaceFees | null, Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.fees(),\n    queryFn: () => ensureClient(client).getFees(),\n    enabled: isReady && (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\nexport function useMarketplaceRoyaltyFee(\n  options: RoyaltyFeeOptions,\n  queryOptions?: QueryOptions<RoyaltyFee | null> & { enabled?: boolean },\n): UseQueryResult<RoyaltyFee | null, Error> {\n  const { client, status } = useMarketplaceClient();\n  const isReady = status === \"ready\" && client !== null;\n\n  return useQuery({\n    queryKey: marketplaceKeys.royaltyFee(options),\n    queryFn: () => ensureClient(client).getRoyaltyFee(options),\n    enabled:\n      isReady &&\n      Boolean(options.collection) &&\n      Boolean(options.tokenId) &&\n      options.amount > 0n &&\n      (queryOptions?.enabled ?? true),\n    ...queryOptions,\n  });\n}\n\n// ============================================================================\n// Invalidation helpers\n// ============================================================================\n\n/** Invalidate all marketplace queries */\nexport function useInvalidateMarketplace() {\n  const queryClient = useQueryClient();\n  return useCallback(\n    () => queryClient.invalidateQueries({ queryKey: marketplaceKeys.all }),\n    [queryClient],\n  );\n}\n\n/** Invalidate queries for a specific collection */\nexport function useInvalidateCollection(address: string) {\n  const queryClient = useQueryClient();\n  return useCallback(\n    () =>\n      queryClient.invalidateQueries({\n        queryKey: marketplaceKeys.collection(address),\n      }),\n    [queryClient, address],\n  );\n}\n","import { getMarketplaceClientRuntimeMode } from \"./runtime\";\nimport type { MarketplaceClient, MarketplaceClientConfig } from \"./types\";\n\nexport async function createMarketplaceClient(\n  config: MarketplaceClientConfig,\n): Promise<MarketplaceClient> {\n  const mode = getMarketplaceClientRuntimeMode(config.runtime);\n\n  if (mode === \"edge\") {\n    const { createEdgeMarketplaceClient } = await import(\"./client.edge\");\n    return createEdgeMarketplaceClient(config);\n  }\n\n  const { createDojoMarketplaceClient } = await import(\"./client.dojo\");\n  return createDojoMarketplaceClient(config);\n}\n"],"mappings":"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","names":[]}