import { Result } from 'neverthrow';
import { WorkflowState, WorkflowError } from '../../domain/term/interview-workflow/index.js';
/**
 * Workflow State Effect Layer
 *
 * Handles side effects for workflow state persistence and retrieval.
 * Abstracts storage implementation details from domain logic.
 */
type StateStorageError = {
    type: 'StorageUnavailable' | 'SerializationError' | 'StateNotFound';
    message: string;
    cause?: unknown;
};
type GetWorkflowStateEffect = () => Promise<Result<WorkflowState, StateStorageError>>;
type SetWorkflowStateEffect = (state: WorkflowState) => Promise<Result<void, StateStorageError>>;
type ClearWorkflowStateEffect = () => Promise<Result<void, StateStorageError>>;
type GetNotionPageUrlEffect = () => Promise<Result<string, StateStorageError>>;
type SetNotionPageUrlEffect = (url: string) => Promise<Result<void, StateStorageError>>;
type StorageType = 'memory' | 'file' | 'database';
interface StorageConfig {
    type: StorageType;
    filePath?: string;
    connectionString?: string;
}
export declare const WorkflowStateEffects: {
    getWorkflowState: () => Promise<Result<WorkflowState, StateStorageError>>;
    setWorkflowState: (state: WorkflowState) => Promise<Result<void, StateStorageError>>;
    clearWorkflowState: () => Promise<Result<void, StateStorageError>>;
    getNotionPageUrl: () => Promise<Result<string, StateStorageError>>;
    setNotionPageUrl: (url: string) => Promise<Result<void, StateStorageError>>;
    getLastUpdated: () => Date;
};
export declare const createWorkflowStateEffectsWithConfig: () => {
    getWorkflowState: () => Promise<Result<WorkflowState, StateStorageError>>;
    setWorkflowState: (state: WorkflowState) => Promise<Result<void, StateStorageError>>;
    clearWorkflowState: () => Promise<Result<void, StateStorageError>>;
    getNotionPageUrl: () => Promise<Result<string, StateStorageError>>;
    setNotionPageUrl: (url: string) => Promise<Result<void, StateStorageError>>;
    getLastUpdated: () => Date;
};
export declare const ErrorMapping: {
    readonly mapStorageErrorToWorkflowError: (storageError: StateStorageError) => WorkflowError;
};
export type { StateStorageError, StorageConfig, StorageType, GetWorkflowStateEffect, SetWorkflowStateEffect, ClearWorkflowStateEffect, GetNotionPageUrlEffect, SetNotionPageUrlEffect };
//# sourceMappingURL=index.d.ts.map