import { type DirectExecution } from '@funkit/api-base';
import { type UseQueryResult } from '@tanstack/react-query';
import { type PurifiedCheckoutHistoryItem } from '../../utils/purifyCheckoutHistoryItem';
interface RecentDepositsApiQuery {
    isVisible: boolean;
    fetchSize?: number;
    apiKey: string;
    userId: string;
    refreshIntervalMs: number;
}
type DefaultDEQueryKey = 'apiKey' | 'userId' | 'refreshIntervalMs';
export type RecentDEQuerySimplified = {
    isVisible: boolean;
    fetchSize?: number;
};
/**
 * @returns raw direct executions for the current user (no filtering or transforms applied)
 */
export declare const useRecentDeposits: ({ isVisible, fetchSize, }: RecentDEQuerySimplified) => UseQueryResult<DirectExecution[]>;
/**
 * Full explicit-params version of `useRecentDeposits` for use outside FunkitProvider context.
 * Used by SDK wrappers.
 */
interface RecentDirectExecutionsQuery extends RecentDepositsApiQuery {
    cutOffTimeMs?: number;
    /**
     * Optional filter function to further refine which deposits are returned.
     * WARNING: Must be a stable reference (wrap in useMemo), otherwise the hook will constantly re-render.
     * @param de - The DirectExecution to filter
     * @returns true to include the deposit, false to exclude it
     */
    memoizedFilterFunc?: (de: DirectExecution) => boolean;
}
/**
 * Hook for SDK users to fetch recent deposits/direct executions with automatic context integration.
 *
 * **Requirements**: Must be used inside FunkitProvider context as it automatically retrieves:
 * - API key, User ID, Refresh interval from Fun
 *
 * Returns checkout history items
 *
 * @param query - Simplified query parameters (excludes apiKey, userId, refreshIntervalMs)
 * @returns Object with `data` property containing array of purified direct executions or undefined if not loaded
 *
 * @example
 * ```tsx
 * function MyComponent() {
 *   const { data: recentDeposits } = useFunkitRecentDeposits({
 *     isVisible: true,
 *     fetchSize: 10,
 *     cutOffTimeMs: 24 * 60 * 60 * 1000, // Last 24 hours
 *   })
 *   return <div>{recentDeposits?.length} recent deposits</div>
 * }
 * ```
 */
export declare function useFunkitRecentDeposits(query: Omit<RecentDirectExecutionsQuery, DefaultDEQueryKey>): {
    data: PurifiedCheckoutHistoryItem[] | undefined;
};
/**
 * Implementation hook for SDK users to fetch recent deposits with explicit parameters.
 *
 * **Requirements**: Does NOT require FunkitProvider context. All parameters must be provided explicitly.
 * This is useful for custom implementations or when using outside the standard Funkit provider hierarchy.
 *
 * Returns purified checkout history items
 *
 * @param query - Complete query parameters including apiKey, userId, and refreshIntervalMs
 * @returns Object with `data` property containing array of purified direct executions or undefined if not loaded
 *
 * @example
 * ```tsx
 * function MyCustomComponent() {
 *   const { data: recentDeposits } = useFunkitRecentDepositsImpl({
 *     isVisible: true,
 *     apiKey: 'your-api-key',
 *     userId: 'user-wallet-address',
 *     refreshIntervalMs: 5000,
 *     fetchSize: 10,
 *   })
 *   return <div>{recentDeposits?.length} recent deposits</div>
 * }
 * ```
 */
export declare function useFunkitRecentDepositsImpl(query: RecentDirectExecutionsQuery): {
    data: PurifiedCheckoutHistoryItem[] | undefined;
};
export {};
