import { type SelectionSetNode } from "graphql";
import type { SupergraphVisitorMap } from "../../composition/visitor.cjs";
import type { SupergraphState } from "../../state.cjs";
import type { SupergraphValidationContext } from "../validation-context.cjs";
import type { ObjectTypeFieldState, ObjectTypeState } from "../../composition/object-type.cjs";
import type { InterfaceTypeState } from "../../composition/interface-type.cjs";
import type { UnionTypeState } from "../../composition/union-type.cjs";
export declare function AuthOnRequiresRule(context: SupergraphValidationContext, supergraph: SupergraphState): SupergraphVisitorMap;
type FieldCoordinate = `${string}.${string}`;
type TypeCoordinate = `${string}`;
type Coordinate = FieldCoordinate | TypeCoordinate;
export declare function ensureAccessToSelectionSet(supergraph: SupergraphState, currentType: ObjectTypeState | InterfaceTypeState | UnionTypeState, selectionSet: SelectionSetNode, provisionedAccess: ProvisionedAccess): Coordinate | void;
export declare class ProvisionedAccess {
    scopes: string[][];
    policies: string[][];
    authenticated: boolean;
    constructor(objectTypeState: ObjectTypeState, fieldState: ObjectTypeFieldState);
    canAccess(required: {
        authenticated: boolean;
        policies: string[][];
        scopes: string[][];
    }): boolean;
}
export {};
//# sourceMappingURL=auth-on-requires-rule.d.ts.map