import { SubscriptionFlowModelCreateInput, SubscriptionFlowModelUpdateInput, SubscriptionIntervalCreateInput, SubscriptionIntervalUpdateInput } from './subscription-flow.model';
import { PrismaClient, SubscriptionEvent } from '@prisma/client';
export declare class SubscriptionFlowService {
    private readonly prismaService;
    constructor(prismaService: PrismaClient);
    getFlows(defaultFlowOnly: boolean, memberPlanId?: string): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    createFlow(flow: SubscriptionFlowModelCreateInput): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    updateFlow(flow: SubscriptionFlowModelUpdateInput): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    deleteFlow(subscriptionFlowId: string): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    createInterval(interval: SubscriptionIntervalCreateInput): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    updateInterval(interval: SubscriptionIntervalUpdateInput): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    deleteInterval(id: string): Promise<({
        memberPlan: import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            tags: string[];
            description: import(".prisma/client").Prisma.JsonValue;
            active: boolean;
            amountPerMonthMin: number;
            imageID: string;
        }, unknown> & {};
        paymentMethods: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            name: string;
            slug: string;
            description: string;
            paymentProviderID: string;
            active: boolean;
        }, unknown> & {})[];
        intervals: ({
            mailTemplate: import("@prisma/client/runtime/library").GetResult<{
                id: string;
                createdAt: Date;
                modifiedAt: Date;
                name: string;
                description: string;
                externalMailTemplateId: string;
                remoteMissing: boolean;
            }, unknown> & {};
        } & import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            event: SubscriptionEvent;
            daysAwayFromEnding: number;
            mailTemplateId: string;
            subscriptionFlowId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        default: boolean;
        memberPlanId: string;
        periodicities: import(".prisma/client").PaymentPeriodicity[];
        autoRenewal: boolean[];
    }, unknown> & {})[]>;
    private filterHasOverlap;
    private isIntervalValid;
}
