import { NodePath, Visitor } from '@babel/traverse'; import * as t from '@babel/types'; declare class AssignmentMemoiser { private _map; constructor(); has(key: t.Expression): boolean; get(key: t.Expression): t.AssignmentExpression | t.Identifier | undefined; set(key: t.Expression, value: t.Identifier, count: number): WeakMap; } type Member = NodePath; interface Handler { memoise?(this: HandlerState & State, member: Member, count: number): void; destructureSet(this: HandlerState & State, member: Member): t.Expression; boundGet(this: HandlerState & State, member: Member): t.Expression; simpleSet?(this: HandlerState & State, member: Member): t.Expression; get(this: HandlerState & State, member: Member): t.Expression; set(this: HandlerState & State, member: Member, value: t.Expression): t.Expression; call(this: HandlerState & State, member: Member, args: t.CallExpression["arguments"]): t.Expression; optionalCall(this: HandlerState & State, member: Member, args: t.OptionalCallExpression["arguments"]): t.Expression; delete(this: HandlerState & State, member: Member): t.Expression; } interface HandlerState extends Handler { handle(this: HandlerState & State, member: Member, noDocumentAll?: boolean): void; memoiser: AssignmentMemoiser; } declare function memberExpressionToFunctions(path: NodePath, visitor: Visitor & CustomState>, state: Handler & CustomState): void; export { type Handler, type HandlerState, memberExpressionToFunctions as default };