import { Document, Schema as MongooseSchema, Types } from 'mongoose';
export declare enum PremiumFrequency {
    ONE_TIME = "ONE_TIME",
    MONTHLY = "MONTHLY",
    QUARTERLY = "QUARTERLY",
    ANNUALLY = "ANNUALLY"
}
export declare const ANNUALIZATION_MULTIPLIER: Record<PremiumFrequency, number>;
export declare enum PolicyStatus {
    ACTIVE = "ACTIVE",
    CANCELLED = "CANCELLED"
}
export declare enum PolicyDisplayStatus {
    ACTIVE = "ACTIVE",
    EXPIRED = "EXPIRED",
    CANCELLED = "CANCELLED"
}
export declare enum CommissionStatus {
    NOT_APPLICABLE = "NOT_APPLICABLE",
    PENDING = "PENDING",
    PAID = "PAID",
    CANCELLED = "CANCELLED"
}
export declare enum PolicyVerificationStatus {
    NOT_REQUIRED = "NOT_REQUIRED",
    PENDING = "PENDING",
    APPROVED = "APPROVED",
    REJECTED = "REJECTED",
    CANCELLED = "CANCELLED"
}
export declare const VERIFIED_STATUSES: PolicyVerificationStatus[];
export declare enum InsuredRelation {
    SELF = "SELF",
    SPOUSE = "SPOUSE",
    SON = "SON",
    DAUGHTER = "DAUGHTER",
    FATHER = "FATHER",
    MOTHER = "MOTHER",
    FATHER_IN_LAW = "FATHER_IN_LAW",
    MOTHER_IN_LAW = "MOTHER_IN_LAW",
    OTHER = "OTHER"
}
export declare class Policy extends Document {
    policy_number: string;
    customer_id: Types.ObjectId;
    product_id: Types.ObjectId;
    product_name: string;
    category_id: Types.ObjectId;
    insurer_id: Types.ObjectId;
    assigned_to: Types.ObjectId;
    gross_premium: number;
    gst_rate: number;
    net_premium: number;
    gst_amount: number;
    annualized_gross_premium: number;
    annualized_net_premium: number;
    one_time_commission: number;
    first_year_commission: number;
    renewal_commission: number;
    commission_years: number;
    commission_amount: number;
    commission_status: CommissionStatus;
    commission_paid_at: number;
    commission_paid_by: Types.ObjectId;
    premium_frequency: PremiumFrequency;
    sum_insured: number;
    sum_insured_note: string;
    insured_members: {
        name: string;
        relation: InsuredRelation;
    }[];
    vehicle_registration: string;
    issue_date: number;
    expiry_date: number;
    schedule_file: any;
    status: PolicyStatus;
    cancel_reason: string;
    cancelled_at: number;
    created_by: Types.ObjectId;
    claim_settled_amount: number;
    verification_status: PolicyVerificationStatus;
    verification_reject_reason: string;
    verified_by: Types.ObjectId;
    verified_at: number;
}
export declare const PolicySchema: MongooseSchema<Policy, import("mongoose").Model<Policy, any, any, any, Document<unknown, any, Policy, any> & Policy & Required<{
    _id: unknown;
}> & {
    __v: number;
}, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Policy, Document<unknown, {}, import("mongoose").FlatRecord<Policy>, {}> & import("mongoose").FlatRecord<Policy> & Required<{
    _id: unknown;
}> & {
    __v: number;
}>;
