import { IListResponse } from "./base.response";
import { IMetadata } from "./dashboard.response";
import { IUser } from "./user.response";
export interface IProperty {
    id: string;
    title: string;
    address: string;
    city: string;
    district: string;
    neighborhood: string;
    isRented: boolean;
    propertyNumber: string;
    serviceFeeRate: string;
    buildingManagerId: string;
    consultantId: string;
    metadata: IMetadata;
    isActive: boolean;
    createdAt: string;
    updatedAt: string;
    image: IMedia;
    Institution: Institution;
    User: IUser;
    amount: number;
}
export interface Institution {
    id: string;
    title: string;
    description: string;
    type: string;
    iban: null | string;
    gsmNumber: null | string;
    email: null | string;
    address: null | string;
    city: string;
    district: string;
    externalUrl: null | string;
    isActive: boolean;
    createdAt: string;
    updatedAt: string;
}
export interface IPropertiesResponse extends IListResponse {
    properties: IProperty[];
}
export interface IPropertyResponse extends IProperty {
}
interface IPropertyExpense {
    id: string;
    propertyId: string;
    propertyTenantId: string;
    institutionId: null;
    paytoTransfer: null;
    typeId: string;
    amount: string;
    description: string;
    paidAt: string;
    receiptImageId: string;
    isActive: boolean;
    createdAt: string;
    updatedAt: string;
    receiptImage: ReceiptImage;
}
export interface ReceiptImage {
    id: string;
    name: string;
    type: string;
    size: number;
    url: string;
    createdAt: string;
    updatedAt: string;
}
export interface IPropertyExpensesResponse extends Array<IPropertyExpense> {
}
export interface IPropertyMediaResponse extends Array<IPropertyMediaData> {
}
export interface IPropertyMediaData {
    id: string;
    propertyId: string;
    mediaId: string;
    createdAt: string;
    updatedAt: string;
    media: IMedia;
}
export interface IPropertyMedia {
    id: string;
    name: string;
    type: string;
    size: number;
    url: string;
    createdAt: string;
    updatedAt: string;
}
export interface IPropertyOwnerResponse extends Array<IPropertyOwner> {
}
export interface IPropertyOwner {
    id: string;
    propertyId: string;
    ownerId: string;
    sharePercentage: string;
    createdAt: string;
    updatedAt: string;
    User: IUser;
}
export interface IPropertyTenantResponse extends Array<IPropertyTenant> {
}
export interface IPropertyTenant {
    id: string;
    propertyId: string;
    tenantId: string;
    startDate: string;
    endDate: string;
    rentPeriod: number;
    paidDay: number;
    rentPrice: string;
    isCurrent: boolean;
    createdAt: string;
    updatedAt: string;
    User: IUser;
    contracts: IPropertyTenantContract[];
    amount: number;
}
export interface IPropertyTenantContract {
    id: string;
    propertyTenantId: string;
    paidDate: string;
    isPaid: boolean;
    amount: string;
    paidAmount: string;
    isActive: boolean;
    createdAt: string;
    updatedAt: string;
}
export interface IPropertyContractsResponse extends Array<IPropertyContract> {
}
interface IPropertyContract {
    id: string;
    propertyTenantId: string;
    mediaId: string;
    type: string;
    isApproved: boolean;
    createdAt: string;
    updatedAt: string;
    media: IMedia;
}
export interface IMedia {
    id: string;
    name: string;
    type: string;
    size: number;
    url: string;
    createdAt: string;
    updatedAt: string;
}
export interface IPropertyTenantArchiveResponse {
    expenses: IPropertyTenantExpense[];
    contracts: IPropertyTenantArchiveContract[];
}
export interface IPropertyTenantArchiveContract {
    id: string;
    propertyTenantId: string;
    mediaId: string;
    type: string;
    isApproved: boolean;
    createdAt: string;
    updatedAt: string;
    media: ReceiptImage;
}
export interface IPropertyTenantExpense {
    id: string;
    propertyId: string;
    propertyTenantId: string;
    institutionId: null;
    paytoTransfer: boolean | null;
    typeId: string;
    amount: string;
    description: string;
    paidAt: string;
    receiptImageId: null | string;
    isActive: boolean;
    createdAt: string;
    updatedAt: string;
    receiptImage: ReceiptImage | null;
}
export interface IPropertyNoteResponse extends Array<IPropertyNote> {
}
export interface IPropertyNote {
    id: string;
    propertyId: string;
    note: string;
    userId: string;
    createdAt: string;
    updatedAt: string;
    user: IUser;
}
export {};
