import { CollectionReference, DocumentReference, Firestore, serverTimestamp } from 'firebase/firestore';
export interface TaskVariantInfo {
    taskId: string;
    taskName?: string;
    taskDescription?: string;
    taskImage?: string;
    taskURL?: string;
    taskVersion?: string;
    gameConfig?: object;
    external?: boolean;
    variantName?: string;
    variantDescription?: string;
    variantParams: {
        [key: string]: unknown;
    };
    registered?: boolean;
    testData?: TaskVariantDataFlags;
    demoData?: TaskVariantDataFlags;
}
export interface TaskVariantInput extends TaskVariantInfo {
    db: Firestore;
}
export interface FirestoreTaskData {
    name?: string;
    description?: string | null;
    image?: string;
    taskURL?: string;
    gameConfig?: object;
    external?: boolean;
    lastUpdated: ReturnType<typeof serverTimestamp>;
    registered?: boolean;
    testData?: boolean;
    demoData?: boolean;
}
export interface TaskData extends FirestoreTaskData {
    id: string;
}
export interface FirestoreVariantData {
    name?: string;
    description?: string | null;
    taskURL?: string;
    external?: boolean;
    params: {
        [key: string]: unknown;
    };
    lastUpdated: ReturnType<typeof serverTimestamp>;
    registered?: boolean;
    testData?: boolean;
    demoData?: boolean;
}
interface TaskVariantDataFlags {
    task?: boolean;
    variant?: boolean;
}
/**
 * Class representing a ROAR task.
 */
export declare class RoarTaskVariant {
    db: Firestore;
    taskId: string;
    taskName?: string;
    taskDescription?: string;
    taskImage?: string;
    taskURL?: string;
    taskVersion?: string;
    gameConfig?: object;
    registered?: boolean;
    external?: boolean;
    taskRef: DocumentReference;
    variantId?: string;
    variantName?: string;
    variantDescription?: string;
    variantParams: {
        [key: string]: unknown;
    };
    variantRef: DocumentReference | undefined;
    variantsCollectionRef: CollectionReference;
    testData: TaskVariantDataFlags;
    demoData: TaskVariantDataFlags;
    /** Create a ROAR task
     * @param {TaskVariantInput} input
     * @param {Firestore} input.db - The assessment Firestore instance to which this task'data will be written
     * @param {string} input.taskId - The ID of the parent task. Should be a short initialism, e.g. "swr" or "sre"
     * @param {string} input.taskName - The name of the parent task
     * @param {string} input.taskDescription - The description of the task
     * @param {string} input.variantName - The name of the task variant
     * @param {string} input.variantDescription - The description of the variant
     * @param {object} input.variantParams - The parameters of the task variant
     * @param {TaskVariantDataFlags} input.testData = Boolean flags indicating test data
     * @param {TaskVariantDataFlags} input.demoData = Boolean flags indicating demo data
     */
    constructor({ db, taskId, taskName, taskDescription, taskImage, taskURL, gameConfig, taskVersion, registered, external, variantName, variantDescription, variantParams, testData, demoData, }: TaskVariantInput);
    /**
     * Push the trial and trial variant to Firestore
     * @method
     * @async
     */
    toFirestore(): Promise<void>;
    /**
     * Update variant params in Firestore
     * @method
     * @param {object} newParams - The parameters of the task variant
     * @async
     */
    updateTaskParams(newParams: {
        [key: string]: unknown;
    }): Promise<void>;
}
export {};
