/**
 * Mixpeek API
 * This is the Mixpeek API, providing access to various endpoints for data processing and retrieval.
 *
 * The version of the OpenAPI document: 0.82
 * Contact: info@mixpeek.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { Credentials4 } from './credentials4';
/**
 * Snowflake data warehouse configuration for table-based sync.  Enables syncing Snowflake table rows as JSON objects in Mixpeek buckets. Each row becomes one object, with incremental sync via watermark columns.  Authentication Options:     - Key Pair: Recommended for production (secure, password-less)     - Username/Password: Fallback option (simpler setup)  Requirements:     - Snowflake account with read access to target tables     - Warehouse with compute resources     - SELECT permissions on target tables/schemas     - USAGE permissions on database, schema, warehouse  Use Cases:     - Sync customer data tables for AI/ML pipelines     - Ingest product catalog for search/recommendations     - Process transaction logs for analytics     - Mirror metadata tables for vector search  Example:     Production setup with key pair auth:     ```python     config = {         \"provider_type\": \"snowflake\",         \"credentials\": {             \"type\": \"key_pair\",             \"username\": \"MIXPEEK_SYNC\",             \"private_key\": \"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n\",         },         \"account\": \"xy12345.us-east-1\",         \"warehouse\": \"MIXPEEK_SYNC_WH\",         \"database\": \"PRODUCTION\",         \"schema\": \"PUBLIC\",         \"role\": \"SYNC_ROLE\",         \"incremental_column\": \"updated_at\",         \"primary_key_columns\": [\"id\"],     }     ```
 * @export
 * @interface SnowflakeConfig
 */
export interface SnowflakeConfig {
    /**
     *
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'provider_type'?: SnowflakeConfigProviderTypeEnum;
    /**
     *
     * @type {Credentials4}
     * @memberof SnowflakeConfig
     */
    'credentials': Credentials4;
    /**
     * REQUIRED. Snowflake account identifier. Format: {account_locator}.{cloud_region} or {org_name}-{account_name} Find in: Snowflake UI > Account dropdown > Account URL
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'account': string;
    /**
     * REQUIRED. Warehouse name for compute resources. Must have USAGE privilege on this warehouse. Warehouse will be used for all sync queries. Consider: Use dedicated warehouse for sync operations to isolate costs.
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'warehouse': string;
    /**
     * NOT REQUIRED if fully qualified table name used in source_path. Database name for default context. Can be omitted if source_path uses {DATABASE}.{SCHEMA}.{TABLE} format. Must have USAGE privilege if specified.
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'database'?: string;
    /**
     * NOT REQUIRED if fully qualified table name used in source_path. Schema name for default context. Can be omitted if source_path uses {SCHEMA}.{TABLE} or {DATABASE}.{SCHEMA}.{TABLE}. Must have USAGE privilege if specified.
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'schema'?: string;
    /**
     * NOT REQUIRED. Snowflake role to use for operations. If omitted, uses user\'s default role. Role must have SELECT on target tables and USAGE on database/schema/warehouse. Best practice: Create dedicated read-only role for sync operations.
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'role'?: string;
    /**
     * NOT REQUIRED. Column name for incremental sync watermark. Should be a TIMESTAMP, TIMESTAMP_NTZ, or DATE column that tracks row modifications. When set, only rows with {incremental_column} > last_sync_watermark are synced. Common values: updated_at, modified_at, last_updated, ingestion_timestamp. If omitted, full table scan on every sync (not recommended for large tables).
     * @type {string}
     * @memberof SnowflakeConfig
     */
    'incremental_column'?: string;
    /**
     * NOT REQUIRED. Column names forming the primary key for stable object IDs. Used to generate deterministic file_id for deduplication. If omitted, uses hash of entire row content (less stable). Recommendation: Always specify for production to ensure idempotent syncs.
     * @type {Array<string>}
     * @memberof SnowflakeConfig
     */
    'primary_key_columns'?: Array<string>;
    /**
     * Query timeout in seconds. Prevents long-running queries from blocking sync operations. Default: 300 seconds (5 minutes). Increase for large tables or complex queries.
     * @type {number}
     * @memberof SnowflakeConfig
     */
    'query_timeout_seconds'?: number;
    /**
     * Number of rows to fetch per network round-trip. Higher values reduce network overhead but increase memory usage. Default: 1000 rows. Tune based on row size and available memory.
     * @type {number}
     * @memberof SnowflakeConfig
     */
    'fetch_size'?: number;
}
export declare const SnowflakeConfigProviderTypeEnum: {
    readonly Snowflake: "snowflake";
};
export type SnowflakeConfigProviderTypeEnum = typeof SnowflakeConfigProviderTypeEnum[keyof typeof SnowflakeConfigProviderTypeEnum];
//# sourceMappingURL=snowflake-config.d.ts.map