import { Effect, Scope } from 'effect'; import type { DecodedEntity } from '../../../core/index.js'; import type { CollectionName, PartitionKey, PartitionValue } from '../../domain/identity/index.js'; import type { WriteError } from '../../domain/sync-error/index.js'; import type { SyncReporter } from '../../domain/sync-event/index.js'; import { type Leadership } from '../../platform/leadership/index.js'; import { type CadenceConfig, type SyncCollection } from '../../strategy/cadence-repair/index.js'; import type { PartitionedStrategy, PartitionEntry, StrategyContext } from '../../strategy/strategy/index.js'; import { type CollectionFlow, type StrategyFlow } from '../../flow/sync-flow/index.js'; export type Partition = { field: string; value: PartitionValue; }; export type StrategySessions = { start: (partitionKey: PartitionKey, entry: PartitionEntry, flow: CollectionFlow, partition?: Partition) => Effect.Effect; stop: (partitionKey: PartitionKey) => Effect.Effect; stopAll: Effect.Effect; }; export declare const makeStrategySessions: (args: { collectionName: CollectionName; leadership: Leadership; defaultCadence?: CadenceConfig; collection: () => SyncCollection | null; makeContext: (partitionKey: PartitionKey, scope: Scope.Scope, strategy: PartitionedStrategy, flow: StrategyFlow) => StrategyContext; applyToSyncReplica: (entities: DecodedEntity[], flow?: StrategyFlow) => Effect.Effect; report: SyncReporter; }) => Effect.Effect>; //# sourceMappingURL=strategy-session.d.ts.map