/** * Generated by orval v8.5.3 🍺 * Do not edit manually. * Api * Guardian Agent API — dark pattern detection and checkout protection * OpenAPI spec version: 0.1.0 */ import { useMutation, useQuery } from "@tanstack/react-query"; import type { MutationFunction, QueryFunction, QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult, } from "@tanstack/react-query"; import type { ClassifyUpsellBody, CreateReportBody, DarkPatternReport, DemoScanBody, DemoScanResult, DetectDarkPatternsBody, DetectionReport, DomainOffenderSummary, ErrorResponse, FeeEstimateBody, FeeEstimateResult, GetTopOffendersParams, HealthStatus, ListReportsParams, PatternBreakdown, StatsSummary, TrustRating, UpsellClassification, UpsertTrustRatingBody, } from "./api.schemas"; import { customFetch } from "../custom-fetch"; import type { ErrorType, BodyType } from "../custom-fetch"; type AwaitedInput = PromiseLike | T; type Awaited = O extends AwaitedInput ? T : never; type SecondParameter unknown> = Parameters[1]; /** * Returns server health status * @summary Health check */ export const getHealthCheckUrl = () => { return `/api/healthz`; }; export const healthCheck = async ( options?: RequestInit, ): Promise => { return customFetch(getHealthCheckUrl(), { ...options, method: "GET", }); }; export const getHealthCheckQueryKey = () => { return [`/api/healthz`] as const; }; export const getHealthCheckQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getHealthCheckQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => healthCheck({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type HealthCheckQueryResult = NonNullable< Awaited> >; export type HealthCheckQueryError = ErrorType; /** * @summary Health check */ export function useHealthCheck< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getHealthCheckQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Analyzes page content for dark patterns using AI classification * @summary Detect dark patterns on a page */ export const getDetectDarkPatternsUrl = () => { return `/api/analysis/detect`; }; export const detectDarkPatterns = async ( detectDarkPatternsBody: DetectDarkPatternsBody, options?: RequestInit, ): Promise => { return customFetch(getDetectDarkPatternsUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(detectDarkPatternsBody), }); }; export const getDetectDarkPatternsMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["detectDarkPatterns"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return detectDarkPatterns(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type DetectDarkPatternsMutationResult = NonNullable< Awaited> >; export type DetectDarkPatternsMutationBody = BodyType; export type DetectDarkPatternsMutationError = ErrorType; /** * @summary Detect dark patterns on a page */ export const useDetectDarkPatterns = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getDetectDarkPatternsMutationOptions(options)); }; /** * Identifies what type of upsell/add-on screen is being shown * @summary Classify an upsell page type */ export const getClassifyUpsellUrl = () => { return `/api/analysis/classify-upsell`; }; export const classifyUpsell = async ( classifyUpsellBody: ClassifyUpsellBody, options?: RequestInit, ): Promise => { return customFetch(getClassifyUpsellUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(classifyUpsellBody), }); }; export const getClassifyUpsellMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["classifyUpsell"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return classifyUpsell(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type ClassifyUpsellMutationResult = NonNullable< Awaited> >; export type ClassifyUpsellMutationBody = BodyType; export type ClassifyUpsellMutationError = ErrorType; /** * @summary Classify an upsell page type */ export const useClassifyUpsell = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getClassifyUpsellMutationOptions(options)); }; /** * Returns trust ratings for all tracked domains * @summary List all site trust ratings */ export const getListTrustRatingsUrl = () => { return `/api/trust`; }; export const listTrustRatings = async ( options?: RequestInit, ): Promise => { return customFetch(getListTrustRatingsUrl(), { ...options, method: "GET", }); }; export const getListTrustRatingsQueryKey = () => { return [`/api/trust`] as const; }; export const getListTrustRatingsQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListTrustRatingsQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => listTrustRatings({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListTrustRatingsQueryResult = NonNullable< Awaited> >; export type ListTrustRatingsQueryError = ErrorType; /** * @summary List all site trust ratings */ export function useListTrustRatings< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListTrustRatingsQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Returns the trust rating and history for a specific domain * @summary Get trust rating for a domain */ export const getGetTrustRatingUrl = (domain: string) => { return `/api/trust/${domain}`; }; export const getTrustRating = async ( domain: string, options?: RequestInit, ): Promise => { return customFetch(getGetTrustRatingUrl(domain), { ...options, method: "GET", }); }; export const getGetTrustRatingQueryKey = (domain: string) => { return [`/api/trust/${domain}`] as const; }; export const getGetTrustRatingQueryOptions = < TData = Awaited>, TError = ErrorType, >( domain: string, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetTrustRatingQueryKey(domain); const queryFn: QueryFunction>> = ({ signal, }) => getTrustRating(domain, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!domain, ...queryOptions, } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetTrustRatingQueryResult = NonNullable< Awaited> >; export type GetTrustRatingQueryError = ErrorType; /** * @summary Get trust rating for a domain */ export function useGetTrustRating< TData = Awaited>, TError = ErrorType, >( domain: string, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetTrustRatingQueryOptions(domain, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Updates the trust rating after a checkout interaction * @summary Create or update trust rating for a domain */ export const getUpsertTrustRatingUrl = (domain: string) => { return `/api/trust/${domain}`; }; export const upsertTrustRating = async ( domain: string, upsertTrustRatingBody: UpsertTrustRatingBody, options?: RequestInit, ): Promise => { return customFetch(getUpsertTrustRatingUrl(domain), { ...options, method: "PUT", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(upsertTrustRatingBody), }); }; export const getUpsertTrustRatingMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { domain: string; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { domain: string; data: BodyType }, TContext > => { const mutationKey = ["upsertTrustRating"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { domain: string; data: BodyType } > = (props) => { const { domain, data } = props ?? {}; return upsertTrustRating(domain, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpsertTrustRatingMutationResult = NonNullable< Awaited> >; export type UpsertTrustRatingMutationBody = BodyType; export type UpsertTrustRatingMutationError = ErrorType; /** * @summary Create or update trust rating for a domain */ export const useUpsertTrustRating = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { domain: string; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { domain: string; data: BodyType }, TContext > => { return useMutation(getUpsertTrustRatingMutationOptions(options)); }; /** * Returns recent dark pattern detection reports * @summary List detection reports */ export const getListReportsUrl = (params?: ListReportsParams) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? "null" : value.toString()); } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/reports?${stringifiedParams}` : `/api/reports`; }; export const listReports = async ( params?: ListReportsParams, options?: RequestInit, ): Promise => { return customFetch(getListReportsUrl(params), { ...options, method: "GET", }); }; export const getListReportsQueryKey = (params?: ListReportsParams) => { return [`/api/reports`, ...(params ? [params] : [])] as const; }; export const getListReportsQueryOptions = < TData = Awaited>, TError = ErrorType, >( params?: ListReportsParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListReportsQueryKey(params); const queryFn: QueryFunction>> = ({ signal, }) => listReports(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListReportsQueryResult = NonNullable< Awaited> >; export type ListReportsQueryError = ErrorType; /** * @summary List detection reports */ export function useListReports< TData = Awaited>, TError = ErrorType, >( params?: ListReportsParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListReportsQueryOptions(params, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Stores a dark pattern detection report for a session * @summary Save a detection report */ export const getCreateReportUrl = () => { return `/api/reports`; }; export const createReport = async ( createReportBody: CreateReportBody, options?: RequestInit, ): Promise => { return customFetch(getCreateReportUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(createReportBody), }); }; export const getCreateReportMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["createReport"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return createReport(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type CreateReportMutationResult = NonNullable< Awaited> >; export type CreateReportMutationBody = BodyType; export type CreateReportMutationError = ErrorType; /** * @summary Save a detection report */ export const useCreateReport = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getCreateReportMutationOptions(options)); }; /** * @summary Get a detection report by ID */ export const getGetReportUrl = (id: number) => { return `/api/reports/${id}`; }; export const getReport = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getGetReportUrl(id), { ...options, method: "GET", }); }; export const getGetReportQueryKey = (id: number) => { return [`/api/reports/${id}`] as const; }; export const getGetReportQueryOptions = < TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetReportQueryKey(id); const queryFn: QueryFunction>> = ({ signal, }) => getReport(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!id, ...queryOptions, } as UseQueryOptions>, TError, TData> & { queryKey: QueryKey; }; }; export type GetReportQueryResult = NonNullable< Awaited> >; export type GetReportQueryError = ErrorType; /** * @summary Get a detection report by ID */ export function useGetReport< TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetReportQueryOptions(id, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Returns aggregated stats — total scans, patterns detected, money saved estimates * @summary Get overall statistics summary */ export const getGetStatsSummaryUrl = () => { return `/api/stats/summary`; }; export const getStatsSummary = async ( options?: RequestInit, ): Promise => { return customFetch(getGetStatsSummaryUrl(), { ...options, method: "GET", }); }; export const getGetStatsSummaryQueryKey = () => { return [`/api/stats/summary`] as const; }; export const getGetStatsSummaryQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetStatsSummaryQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => getStatsSummary({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetStatsSummaryQueryResult = NonNullable< Awaited> >; export type GetStatsSummaryQueryError = ErrorType; /** * @summary Get overall statistics summary */ export function useGetStatsSummary< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetStatsSummaryQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Returns counts by dark pattern type across all reports * @summary Get pattern detection breakdown */ export const getGetPatternBreakdownUrl = () => { return `/api/stats/pattern-breakdown`; }; export const getPatternBreakdown = async ( options?: RequestInit, ): Promise => { return customFetch(getGetPatternBreakdownUrl(), { ...options, method: "GET", }); }; export const getGetPatternBreakdownQueryKey = () => { return [`/api/stats/pattern-breakdown`] as const; }; export const getGetPatternBreakdownQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetPatternBreakdownQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => getPatternBreakdown({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetPatternBreakdownQueryResult = NonNullable< Awaited> >; export type GetPatternBreakdownQueryError = ErrorType; /** * @summary Get pattern detection breakdown */ export function useGetPatternBreakdown< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetPatternBreakdownQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * Detects dark patterns, saves report, and updates trust rating in one call. Perfect for live demos. * @summary All-in-one demo scan */ export const getDemoScanUrl = () => { return `/api/demo/scan`; }; export const demoScan = async ( demoScanBody: DemoScanBody, options?: RequestInit, ): Promise => { return customFetch(getDemoScanUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(demoScanBody), }); }; export const getDemoScanMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["demoScan"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return demoScan(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type DemoScanMutationResult = NonNullable< Awaited> >; export type DemoScanMutationBody = BodyType; export type DemoScanMutationError = ErrorType; /** * @summary All-in-one demo scan */ export const useDemoScan = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getDemoScanMutationOptions(options)); }; /** * Uses AI to estimate hidden fees and total true price for a given site and listing price * @summary Estimate true final price */ export const getDemoFeeEstimateUrl = () => { return `/api/demo/fee-estimate`; }; export const demoFeeEstimate = async ( feeEstimateBody: FeeEstimateBody, options?: RequestInit, ): Promise => { return customFetch(getDemoFeeEstimateUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(feeEstimateBody), }); }; export const getDemoFeeEstimateMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["demoFeeEstimate"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return demoFeeEstimate(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type DemoFeeEstimateMutationResult = NonNullable< Awaited> >; export type DemoFeeEstimateMutationBody = BodyType; export type DemoFeeEstimateMutationError = ErrorType; /** * @summary Estimate true final price */ export const useDemoFeeEstimate = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getDemoFeeEstimateMutationOptions(options)); }; /** * Returns the domains with the most detected dark patterns * @summary Get top offending domains */ export const getGetTopOffendersUrl = (params?: GetTopOffendersParams) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? "null" : value.toString()); } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/stats/top-offenders?${stringifiedParams}` : `/api/stats/top-offenders`; }; export const getTopOffenders = async ( params?: GetTopOffendersParams, options?: RequestInit, ): Promise => { return customFetch(getGetTopOffendersUrl(params), { ...options, method: "GET", }); }; export const getGetTopOffendersQueryKey = (params?: GetTopOffendersParams) => { return [`/api/stats/top-offenders`, ...(params ? [params] : [])] as const; }; export const getGetTopOffendersQueryOptions = < TData = Awaited>, TError = ErrorType, >( params?: GetTopOffendersParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetTopOffendersQueryKey(params); const queryFn: QueryFunction>> = ({ signal, }) => getTopOffenders(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetTopOffendersQueryResult = NonNullable< Awaited> >; export type GetTopOffendersQueryError = ErrorType; /** * @summary Get top offending domains */ export function useGetTopOffenders< TData = Awaited>, TError = ErrorType, >( params?: GetTopOffendersParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetTopOffendersQueryOptions(params, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; }