import type { Maybe, NodeIdHandler } from "../interfaces.ts";
import type { Step } from "../step.ts";
/**
 * Decodes a global identifier that is expected to correspond to a specific
 * {@link NodeIdHandler}. The returned specifier can be passed directly to
 * whatever data-source helper understands that handler's spec (for example a
 * `get`/`update` helper on your own resource abstraction) without invoking the
 * polymorphic machinery.
 *
 * Prefer `specFromNodeId()` whenever the expected object type is already
 * known (for example in `updateUser(id: ID!, ...)` mutations). It avoids the
 * extra work performed by {@link NodeStep} and keeps plan resolvers
 * straightforward.
 */
export declare function specFromNodeId<THandler extends NodeIdHandler<any> = NodeIdHandler<any>>(handler: THandler, $id: Step<Maybe<string>>): ReturnType<THandler["getSpec"]>;
export declare function nodeIdFromNode(handler: NodeIdHandler<any>, $node: Step): import("./lambda.ts").LambdaStep<any, string | null>;
export declare function makeDecodeNodeIdRuntime(handlers: readonly NodeIdHandler[]): (raw: string | null | undefined) => {
    [codecName: string]: any;
} | null;
export declare function makeDecodeNodeId(handlers: readonly NodeIdHandler[]): ($id: Step<string | null | undefined>) => import("./lambda.ts").LambdaStep<string | null | undefined, {
    [codecName: string]: any;
} | null>;
//# sourceMappingURL=node.d.ts.map