import { JsPsychExpData } from '@lookit/data/dist/types';
import { JsPsych, DataCollection, JsPsychPlugin } from 'jspsych';
import { PluginInfo, UniversalPluginParameters } from 'jspsych/src/modules/plugins';
import { TimelineDescription, TrialDescription } from 'jspsych/src/timeline';

type UserFuncOnDataUpdate = (data: JsPsychExpData) => void;
type UserFuncOnFinish = (data: DataCollection) => void;
type JsPsychOptions = {
    default_iti?: number;
    on_data_update?: UserFuncOnDataUpdate;
    on_finish?: UserFuncOnFinish;
};
type ChsJsPsychPlugin = JsPsychPlugin<PluginInfo> & UniversalPluginParameters & {
    chsData?: () => object;
};
interface ChsTrialDescription extends Omit<TrialDescription, "type"> {
    type: ChsJsPsychPlugin;
}
interface ChsTimelineDescription extends Omit<TimelineDescription, "timeline"> {
    timeline: ChsTimelineArray;
}
type ChsTimelineArray = Array<ChsTimelineDescription | ChsTrialDescription | ChsTimelineArray>;
interface ChsJsPsych extends Omit<JsPsych, "run"> {
    run(timeline: ChsTimelineDescription | ChsTimelineArray): Promise<void>;
}

/**
 * Function that returns a function to replace jsPsych's initJsPsych.
 *
 * @param responseUuid - Response UUID.
 * @returns InitJsPsych function.
 */
declare const lookitInitJsPsych: (responseUuid: string) => (opts?: JsPsychOptions) => ChsJsPsych;

export { lookitInitJsPsych as default };
//# sourceMappingURL=index.d.ts.map
