import { ChildKey, NodeDefinition, NodeLike, StaticGraphNode, StaticNodeDefinition, StaticNodeType } from '../../types/graph'; import { KeyNodeDefinition } from './key'; export declare type DeferNodeFallbackGenerator = (previousValue: NodeDefinition | undefined) => NodeDefinition; /** * An instance of the [[defer]] node. * See the [[defer]] documentation to find out more. */ export interface DeferNode extends StaticGraphNode<'defer', DeferNodeProperties> { } /** * A definition of the [[defer]] node. * See the [[defer]] documentation to find out more. */ export interface DeferNodeDefinition extends StaticNodeDefinition<'defer', DeferNodeProperties> { } export interface DeferNodeProperties { fallbackGenerator: DeferNodeFallbackGenerator; target: KeyNodeDefinition; } /** * The implementation of the [[defer]]. * See the [[defer]] documentation to learn more. */ export declare const DeferNodeType: StaticNodeType<'defer', DeferNodeProperties>; /** * Creates a new instance of a [[defer]] node, which is a type of a [[NodeDefinition]] used inside a [[query]] * to indicate that a given part of the query should not block the remainder of the query from resolving. * * See the **Defer part of a query** example from the [[query]] documentation page to learn more. */ export declare function defer(target: KeyNodeDefinition | ChildKey): DeferNodeDefinition; export declare function defer(fallback: DeferNodeFallbackGenerator | NodeDefinition | NodeLike, target: KeyNodeDefinition | ChildKey): DeferNodeDefinition; export declare function isDeferNodeDefinition(value: NodeDefinition): value is DeferNodeDefinition;