import mongoose from "mongoose";
import { AddressInterface, AuditInterface, ProjectInterface, ProjectLotInterface, TenantType } from "../interfaces";
export declare type TenantAggregatorRequestType = "Requesting" | "Approved" | "Rejected";
export interface TenantInterface extends AuditInterface {
    legalName?: string;
    name?: string;
    status?: "Active" | "Archived";
    /**
     * @deprecated The method should not be used move to `tenantTypes`
     */
    tenantType?: TenantType;
    coa?: string;
    /**
     * @abstract New field moving from `tenantType`
     */
    tenantTypes?: string[];
    bannerURL?: string;
    thumbnailURL?: string;
    externalId?: string;
    slug?: string;
    shortDescription?: string;
    description?: string;
    address?: AddressInterface[];
    website?: string;
    email?: string;
    phone?: string;
    phone2?: string;
    legalName_lower?: string;
    name_lower?: string;
    website_lower?: string;
    email_lower?: string;
    accessToken?: string;
    referenceCode?: string;
    aggregatorIds?: string[];
    aggregators?: TenantInterface[];
    integrationTokens: {
        provider: string;
        token: any;
    }[];
    packageId?: string;
    package?: TenantPackageInterface;
}
export interface TenantInterfaceServer extends AuditInterface {
    legalName?: string;
    name?: string;
    status?: "Active" | "Archived";
    /**
     * @deprecated The method should not be used move to `tenantTypes`
     */
    tenantType?: TenantType;
    coa?: string;
    /**
     * @abstract New field moving from `tenantType`
     */
    tenantTypes?: string[];
    bannerURL?: string;
    thumbnailURL?: string;
    externalId?: string;
    slug?: string;
    shortDescription?: string;
    description?: string;
    address?: mongoose.Types.ObjectId[];
    website?: string;
    email?: string;
    phone?: string;
    phone2?: string;
    legalName_lower?: string;
    name_lower?: string;
    website_lower?: string;
    email_lower?: string;
    accessToken?: string;
    referenceCode?: string;
    aggregatorIds?: string[];
    aggregators?: mongoose.Types.ObjectId[];
    integrationTokens: {
        provider: string;
        token: any;
    }[];
    packageId?: string;
    package?: mongoose.Types.ObjectId;
}
export interface TenantPackageInterface extends AuditInterface {
    name: string;
    description: string;
}
export interface TenantAggregatorRequestInterface extends AuditInterface {
    agencyId: string;
    agency?: TenantInterface;
    aggregatorId: string;
    aggregator?: TenantInterface;
    status: TenantAggregatorRequestType;
}
export interface TenantAggregatorRequestInterfaceServer extends AuditInterface {
    agencyId: string;
    agency?: mongoose.Types.ObjectId;
    aggregatorId: string;
    aggregator?: mongoose.Types.ObjectId;
    status: TenantAggregatorRequestType;
}
export interface TenantExcludeProjectInterface extends AuditInterface {
    tenantId: string;
    projectId: string;
}
export interface TenantProjectInterface extends AuditInterface {
    tenantId: string;
    tenant: TenantInterface;
    projectId: string;
    project: ProjectInterface;
    projectLotIds: string[];
    projectLots: ProjectLotInterface[];
}
export interface TenantProjectInterfaceServer extends AuditInterface {
    tenantId: string;
    tenant: mongoose.Types.ObjectId;
    projectId: string;
    project: mongoose.Types.ObjectId;
    projectLotIds: string[];
    projectLots: mongoose.Types.ObjectId[];
}
