import { AptlyBaseSchema } from './extends.js';
import { AptlyMediaSrcSchema } from './media.js';
import { AptlyModuleSchema } from './module.js';
import { AptlyOrganizationSchema } from './organization.js';
export declare enum AptlyPlanRecurring {
    None = 0,
    Monthly = 1,
    Yearly = 12
}
export declare enum AptlyPlanTier {
    Free = 0,
    Subscription = 1
}
export type AptlyPlan = AptlyPlanSchema<string, string>;
export interface AptlyPlanSchema<ID, DATE> extends AptlyBaseSchema<ID, DATE> {
    tier: AptlyPlanTier;
    isDefaultFreeTier: boolean;
    isDefaultSubscriptionTier: boolean;
    slug: string;
    info: string;
    description: string;
    media: AptlyMediaSrcSchema<ID, DATE> | null;
    modules: (ID | AptlyModuleSchema<ID, DATE>)[];
    listed: boolean;
    featuredWeight: number;
    organization: ID | AptlyOrganizationSchema<ID, DATE> | null;
    copiedPlan: ID | null;
    trialDays: number;
    freeRecurringDays: number;
    recurring: AptlyPlanRecurring;
    recurringAt: DATE | null;
    expiresAt: DATE | null;
    subscription: {
        monthly: number;
        yearly: number;
    };
    lastPaymentAt: DATE | null;
    nextPaymentAt: DATE | null;
    user: {
        monthlyQuantity: number;
        monthly: number;
    };
    unit: {
        freeQuantity: number;
        amount: number;
    };
    order: {
        percent: number;
        paymentPercent: number;
    };
    offer: {
        freeQuantity: number;
        monthlyQuantity: number;
        amount: number;
    };
    signage: {
        freeQuantity: number;
        amount: number;
        signee: number;
    };
}
export type AptlyPlanInstalled = AptlyPlanInstalledSchema<string, string>;
export interface AptlyPlanInstalledSchema<ID, DATE> extends AptlyPlanSchema<ID, DATE> {
    organization: ID;
    copiedPlan: ID;
    listed: false;
    lastPaymentAt: DATE;
    nextPaymentAt: DATE;
    recurringAt: DATE;
}
