import { z } from 'zod';
import { DatabricksAuthenticationType, SnowflakeAuthenticationType, WarehouseTypes, type CreateAthenaCredentials, type CreateBigqueryCredentials, type CreateClickhouseCredentials, type CreateDatabricksCredentials, type CreateDuckdbCredentials, type CreatePostgresCredentials, type CreateRedshiftCredentials, type CreateSnowflakeCredentials, type CreateTrinoCredentials, type ProjectType } from './projects';
export type UserWarehouseCredentialsProject = {
    projectUuid: string;
    name: string;
    type: ProjectType;
};
export type UserWarehouseCredentials = {
    uuid: string;
    userUuid: string;
    name: string;
    createdAt: Date;
    updatedAt: Date;
    credentials: Pick<CreateRedshiftCredentials | CreatePostgresCredentials | CreateSnowflakeCredentials | CreateTrinoCredentials | CreateClickhouseCredentials, 'type' | 'user'> | Pick<CreateBigqueryCredentials, 'type'> | Pick<CreateDatabricksCredentials, 'type'> | Pick<CreateAthenaCredentials, 'type'> | Pick<CreateDuckdbCredentials, 'type'>;
    project: UserWarehouseCredentialsProject | null;
};
export type UserWarehouseCredentialsWithSecrets = Pick<UserWarehouseCredentials, 'uuid'> & {
    credentials: Pick<CreateRedshiftCredentials, 'type' | 'user' | 'password'> | Pick<CreatePostgresCredentials, 'type' | 'user' | 'password'> | Pick<CreateSnowflakeCredentials, 'type' | 'user' | 'password' | 'authenticationType' | 'refreshToken'> | Pick<CreateTrinoCredentials, 'type' | 'user' | 'password'> | Pick<CreateClickhouseCredentials, 'type' | 'user' | 'password'> | Pick<CreateBigqueryCredentials, 'type' | 'keyfileContents' | 'authenticationType'> | (Pick<CreateDatabricksCredentials, 'type' | 'personalAccessToken' | 'authenticationType' | 'refreshToken'> & Partial<Pick<CreateDatabricksCredentials, 'database' | 'serverHostName' | 'httpPath' | 'oauthClientId'>>) | Pick<CreateAthenaCredentials, 'type' | 'accessKeyId' | 'secretAccessKey'> | Pick<CreateDuckdbCredentials, 'type' | 'token'>;
};
export type UpsertUserWarehouseCredentials = {
    name: string;
    credentials: UserWarehouseCredentialsWithSecrets['credentials'];
};
export declare const snowflakeSsoUserCredentialsSchema: z.ZodObject<{
    type: z.ZodLiteral<WarehouseTypes.SNOWFLAKE>;
    user: z.ZodOptional<z.ZodString>;
    password: z.ZodOptional<z.ZodString>;
    authenticationType: z.ZodLiteral<SnowflakeAuthenticationType.SSO>;
    refreshToken: z.ZodString;
}, "strict", z.ZodTypeAny, {
    type: WarehouseTypes.SNOWFLAKE;
    refreshToken: string;
    authenticationType: SnowflakeAuthenticationType.SSO;
    user?: string | undefined;
    password?: string | undefined;
}, {
    type: WarehouseTypes.SNOWFLAKE;
    refreshToken: string;
    authenticationType: SnowflakeAuthenticationType.SSO;
    user?: string | undefined;
    password?: string | undefined;
}>;
export declare const databricksOauthU2mUserCredentialsSchema: z.ZodObject<{
    type: z.ZodLiteral<WarehouseTypes.DATABRICKS>;
    authenticationType: z.ZodLiteral<DatabricksAuthenticationType.OAUTH_U2M>;
    refreshToken: z.ZodString;
    oauthClientId: z.ZodOptional<z.ZodString>;
    personalAccessToken: z.ZodOptional<z.ZodString>;
    database: z.ZodOptional<z.ZodString>;
    serverHostName: z.ZodOptional<z.ZodString>;
    httpPath: z.ZodOptional<z.ZodString>;
}, "strict", z.ZodTypeAny, {
    type: WarehouseTypes.DATABRICKS;
    refreshToken: string;
    authenticationType: DatabricksAuthenticationType.OAUTH_U2M;
    database?: string | undefined;
    personalAccessToken?: string | undefined;
    oauthClientId?: string | undefined;
    serverHostName?: string | undefined;
    httpPath?: string | undefined;
}, {
    type: WarehouseTypes.DATABRICKS;
    refreshToken: string;
    authenticationType: DatabricksAuthenticationType.OAUTH_U2M;
    database?: string | undefined;
    personalAccessToken?: string | undefined;
    oauthClientId?: string | undefined;
    serverHostName?: string | undefined;
    httpPath?: string | undefined;
}>;
//# sourceMappingURL=userWarehouseCredentials.d.ts.map