/**
 * Factory that assembles a StrandCoordinator from a graph runtime.
 *
 * @module domain/services/strand/createStrandCoordinator
 */
import StrandCoordinator from './StrandCoordinator.ts';
import type { ProvenanceIndex } from '../provenance/ProvenanceIndex.ts';
import type { WarpState } from '../JoinReducer.ts';
import type Patch from '../../types/Patch.ts';
import type PatchJournalPort from '../../../ports/PatchJournalPort.ts';
import type LoggerPort from '../../../ports/LoggerPort.ts';
import type BlobStoragePort from '../../../ports/BlobStoragePort.ts';
import type CommitMessageCodecPort from '../../../ports/CommitMessageCodecPort.ts';
import type GraphPersistencePort from '../../../ports/GraphPersistencePort.ts';
import type CryptoPort from '../../../ports/CryptoPort.ts';
import type { HashablePayload } from '../../types/conflict/HashablePayload.ts';
/**
 * Opaque diagnostic bag the wired warp runtime returns from
 * `_setMaterializedState`. The strand sub-services ignore the
 * return value; the type exists solely to let `WarpRuntime` satisfy
 * the structural narrow below.
 */
type StrandMaterializationDiagnosticBag = object;
/**
 * Structural description of the graph runtime the strand
 * sub-services reach into. The wider warp runtime provides many
 * more fields; this type narrows to the exact surface the strand
 * coordinator needs and is re-exported so cross-module wiring can
 * avoid double-cast escape hatches.
 */
export type StrandCoordinatorGraphRuntime = {
    _graphName: string;
    _persistence: GraphPersistencePort;
    _crypto: CryptoPort;
    _loadPatchChainFromSha(sha: string): Promise<Array<{
        patch: Patch;
        sha: string;
    }>>;
    _maxObservedLamport: number;
    _provenanceIndex: ProvenanceIndex | null;
    _provenanceDegraded: boolean;
    _cachedCeiling: number | null;
    _cachedFrontier: Map<string, string> | null;
    _lastFrontier: Map<string, string> | null;
    _setMaterializedState(state: WarpState): Promise<void | StrandMaterializationDiagnosticBag>;
    getFrontier(): Promise<Map<string, string>>;
    _patchInProgress: boolean;
    _stateDirty: boolean;
    _cachedViewHash: string | null;
    _cachedState: WarpState | null;
    _patchJournal: PatchJournalPort | null | undefined;
    _patchBlobStorage: BlobStoragePort | null | undefined;
    _blobStorage: BlobStoragePort | null | undefined;
    _commitMessageCodec: CommitMessageCodecPort;
    _logger: LoggerPort | null | undefined;
    _codec: {
        encode(v: HashablePayload): Uint8Array;
    };
    _onDeleteWithData: 'reject' | 'cascade' | 'warn';
};
/** Creates a StrandCoordinator wired to the given graph runtime. */
export default function createStrandCoordinator(graph: StrandCoordinatorGraphRuntime): StrandCoordinator;
export {};
