import type { FilterSegmentOutput } from '../../../features/data-table/lib/types';
import type { FilterSegment, UserFilterSegmentPreference } from '../../../prisma/client';
import type { TCreateFilterSegmentInputSchema, TUpdateFilterSegmentInputSchema } from "./filterSegment.type";
export interface IFilterSegmentRepository {
    get({ userId, tableIdentifier }: {
        userId: number;
        tableIdentifier: string;
    }): Promise<{
        segments: FilterSegmentOutput[];
        preferredSegmentId: number | null;
    }>;
    create({ userId, input, }: {
        userId: number;
        input: TCreateFilterSegmentInputSchema;
    }): Promise<FilterSegment>;
    update({ userId, input, }: {
        userId: number;
        input: TUpdateFilterSegmentInputSchema;
    }): Promise<FilterSegment>;
    delete({ userId, id }: {
        userId: number;
        id: number;
    }): Promise<void>;
    setPreference({ userId, tableIdentifier, segmentId, }: {
        userId: number;
        tableIdentifier: string;
        segmentId: number | null;
    }): Promise<UserFilterSegmentPreference | null>;
}
export declare class FilterSegmentRepository implements IFilterSegmentRepository {
    get({ userId, tableIdentifier }: {
        userId: number;
        tableIdentifier: string;
    }): Promise<{
        segments: FilterSegmentOutput[];
        preferredSegmentId: number | null;
    }>;
    create({ userId, input }: {
        userId: number;
        input: TCreateFilterSegmentInputSchema;
    }): Promise<{
        name: string;
        id: number;
        userId: number;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
        scope: import('../../../prisma-client').$Enums.FilterSegmentScope;
        tableIdentifier: string;
        activeFilters: import('../../../prisma-client').Prisma.JsonValue;
        sorting: import('../../../prisma-client').Prisma.JsonValue;
        columnVisibility: import('../../../prisma-client').Prisma.JsonValue;
        columnSizing: import('../../../prisma-client').Prisma.JsonValue;
        perPage: number;
        searchTerm: string | null;
    }>;
    update({ userId, input }: {
        userId: number;
        input: TUpdateFilterSegmentInputSchema;
    }): Promise<{
        name: string;
        id: number;
        userId: number;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
        scope: import('../../../prisma-client').$Enums.FilterSegmentScope;
        tableIdentifier: string;
        activeFilters: import('../../../prisma-client').Prisma.JsonValue;
        sorting: import('../../../prisma-client').Prisma.JsonValue;
        columnVisibility: import('../../../prisma-client').Prisma.JsonValue;
        columnSizing: import('../../../prisma-client').Prisma.JsonValue;
        perPage: number;
        searchTerm: string | null;
    }>;
    delete({ userId, id }: {
        userId: number;
        id: number;
    }): Promise<void>;
    setPreference({ userId, tableIdentifier, segmentId, }: {
        userId: number;
        tableIdentifier: string;
        segmentId: number | null;
    }): Promise<{
        id: number;
        userId: number;
        createdAt: Date;
        updatedAt: Date;
        tableIdentifier: string;
        segmentId: number;
    } | null>;
}
//# sourceMappingURL=filterSegment.d.ts.map