import { BlockNodeType, NodeAddress } from '../types/index.js';
import { SDNodeResult } from '../types/sd-envelope.js';
/**
 * Input for resolving a block node by its unique ID.
 */
export interface GetNodeByIdInput {
    nodeId: string;
    nodeType?: BlockNodeType;
}
/**
 * Engine-specific adapter that the getNode API delegates to.
 */
export interface GetNodeAdapter {
    /**
     * Resolve a node address to an SDNodeResult.
     *
     * @param address - The node address to resolve.
     * @returns SDNodeResult with the projected node and its address.
     * @throws When the address cannot be resolved.
     */
    getNode(address: NodeAddress): SDNodeResult;
    /**
     * Resolve a block node by its ID.
     *
     * @param input - The node-id input payload.
     * @returns SDNodeResult with the projected node and its address.
     * @throws When the node ID cannot be found.
     */
    getNodeById(input: GetNodeByIdInput): SDNodeResult;
}
/**
 * Execute a getNode operation via the provided adapter.
 *
 * @param adapter - Engine-specific getNode adapter.
 * @param address - The node address to resolve.
 * @returns SDNodeResult with the projected node and its address.
 */
export declare function executeGetNode(adapter: GetNodeAdapter, address: NodeAddress): SDNodeResult;
/**
 * Execute a getNodeById operation via the provided adapter.
 *
 * @param adapter - Engine-specific getNode adapter.
 * @param input - The node-id input payload.
 * @returns SDNodeResult with the projected node and its address.
 */
export declare function executeGetNodeById(adapter: GetNodeAdapter, input: GetNodeByIdInput): SDNodeResult;
//# sourceMappingURL=get-node.d.ts.map