import { type HostAdapterId } from "./host-adapters.js"; import type { HostActivationPlan } from "./host-activation.js"; import { type HostFileReview } from "./host-file.js"; import { inspectHostAdapterFile, type HostInspectionReport } from "./host-inspection.js"; export declare const HOST_CHANGE_PLAN_FORMAT = "guildcontrol.host-change-plan.v1"; export declare const HOST_CHANGE_APPLY_FORMAT = "guildcontrol.host-change-apply.v1"; export declare const HOST_CHANGE_SCHEMA_VERSION = 1; export declare const HOST_CHANGE_PLAN_DIGEST_PATTERN: RegExp; export type HostChangeOperation = "create" | "unchanged" | "update"; export type HostOwnedEntryChange = "add" | "replace" | "unchanged"; export type HostChangeStrategy = "merge-owned-records" | "replace-dedicated-document"; export interface HostChangeSummary { readonly backupRequired: boolean; readonly canonicalJsonRewrite: boolean; readonly operation: HostChangeOperation; readonly sensitiveInputs: { readonly added: number; readonly replaced: number; readonly unchanged: number; }; readonly serverEntry: HostOwnedEntryChange; readonly strategy: HostChangeStrategy; readonly unrelatedState: "not-applicable" | "preserved" | "replaced"; } export interface HostChangePlanReport { readonly adapter: { readonly activationDigest: string; readonly adapterDigest: string; readonly hostServerName: string; readonly id: HostAdapterId; readonly title: string; }; readonly change: HostChangeSummary; readonly confirmation: { readonly requiredValue: string; }; readonly fileReview: { readonly directory: { readonly canonical: true; readonly owner: "platform-unverified" | "trusted"; readonly writableByOthers: false | "platform-unverified"; }; readonly existingFile: HostFileReview | null; readonly state: "absent" | "present"; }; readonly format: typeof HOST_CHANGE_PLAN_FORMAT; readonly limitations: readonly string[]; readonly planDigest: string; readonly privacy: { readonly activityRecordsCreated: false; readonly credentialValuesReturned: false; readonly discordContacted: false; readonly hostConfigurationChanged: false; readonly hostConfigurationRead: boolean; readonly hostPathReturned: false; readonly networkContacted: false; readonly possibleCredentialMaterialRead: boolean; readonly privateHostBytesHashed: false; readonly processStarted: false; readonly rawHostConfigurationReturned: false; readonly unrelatedHostStateReturned: false; }; readonly schemaVersion: typeof HOST_CHANGE_SCHEMA_VERSION; readonly status: "ready"; } export interface HostChangeApplyReport { readonly adapter: HostChangePlanReport["adapter"]; readonly backup: { readonly created: boolean; readonly file?: string; }; readonly change: HostChangeSummary; readonly format: typeof HOST_CHANGE_APPLY_FORMAT; readonly inspection: HostInspectionReport; readonly limitations: readonly string[]; readonly planDigest: string; readonly privacy: { readonly activityRecordsCreated: false; readonly credentialValuesReturned: false; readonly discordContacted: false; readonly hostConfigurationChanged: boolean; readonly hostConfigurationRead: true; readonly hostPathReturned: boolean; readonly networkContacted: false; readonly possibleCredentialMaterialRead: boolean; readonly privateHostBytesHashed: false; readonly processStarted: false; readonly rawHostConfigurationReturned: false; readonly unrelatedHostStateReturned: false; }; readonly schemaVersion: typeof HOST_CHANGE_SCHEMA_VERSION; readonly status: "applied" | "unchanged"; } export interface ApplyHostChangeOptions { readonly confirmation: string; readonly inspect?: typeof inspectHostAdapterFile; readonly planDigest: string; } export declare function planHostAdapterFile(activation: HostActivationPlan, adapterId: HostAdapterId, file: string): HostChangePlanReport; export declare function applyHostAdapterFile(activation: HostActivationPlan, adapterId: HostAdapterId, file: string, options: ApplyHostChangeOptions): HostChangeApplyReport; //# sourceMappingURL=host-installation.d.ts.map