import { Expr, GpuFragmentParams } from '../gpu/contract'; import { expr } from '../gpu/composer'; import { FilterParams } from '../gpu/scaffolds/pointwiseFilter'; import { PointwiseEffect } from './types'; import { Scalar, PropRef, ScalarSource, SignalSlotParams } from './values'; /** A read of one of the system context values. Build via {@link ctx}. */ export interface CtxToken { readonly kind: 'ctx'; readonly name: 'uv' | 'aspect' | 'time' | 'viewportSize' | 'logicalViewportSize' | 'pointer'; } /** Context tokens for arg specs: `ctx.uv`, `ctx.aspect`, … */ export declare const ctx: { readonly uv: CtxToken; readonly aspect: CtxToken; readonly time: CtxToken; readonly viewportSize: CtxToken; readonly logicalViewportSize: CtxToken; readonly pointer: CtxToken; }; /** One declarative GPU-body argument. */ export type ArgSpec = PropRef | Scalar | CtxToken | number; /** The minimal host surface slots resolve against (warp hooks carry no `ctx`). */ export type SlotParams = SignalSlotParams; /** Resolve a prop binding to its uniform accessor (throws on a dangling name). */ /** * The uvContext idiom every generator paint shares: evaluate against the composed UV/viewport * when a UV-propagating parent supplies one, else the raw canvas frame. */ export declare function paintFrame(params: GpuFragmentParams): { uv: Expr; viewport: Expr; }; export declare function uniformOf(ref: PropRef, params: { uniforms: Record; }): Expr; /** Resolve a scalar value-graph node to an Expr against the composition params. */ export declare function resolveScalar(input: Scalar | ScalarSource, params: SlotParams): Expr; /** Resolve any ArgSpec to an Expr against the composition params. */ export declare function resolveArg(spec: ArgSpec, params: FilterParams): Expr; /** {@link resolveArg} against any slot host (warp hooks included). */ export declare function resolveArgIn(spec: ArgSpec, params: SlotParams): Expr; /** Never-used guard so `expr` stays available to vocabulary modules re-exporting it. */ export { expr as rawExpr }; /** * Build a pointwise filter effect from a kit body + declarative arg specs. The child * colour is always the body's first argument; `args` follow in order. */ export declare function pointwiseOp(fn: unknown, hint: string, args: ArgSpec[], extra?: { compose?: PointwiseEffect['compose']; setup?: PointwiseEffect['setup']; }): PointwiseEffect; //# sourceMappingURL=invoke.d.ts.map