import type { ISequence } from '@theatre/core';
import type { Readable, Subscriber, Writable } from 'svelte/store';
import { onChange } from '../theatre.js';
import type { SequenceOptions } from './types.js';
/**
 * ### `SequenceController`
 *
 * This class is a wrapper around the native `ISequence` object. It provides
 * reactive stores for the sequence's position, playing state, and length.
 */
export declare class SequenceController {
    key: string;
    position: SequencePosition;
    playing: SequencePlaying;
    length: SequenceLength;
    private options;
    private sequence;
    constructor(sequence: ISequence, options?: SequenceOptions);
    config(options: SequenceOptions): void;
    play(opts?: Parameters<ISequence['play']>[0]): ReturnType<ISequence['play']>;
    pause(): ReturnType<ISequence['pause']>;
    reset(): void;
}
export declare class SequencePosition implements Writable<number> {
    sequence: ISequence;
    play: () => void;
    subscribers: Set<Subscriber<number>>;
    unsubscribe: ReturnType<typeof onChange>;
    constructor(sequence: ISequence, play: () => void);
    subscribe(subscription: Subscriber<number>): () => void;
    update(callback: (prev: number) => number): void;
    set(value: number): void;
}
export declare class SequencePlaying implements Writable<boolean> {
    sequence: ISequence;
    play: () => void;
    subscribers: Set<Subscriber<boolean>>;
    constructor(sequence: ISequence, play: () => void);
    subscribe(subscription: Subscriber<boolean>): () => void;
    update(callback: (prev: boolean) => boolean): void;
    set(value: boolean): void;
}
export declare class SequenceLength implements Readable<number> {
    sequence: ISequence;
    subscribers: Set<Subscriber<number>>;
    unsubscribe: ReturnType<typeof onChange>;
    constructor(sequence: ISequence);
    subscribe(subscription: Subscriber<number>): () => void;
}
