/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { MaybePromise } from "#util/Promises.js"; import { Environmental } from "./Environmental.js"; export interface ServiceProvider { has(type: Environmental.ServiceType): boolean; get(type: Environmental.ServiceType): T; maybeGet(type: Environmental.ServiceType): T | undefined; delete(type: Environmental.ServiceType, instance?: any): void; load(type: Environmental.Factory): Promise; close( type: Environmental.ServiceType, ): T extends { close: () => MaybePromise } ? MaybePromise : void; }