import type { Expr } from "../ir/ir.js"; import type { FnRule } from "../infer/functions.js"; import { type Type } from "../infer/types.js"; export declare const SNOWFLAKE_FUNCTION_RETURNS: Record; /** Snowflake literal forms: '…' / $$…$$ → string; integers are NUMBER(38,0) (int * canonically); non-integers are NUMBER (decimal); 1e3 is approximate (double). */ export declare function snowflakeLiteral(text: string): Type; /** Snowflake scalar type names → the shared canonical names. All Snowflake integer * types are NUMBER(38,0) synonyms; FLOAT/FLOAT4/FLOAT8/REAL are all double-precision. * docs.snowflake.com/en/sql-reference/intro-summary-data-types */ export declare const SNOWFLAKE_ALIASES: Record; export declare function snowflakeParseType(text: string): Type; /** Pre-registry hook for calls a plain FnRule can't key. `.NEXTVAL` carries the sequence as a * (variable) qualifier, so no registry key can enumerate it; NEXTVAL always returns NUMBER(38,0) * regardless of the sequence, so match by name here. docs.snowflake.com/en/sql-reference/functions/nextval */ export declare function snowflakeSpecial(fn: Extract): Type | undefined;