import { FlowsPersistence } from './FlowsPersistence';
import { RequestContextHolder } from '../managers/RequestContextHolder';
import { DonobuDeploymentEnvironment } from '../models/DonobuDeploymentEnvironment';
import { FlowsPersistenceFactory } from './FlowsPersistenceFactory';
/**
 * A factory class for creating new FlowsPersistence instances. The type of persistence
 * objects created varies depending on this factory's constructor arguments and the current API
 * request context.
 */
export declare class FlowsPersistenceFactoryImpl implements FlowsPersistenceFactory {
    private readonly deploymentEnvironment;
    private readonly awsS3Bucket;
    private readonly awsS3Region;
    private readonly googleCloudStorageBucket;
    private readonly supabaseJwtSecretKey;
    private readonly requestContextHolder;
    /**
     * Creates an instance.
     *
     * @param deploymentEnvironment The deployment environment for this application. If this is set to
     *     a value of DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT, then the
     *     supabaseJwtSecretKey must also be specified.
     * @param awsS3Bucket The name of the AWS S3 bucket to use for persistence.
     * @param awsS3Region The region of the AWS S3 bucket.
     * @param googleCloudStorageBucket The name of the Google Cloud storage bucket to use for
     *     persistence. Note that no special authentication is performed, so the current environment
     *     must be able to reach said bucket. If deployed in Google Cloud, this may be done
     *     automatically. If running locally, this may mean you have to log in to Google Cloud using
     *     the Google Cloud CLI before running this application.
     * @param supabaseJwtSecretKey The Supabase JWT secret key used to generate new JWTs for the
     *     purposes of authentication. This key is extremely sensitive! This parameter MUST be
     *     specified if deploymentEnvironment is set to DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT.
     * @param requestContextHolder The object used to get the current API request context.
     */
    constructor(deploymentEnvironment: DonobuDeploymentEnvironment, awsS3Bucket: string | null, awsS3Region: string | null, googleCloudStorageBucket: string | null, supabaseJwtSecretKey: string | null, requestContextHolder: RequestContextHolder);
    /**
     * Creates an instance, fetching the values for googleCloudStorageBucket and
     * supabaseJwtSecretKey from the environment variables.
     */
    static fromEnvironment(deploymentEnvironment: DonobuDeploymentEnvironment, requestContextHolder: RequestContextHolder): Promise<FlowsPersistenceFactoryImpl>;
    /**
     * Creates a new FlowsPersistence instance.
     *
     * @throws NoApiAccessTokenPresentException If the deploymentEnvironment has a value of
     *     DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT, and the current RequestContext
     *     accessToken is null or invalid.
     */
    createPersistenceLayer(): Promise<FlowsPersistence>;
    /** Returns a list of all valid persistence layers. Note that the returned list may be empty! */
    createPersistenceLayers(): Promise<FlowsPersistence[]>;
    private static migrateToSqlite;
    /**
     * Update a given tool call to conform with the latest expected schema.
     */
    private static revampToolCall;
}
//# sourceMappingURL=FlowsPersistenceFactoryImpl.d.ts.map