import { OnStatusUpdateFn } from './useTransactionSigner';
import type { RedemptionCreateRequestDTO, RedemptionDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, RedemptionTypeDTO, PaginatedResponseDTO, RedemptionRedeemIncludeRelation, RedemptionIncludeRelation, ProcessRecordStatus, DynamicContext, SortOrder } from '@explorins/pers-sdk';
import type { RedemptionRedeemFilters } from '@explorins/pers-sdk/redemption';
import type { PaginationOptions } from '@explorins/pers-sdk';
export type { RedemptionRedeemFilters, RedemptionFilterOptions } from '@explorins/pers-sdk/redemption';
/**
 * Options for fetching redemptions with filtering and pagination
 */
export interface GetRedemptionsOptions {
    /** Filter by active status (Admin only - regular users always see active offers) */
    active?: boolean;
    /** Free text search across name, description, tags (case-insensitive) */
    search?: string;
    /** Filter by tag(s) - single tag or array for OR match */
    tags?: string | string[];
    /** Filter redemptions starting on or after this date */
    startDate?: Date | string;
    /** Filter redemptions ending on or before this date */
    endDate?: Date | string;
    /** Relations to include: 'redeemCount' */
    include?: RedemptionIncludeRelation[];
    /** Page number (1-indexed) */
    page?: number;
    /** Results per page */
    limit?: number;
    /** Field to sort by */
    sortBy?: 'name' | 'createdAt' | 'startDate';
    /** Sort direction */
    sortOrder?: SortOrder;
}
export declare const useRedemptions: () => {
    getRedemptions: (options?: GetRedemptionsOptions) => Promise<PaginatedResponseDTO<RedemptionDTO>>;
    getUserRedemptions: (filters?: {
        redemptionId?: string;
        status?: ProcessRecordStatus;
    }, options?: PaginationOptions, include?: RedemptionRedeemIncludeRelation[]) => Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
    redeem: (redemptionId: string, options?: {
        context?: DynamicContext;
        onStatusUpdate?: OnStatusUpdateFn;
    }) => Promise<RedemptionRedeemRequestResponseDTO>;
    getRedemptionTypes: () => Promise<PaginatedResponseDTO<RedemptionTypeDTO>>;
    getRedemptionRedeems: (filters?: RedemptionRedeemFilters, include?: RedemptionRedeemIncludeRelation[]) => Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
    createRedemption: (redemptionData: RedemptionCreateRequestDTO) => Promise<RedemptionDTO>;
    updateRedemption: (redemptionId: string, redemptionData: RedemptionCreateRequestDTO) => Promise<RedemptionDTO>;
    toggleRedemptionStatus: (redemptionId: string) => Promise<RedemptionDTO>;
    isAvailable: boolean;
    signingStatus: import("@explorins/pers-signer").SigningStatus | null;
    signingStatusMessage: string | null;
};
export type RedemptionHook = ReturnType<typeof useRedemptions>;
//# sourceMappingURL=useRedemptions.d.ts.map