/**
 * StrandController — encapsulates strand and conflict analysis operations.
 *
 * Extracted from strand.methods.js and conflict.methods.js. WarpRuntime
 * delegates directly to this controller via defineProperty loops.
 *
 * @module domain/services/controllers/StrandController
 */
import { type StrandCoordinatorGraphRuntime } from '../strand/createStrandCoordinator.ts';
import type StrandCoordinator from '../strand/StrandCoordinator.ts';
import type { StrandDescriptor, StrandQueuedIntent, StrandTickRecord } from '../strand/strandTypes.ts';
import type { ConflictAnalyzeOptions } from '../strand/ConflictAnalysisRequest.ts';
import type ConflictAnalysis from '../../types/conflict/ConflictAnalysis.ts';
import type { WarpState } from '../JoinReducer.ts';
import type SnapshotWarpState from '../snapshot/SnapshotWarpState.ts';
import type { TickReceipt } from '../../types/TickReceipt.ts';
import type { PatchBuilder } from '../PatchBuilder.ts';
import type Patch from '../../types/Patch.ts';
export type StrandHost = StrandCoordinatorGraphRuntime & {
    _loadWriterPatches(writerId: string): Promise<Array<{
        patch: Patch;
        sha: string;
    }>>;
};
export default class StrandController {
    _host: StrandHost;
    _strandService: StrandCoordinator;
    constructor(host: StrandHost);
    createStrand(options?: {
        strandId?: string;
        lamportCeiling?: number | null;
        owner?: string | null;
        scope?: string | null;
        leaseExpiresAt?: string | null;
    }): Promise<StrandDescriptor>;
    braidStrand(strandId: string, options?: {
        braidedStrandIds?: string[];
        writable?: boolean | null;
    }): Promise<StrandDescriptor>;
    getStrand(strandId: string): Promise<StrandDescriptor | null>;
    listStrands(): Promise<StrandDescriptor[]>;
    dropStrand(strandId: string): Promise<boolean>;
    materializeStrand(strandId: string, options?: {
        receipts?: boolean;
        ceiling?: number | null;
    }): Promise<SnapshotWarpState | {
        state: SnapshotWarpState;
        receipts: readonly TickReceipt[];
    }>;
    _materializeStrandLive(strandId: string, options?: {
        receipts?: boolean;
        ceiling?: number | null;
    }): Promise<{
        state: WarpState;
        receipts: readonly TickReceipt[];
    }>;
    _materializeStrandRead(strandId: string, options?: {
        receipts?: boolean;
        ceiling?: number | null;
    }): Promise<{
        state: WarpState;
        receipts: readonly TickReceipt[];
    }>;
    getStrandPatches(strandId: string, options?: {
        ceiling?: number | null;
    }): Promise<Array<{
        patch: Patch;
        sha: string;
    }>>;
    patchesForStrand(strandId: string, entityId: string, options?: {
        ceiling?: number | null;
    }): Promise<string[]>;
    createStrandPatch(strandId: string): Promise<PatchBuilder>;
    patchStrand(strandId: string, build: (p: PatchBuilder) => void | Promise<void>): Promise<string>;
    queueStrandIntent(strandId: string, build: (p: PatchBuilder) => void | Promise<void>): Promise<StrandQueuedIntent>;
    listStrandIntents(strandId: string): Promise<ReadonlyArray<StrandQueuedIntent>>;
    tickStrand(strandId: string): Promise<StrandTickRecord>;
    analyzeConflicts(options?: ConflictAnalyzeOptions): Promise<ConflictAnalysis>;
}
