import { ContentDetail } from '../../content';
import { ManagerBase } from '..';
export type MaterialType = 'data.material';
export type MaterialProps<T = Record<string, any>> = T;
export interface MaterialItem<P = any> {
    /**
     * material name
     *
     * @type {string}
     */
    name: string;
    /**
     * material type
     *
     * @type {MaterialType}
     */
    type: MaterialType;
    /**
     * material props
     */
    props: P;
}
export interface Material extends ContentDetail<MaterialItem> {
}
export interface MaterialManager<T = Material> extends ManagerBase<T> {
    addMaterial(material: Material): void;
    removeMaterials(materialIds: string[]): void;
    getMaterial(materialId: string, opt: Record<string, any>): Promise<Material | undefined>;
    getMaterials(materialIds: string[], opt: Record<string, any>): Promise<Material[]>;
    freshMaterials(materialIds: string[]): Promise<Material[]>;
}
