import type { Rule } from 'eslint'; import { type TrackedBinding } from './tracked-callback-reference-state.ts'; type CallExpressionNode = Readonly>[0]>; type CallbackReferenceState = { readonly aliasBindings: ReadonlySet; readonly containerPropertiesByBinding: ReadonlyMap>; }; export type CallbackPathState = { readonly callbackHandled: boolean; readonly handledReferences: CallbackReferenceState; readonly unhandledReferences: CallbackReferenceState; }; export type CallbackHandlingOperation = { readonly node: CallExpressionNode; readonly type: 'call'; } | { readonly node: Rule.Node; readonly propertyName: string | undefined; readonly source: Readonly | null; readonly target: TrackedBinding; readonly type: 'containerPropertyAssignment'; } | { readonly node: Rule.Node; readonly source: Readonly | null; readonly target: TrackedBinding; readonly type: 'bindingAssignment'; } | { readonly node: Rule.Node; readonly type: 'callbackHandoff'; }; export type CallbackHandlingContext = { readonly callbackBinding: TrackedBinding; readonly codePath: Readonly; readonly operationsBySegmentId: ReadonlyMap; readonly sourceCode: Readonly; }; export declare function clonePathState(state: Readonly): CallbackPathState; export declare function arePathStatesSame(left: Readonly | undefined, right: Readonly): boolean; export declare function updatePathState(sourceCode: Readonly, state: Readonly, operation: Readonly): CallbackPathState; export declare function getCodeAfterCallbackHandlingNode(sourceCode: Readonly, state: Readonly, operation: Readonly): Rule.Node | undefined; export declare function createEntryState(context: Readonly, segment: Readonly, exitStatesBySegmentId: ReadonlyMap>): CallbackPathState; export {}; //# sourceMappingURL=callback-handling-state.d.ts.map