import type { Result, SiteId } from '../../core/src/index';
import type { SiteCommand } from './commands';
import type { AllowedRuntime, SiteCommandResourceIds } from './domain';
import type { SiteCommandRef } from './refs';
export type SiteCommandExecutionContext = Readonly<{
    siteId: SiteId;
    runtime: AllowedRuntime;
}>;
export type SiteCommandExecutionSuccess = Readonly<{
    commandRef: SiteCommandRef;
    commandType: SiteCommand['type'];
    status: 'applied' | 'skipped';
    resourceIds?: SiteCommandResourceIds;
}>;
export type SiteCommandExecutionError = Readonly<{
    commandRef: SiteCommandRef;
    commandType: SiteCommand['type'];
    code: 'unsupported_command' | 'adapter_failed';
    message: string;
}>;
export type SiteCommandExecutionAdapter = Readonly<{
    executeCommand(command: SiteCommand, context: SiteCommandExecutionContext): Promise<Result<SiteCommandExecutionSuccess, SiteCommandExecutionError>>;
}>;
