import type { TSESTree } from "@typescript-eslint/utils";
export declare const MEDUSA_SERVICE = "MedusaService";
export declare const CONTEXT_TYPE = "Context";
export type MedusaServiceBindings = {
    medusaService: Set<string>;
};
export declare function createMedusaServiceBindings(): MedusaServiceBindings;
/**
 * Records local names bound to `MedusaService` from
 * `@medusajs/framework/utils` (honors `import { MedusaService as MS }`).
 *
 * Call from an `ImportDeclaration` visitor.
 */
export declare function trackMedusaServiceImports(node: TSESTree.ImportDeclaration, bindings: MedusaServiceBindings): void;
/**
 * True when `superClass` is a `CallExpression` whose callee resolves to a
 * tracked `MedusaService` binding (e.g. `class X extends MedusaService({...})`).
 */
export declare function isMedusaServiceSuper(superClass: TSESTree.LeftHandSideExpression | null, bindings: MedusaServiceBindings): boolean;
/**
 * Generic import tracker for named specifiers from
 * `@medusajs/framework/utils`. Given a map of canonical imported names to
 * `Set<string>` buckets, populates each bucket with the *local* name a
 * consumer bound that import to (honors `import { Foo as F }`).
 *
 * Call from an `ImportDeclaration` visitor. Imports from other sources are
 * ignored.
 */
export declare function trackFrameworkUtilsImports(node: TSESTree.ImportDeclaration, buckets: Record<string, Set<string>>): void;
/**
 * Unwraps a parameter pattern to its binding `Identifier`. Handles both
 * `foo: T` (bare `Identifier`) and `foo: T = x` (`AssignmentPattern` with an
 * `Identifier` on the left). Returns `null` for destructuring patterns,
 * rest elements, and TS parameter properties.
 */
export declare function getParamIdentifier(param: TSESTree.Parameter): TSESTree.Identifier | null;
/**
 * True when `id`'s type annotation is a bare reference to `Context`.
 *
 * AST-level check only — does not resolve the import; a custom local
 * `type Context = ...` would also match. Acceptable: the rules that use
 * this gate are scoped to Medusa service classes where `Context` is the
 * convention.
 */
export declare function isContextTypedIdentifier(id: TSESTree.Identifier): boolean;
/** True when any of `fn`'s parameters is typed `Context`. */
export declare function hasContextParam(fn: TSESTree.FunctionExpression | TSESTree.TSEmptyBodyFunctionExpression): boolean;
/**
 * Returns parameter decorators attached to `param`. TSESTree puts
 * decorators on the outermost pattern (the `AssignmentPattern` when there's
 * a default), but we fall back to the inner `Identifier`'s decorators
 * defensively.
 */
export declare function getParamDecorators(param: TSESTree.Parameter): TSESTree.Decorator[];
/**
 * True when any decorator in `decorators` is `@<name>()` / `@<name>` where
 * `<name>` is in `localNames`. Used to gate rules whose autofix or
 * detection relies on decorator presence.
 */
export declare function hasDecoratorWithLocalName(decorators: TSESTree.Decorator[] | undefined, localNames: Set<string>): boolean;
//# sourceMappingURL=service-scope.d.ts.map