// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
// Interface IMaths
// Defines a set of mathematical operations that can be implemented by contracts.
// This interface is designed to provide a foundation for arithmetic and more complex
// mathematical functions in Solidity contracts.
interface IMaths {
// Calculates the square of a given number.
// @param value The number to square.
// @return The square of the input value.
function GetSquare(uint256 value) external returns (uint256);
// Adds two numbers and returns the result.
// @param a The first number.
// @param b The second number.
// @return The sum of `a` and `b`.
function Add(uint256 a, uint256 b) external returns (uint256);
// Subtracts one number from another and returns the result.
// @param a The number to be subtracted from.
// @param b The number to subtract.
// @return The difference of `a` and `b`.
function Subtract(uint256 a, uint256 b) external returns (uint256);
// Multiplies two numbers and returns the result.
// @param a The first number.
// @param b The second number.
// @return The product of `a` and `b`.
function Multiply(uint256 a, uint256 b) external returns (uint256);
// Divides one number by another and returns the result.
// Note: Solidity division truncates towards zero.
// @param a The numerator.
// @param b The denominator (must not be 0).
// @return The quotient of `a` divided by `b`.
function Divide(uint256 a, uint256 b) external returns (uint256);
// Calculates the power of a number raised to another (a^b).
// @param base The base number.
// @param exponent The exponent to raise the base to.
// @return The result of base^exponent.
function Power(uint256 base, uint256 exponent) external returns (uint256);
}
// NO contract instances to interact with