Static Readonly abi
abi: readonly [{ 
    inputs: readonly []; 
    name: "VolatilityOracle__ArrayLengthMismatch"; 
    type: "error"; 
}, { 
    inputs: readonly [{ 
        internalType: "int256"; 
        name: "value"; 
        type: "int256"; 
    }]; 
    name: "VolatilityOracle__OutOfBounds"; 
    type: "error"; 
}, { 
    inputs: readonly [{ 
        internalType: "address"; 
        name: "sender"; 
        type: "address"; 
    }]; 
    name: "VolatilityOracle__RelayerNotWhitelisted"; 
    type: "error"; 
}, { 
    inputs: readonly []; 
    name: "VolatilityOracle__SpotIsZero"; 
    type: "error"; 
}, { 
    inputs: readonly []; 
    name: "VolatilityOracle__StrikeIsZero"; 
    type: "error"; 
}, { 
    inputs: readonly []; 
    name: "VolatilityOracle__TimeToMaturityIsZero"; 
    type: "error"; 
}, { 
    inputs: readonly [{ 
        internalType: "address[]"; 
        name: "accounts"; 
        type: "address[]"; 
    }]; 
    name: "addWhitelistedRelayers"; 
    outputs: readonly []; 
    stateMutability: "nonpayable"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "int256[5]"; 
        name: "params"; 
        type: "int256[5]"; 
    }]; 
    name: "formatParams"; 
    outputs: readonly [{ 
        internalType: "bytes32"; 
        name: "result"; 
        type: "bytes32"; 
    }]; 
    stateMutability: "pure"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "address"; 
        name: "token"; 
        type: "address"; 
    }]; 
    name: "getParams"; 
    outputs: readonly [{ 
        components: readonly [{ 
            internalType: "uint256"; 
            name: "updatedAt"; 
            type: "uint256"; 
        }, { 
            internalType: "bytes32"; 
            name: "tau"; 
            type: "bytes32"; 
        }, { 
            internalType: "bytes32"; 
            name: "theta"; 
            type: "bytes32"; 
        }, { 
            internalType: "bytes32"; 
            name: "psi"; 
            type: "bytes32"; 
        }, { 
            internalType: "bytes32"; 
            name: "rho"; 
            type: "bytes32"; 
        }]; 
        internalType: "struct VolatilityOracleStorage.Update"; 
        name: ""; 
        type: "tuple"; 
    }]; 
    stateMutability: "view"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "address"; 
        name: "token"; 
        type: "address"; 
    }]; 
    name: "getParamsUnpacked"; 
    outputs: readonly [{ 
        components: readonly [{ 
            internalType: "int256[5]"; 
            name: "tau"; 
            type: "int256[5]"; 
        }, { 
            internalType: "int256[5]"; 
            name: "theta"; 
            type: "int256[5]"; 
        }, { 
            internalType: "int256[5]"; 
            name: "psi"; 
            type: "int256[5]"; 
        }, { 
            internalType: "int256[5]"; 
            name: "rho"; 
            type: "int256[5]"; 
        }]; 
        internalType: "struct VolatilityOracleStorage.Params"; 
        name: ""; 
        type: "tuple"; 
    }]; 
    stateMutability: "view"; 
    type: "function"; 
}, { 
    inputs: readonly []; 
    name: "getRiskFreeRate"; 
    outputs: readonly [{ 
        internalType: "UD60x18"; 
        name: ""; 
        type: "uint256"; 
    }]; 
    stateMutability: "view"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "address"; 
        name: "token"; 
        type: "address"; 
    }, { 
        internalType: "UD60x18"; 
        name: "spot"; 
        type: "uint256"; 
    }, { 
        internalType: "UD60x18"; 
        name: "strike"; 
        type: "uint256"; 
    }, { 
        internalType: "UD60x18"; 
        name: "timeToMaturity"; 
        type: "uint256"; 
    }]; 
    name: "getVolatility"; 
    outputs: readonly [{ 
        internalType: "UD60x18"; 
        name: ""; 
        type: "uint256"; 
    }]; 
    stateMutability: "view"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "address"; 
        name: "token"; 
        type: "address"; 
    }, { 
        internalType: "UD60x18"; 
        name: "spot"; 
        type: "uint256"; 
    }, { 
        internalType: "UD60x18[]"; 
        name: "strike"; 
        type: "uint256[]"; 
    }, { 
        internalType: "UD60x18[]"; 
        name: "timeToMaturity"; 
        type: "uint256[]"; 
    }]; 
    name: "getVolatility"; 
    outputs: readonly [{ 
        internalType: "UD60x18[]"; 
        name: ""; 
        type: "uint256[]"; 
    }]; 
    stateMutability: "view"; 
    type: "function"; 
}, { 
    inputs: readonly []; 
    name: "getWhitelistedRelayers"; 
    outputs: readonly [{ 
        internalType: "address[]"; 
        name: ""; 
        type: "address[]"; 
    }]; 
    stateMutability: "view"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "bytes32"; 
        name: "input"; 
        type: "bytes32"; 
    }]; 
    name: "parseParams"; 
    outputs: readonly [{ 
        internalType: "int256[5]"; 
        name: "params"; 
        type: "int256[5]"; 
    }]; 
    stateMutability: "pure"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "address[]"; 
        name: "accounts"; 
        type: "address[]"; 
    }]; 
    name: "removeWhitelistedRelayers"; 
    outputs: readonly []; 
    stateMutability: "nonpayable"; 
    type: "function"; 
}, { 
    inputs: readonly [{ 
        internalType: "address[]"; 
        name: "tokens"; 
        type: "address[]"; 
    }, { 
        internalType: "bytes32[]"; 
        name: "tau"; 
        type: "bytes32[]"; 
    }, { 
        internalType: "bytes32[]"; 
        name: "theta"; 
        type: "bytes32[]"; 
    }, { 
        internalType: "bytes32[]"; 
        name: "psi"; 
        type: "bytes32[]"; 
    }, { 
        internalType: "bytes32[]"; 
        name: "rho"; 
        type: "bytes32[]"; 
    }, { 
        internalType: "UD60x18"; 
        name: "riskFreeRate"; 
        type: "uint256"; 
    }]; 
    name: "updateParams"; 
    outputs: readonly []; 
    stateMutability: "nonpayable"; 
    type: "function"; 
}] = _abi