###### tags: `strunfun` # contractmanagermodule ## Description The contractmanagermodule is the module which should have all relevant `data°` for relevant smart contracts available in such a way it could be simply retrieved by a key `name"` and easily be used by other components. ## Expectations to the Environment - `allModules.abicachemodule` - dependency [abicachemodule](https://hackmd.io/3rTPT3XCSkSvUyAC2mMaHQ?view) - `genericABIs = require("./genericABIs")` ## Structure - `abiCache°` - `genericABIs°` - `contractLibrary°` - `.initialize§` - `.addContract§` `name"`, `data°` - `.getContract§` `name"` ## Specification - `abiCache°` = the reference the the external [abicachemodule](https://hackmd.io/3rTPT3XCSkSvUyAC2mMaHQ?view) - `genericABIs°` = a collection more general ABIs - `contractLibrary°` = a store object where all the contract data are accessible by their key `name"` - `.initialize§` = wire up the `abiCache` reference - `.addContract§` `name"`, `data°` = add the `data` of a contract to the `contractLibrary` if we have `data.abi"` then take `data.abi° = genericABIs[data.abi"]` otherwise if we donot have any `abi` in the `data` then get it from `abiCache` `contractLibrary[name] = data` return nothing - `.getContract§` `name"` = return `contractLibrary[name"]`