Git Source

Author: @mpetersoCode55, @ShaneDuncan602, @TJ-Everett, @VoR0220

SPDX-License-Identifier: BUSL-1.1

This contract is intended to be inherited by other contracts that require Rules Engine integration.

Abstract contract that provides functionality to connect and interact with the Rules Engine. This contract includes methods to set the Rules Engine address, invoke the Rules Engine, and manage calling contract admin roles.

State Variables

rulesEngineAddress

Address of the Rules Engine contract

address public rulesEngineAddress;

Functions

setRulesEngineAddress

Sets the address of the Rules Engine contract.

This function should be overridden in inheriting contracts to implement role-based access control.

function setRulesEngineAddress(address rulesEngine) public virtual;

Parameters

NameTypeDescription
rulesEngineaddressThe address of the Rules Engine contract.

_invokeRulesEngine

Invokes the Rules Engine to evaluate policies.

This function calls the checkPolicies function of the Rules Engine. The encoded parameter must be properly encoded using abi.encodeWithSelector. Example: bytes memory encoded = abi.encodeWithSelector(msg.sig, to, value, msg.sender);

function _invokeRulesEngine(bytes memory encoded) internal returns (uint256 retval);

Parameters

NameTypeDescription
encodedbytesThe encoded data to be passed to the Rules Engine.

Returns

NameTypeDescription
retvaluint256The return value from the Rules Engine, representing the result of the policy evaluation.

setCallingContractAdmin

Sets the admin role for the calling contract in the Rules Engine.

This function assigns the admin role for the calling contract to the specified address.

function setCallingContractAdmin(address callingContractAdmin) external;

Parameters

NameTypeDescription
callingContractAdminaddressThe address to be assigned as the admin for the calling contract.