import { ServiceBubble } from '../../../types/service-bubble-class.js';
import type { BubbleContext } from '../../../types/bubble.js';
import { CredentialType } from '@bubblelab/shared-schemas';
import { type SnowflakeParamsInput, type SnowflakeResult } from './snowflake.schema.js';
/**
 * Snowflake Service Bubble
 *
 * Snowflake data warehouse integration using the SQL REST API with key-pair authentication.
 *
 * Features:
 * - Execute arbitrary SQL statements
 * - List databases, schemas, and tables
 * - Describe table column definitions
 * - Key-pair (RSA) JWT authentication — no token expiry
 *
 * Credential fields (multi-field):
 * - account (required): Account identifier (ORGNAME-ACCOUNTNAME from URL)
 * - username (required): Snowflake login username
 * - privateKey (required): RSA private key in PEM format
 * - privateKeyPassword (optional): Passphrase if key is encrypted
 * - warehouse (optional): Default warehouse
 * - database (optional): Default database
 * - schema (optional): Default schema
 * - role (optional): Default role
 */
export declare class SnowflakeBubble<T extends SnowflakeParamsInput = SnowflakeParamsInput> extends ServiceBubble<T, Extract<SnowflakeResult, {
    operation: T['operation'];
}>> {
    static readonly type: "service";
    static readonly service = "snowflake";
    static readonly authType: "apikey";
    static readonly bubbleName = "snowflake";
    static readonly schema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"execute_sql">;
        statement: import("zod").ZodString;
        database: import("zod").ZodOptional<import("zod").ZodString>;
        schema: import("zod").ZodOptional<import("zod").ZodString>;
        warehouse: import("zod").ZodOptional<import("zod").ZodString>;
        role: import("zod").ZodOptional<import("zod").ZodString>;
        timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        timeout: number;
        operation: "execute_sql";
        statement: string;
        schema?: string | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        role?: string | undefined;
        database?: string | undefined;
        warehouse?: string | undefined;
    }, {
        operation: "execute_sql";
        statement: string;
        schema?: string | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        timeout?: number | undefined;
        role?: string | undefined;
        database?: string | undefined;
        warehouse?: string | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_databases">;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "list_databases";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        operation: "list_databases";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_schemas">;
        database: import("zod").ZodString;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "list_schemas";
        database: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        operation: "list_schemas";
        database: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_tables">;
        database: import("zod").ZodString;
        schema: import("zod").ZodString;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        schema: string;
        operation: "list_tables";
        database: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        schema: string;
        operation: "list_tables";
        database: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"describe_table">;
        database: import("zod").ZodString;
        schema: import("zod").ZodString;
        table: import("zod").ZodString;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        schema: string;
        operation: "describe_table";
        table: string;
        database: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        schema: string;
        operation: "describe_table";
        table: string;
        database: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>]>;
    static readonly resultSchema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"execute_sql">;
        success: import("zod").ZodBoolean;
        columns: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            name: import("zod").ZodString;
            type: import("zod").ZodString;
            nullable: import("zod").ZodOptional<import("zod").ZodBoolean>;
        }, "strip", import("zod").ZodTypeAny, {
            type: string;
            name: string;
            nullable?: boolean | undefined;
        }, {
            type: string;
            name: string;
            nullable?: boolean | undefined;
        }>, "many">>;
        rows: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNull]>, "many">, "many">>;
        num_rows: import("zod").ZodOptional<import("zod").ZodNumber>;
        statement_handle: import("zod").ZodOptional<import("zod").ZodString>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "execute_sql";
        rows?: (string | null)[][] | undefined;
        columns?: {
            type: string;
            name: string;
            nullable?: boolean | undefined;
        }[] | undefined;
        num_rows?: number | undefined;
        statement_handle?: string | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "execute_sql";
        rows?: (string | null)[][] | undefined;
        columns?: {
            type: string;
            name: string;
            nullable?: boolean | undefined;
        }[] | undefined;
        num_rows?: number | undefined;
        statement_handle?: string | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_databases">;
        success: import("zod").ZodBoolean;
        databases: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            name: import("zod").ZodString;
            owner: import("zod").ZodOptional<import("zod").ZodString>;
            created_on: import("zod").ZodOptional<import("zod").ZodString>;
        }, "strip", import("zod").ZodTypeAny, {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
        }, {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
        }>, "many">>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "list_databases";
        databases?: {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
        }[] | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "list_databases";
        databases?: {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
        }[] | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_schemas">;
        success: import("zod").ZodBoolean;
        schemas: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            name: import("zod").ZodString;
            database_name: import("zod").ZodOptional<import("zod").ZodString>;
            owner: import("zod").ZodOptional<import("zod").ZodString>;
            created_on: import("zod").ZodOptional<import("zod").ZodString>;
        }, "strip", import("zod").ZodTypeAny, {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
        }, {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
        }>, "many">>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "list_schemas";
        schemas?: {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
        }[] | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "list_schemas";
        schemas?: {
            name: string;
            owner?: string | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
        }[] | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_tables">;
        success: import("zod").ZodBoolean;
        tables: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            name: import("zod").ZodString;
            database_name: import("zod").ZodOptional<import("zod").ZodString>;
            schema_name: import("zod").ZodOptional<import("zod").ZodString>;
            kind: import("zod").ZodOptional<import("zod").ZodString>;
            rows: import("zod").ZodOptional<import("zod").ZodNumber>;
            created_on: import("zod").ZodOptional<import("zod").ZodString>;
        }, "strip", import("zod").ZodTypeAny, {
            name: string;
            rows?: number | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
            schema_name?: string | undefined;
            kind?: string | undefined;
        }, {
            name: string;
            rows?: number | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
            schema_name?: string | undefined;
            kind?: string | undefined;
        }>, "many">>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "list_tables";
        tables?: {
            name: string;
            rows?: number | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
            schema_name?: string | undefined;
            kind?: string | undefined;
        }[] | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "list_tables";
        tables?: {
            name: string;
            rows?: number | undefined;
            created_on?: string | undefined;
            database_name?: string | undefined;
            schema_name?: string | undefined;
            kind?: string | undefined;
        }[] | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"describe_table">;
        success: import("zod").ZodBoolean;
        columns: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            name: import("zod").ZodString;
            type: import("zod").ZodString;
            nullable: import("zod").ZodOptional<import("zod").ZodBoolean>;
            default: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
            primary_key: import("zod").ZodOptional<import("zod").ZodBoolean>;
            comment: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
        }, "strip", import("zod").ZodTypeAny, {
            type: string;
            name: string;
            default?: string | null | undefined;
            nullable?: boolean | undefined;
            comment?: string | null | undefined;
            primary_key?: boolean | undefined;
        }, {
            type: string;
            name: string;
            default?: string | null | undefined;
            nullable?: boolean | undefined;
            comment?: string | null | undefined;
            primary_key?: boolean | undefined;
        }>, "many">>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "describe_table";
        columns?: {
            type: string;
            name: string;
            default?: string | null | undefined;
            nullable?: boolean | undefined;
            comment?: string | null | undefined;
            primary_key?: boolean | undefined;
        }[] | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "describe_table";
        columns?: {
            type: string;
            name: string;
            default?: string | null | undefined;
            nullable?: boolean | undefined;
            comment?: string | null | undefined;
            primary_key?: boolean | undefined;
        }[] | undefined;
    }>]>;
    static readonly shortDescription = "Snowflake data warehouse integration for SQL queries and metadata";
    static readonly longDescription = "\n    Snowflake data warehouse integration using the SQL REST API with key-pair authentication.\n\n    Features:\n    - Execute arbitrary SQL statements against Snowflake\n    - List databases, schemas, and tables\n    - Describe table column definitions\n    - Key-pair (RSA) JWT authentication \u2014 no token expiry, no refresh needed\n\n    Use cases:\n    - Run SQL queries to fetch data from Snowflake warehouses\n    - Explore database metadata (databases, schemas, tables, columns)\n    - Automate data pipeline operations\n    - Build reports from Snowflake data\n  ";
    static readonly alias = "snowflake";
    constructor(params?: T, context?: BubbleContext, instanceId?: string);
    testCredential(): Promise<boolean>;
    protected chooseCredential(): string | undefined;
    /**
     * Execute a SQL statement via the Snowflake SQL API.
     */
    private executeStatement;
    protected performAction(context?: BubbleContext): Promise<Extract<SnowflakeResult, {
        operation: T['operation'];
    }>>;
    private executeSql;
    private listDatabases;
    private listSchemas;
    private listTables;
    private describeTable;
}
//# sourceMappingURL=snowflake.d.ts.map