export type TurboSyncConfigArray = TurboSyncConfigObject[];

export interface TurboSyncConfigObject {
    title?: string;
    files?: (string | TurboSyncFileObject)[];
    folders?: (string | TurboSyncFileObject)[];
    options?: TurboSyncOptions;
}

export interface TurboSyncFileObject {
    path: string;
    host?: string;
    user?: string;
    ssh_key?: string;
    interval?: number;
}

export interface TurboSyncOptions {
    delete?: boolean;
    exclude?: string[];
    interval?: number;
}

export interface SyncFilesFnParams {
    files: (string | TurboSyncFileObject)[];
    options: TurboSyncOptions | undefined;
}

export interface SyncFilesSyncFnParams {
    files: (string | TurboSyncFileObject)[];
    options: TurboSyncOptions | undefined;
    filePath: string;
}

export interface SyncFoldersFnParams {
    folders: (string | TurboSyncFileObject)[];
    options: TurboSyncOptions | undefined;
}

export interface SyncFoldersSyncFnParams {
    dirs: (string | TurboSyncFileObject)[];
    options: TurboSyncOptions | undefined;
    dirPath: string;
    init?: boolean;
}

export interface HandleEnvVarsFnParams {
    json: string;
}