import { Context } from '../../context';
import { MetadataProperty, Prisma, PrismaClient, Subscription, SubscriptionDeactivationReason } from '@prisma/client';
import { MemberContext } from '../../memberContext';
import { PaymentProvider } from "../../../../payment-api/src";
export declare const deleteSubscriptionById: (id: string, authenticate: Context['authenticate'], subscription: PrismaClient['subscription']) => Prisma.Prisma__SubscriptionClient<{
    deactivation: import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        date: Date;
        reason: SubscriptionDeactivationReason;
        subscriptionID: string;
    }, unknown> & {};
    periods: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        startsAt: Date;
        endsAt: Date;
        paymentPeriodicity: import(".prisma/client").PaymentPeriodicity;
        amount: number;
        invoiceID: string;
        subscriptionId: string;
    }, unknown> & {})[];
    properties: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        key: string;
        value: string;
        public: boolean;
        articleRevisionId: string;
        pageRevisionId: string;
        subscriptionId: string;
        userId: string;
    }, unknown> & {})[];
} & import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    paymentPeriodicity: import(".prisma/client").PaymentPeriodicity;
    monthlyAmount: number;
    autoRenew: boolean;
    startsAt: Date;
    paidUntil: Date;
    paymentMethodID: string;
    memberPlanID: string;
    userID: string;
}, unknown> & {}, never, import("@prisma/client/runtime/library").DefaultArgs>;
export declare const cancelSubscriptionById: (id: string, reason: SubscriptionDeactivationReason, authenticate: Context['authenticate'], subscriptionDB: PrismaClient['subscription'], memberContext: MemberContext) => Promise<import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    paymentPeriodicity: import(".prisma/client").PaymentPeriodicity;
    monthlyAmount: number;
    autoRenew: boolean;
    startsAt: Date;
    paidUntil: Date;
    paymentMethodID: string;
    memberPlanID: string;
    userID: string;
}, unknown> & {}>;
type CreateSubscriptionInput = Prisma.SubscriptionCreateInput & {
    properties: Prisma.MetadataPropertyCreateManySubscriptionInput[];
};
export declare const createSubscription: ({ properties, ...input }: CreateSubscriptionInput, authenticate: Context['authenticate'], memberContext: Context['memberContext'], subscriptionClient: PrismaClient['subscription']) => Promise<import("../../..").SubscriptionWithRelations>;
type UpdateSubscriptionInput = Prisma.SubscriptionUncheckedUpdateInput & {
    properties: Prisma.MetadataPropertyCreateManySubscriptionInput[];
    deactivation: Prisma.SubscriptionDeactivationCreateWithoutSubscriptionInput | null;
};
export declare const handleRemoteManagedSubscription: ({ paymentProvider, input, originalSubscription }: {
    paymentProvider: PaymentProvider;
    input: Subscription;
    originalSubscription: Subscription & {
        properties: MetadataProperty[];
    };
}) => Promise<void>;
export declare const updateAdminSubscription: (id: string, { properties, ...input }: UpdateSubscriptionInput, authenticate: Context['authenticate'], memberContext: Context['memberContext'], subscriptionClient: PrismaClient['subscription'], userClient: PrismaClient['user'], paymentProviders: PaymentProvider[]) => Promise<import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    paymentPeriodicity: import(".prisma/client").PaymentPeriodicity;
    monthlyAmount: number;
    autoRenew: boolean;
    startsAt: Date;
    paidUntil: Date;
    paymentMethodID: string;
    memberPlanID: string;
    userID: string;
}, unknown> & {}>;
export {};
