// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { DataType } from "./DataType";
import type { Expression } from "./Expression";
import type { FunctionBody } from "./FunctionBody";
import type { FunctionParameter } from "./FunctionParameter";
import type { FunctionPropertyKind } from "./FunctionPropertyKind";
import type { FunctionSecurity } from "./FunctionSecurity";
import type { FunctionSetOption } from "./FunctionSetOption";
import type { SqlDataAccess } from "./SqlDataAccess";
import type { TableRef } from "./TableRef";

/**
 * CREATE FUNCTION statement
 */
export type CreateFunction = { name: TableRef, parameters: Array<FunctionParameter>, return_type: DataType | null, body: FunctionBody | null, or_replace: boolean, if_not_exists: boolean, temporary: boolean, language: string | null, deterministic: boolean | null, returns_null_on_null_input: boolean | null, security: FunctionSecurity | null, 
/**
 * Whether parentheses were present in the original syntax
 */
has_parens: boolean, 
/**
 * SQL data access characteristic (CONTAINS SQL, READS SQL DATA, etc.)
 */
sql_data_access: SqlDataAccess | null, 
/**
 * TSQL: RETURNS @var TABLE (col_defs) - stores the variable name and column definitions as raw string
 */
returns_table_body?: string | null, 
/**
 * True if LANGUAGE clause appears before RETURNS clause
 */
language_first: boolean, 
/**
 * PostgreSQL SET options: SET key = value, SET key FROM CURRENT
 */
set_options?: Array<FunctionSetOption>, 
/**
 * True if STRICT was used instead of RETURNS NULL ON NULL INPUT
 */
strict: boolean, 
/**
 * BigQuery: OPTIONS (key=value, ...)
 */
options?: Array<Expression>, 
/**
 * BigQuery: True if this is a TABLE FUNCTION (CREATE TABLE FUNCTION)
 */
is_table_function: boolean, 
/**
 * Original order of function properties (SET, AS, LANGUAGE, etc.)
 */
property_order?: Array<FunctionPropertyKind>, 
/**
 * Databricks: ENVIRONMENT (dependencies = '...', environment_version = '...')
 */
environment?: Array<Expression>, };
