import * as _tanstack_react_query from '@tanstack/react-query'; import { QueryKey, DefaultError, QueryObserverResult } from '@tanstack/react-query'; import * as _slicekit_core from '@slicekit/core'; import { GetSlicerOrdersParams, GetSlicerProductsParams, PosLocationsResponse, GetPosLocationsParams, GetSlicerOrdersResponseForInclude, GetSlicerProductsResponseForInclude, ProductPriceResult, getProductPrice, GetSlicersParams } from '@slicekit/core'; import * as _slicekit_commerce from '@slicekit/commerce'; import { PaginationMetadata, PaginationParams, PaginatedData } from '@slicekit/commerce'; import * as react from 'react'; import { Dispatch, SetStateAction } from 'react'; import { ReadContractsErrorType, Config } from '@wagmi/core'; import { fundsModuleConfig, iPriceFeedConfig, productsModuleConfig, sliceCoreConfig, slicerManagerConfig, fundsModuleAddress } from '@slicekit/abi/deployments'; import { SliceAccountClientCall, SliceAccountClientExecutionError, SliceAccountClient } from '@slicekit/wallet/execution'; import { Abi, ContractFunctionName, ContractFunctionParameters, GetValue, Hex, erc20Abi, WalletCapabilities, Capabilities } from 'viem'; import { registryProductActionAbi, slicerAbi } from '@slicekit/abi'; interface UsePaginationParams { queryKey?: QueryKey; initialItems: TItem[]; initialPagination: PaginationMetadata | null | undefined; fetchPage: (params: PaginationParams) => Promise>; enabled?: boolean; getItemKey?: (item: TItem) => string | number; isComplete?: (items: TItem[], pagination: PaginationMetadata | null) => boolean; mergeItems?: (currentItems: TItem[], nextItems: TItem[]) => TItem[]; onError?: (error: DefaultError) => void; stopOnError?: boolean; staleTime?: number; } interface TablePaginationState { pageIndex: number; pageSize: number; } type TablePaginationUpdater = TablePaginationState | ((current: TablePaginationState) => TablePaginationState); type TableStateUpdater = TState | ((current: TState) => TState); type TableStateChangeHandler = (updater: TableStateUpdater) => void; type PaginatedTableQueryState = { columnFilters: TColumnFilters; pagination: TablePaginationState; sorting: TSorting; }; type PaginatedTablePage = { data: TItem[]; pagination: TPagination; }; type PaginatedTableCacheSnapshot = Array; type PaginatedTablePageDataUpdater> = (data: TItem[], page: TPage) => TItem[]; type UsePaginatedTableQueryFetchParams = { query: TQuery; knownTotal?: number; signal?: AbortSignal; }; interface UsePaginatedTableQueryParams, TQueryKey extends QueryKey = QueryKey> { activeQuery: TQuery; initialQuery: TQuery; initialResult: TPage; queryKey: (query: TQuery) => TQueryKey; fetchPage: (params: UsePaginatedTableQueryFetchParams) => Promise; getQueryIdentity: (query: TQuery) => string; normalizeQuery?: (query: TQuery) => TQuery; onQueryTransition?: (query: TQuery) => void; queryCacheKey?: QueryKey; activeRequestDelayMs?: number; prefetchedPages?: number; staleTime?: number; } interface UsePaginatedTableQueryResult> { pageResult: TPage; currentPagination: TPage["pagination"]; isPagePending: boolean; isFetching: boolean; hasPageData: boolean; setPageData: Dispatch>; prefetchPage: (pageIndex: number, pageSize?: number, baseQuery?: TQuery) => void; prefetchReachablePages: (pagination: TPage["pagination"], query?: TQuery) => void; getCachedPagesData: () => PaginatedTableCacheSnapshot; restoreCachedPagesData: (snapshot: PaginatedTableCacheSnapshot) => void; setCachedPagesData: (updater: PaginatedTablePageDataUpdater) => void; cancelCachedPages: () => Promise; invalidateCachedPages: () => Promise; handleQueryTransition: (query: TQuery) => void; } interface UsePaginatedTableStateQueryParams, TColumnFilters, TSorting, TQueryKey extends QueryKey = QueryKey> extends Omit, "activeQuery"> { columnFilters: TColumnFilters; paginationState: TablePaginationState; sorting: TSorting; setColumnFilters: TableStateChangeHandler; setPaginationState: TableStateChangeHandler; setSorting: TableStateChangeHandler; tableStateToQuery: (state: PaginatedTableQueryState) => TQuery; clampPageToTotal?: boolean; prefetchOnPageData?: boolean; } interface UsePaginatedTableStateQueryResult, TColumnFilters, TSorting> extends UsePaginatedTableQueryResult { activeQuery: TQuery; handleColumnFilters: TableStateChangeHandler; handleSorting: TableStateChangeHandler; handlePagination: TableStateChangeHandler; } declare const createPendingPagination: (query: PaginationParams, total: number) => TPagination; declare const resolveTablePaginationState: ({ current, updater }: { current: TablePaginationState; updater: TablePaginationUpdater; }) => TablePaginationState; declare const resolveTableState: ({ current, updater }: { current: TState; updater: TableStateUpdater; }) => TState; interface UseLoadMoreOnScrollParams { hasMore: boolean; isLoading?: boolean; onLoadMore?: () => void; enabled?: boolean; offset?: number; checkOnRender?: boolean; } interface UseLoadMoreOnIntersectionParams { hasMore: boolean; isLoading?: boolean; onLoadMore?: () => void; enabled?: boolean; root?: IntersectionObserverInit["root"]; rootMargin?: IntersectionObserverInit["rootMargin"]; threshold?: IntersectionObserverInit["threshold"]; requestKey?: string | number; } type SlicerProductsItem = GetSlicerProductsResponseForInclude["data"][number]; type SlicerOrdersItem = GetSlicerOrdersResponseForInclude["data"][number]; type ApiAuthKey = "apiKey" | "signer"; type ApiRequestAuth = TParams extends object ? Pick> : never; type ApiPageQuery = TParams extends object ? Omit : never; type ApiPaginationRequest = TParams extends object ? Omit : never; type SlicerProductsQueryBase = ApiPageQuery>; type SlicerProductsRequestBase = ApiPaginationRequest>; type SlicerProductsAuth = ApiRequestAuth>; type SlicerOrdersQueryBase = ApiPageQuery>; type SlicerOrdersRequestBase = ApiPaginationRequest>; type SlicerOrdersAuth = ApiRequestAuth>; type SlicerProductsPageQuery = SlicerProductsQueryBase & { page: number; limit: number; }; type SlicerOrdersPageQuery = SlicerOrdersQueryBase & { page: number; limit: number; }; type UseSlicerProductsParams = SlicerProductsRequestBase & Omit>, "fetchPage" | "initialItems" | "initialPagination"> & { limit?: number; initialData?: GetSlicerProductsResponseForInclude | null; }; type UseSlicerOrdersParams = SlicerOrdersRequestBase & Omit>, "fetchPage" | "initialItems" | "initialPagination"> & { limit?: number; initialData?: GetSlicerOrdersResponseForInclude | null; }; type UseSlicerProductsTableQueryParams = SlicerProductsAuth & Omit, SlicerProductsPageQuery, GetSlicerProductsResponseForInclude>, "fetchPage" | "getQueryIdentity" | "queryKey"> & { queryKey?: (query: SlicerProductsPageQuery) => QueryKey; getQueryIdentity?: (query: SlicerProductsPageQuery) => string; }; type UseSlicerOrdersTableQueryParams = SlicerOrdersAuth & Omit, SlicerOrdersPageQuery, GetSlicerOrdersResponseForInclude>, "fetchPage" | "getQueryIdentity" | "queryKey"> & { queryKey?: (query: SlicerOrdersPageQuery) => QueryKey; getQueryIdentity?: (query: SlicerOrdersPageQuery) => string; }; type UsePosLocationsParams = GetPosLocationsParams & { enabled?: boolean; queryKey?: QueryKey; staleTime?: number; select?: (data: PosLocationsResponse) => TData; }; type SliceWalletStaticContractConfig = { FundsModule: typeof fundsModuleConfig; IPriceFeed: typeof iPriceFeedConfig; ProductsModule: typeof productsModuleConfig; SliceCore: typeof sliceCoreConfig; SlicerManager: typeof slicerManagerConfig; }; type SliceWalletExternalContractConfig = { ERC20: { abi: typeof erc20Abi; }; RegistryProductAction: { abi: typeof registryProductActionAbi; }; Slicer: { abi: typeof slicerAbi; }; }; type SliceWalletContractConfig = SliceWalletStaticContractConfig & SliceWalletExternalContractConfig; type SliceWalletContractAbi = SliceWalletContractConfig[contract]["abi"]; type SliceWalletContractFunctionCall = ContractFunctionName> = functionName extends ContractFunctionName ? Omit, "abi" | "address"> & GetValue & { dataSuffix?: Hex; } : never; type SliceWalletContractName = keyof SliceWalletContractConfig; type SliceWalletStaticContractName = keyof SliceWalletStaticContractConfig; type SliceWalletExternalContractName = keyof SliceWalletExternalContractConfig; type SliceWalletConfiguredContractCall = { [contractName in contract]: { contract: contractName; } & SliceWalletContractFunctionCall>; }[contract]; type SliceWalletExternalContractCall = { [contractName in contract]: { contract: contractName; address: Hex; } & SliceWalletContractFunctionCall>; }[contract]; type SliceWalletRawCall = { data?: Hex; to: Hex; value?: bigint; }; type SliceWalletCall = SliceWalletConfiguredContractCall | SliceWalletExternalContractCall | SliceWalletRawCall; type SliceWalletCallLog = { address: Hex; data: Hex; topics: readonly Hex[]; }; type SliceWalletCallReceipt = { blockHash: Hex; blockNumber: bigint; gasUsed: bigint; logs: SliceWalletCallLog[]; status: "success" | "reverted"; transactionHash: Hex; }; type SliceWalletCallResult = { type: "batch"; sendCallsId: string; transactionHash: Hex | null; receipts: SliceWalletCallReceipt[]; } | { type: "transactions"; sendCallsId?: string; transactionHash: Hex; receipts: SliceWalletCallReceipt[]; } | { type: "empty"; transactionHash: null; receipts: []; }; type SliceWalletCallSubmitOptions = { capabilities?: WalletCapabilities; onSubmitted?: () => void; useSmartAccount?: boolean; }; type SliceSendWalletCalls = (calls: SliceWalletCall[], options?: SliceWalletCallSubmitOptions) => Promise; type SlicerWithdrawableFundsCurrency = { address: `0x${string}`; symbol: string; decimals: number; }; type SlicerWithdrawableCurrency = SlicerWithdrawableFundsCurrency & { unreleasedRawAmount: bigint; fundsModuleRawAmount: bigint; rawAmount: bigint; formattedAmount: number; }; type SlicerWithdrawableContractResult = { result?: bigint | readonly [bigint, bigint]; }; type SlicerWithdrawableReadContractsData = readonly SlicerWithdrawableContractResult[]; type SlicerWithdrawableRefetchResult = QueryObserverResult; type UseSlicerWithdrawableFundsResult = { data: SlicerWithdrawableCurrency[]; error: ReadContractsErrorType | null; isLoading: boolean; isFetching: boolean; refetch: () => Promise; }; declare function usePosLocations({ slicerId, signer, include, enabled, queryKey, staleTime, select }: UsePosLocationsParams): _tanstack_react_query.UseQueryResult, Error>; type ProductPriceParams = Parameters[1]; type UseProductPriceParams = ProductPriceParams & { enabled?: boolean; select?: (data: ProductPriceResult | null) => TData; }; declare const useProductPrice: (config: Config, { product, variantId, buyer, currency, fiatCurrency, priceResolution, quantity, dynamicPriceBufferBps, enabled, select }: UseProductPriceParams) => _tanstack_react_query.UseQueryResult, Error>; declare function useSlicerOrders({ limit, initialData, queryKey, enabled, getItemKey, isComplete, mergeItems, onError, stopOnError, staleTime, ...params }: UseSlicerOrdersParams): { items: GetSlicerOrdersResponseForInclude["data"][number][]; setItems: react.Dispatch["data"][number][]>>; pagination: _slicekit_commerce.PaginationMetadata | null; setPagination: react.Dispatch>; error: Error | null; hasNextPage: boolean; isFetchingNextPage: boolean; nextPage: number | null; fetchNextPage: () => Promise; }; declare function useSlicerOrdersTableQuery({ queryKey, getQueryIdentity, ...params }: UseSlicerOrdersTableQueryParams): UsePaginatedTableQueryResult["data"][number], SlicerOrdersPageQuery, GetSlicerOrdersResponseForInclude>; declare function useSlicerProducts({ limit, initialData, queryKey, enabled, getItemKey, isComplete, mergeItems, onError, stopOnError, staleTime, ...params }: UseSlicerProductsParams): { items: GetSlicerProductsResponseForInclude["data"][number][]; setItems: react.Dispatch["data"][number][]>>; pagination: _slicekit_commerce.PaginationMetadata | null; setPagination: react.Dispatch>; error: Error | null; hasNextPage: boolean; isFetchingNextPage: boolean; nextPage: number | null; fetchNextPage: () => Promise; }; declare function useSlicerProductsTableQuery({ queryKey, getQueryIdentity, ...params }: UseSlicerProductsTableQueryParams): UsePaginatedTableQueryResult["data"][number], SlicerProductsPageQuery, GetSlicerProductsResponseForInclude>; declare const useSlicerWithdrawableFunds: ({ account, slicerAddress, currencies, chainId, enabled, refetchInterval }: { account?: `0x${string}`; slicerAddress: `0x${string}`; currencies: SlicerWithdrawableFundsCurrency[]; chainId: keyof typeof fundsModuleAddress; enabled?: boolean; refetchInterval?: number; }) => UseSlicerWithdrawableFundsResult; type StoreMetadataAuth = GetSlicersParams extends infer TParams ? TParams extends object ? Pick> : never : never; declare function useStoreMetadata({ slicerIds, enabled, signer }: StoreMetadataAuth & { slicerIds: number[] | undefined; enabled?: boolean; }): _tanstack_react_query.UseQueryResult & { acceptedCurrencies: NonNullable<_slicekit_core.GetSlicerResponse["acceptedCurrencies"]>; } & { appPreferences: { displayFiatCurrency: string; enableTips: boolean; isDefaultDelivery: boolean; isDefaultOnline: boolean; isDefaultOnsite: boolean; preferredSizeUnit: "Cm" | "Inches"; preferredWeightUnit: "G" | "Kg" | "Lbs" | "Oz"; primaryCurrencyAddress: string | null; slicerId: number; tipsCurrencyAddress: string | null; } | null; } & { businessDetails?: { physicalAddress?: { address: string | null; city: string | null; country: string | null; email: string | null; id: number; latitude: number | null; longitude: number | null; phone: string | null; phonePrefix: number | null; placeId: string | null; postalCode: string | null; state: string | null; } | undefined; name: string | null; physicalAddressId: number; slicerId: number; taxId: string | null; } | null; } & { config: { acceptsAllCurrencies: boolean; currenciesControlled: boolean; productsControlled: boolean; protocolFee: number; referralFeeStore: number; releaseTimelock: number; resliceAllowed: boolean; royaltyPercentage: number; royaltyReceiverAddress: string; slicerId: number; slicerVersion: number; storeClosed: boolean; transferWhileControlledAllowed: boolean; transferableTimelock: number; } | null; } & { posLocations: NonNullable<_slicekit_core.GetSlicerResponse["posLocations"]>; } & { productOptions: NonNullable<_slicekit_core.GetSlicerResponse["productOptions"]>; } & { productTypes: NonNullable<_slicekit_core.GetSlicerResponse["productTypes"]>; })[]>, Error>; type SliceWalletEncodedCall = { to: Hex; data: Hex; value?: bigint; }; type SliceSendCallsInput = { account?: Hex; calls: SliceWalletEncodedCall[]; capabilities?: Capabilities; chainId: number; forceAtomic?: boolean; }; type SliceSendCallsOutput = { id: string; }; type SliceSendTransactionInput = SliceWalletEncodedCall & { account?: Hex; chainId: number; }; type SliceWaitForCallsStatusInput = { id: string; pollingInterval?: number; throwOnFailure?: boolean; timeout?: number; }; type SliceCallsStatusReceipt = { transactionHash: Hex; }; type SliceWaitForCallsStatusOutput = { receipts?: SliceCallsStatusReceipt[]; }; type SliceWaitForTransactionReceiptInput = { chainId: number; hash: Hex; }; type SliceWalletCallExecutorDependencies = { account?: Hex; callsStatusPollingInterval?: number; callsStatusTimeout?: number; capabilities?: Capabilities; chainId: number; origin?: string; permissionExecution?: { onFallback?: (error: SliceAccountClientExecutionError) => Promise | void; onSuccess?: () => Promise | void; shouldFallback?: (error: SliceAccountClientExecutionError) => boolean; }; sendCalls: (input: SliceSendCallsInput) => Promise; sendTransaction: (input: SliceSendTransactionInput) => Promise; smartAccountClient?: SliceAccountClient; supportsAtomicBatch: boolean; supportsPaymasterService: boolean; useSmartAccount?: boolean; waitForCallsStatus: (input: SliceWaitForCallsStatusInput) => Promise; waitForTransactionReceipt: (input: SliceWaitForTransactionReceiptInput) => Promise; }; type useWalletCallsParams = { account?: Hex; callsStatusPollingInterval?: number; callsStatusTimeout?: number; capabilities?: Capabilities; chainId?: number; config?: Config; permissionExecution?: SliceWalletCallExecutorDependencies["permissionExecution"]; smartAccountClient?: SliceAccountClient; useSmartAccount?: boolean; }; declare const encodeSliceWalletCalls: (calls: readonly SliceWalletCall[]) => SliceAccountClientCall[]; declare const useWalletCalls: ({ account, callsStatusPollingInterval, callsStatusTimeout, capabilities, chainId: chainIdOverride, config: configOverride, permissionExecution, smartAccountClient, useSmartAccount }?: useWalletCallsParams) => { sendCalls: (calls: SliceWalletCall[], options?: SliceWalletCallSubmitOptions) => Promise; supportsAtomicBatch: boolean; }; declare function useLoadMoreOnIntersection({ enabled, hasMore, isLoading, onLoadMore, requestKey, root, rootMargin, threshold }: UseLoadMoreOnIntersectionParams): { loadMoreRef: react.RefObject; }; declare function useLoadMoreOnScroll({ hasMore, isLoading, onLoadMore, enabled, offset, checkOnRender }: UseLoadMoreOnScrollParams): { scrollContainerRef: react.RefObject; loadMoreIfNearBottom: () => void; }; declare function usePaginatedTableQuery>({ activeQuery, initialQuery, initialResult, queryKey, fetchPage, getQueryIdentity, normalizeQuery, onQueryTransition, activeRequestDelayMs, queryCacheKey, prefetchedPages, staleTime }: UsePaginatedTableQueryParams): UsePaginatedTableQueryResult; declare function usePaginatedTableStateQuery, TColumnFilters, TSorting>({ columnFilters, paginationState, sorting, setColumnFilters, setPaginationState, setSorting, tableStateToQuery, clampPageToTotal, prefetchOnPageData, ...queryParams }: UsePaginatedTableStateQueryParams): UsePaginatedTableStateQueryResult; declare function usePagination({ queryKey, initialItems, initialPagination, fetchPage, enabled, getItemKey, isComplete, mergeItems, onError, stopOnError, staleTime }: UsePaginationParams): { items: TItem[]; setItems: Dispatch>; pagination: PaginationMetadata | null; setPagination: Dispatch>; error: Error | null; hasNextPage: boolean; isFetchingNextPage: boolean; nextPage: number | null; fetchNextPage: () => Promise; }; export { createPendingPagination, encodeSliceWalletCalls, resolveTablePaginationState, resolveTableState, useLoadMoreOnIntersection, useLoadMoreOnScroll, usePaginatedTableQuery, usePaginatedTableStateQuery, usePagination, usePosLocations, useProductPrice, useSlicerOrders, useSlicerOrdersTableQuery, useSlicerProducts, useSlicerProductsTableQuery, useSlicerWithdrawableFunds, useStoreMetadata, useWalletCalls }; export type { PaginatedTableCacheSnapshot, PaginatedTablePage, PaginatedTablePageDataUpdater, PaginatedTableQueryState, SliceSendWalletCalls, SliceWalletCall, SliceWalletCallLog, SliceWalletCallReceipt, SliceWalletCallResult, SliceWalletCallSubmitOptions, SlicerOrdersPageQuery, SlicerProductsPageQuery, SlicerWithdrawableCurrency, SlicerWithdrawableFundsCurrency, TablePaginationState, TablePaginationUpdater, TableStateChangeHandler, TableStateUpdater, UseLoadMoreOnIntersectionParams, UseLoadMoreOnScrollParams, UsePaginatedTableQueryFetchParams, UsePaginatedTableQueryParams, UsePaginatedTableQueryResult, UsePaginatedTableStateQueryParams, UsePaginatedTableStateQueryResult, UsePaginationParams, UsePosLocationsParams, UseSlicerOrdersParams, UseSlicerOrdersTableQueryParams, UseSlicerProductsParams, UseSlicerProductsTableQueryParams, UseSlicerWithdrawableFundsResult };