import { Uniform } from 'three'; export type PropertyShorthand = Args extends readonly [infer T, infer K, ...infer Rest] ? K extends readonly string[] ? K[number] extends keyof T ? Rest extends readonly unknown[] ? { [P in K[number]]: T[P]; } & PropertyShorthand : { [P in K[number]]: T[P]; } : never : never : {}; export declare function definePropertyShorthand(destination: T, ...sourceKeysArgs: [...Args]): T & PropertyShorthand; export type UniformShorthand; }, K extends keyof T['uniforms']> = { [P in K]: T['uniforms'][P] extends Uniform ? U : never; }; export declare function defineUniformShorthand; }, K extends keyof S['uniforms']>(destination: T, source: S, keys: readonly K[]): T & UniformShorthand;