///
///
declare module 'framer-motion' {
import type { ComponentType } from 'react';
// Minimal shim to satisfy strict typing for usage in JSX
export type MotionComponent = ComponentType>;
export const motion: {
div: MotionComponent;
span: MotionComponent;
button: MotionComponent;
svg: MotionComponent;
p: MotionComponent;
[element: string]: MotionComponent;
};
export const AnimatePresence: ComponentType>;
export function useReducedMotion(): boolean;
// Shim motion values with a minimal interface exposing .set()
export interface MotionValue {
get(): T;
set(v: T): void;
}
export function useMotionValue(initial: number): MotionValue;
export function useSpring(value: MotionValue | number, config?: Record): MotionValue;
export function useTransform(
value: MotionValue,
transformer: (input: TInput) => TOutput,
): MotionValue;
}
declare module '@next/third-party-devtools' {
import type { ComponentType } from 'react';
const Devtools: ComponentType>;
export default Devtools;
}
declare module 'react/compiler-runtime' {
export {};
}
declare global {
namespace NodeJS {
interface ProcessEnv {
NODE_ENV?: 'development' | 'production' | 'test';
// Website (public, exposed to browser)
NEXT_PUBLIC_GRIDPILOT_MODE?: 'pre-launch' | 'alpha';
NEXT_PUBLIC_SITE_URL?: string;
NEXT_PUBLIC_API_BASE_URL?: string;
NEXT_PUBLIC_SITE_NAME?: string;
NEXT_PUBLIC_SUPPORT_EMAIL?: string;
NEXT_PUBLIC_SPONSOR_EMAIL?: string;
NEXT_PUBLIC_LEGAL_COMPANY_NAME?: string;
NEXT_PUBLIC_LEGAL_VAT_ID?: string;
NEXT_PUBLIC_LEGAL_REGISTERED_COUNTRY?: string;
NEXT_PUBLIC_LEGAL_REGISTERED_ADDRESS?: string;
NEXT_PUBLIC_DISCORD_URL?: string;
NEXT_PUBLIC_X_URL?: string;
NEXT_TELEMETRY_DISABLED?: string;
// Website (server-only)
API_BASE_URL?: string;
FEATURE_FLAGS?: string;
// Vercel KV (server-only)
KV_REST_API_URL?: string;
KV_REST_API_TOKEN?: string;
// Build/CI toggles (server-only)
CI?: string;
DOCKER?: string;
}
}
}
export {};