import { IpcRenderer } from '@electron-toolkit/preload';
import { UnwrapRef } from 'vue';

export declare interface SyncStateConfig<T> {
    channelPrefix: string;
    debug?: boolean;
    onChange?: (value: T) => void;
}

declare interface SyncWatchHandle {
    pause: () => void;
    resume: () => void;
}

export declare const useSyncState: <T>(config: SyncStateConfig<T>, ipcRenderer: IpcRenderer) => {
    wrapperState: WrapperState<T>;
    syncWatchHandle: SyncWatchHandle;
};

declare interface WrapperState<T> {
    loading: boolean;
    state: UnwrapRef<T>;
}

export { }
