import type { ResourceType } from "@intentic/resources"; import type { ResolvedInputs } from "./types.js"; export interface Observed { readonly outputs: Readonly>; readonly detail?: Readonly>; readonly stampHash?: string; } export type DiffResult = { readonly action: "noop"; } | { readonly action: "update"; readonly reason: string; }; export interface ScanSource { readonly id: string; readonly type: ResourceType; readonly inputs: ResolvedInputs; } export interface ListedResource { readonly id: string; readonly inputs: ResolvedInputs; readonly protected?: boolean; } export interface ProviderContext { readonly env: Readonly>; readonly log: (message: string) => void; readonly id: string; readonly output: (id: string, name: string) => unknown; readonly inputsHash?: string; } export interface Provider { readonly read: (inputs: ResolvedInputs, ctx: ProviderContext) => Promise; readonly diff: (inputs: ResolvedInputs, observed: Observed) => DiffResult; readonly apply: (inputs: ResolvedInputs, observed: Observed | undefined, ctx: ProviderContext) => Promise>; readonly list?: (sources: readonly ScanSource[], ctx: ProviderContext) => Promise; readonly delete?: (inputs: ResolvedInputs, ctx: ProviderContext) => Promise; readonly restamp?: (oldId: string, inputs: ResolvedInputs, ctx: ProviderContext) => Promise; } export type Providers = Partial>; //# sourceMappingURL=provider.d.ts.map