import { DomainLiteral } from 'domain-objects'; import type { DeclastructDao } from './DeclastructDao'; export type DeclastructDaosShape = Record>; /** * .what = bundles all DAOs and lifecycle hooks for a specific infrastructure provider * .why = enables plug-and-play support for different infrastructure backends (AWS, GCP, Azure, etc) */ export interface DeclastructProvider = DeclastructDaosShape, TContext = any> { /** * unique name identifying this provider */ name: string; /** * map of resource class names to their DAOs */ daos: TDeclastructDaos; /** * provider-specific context (credentials, region, etc) */ context: TContext; /** * lifecycle hooks for setup and teardown */ hooks: { beforeAll: () => Promise; afterAll: () => Promise; }; } export declare class DeclastructProvider = DeclastructDaosShape, TContext = any> extends DomainLiteral> implements DeclastructProvider { }