import { getPrefixedLogger } from "../../../../util/logger.js";
import type { OperationQueue } from "../../../../util/operation-queue.js";
import type { IntegrationStore } from "../../../integrations/store.js";
import type { ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
import type { FileArtifact } from "../../../types.js";
import type { ApiIdentifier } from "../../subagents/apis/types.js";
import type { Api } from "@superblocksteam/library-shared/types";
/**
 * Integration output type definitions.
 * Source of truth for what each integration returns.
 */
export declare const INTEGRATION_OUTPUT_TYPES: Record<string, string>;
/**
 * Get the output type for a specific block.
 * Control flow blocks return their last child's output.
 * @internal Exported for testing only
 */
export declare function getBlockOutputType(block: any): string;
/**
 * Determine the output type of an API based on its last block.
 * The API response is always the output of the last block executed.
 * @internal Exported for testing only
 */
export declare function determineApiOutputType(apiJson: any): string;
export interface BuildApiArtifactParams {
    apiName: ApiIdentifier;
    services: ClarkStateHandlerParams;
    scopeUpdateQueue: OperationQueue;
    logger?: ReturnType<typeof getPrefixedLogger>;
}
export interface BuildApiArtifactResult {
    apiYaml: FileArtifact;
    isNewApi: boolean;
    inputInterface: string;
    responseType: string;
}
/**
 * Compile an API source file, validate it, and persist the generated YAML artifact.
 *
 * @param params - Build parameters including identifiers and shared services.
 * @returns The generated API YAML artifact and whether the API is newly created.
 * @throws Error when the API source is missing, compilation fails, or persistence is not possible.
 */
export declare const buildApiArtifact: (params: BuildApiArtifactParams) => Promise<BuildApiArtifactResult>;
/**
 * Validate that blocks use the correct plugin field name matching the integration's plugin.id.
 */
export declare function validateBlockFieldNames(api: Api, integrationStore: IntegrationStore): void;
//# sourceMappingURL=build-api-artifact.d.ts.map