import { CurrencyValue } from '../components/v2/InputCurrency/InputCurrency.vue.d';
import { LinkedAsset } from '../components/v2/DialogLinkedAsset/DialogLinkedAsset.vue.d';
export type AssetFieldObject = {
    _id?: string;
    name?: string;
};
export type ChildAsset = {
    parent: LinkedAsset;
    children: LinkedAsset[];
    family: LinkedAsset[];
};
export type ParentAsset = {
    parent: undefined;
    children: LinkedAsset[];
    family: LinkedAsset[];
};
export type FamilyData = (ParentAsset | ChildAsset) & {
    _id: string;
};
export type GetLinkedAssetFamilyResponse = {
    data: FamilyData[];
};
export type AssetName = AssetFieldObject & {
    nameWithSequence?: string;
    sequence?: number;
    aliasCode?: string;
    category?: AssetFieldObject;
};
export type Asset = {
    _id?: string;
    asset?: string;
    assetId?: string;
    name?: AssetName;
    aliasName?: string;
    measurement?: AssetFieldObject;
    tagType?: string;
    status?: string;
    category?: AssetFieldObject;
    group?: AssetFieldObject;
    brand?: AssetFieldObject;
    model?: AssetFieldObject;
    assetName?: AssetName;
    assetGroup?: AssetFieldObject;
    assetBrand?: AssetFieldObject;
    assetModel?: AssetFieldObject;
    assetTagType?: string;
    assetValue?: CurrencyValue;
    assignedTo?: string;
    isTransactionable?: boolean;
    addOn?: {
        repairTicketing?: boolean;
        maintenance?: boolean;
        tracking?: boolean;
        audit?: boolean;
    };
    purchase?: {
        date?: string;
        cost?: string;
        currency?: string;
        warrantyDuration?: string;
    };
    lastModifier?: string;
    updatedAt?: string;
    tagReported: {
        rfid?: string;
        qr?: string;
    };
    firstImage?: string;
    secondImage?: string;
    assetImage?: string;
    setDefault?: 'firstImage' | 'secondImage';
    auditStatus?: string;
    maintenanceStatus?: string;
    transactions?: TransactionPolicyType;
    formattedAssetValue?: string;
    address?: string;
    latitude: number | null;
    longitude: number | null;
    registeredAssetId?: string;
};
export type TransactionPolicyType = {
    borrowing: boolean;
    assignment: boolean;
    transfer: boolean;
    disposal: boolean;
    maintenance: boolean;
    audit: boolean;
    repairTicketing: boolean;
    tracking: boolean;
    assetControl: boolean;
    map: boolean;
};
export interface AssetMap {
    _id: string;
    latitude: number;
    longitude: number;
}
export interface AssetValue {
    name: string;
    value: number;
    formattedValue?: string;
    currency: string;
    isDefault: boolean;
}
export interface AssetCustomField {
    _id: string;
    name: string;
    dataType: string;
    value?: string;
}
export interface AssetPurchase {
    value: number;
    currency: string;
}
export interface AssetCoordinate {
    longitude: number;
    latitude: number;
}
export interface AssetGroup {
    _id?: string;
    name?: string;
    fullPath?: string;
    code?: string;
}
export interface AssetTableData {
    _id: string;
    assetImage?: string;
    name?: AssetName;
    aliasName?: string;
    assetId?: string;
    assetStatus?: string;
    group?: AssetGroup;
    brand?: AssetFieldObject;
    model?: AssetFieldObject;
    category?: AssetFieldObject;
    tagType?: string;
    measurement?: AssetFieldObject;
    maintenanceStatus?: string;
    auditStatus?: string;
    transactions?: TransactionPolicyType;
    coordinates?: AssetCoordinate;
    address?: string;
    warrantyStatus?: string;
    lastScannedAt?: string;
    linkedAssetCount?: number;
    purchaseDate?: string;
    purchase?: AssetPurchase;
    customFields?: Record<string, AssetCustomField>;
    assetValues?: Record<string, AssetValue>;
}
export interface AssetTableDataPrint extends Partial<Omit<AssetTableData, 'coordinates' | 'linkedAssetCount' | 'transactions' | 'assetValues' | 'customFields'>> {
    coordinates?: string;
    maintenanceAuditStatus?: ('In Maintenance' | 'In Audit' | 'None')[];
    linkedAssetCount?: string;
    transactions?: number;
    transactionsObject?: TransactionPolicyType;
    assetValues?: Partial<Record<string, Partial<AssetValue>>>;
    customFields?: Partial<Record<string, Partial<AssetCustomField>>>;
}
