export interface ICompileOptions {
    language:      string;
    debug:         number;
    profile:       Profile;
    output:        string;
    plugins:       string[];
    env:           string;
    cwd:           string;
    source:        string;
    variables:     PathVariablesClass;
    srcInfo:       Info;
    targetInfo:    Info;
    pathVariables: PathVariablesClass;
}

export interface PathVariablesClass {
    OSR_ROOT:             string;
    PRODUCT_ROOT:         string;
    OA_ROOT:              string;
    KB_ROOT:              string;
    OSR_CACHE:            string;
    OSR_LIBRARY_MACHINES: string;
    OSR_USER_ASSETS:      string;
    OSR_PRIVATE:          string;
    OSR_TEMPLATES:        string;
    OSR_CONTENT:          string;
    root:                 string;
    cwd:                  string;
    product:              string;
    debug:                number;
    env:                  string;
    SRC_PATH:             string;
    SRC_DIR:              string;
    SRC_NAME:             string;
    SRC_FILE_NAME:        string;
    SRC_FILE_EXT:         string;
    SRC_IS_FILE:          boolean;
    SRC_IS_FOLDER:        boolean;
    SRC_IS_EXPRESSION:    boolean;
    SRC_IS_GLOB:          boolean;
    SRC_FILES:            string[];
    abs_url:              string;
    CACHE:                string;
    CACHE_URL:            string;
    GIT_REPO:             string;
    DST_PATH:             string;
    DST_DIR:              string;
    DST_NAME:             string;
    DST_FILE_NAME:        string;
    DST_FILE_EXT:         string;
    DST_IS_FILE:          boolean;
    DST_IS_FOLDER:        boolean;
    DST_IS_EXPRESSION:    boolean;
    DST_IS_GLOB:          boolean;
    DST_FILES:            string[];
}

export interface Profile {
    includes:  string[];
    variables: ProfileVariables;
    env:       Env;
}

export interface Env {
    bazar:           Bazar;
    "bazar-release": Bazar;
}

export interface Bazar {
    includes:  string[];
    variables: BazarVariables;
}

export interface BazarVariables {
    abs_url: string;
}

export interface ProfileVariables {
    PRODUCT_ROOT: string;
    abs_url:      string;
    CACHE:        string;
    CACHE_URL:    string;
    GIT_REPO:     string;
}

export interface Info {
    PATH:          string;
    DIR:           string;
    NAME:          string;
    FILE_NAME:     string;
    FILE_EXT:      string;
    IS_FILE:       boolean;
    IS_FOLDER:     boolean;
    IS_EXPRESSION: boolean;
    IS_GLOB:       boolean;
    FILES:         string[];
}
