import type { ContextHaving, ContextUsing } from '../../../framework-types/execution-context/Types';
import type { NamedTask, Task } from '../../../framework-types/task/Types';
import type { Constants } from '../core/Constants';
import type { EventListenerEffect } from '../core/effects/EventListenerEffectFactory';
import type { CoreStateAtoms } from '../core/Types';
import { CoreExportNames } from '../core/Types';
import type { CoreUtils } from '../core/utils/Types';
import type { ContextWithState } from '../Types';
import type { SourceConfig } from './atoms/SourceConfigAtom';
import type { SourceOptions, SourceStateAtom } from './atoms/SourceStateAtom';
import type { SourceReference } from './Types';
import { SourceExportNames } from './Types';
type ExtendedContext = ContextHaving<{
    [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
    [CoreExportNames.Utils]: CoreUtils;
    [CoreExportNames.Constants]: Constants;
}, {
    [SourceExportNames.SourceState]: SourceStateAtom;
}, ContextUsing<[EventListenerEffect], ContextWithState>>;
type CreateSourceReferenceParam = {
    context?: ExtendedContext;
    sourceConfig: SourceConfig;
    sourceOptions?: Partial<SourceOptions>;
    sourceErrorHandler?: (error: Error) => boolean;
    task?: NamedTask<Task<ExtendedContext, void, void>>;
    sourceId?: string;
};
export declare const getCreateSourceReference: (context: ExtendedContext) => (data: CreateSourceReferenceParam) => SourceReference;
export declare function createSourceReference({ context, sourceConfig, sourceOptions, sourceErrorHandler, task, sourceId, }: CreateSourceReferenceParam): SourceReference;
export {};
