// ================= Pyodide =================

interface PyodideAPIMap {
    canSimplifyCpts: { input: {}; output: boolean };
    checkJunctionRule: {
        input: { selectedElements: string[] };
        output: [number, string[]];
    };
    checkTransformation: {
        input: { selectedElements: string[] };
        output: { equation: string; errorCode: number };
    };
    checkVoltageLoopRule: {
        input: { selectedElements: string[] };
        output: [number, string];
    };
    createKirchhoffStep0: { input: {}; output: StepObject };
    createStep0: { input: {}; output: StepObject };
    currEquations: { input: {}; output: string[] };
    equationIsValid: {
        input: {
            R1: number;
            R2: number;
            R3: number;
            R4: number;
            Um: number;
            Uq: number;
        };
        output: boolean;
    };
    equations: { input: {}; output: string[] };
    equationsURI: { input: {}; output: string[] };
    exists: { input: { path: string }; output: boolean };
    forceDrawing: {
        input: { circuitString: string; optionsString: string; paramMap: any };
        output: {
            errMsgs: string;
            isValidSyntax: boolean;
            svgData: string;
            warnMsgs: string;
        };
    };
    foundAllEquations: { input: {}; output: boolean };
    foundAllVoltEquations: { input: {}; output: boolean };
    generateSvgFile: { input: { file: string }; output: boolean };
    getCircuitFiles: { input: {}; output: string[] };
    getStep: { input: { step: string }; output: StepObject };
    initKirchhoffSolver: {
        input: { circuitFile: string; circuitPath: string; paramMap: any };
        output: boolean;
    };
    initMagneticSolver: {
        input: {
            magneticCircuitFile: string;
            magneticCircuitPath: string;
            paramMap: any;
        };
        output: boolean;
    };
    initStepSolver: {
        input: { circuitFile: string; circuitPath: string; paramMap: any };
        output: boolean;
    };
    initSVGGenerator: { input: { path: string }; output: boolean };
    isLocked: { input: {}; output: boolean };
    isValidCircuitFile: {
        input: { circuitFile: string; circuitPath: string };
        output: { errors: string; isValid: boolean; warnings: string };
    };
    isValidCircuitString: {
        input: { fileString: string };
        output: { errors: string; isValid: boolean; warnings: string };
    };
    lcapyNetlist: { input: {}; output: string[] };
    loadSolve: { input: {}; output: boolean };
    lock: { input: { onStr: string }; output: boolean };
    mkdir: { input: { path: string }; output: boolean };
    pyimport: { input: { pythonModuleName: string }; output: boolean };
    readdir: { input: { path: string }; output: string[] };
    readFile: { input: { encoding: string; path: string }; output: string };
    recursiveRmDir: { input: { path: string }; output: boolean };
    rename: { input: { from: string; to: string }; output: boolean };
    resetKirchhoffSolver: { input: {}; output: boolean };
    resetMagneticSolver: { input: {}; output: boolean };
    resetStepSolver: { input: {}; output: boolean };
    runPython: { input: { code: string }; output: boolean };
    setOptions: { input: { options: any }; output: boolean };
    setToDefault: { input: {}; output: boolean };
    simplifyNCpts: {
        input: { relation: string; selectedElements: string[] };
        output: any;
    };
    transformedAllElements: { input: {}; output: boolean };
    unlink: { input: { path: string }; output: boolean };
    unlock: { input: { setTo: string }; output: boolean };
    unpackArchive: {
        input: { buffer: ArrayBuffer; extension: string; options: any };
        output: boolean;
    };
    voltEquationsURI: { input: {}; output: string[] };
    writeFile: {
        input: { content: string; encoding: string; path: string };
        output: boolean;
    };
    zipFiles: { input: { path: string }; output: boolean };
}

Properties

canSimplifyCpts: { input: {}; output: boolean }

// ================= Kirchhoff =================

checkJunctionRule: {
    input: { selectedElements: string[] };
    output: [number, string[]];
}
checkTransformation: {
    input: { selectedElements: string[] };
    output: { equation: string; errorCode: number };
}
checkVoltageLoopRule: {
    input: { selectedElements: string[] };
    output: [number, string];
}
createKirchhoffStep0: { input: {}; output: StepObject }
createStep0: { input: {}; output: StepObject }
currEquations: { input: {}; output: string[] }
equationIsValid: {
    input: {
        R1: number;
        R2: number;
        R3: number;
        R4: number;
        Um: number;
        Uq: number;
    };
    output: boolean;
}

// ================= Magnetic API =================

equations: { input: {}; output: string[] }
equationsURI: { input: {}; output: string[] }
exists: { input: { path: string }; output: boolean }
forceDrawing: {
    input: { circuitString: string; optionsString: string; paramMap: any };
    output: {
        errMsgs: string;
        isValidSyntax: boolean;
        svgData: string;
        warnMsgs: string;
    };
}

// ================= SVG Generator =================

foundAllEquations: { input: {}; output: boolean }
foundAllVoltEquations: { input: {}; output: boolean }
generateSvgFile: { input: { file: string }; output: boolean }
getCircuitFiles: { input: {}; output: string[] }
getStep: { input: { step: string }; output: StepObject }
initKirchhoffSolver: {
    input: { circuitFile: string; circuitPath: string; paramMap: any };
    output: boolean;
}
initMagneticSolver: {
    input: {
        magneticCircuitFile: string;
        magneticCircuitPath: string;
        paramMap: any;
    };
    output: boolean;
}
initStepSolver: {
    input: { circuitFile: string; circuitPath: string; paramMap: any };
    output: boolean;
}
initSVGGenerator: { input: { path: string }; output: boolean }
isLocked: { input: {}; output: boolean }

// ================= Step Solver =================

isValidCircuitFile: {
    input: { circuitFile: string; circuitPath: string };
    output: { errors: string; isValid: boolean; warnings: string };
}
isValidCircuitString: {
    input: { fileString: string };
    output: { errors: string; isValid: boolean; warnings: string };
}
lcapyNetlist: { input: {}; output: string[] }
loadSolve: { input: {}; output: boolean }
lock: { input: { onStr: string }; output: boolean }
mkdir: { input: { path: string }; output: boolean }

// ================= Solver Core =================

pyimport: { input: { pythonModuleName: string }; output: boolean }
readdir: { input: { path: string }; output: string[] }
readFile: { input: { encoding: string; path: string }; output: string }
recursiveRmDir: { input: { path: string }; output: boolean }
rename: { input: { from: string; to: string }; output: boolean }
resetKirchhoffSolver: { input: {}; output: boolean }
resetMagneticSolver: { input: {}; output: boolean }
resetStepSolver: { input: {}; output: boolean }
runPython: { input: { code: string }; output: boolean }
setOptions: { input: { options: any }; output: boolean }
setToDefault: { input: {}; output: boolean }
simplifyNCpts: {
    input: { relation: string; selectedElements: string[] };
    output: any;
}
transformedAllElements: { input: {}; output: boolean }
unlink: { input: { path: string }; output: boolean }
unlock: { input: { setTo: string }; output: boolean }
unpackArchive: {
    input: { buffer: ArrayBuffer; extension: string; options: any };
    output: boolean;
}
voltEquationsURI: { input: {}; output: string[] }

// ================= Wheatstone =================

writeFile: {
    input: { content: string; encoding: string; path: string };
    output: boolean;
}
zipFiles: { input: { path: string }; output: boolean }

// ================= Drawing Config =================