import type { TSESLint, TSESTree } from "@typescript-eslint/utils"; export declare class Tracker { watchingImports: Record; resources: Record; visited: Set; jsxClosure?: Set | undefined; jsxBindings?: Map; watchImport(source: string, watchAs?: string): void; watchMember(resName: string, memberName: string, watchAs?: string): void; watchCall(resName: string, captures?: CaptureSpec[], watchAs?: string): void; watchConstruct(resName: string, captures?: CaptureSpec[], watchAs?: string): void; watchJSXElement(resName: string, captures?: CaptureSpec[], watchAs?: string): void; private getResourceHooks; listen(resName: string, listener: (node: TSESTree.Node, captured: CaptureMap) => void): void; private fire; trackImport(scopeManager: TSESLint.Scope.ScopeManager, node: TSESTree.ImportDeclaration): void; private trackVariable; private trackExpression; private trackPattern; private memberResource; private getJsxClosure; } export type CaptureSpec = { path: string[]; captureAs: string; }; type CallCaptureSpec = { resName: string; captures: CaptureSpec[]; }; type ResourceHooks = { members: Record; calls: CallCaptureSpec[]; constructs: CallCaptureSpec[]; jsxElements: CallCaptureSpec[]; listeners: ((node: TSESTree.Node, captured: CaptureMap) => void)[]; }; export type CaptureMap = Record; export type GeneralizedNode = TSESTree.Node | ArgumentsOf | PropsOf | CaptureFailure; type CaptureFailure = { type: "CaptureFailure"; node: GeneralizedNode; memberName: string; }; type ArgumentsOf = { type: "ArgumentsOf"; node: TSESTree.CallExpression | TSESTree.NewExpression; }; type PropsOf = { type: "PropsOf"; node: TSESTree.JSXElement; }; export declare function capturedRoot(node: GeneralizedNode): TSESTree.Node; export {}; //# sourceMappingURL=tracker.d.ts.map