## API Report File for "@angular-devkit/architect"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { analytics } from '@angular-devkit/core';
import { experimental } from '@angular-devkit/core';
import { json } from '@angular-devkit/core';
import { logging } from '@angular-devkit/core';
import { Observable } from 'rxjs';
import { SubscribableOrPromise } from 'rxjs';

// @public (undocumented)
export class Architect {
    constructor(_host: ArchitectHost, registry?: json.schema.SchemaRegistry, additionalJobRegistry?: experimental.jobs.Registry);
    // (undocumented)
    has(name: experimental.jobs.JobName): Observable<boolean>;
    // (undocumented)
    scheduleBuilder(name: string, options: json.JsonObject, scheduleOptions?: ScheduleOptions): Promise<BuilderRun>;
    // (undocumented)
    scheduleTarget(target: Target, overrides?: json.JsonObject, scheduleOptions?: ScheduleOptions): Promise<BuilderRun>;
}

// @public
export interface BuilderContext {
    addTeardown(teardown: () => Promise<void> | void): void;
    readonly analytics: analytics.Analytics;
    builder: BuilderInfo;
    currentDirectory: string;
    getBuilderNameForTarget(target: Target): Promise<string>;
    // (undocumented)
    getProjectMetadata(projectName: string): Promise<json.JsonObject>;
    // (undocumented)
    getProjectMetadata(target: Target): Promise<json.JsonObject>;
    getTargetOptions(target: Target): Promise<json.JsonObject>;
    id: number;
    logger: logging.LoggerApi;
    reportProgress(current: number, total?: number, status?: string): void;
    reportRunning(): void;
    reportStatus(status: string): void;
    scheduleBuilder(builderName: string, options?: json.JsonObject, scheduleOptions?: ScheduleOptions_2): Promise<BuilderRun>;
    scheduleTarget(target: Target, overrides?: json.JsonObject, scheduleOptions?: ScheduleOptions_2): Promise<BuilderRun>;
    target?: Target;
    validateOptions<T extends json.JsonObject = json.JsonObject>(options: json.JsonObject, builderName: string): Promise<T>;
    workspaceRoot: string;
}

// @public
export interface BuilderHandlerFn<A> {
    (input: A, context: BuilderContext): BuilderOutputLike;
}

// @public
export type BuilderInfo = json.JsonObject & {
    builderName: string;
    description: string;
    optionSchema: json.schema.JsonSchema;
};

// @public
export type BuilderInput = json.JsonObject & Schema;

// @public (undocumented)
export type BuilderOutput = json.JsonObject & Schema_2;

// @public
export type BuilderOutputLike = AsyncIterable<BuilderOutput> | SubscribableOrPromise<BuilderOutput> | BuilderOutput;

// @public (undocumented)
export type BuilderProgress = json.JsonObject & Schema_3 & TypedBuilderProgress;

// @public
export type BuilderProgressReport = BuilderProgress & {
    target?: Target;
    builder: BuilderInfo;
};

// @public (undocumented)
export enum BuilderProgressState {
    // (undocumented)
    Error = "error",
    // (undocumented)
    Running = "running",
    // (undocumented)
    Stopped = "stopped",
    // (undocumented)
    Waiting = "waiting"
}

// @public (undocumented)
export type BuilderRegistry = experimental.jobs.Registry<json.JsonObject, BuilderInput, BuilderOutput>;

// @public
export interface BuilderRun {
    id: number;
    info: BuilderInfo;
    output: Observable<BuilderOutput>;
    progress: Observable<BuilderProgressReport>;
    result: Promise<BuilderOutput>;
    stop(): Promise<void>;
}

// @public (undocumented)
export function createBuilder<OptT = json.JsonObject, OutT extends BuilderOutput = BuilderOutput>(fn: BuilderHandlerFn<OptT>): Builder<OptT & json.JsonObject>;

// @public (undocumented)
export function fromAsyncIterable<T>(iterable: AsyncIterable<T>): Observable<T>;

// @public (undocumented)
export function isBuilderOutput(obj: any): obj is BuilderOutput;

// @public (undocumented)
export interface ScheduleOptions {
    // (undocumented)
    analytics?: analytics.Analytics;
    // (undocumented)
    logger?: logging.Logger;
}

// @public
export function scheduleTargetAndForget(context: BuilderContext, target: Target, overrides?: json.JsonObject, scheduleOptions?: ScheduleOptions_2): Observable<BuilderOutput>;

// @public (undocumented)
export type Target = json.JsonObject & Target_2;

// @public
export function targetFromTargetString(str: string): Target;

// @public
export function targetStringFromTarget({ project, target, configuration }: Target): string;

// @public
export type TypedBuilderProgress = {
    state: BuilderProgressState.Stopped;
} | {
    state: BuilderProgressState.Error;
    error: json.JsonValue;
} | {
    state: BuilderProgressState.Waiting;
    status?: string;
} | {
    state: BuilderProgressState.Running;
    status?: string;
    current: number;
    total?: number;
};

// (No @packageDocumentation comment for this package)

```
