/**
 * Concrete EntityWriter implementation for M17 restore (Phase 6).
 *
 * Constructed per-restore-request by ReleaseService — looks up entity
 * services + tag/junction services from the plugin host. Each write goes
 * through the normal service API so the mutation is captured into
 * `entity_version` with `release_id = NULL` (append-only — decyzja 7).
 *
 * Idempotent UPSERT semantics (decyzja 11): no `--force` flag, no
 * destructive operations on history. The append-only safety net makes
 * accidental overwrites cofalne by another restore.
 */
import type { ChangedBy, EndpointDtoRelation } from '../../shared/entities.js';
import type { EntityWriter, UpsertResult } from '../serialization/writer.js';
import type { PluginHost } from '../core/plugin-host/types.js';
import type { RawEntityType } from '../domain/raw-entity-reader.js';
import type { EndpointService } from '../entities/endpoint/services.js';
import type { DtoService } from '../entities/dto/services.js';
import type { DatabaseTableService } from '../entities/database-table/services.js';
import type { UiViewService } from '../entities/ui-view/services.js';
import type { AcService } from '../entities/ac/services.js';
import type { TagsService } from './tags.js';
export declare class HostEntityWriter implements EntityWriter {
    private host;
    private tags;
    constructor(host: PluginHost, tags: TagsService);
    upsertEndpoint(slug: string, input: Parameters<EndpointService['upsert']>[1], actor: ChangedBy): UpsertResult<ReturnType<EndpointService['upsert']>['entity']>;
    upsertDto(slug: string, input: Parameters<DtoService['upsert']>[1], actor: ChangedBy): UpsertResult<ReturnType<DtoService['upsert']>['dto']>;
    upsertDatabaseTable(slug: string, input: Parameters<DatabaseTableService['upsert']>[1], actor: ChangedBy): UpsertResult<ReturnType<DatabaseTableService['upsert']>['dbTable']>;
    upsertUiView(slug: string, input: Parameters<UiViewService['upsert']>[1], actor: ChangedBy): UpsertResult<ReturnType<UiViewService['upsert']>['uiView']>;
    upsertAc(slug: string, input: Parameters<AcService['upsert']>[1], actor: ChangedBy): UpsertResult<ReturnType<AcService['upsert']>['ac']>;
    syncEndpointDtos(endpointSlug: string, target: Array<{
        dtoSlug: string;
        relation: EndpointDtoRelation;
        statusCode: number | null;
    }>): {
        linked: number;
        unlinked: number;
        warnings: string[];
    };
    syncTags(type: RawEntityType, slug: string, tags: string[]): void;
    delete(type: RawEntityType, slug: string, actor: ChangedBy): {
        deleted: boolean;
    };
    private requireService;
}
