import type VueTagsInput from "@sipec/vue3-tags-input"; import { AxiosStatic } from "axios"; // * Enum interface EnumInterface { label: string; value: number | string; } type DirectoryObj = { id: number; name: string; directory_id: number | null; text: string | null; order: number; needAuthorization: number; documents_count: number; created_at: string; updated_at: string; children: Array | undefined; }; // * Laravel Paginator interface PaginatorLink { url: null | string; label: string; active: boolean; } interface Paginator { current_page: number; first_page_url: string; from: number; last_page: number; last_page_url: string; links: Array; next_page_url: string | null; path: string; per_page: number; prev_page_url: string | null; to: number; total: number; } // * Recursive List type StringList = Record; interface NestedStringListInterface extends Record {} // * Recursive List type NumberList = Record; interface NestedNumberListInterface extends Record {} // * Recursive List type Model = Record< string, | string | boolean | number | object | NestedStringList | NestedNumberList | NestedModelInterface | ModelListInterface >; interface NestedModelInterface extends Model {} type NestedStringList = NestedStringListInterface | StringList | string; type NestedNumberList = NestedNumberListInterface | NumberList | number; type ModelList = Array; interface ModelListInterface extends ModelList {} declare global { type CustomTag = LaravelModel & VueTagsInput.ITag; type LaravelModel = Model; type LaravelModelList = ModelList; type LaravelPaginator = Paginator; type LaravelPaginatorLink = PaginatorLink; type DirectoryObject = DirectoryObj; type LaravelValidationErrors = Record; type Enum = EnumInterface; type ValueOf = T[keyof T]; interface Window { axios: AxiosStatic; Swal: Function; vueDebug: boolean | undefined; __SYSTEM: { _asset: string; _locale: string; _routes: Record; _translations: { json: NestedStringList; php: NestedStringList; }; }; } }