import { FxError } from "@microsoft/teamsfx-api"; import { Result } from "neverthrow"; /** Where the resolved template-package bytes come from. */ export type TemplateOrigin = "bundled" | "online" | "cache" | "bundled-fallback"; /** A channel-published version paired with its expected content digest. */ export interface TagEntry { version: string; digest: string; } /** A cached template package: its content digest and the bytes themselves. */ export interface CachedPackage { digest: string; bytes: Buffer; } /** The bundled floor baked into the engine binary. */ export interface BundledFloor { version: string; digest: string; location: string; } /** Narrow template-source port. */ export interface TemplateSourcePort { /** Read an environment variable (e.g. `TEMPLATE_VERSION`). */ env(name: string): string | undefined; /** The channel's published `{ version, digest }` entries. */ tagList(): Promise; /** Download a package's bytes for a version. */ packages(version: string, expectedDigest: string): Promise; /** The local digest-keyed package cache. */ cache: { get(version: string): CachedPackage | undefined; put(version: string, digest: string, bytes: Buffer): void; keys(): string[]; }; /** The bundled floor baked into the engine. */ floor: BundledFloor; } /** The single resolved source a scaffold run will use. */ export interface TemplateSource { origin: TemplateOrigin; version: string; digest: string; location: string; /** Set when the resolved source diverged from the intended online source. */ warning?: string; } export interface ResolveTemplateSourceInput { /** SemVer range the build is permitted to resolve within. */ range: string; /** `true` for bundled floor resolution; `false` for release-channel resolution. */ bundled: boolean; port: TemplateSourcePort; } /** Inputs for the no-network local-first resolver. */ export interface ResolveLocalTemplateSourceInput { /** SemVer range the build is permitted to resolve within. */ range: string; port: TemplateSourcePort; } /** sha256 content hash of a package's bytes, prefixed `sha256:`. */ export declare function computeDigest(bytes: Buffer): string; /** Resolve to exactly one `TemplateSource` before any template is read. */ export declare function resolveTemplateSource(input: ResolveTemplateSourceInput): Promise>; /** Resolve a local source without touching the network. */ export declare function resolveLocalTemplateSource(input: ResolveLocalTemplateSourceInput): TemplateSource; //# sourceMappingURL=templateSource.d.ts.map