diff --git a/contracts/gas-snapshots/llo-feeds.gas-snapshot b/contracts/gas-snapshots/llo-feeds.gas-snapshot index 83a621e59a..3a5d2d4b30 100644 --- a/contracts/gas-snapshots/llo-feeds.gas-snapshot +++ b/contracts/gas-snapshots/llo-feeds.gas-snapshot @@ -585,6 +585,7 @@ FeeManagerProcessFeeTestV05:test_surchargeIsNotAppliedForLinkFee() (gas: 52244) FeeManagerProcessFeeTestV05:test_surchargeIsNotAppliedWith100PercentDiscount() (gas: 78309) FeeManagerProcessFeeTestV05:test_testRevertIfReportHasExpired() (gas: 14941) MultiVerifierBillingTests:test_multipleFeeManagersAndVerifiers() (gas: 4598140) +NoOpFeeManagerIntegrationTestV051:test_verificationWorkflowCompatibility() (gas: 377733) NoOpFeeManagerTest:test_adminFunctionsDoNotRevert() (gas: 12766) NoOpFeeManagerTest:test_discountGettersMatchFeeManagerSignature() (gas: 24169) NoOpFeeManagerTest:test_discountGettersReturn100Percent() (gas: 12229) @@ -594,15 +595,21 @@ NoOpFeeManagerTest:test_processFeeBulkRefundsETH() (gas: 51685) NoOpFeeManagerTest:test_processFeeRefundsETH() (gas: 50731) NoOpFeeManagerTest:test_supportsInterface() (gas: 11003) NoOpFeeManagerTest:test_typeAndVersion() (gas: 9688) -NoOpFeeManagerTestV051:test_adminFunctionsDoNotRevert() (gas: 12766) -NoOpFeeManagerTestV051:test_discountGettersMatchFeeManagerSignature() (gas: 24169) -NoOpFeeManagerTestV051:test_discountGettersReturn100Percent() (gas: 12229) -NoOpFeeManagerTestV051:test_getFeeAndReward() (gas: 13233) -NoOpFeeManagerTestV051:test_linkAvailableForPayment() (gas: 8366) -NoOpFeeManagerTestV051:test_processFeeBulkRefundsETH() (gas: 51685) -NoOpFeeManagerTestV051:test_processFeeRefundsETH() (gas: 50731) -NoOpFeeManagerTestV051:test_supportsInterface() (gas: 11003) -NoOpFeeManagerTestV051:test_typeAndVersion() (gas: 9688) +NoOpFeeManagerTestV051:test_adminFunctionsDoNotRevert() (gas: 12789) +NoOpFeeManagerTestV051:test_constructorParameters() (gas: 17359) +NoOpFeeManagerTestV051:test_discountGettersMatchFeeManagerSignature() (gas: 24213) +NoOpFeeManagerTestV051:test_discountGettersReturn100Percent() (gas: 12206) +NoOpFeeManagerTestV051:test_getFeeAndReward() (gas: 13293) +NoOpFeeManagerTestV051:test_linkAvailableForPayment() (gas: 8410) +NoOpFeeManagerTestV051:test_nativeSurchargeReturnsZero() (gas: 8370) +NoOpFeeManagerTestV051:test_processFeeBulkRefundsETH() (gas: 51751) +NoOpFeeManagerTestV051:test_processFeeRefundsETH() (gas: 50776) +NoOpFeeManagerTestV051:test_supportsInterface_BackwardCompatibility() (gas: 9912) +NoOpFeeManagerTestV051:test_supportsInterface_ERC165() (gas: 8551) +NoOpFeeManagerTestV051:test_supportsInterface_IFeeManager() (gas: 8513) +NoOpFeeManagerTestV051:test_supportsInterface_IVerifierFeeManager() (gas: 8529) +NoOpFeeManagerTestV051:test_supportsInterface_UnsupportedInterface() (gas: 8607) +NoOpFeeManagerTestV051:test_typeAndVersion() (gas: 9710) RewardManagerClaimTest:test_claimAllRecipients() (gas: 277087) RewardManagerClaimTest:test_claimMultipleRecipients() (gas: 154297) RewardManagerClaimTest:test_claimRewardsWithDuplicatePoolIdsDoesNotPayoutTwice() (gas: 330011) diff --git a/contracts/src/v0.8/llo-feeds/v0.5.1/NoOpFeeManager.sol b/contracts/src/v0.8/llo-feeds/v0.5.1/NoOpFeeManager.sol index 2419898653..15e21ee650 100644 --- a/contracts/src/v0.8/llo-feeds/v0.5.1/NoOpFeeManager.sol +++ b/contracts/src/v0.8/llo-feeds/v0.5.1/NoOpFeeManager.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.19; import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol"; import {Common} from "../libraries/Common.sol"; import {IFeeManager} from "./interfaces/IFeeManager.sol"; +import {IRewardManager} from "./interfaces/IRewardManager.sol"; import {IVerifierFeeManager} from "./interfaces/IVerifierFeeManager.sol"; import {IERC165} from "@openzeppelin/contracts@4.8.3/interfaces/IERC165.sol"; @@ -12,6 +13,8 @@ import {IERC165} from "@openzeppelin/contracts@4.8.3/interfaces/IERC165.sol"; * @notice A no-op implementation of IFeeManager that does not collect fees. * @dev All functions return successfully without performing any fee collection or state changes. * Any ETH sent to payable functions is refunded to the subscriber. + * Constructor parameters are stored for interface compatibility with integrators + * who call i_linkAddress, i_nativeAddress, or i_rewardManager before getFeeAndReward(). */ contract NoOpFeeManager is IFeeManager, ITypeAndVersion { /// @notice Error thrown when ETH refund fails @@ -20,16 +23,41 @@ contract NoOpFeeManager is IFeeManager, ITypeAndVersion { /// @notice The scalar representing 100% discount (1e18 = 100%) uint64 private constant PERCENTAGE_SCALAR = 1e18; + /// @notice The LINK token address (required for interface compatibility) + address public immutable i_linkAddress; + + /// @notice The native token address (required for interface compatibility) + address public immutable i_nativeAddress; + + /// @notice The reward manager address (required for interface compatibility) + IRewardManager public immutable i_rewardManager; + + /** + * @notice Construct the NoOpFeeManager contract + * @param _linkAddress The address of the LINK token (for interface compatibility) + * @param _nativeAddress The address of the wrapped native token (for interface compatibility) + * @param _rewardManagerAddress The address of the reward manager (for interface compatibility) + * @dev These addresses are not used internally but are required for compatibility + * with integrators who call these getters before getFeeAndReward(). + */ + constructor(address _linkAddress, address _nativeAddress, address _rewardManagerAddress) { + i_linkAddress = _linkAddress; + i_nativeAddress = _nativeAddress; + i_rewardManager = IRewardManager(_rewardManagerAddress); + } + /// @inheritdoc ITypeAndVersion function typeAndVersion() external pure override returns (string memory) { - return "NoOpFeeManager 0.5.0"; + return "NoOpFeeManager 0.5.1"; } /// @inheritdoc IERC165 function supportsInterface( bytes4 interfaceId ) external pure override returns (bool) { - return interfaceId == this.processFee.selector || interfaceId == this.processFeeBulk.selector; + return interfaceId == type(IERC165).interfaceId || interfaceId == type(IFeeManager).interfaceId + || interfaceId == type(IVerifierFeeManager).interfaceId || interfaceId == IVerifierFeeManager.processFee.selector + || interfaceId == IVerifierFeeManager.processFeeBulk.selector; } /// @inheritdoc IVerifierFeeManager @@ -111,6 +139,15 @@ contract NoOpFeeManager is IFeeManager, ITypeAndVersion { return PERCENTAGE_SCALAR; } + /** + * @notice Returns 0 surcharge since no fees are charged + * @dev Replicates public state variable getter from FeeManager for backwards compatibility + */ + // solhint-disable-next-line func-name-mixedcase + function s_nativeSurcharge() external pure returns (uint256) { + return 0; + } + /** * @notice Refunds any ETH sent to the contract * @param recipient The address to refund ETH to diff --git a/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.integration.t.sol b/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.integration.t.sol new file mode 100644 index 0000000000..0560559c1b --- /dev/null +++ b/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.integration.t.sol @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.19; + +import {Common} from "../../../libraries/Common.sol"; +import {NoOpFeeManager} from "../../NoOpFeeManager.sol"; +import {BaseTestWithConfiguredVerifierAndFeeManager} from "../verifier/BaseVerifierTest.t.sol"; + +/// @notice Extended interface matching what real clients call on FeeManager/NoOpFeeManager +interface IFeeManagerWithGetters { + function getFeeAndReward( + address subscriber, + bytes memory report, + address quoteAddress + ) external returns (Common.Asset memory, Common.Asset memory, uint256); + function i_linkAddress() external view returns (address); + function i_nativeAddress() external view returns (address); + function i_rewardManager() external view returns (address); +} + +/** + * @title NoOpFeeManagerIntegrationTest + * @notice Tests that NoOpFeeManager is compatible with the Data Streams verification workflow when billing is enabled. + * @dev Uses a single _runVerificationWorkflow() function to ensure identical code paths are tested + * with both FeeManager and NoOpFeeManager. + */ +contract NoOpFeeManagerIntegrationTestV051 is BaseTestWithConfiguredVerifierAndFeeManager { + NoOpFeeManager internal noOpFeeManager; + + uint64 internal constant PERCENTAGE_SCALAR = 1e18; + uint256 internal constant DEFAULT_LINK_MINT = 100 ether; + + /// @notice Result of running the verification workflow + struct VerificationResult { + bytes verifiedReport; + uint256 feeAmount; + uint256 rewardAmount; + uint256 discount; + uint256 linkBalanceBefore; + uint256 linkBalanceAfter; + int192 decodedPrice; + bytes32 decodedFeedId; + } + + function setUp() public override { + BaseTestWithConfiguredVerifierAndFeeManager.setUp(); + + // Deploy NoOpFeeManager with same addresses as FeeManager + noOpFeeManager = new NoOpFeeManager(address(link), address(native), address(rewardManager)); + + // Mint tokens for users + link.mint(USER, DEFAULT_LINK_MINT); + vm.deal(USER, DEFAULT_LINK_MINT); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // Main Test: Verification Workflow Compatibility + // ═══════════════════════════════════════════════════════════════════════════ + + function test_verificationWorkflowCompatibility() public { + // Generate report once - used for both workflows + V3Report memory report = _generateV3Report(); + Signer[] memory signers = _getSigners(FAULT_TOLERANCE + 1); + bytes32[3] memory reportContext = _generateReportContext(v3ConfigDigest); + bytes memory signedReport = _generateV3EncodedBlob(report, reportContext, signers); + bytes memory reportData = _encodeReport(report); + + // ─── Run 1: FeeManager (billing enabled) ───────────────────────────────── + VerificationResult memory result1 = _runVerificationWorkflow(signedReport, reportData, USER); + + // Validate FeeManager was invoked: fee charged, LINK transferred + assertEq(result1.feeAmount, DEFAULT_REPORT_LINK_FEE, "Fee should match report linkFee"); + assertEq(result1.rewardAmount, DEFAULT_REPORT_LINK_FEE, "Reward should match report linkFee"); + assertEq(result1.discount, 0, "No discount configured"); + assertLt(result1.linkBalanceAfter, result1.linkBalanceBefore, "LINK should be transferred"); + assertEq( + result1.linkBalanceBefore - result1.linkBalanceAfter, + DEFAULT_REPORT_LINK_FEE, + "Transferred amount should match fee" + ); + + // Validate report decoded correctly + assertEq(result1.decodedPrice, MEDIAN, "Decoded price should match"); + assertEq(result1.decodedFeedId, FEED_ID_V3, "Decoded feedId should match"); + + // ─── Swap to NoOpFeeManager ────────────────────────────────────────────── + changePrank(ADMIN); + s_verifierProxy.setFeeManager(noOpFeeManager); + + // ─── Run 2: NoOpFeeManager (billing deactivated) ───────────────────────── + VerificationResult memory result2 = _runVerificationWorkflow(signedReport, reportData, USER); + + // Validate NoOpFeeManager: no fees, no transfer + assertEq(result2.feeAmount, 0, "NoOp fee should be 0"); + assertEq(result2.rewardAmount, 0, "NoOp reward should be 0"); + assertEq(result2.discount, PERCENTAGE_SCALAR, "NoOp discount should be 100%"); + assertEq(result2.linkBalanceAfter, result2.linkBalanceBefore, "No LINK should be transferred"); + + // Validate same report decoded - proves verification still works + assertEq(result2.decodedPrice, result1.decodedPrice, "Same price decoded after swap"); + assertEq(result2.decodedFeedId, result1.decodedFeedId, "Same feedId decoded after swap"); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // Verification Workflow + // ═══════════════════════════════════════════════════════════════════════════ + + /** + * @notice Runs the Data Streams verification workflow when billing is enabled + * @dev This function mirrors the integration pattern from the docs: + * 1. Query s_feeManager() from proxy to get active fee manager + * 2. Call i_linkAddress() to get fee token + * 3. Call i_rewardManager() to get active reward manager + * 4. Call getFeeAndReward() to calculate fees + * 5. Approve RewardManager to collect the fee amount + * 6. Call verify() on VerifierProxy + * @param signedReport The signed report blob to verify + * @param reportData The encoded report data for fee calculation + * @param sender The address to run the workflow as + * @return result The verification result containing all workflow outputs + */ + function _runVerificationWorkflow( + bytes memory signedReport, + bytes memory reportData, + address sender + ) internal returns (VerificationResult memory result) { + changePrank(sender); + + // 1. Get active fee manager from proxy (exactly like real integration) + IFeeManagerWithGetters activeFeeManager = IFeeManagerWithGetters(address(s_verifierProxy.s_feeManager())); + + // 2. Query fee token address + address feeToken = activeFeeManager.i_linkAddress(); + + // 3. Query reward manager for approval + address rewardMgr = address(activeFeeManager.i_rewardManager()); + + // 4. Calculate fee + (Common.Asset memory fee, Common.Asset memory reward, uint256 discount) = + activeFeeManager.getFeeAndReward(sender, reportData, feeToken); + + result.feeAmount = fee.amount; + result.rewardAmount = reward.amount; + result.discount = discount; + + // 5. Record balance before and approve + result.linkBalanceBefore = link.balanceOf(sender); + if (fee.amount > 0) { + link.approve(rewardMgr, fee.amount); + } + + // 6. Verify through proxy + result.verifiedReport = s_verifierProxy.verify(signedReport, abi.encode(feeToken)); + + // Record balance after + result.linkBalanceAfter = link.balanceOf(sender); + + // Decode verified report + V3Report memory decoded = abi.decode(result.verifiedReport, (V3Report)); + result.decodedPrice = decoded.benchmarkPrice; + result.decodedFeedId = decoded.feedId; + + return result; + } +} diff --git a/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.t.sol b/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.t.sol index 022ccf6943..81ba4186a6 100644 --- a/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.t.sol +++ b/contracts/src/v0.8/llo-feeds/v0.5.1/test/fee-manager/NoOpFeeManager.t.sol @@ -8,8 +8,10 @@ import {Common} from "../../../libraries/Common.sol"; import {FeeManager} from "../../FeeManager.sol"; import {NoOpFeeManager} from "../../NoOpFeeManager.sol"; import {RewardManager} from "../../RewardManager.sol"; +import {IFeeManager} from "../../interfaces/IFeeManager.sol"; import {IVerifierFeeManager} from "../../interfaces/IVerifierFeeManager.sol"; import {FeeManagerProxy} from "../mocks/FeeManagerProxy.sol"; +import {IERC165} from "@openzeppelin/contracts@4.8.3/interfaces/IERC165.sol"; import {Test} from "forge-std/Test.sol"; contract NoOpFeeManagerTestV051 is Test { @@ -30,7 +32,6 @@ contract NoOpFeeManagerTestV051 is Test { link = new ERC20Mock(18); native = new WERC20Mock(); - noOpFeeManager = new NoOpFeeManager(); // Deploy real FeeManager for comparison tests feeManagerProxy = new FeeManagerProxy(); @@ -39,20 +40,48 @@ contract NoOpFeeManagerTestV051 is Test { feeManagerProxy.setFeeManager(feeManager); rewardManager.setFeeManager(address(feeManager)); + noOpFeeManager = new NoOpFeeManager(address(link), address(native), address(rewardManager)); + vm.stopPrank(); } function test_typeAndVersion() public view { - assertEq(noOpFeeManager.typeAndVersion(), "NoOpFeeManager 0.5.0"); + assertEq(noOpFeeManager.typeAndVersion(), "NoOpFeeManager 0.5.1"); + } + + // ERC-165 compliance: must return true for IERC165 interface ID + function test_supportsInterface_ERC165() public view { + assertTrue(noOpFeeManager.supportsInterface(type(IERC165).interfaceId)); + } + + // ERC-165 compliance: must return true for IFeeManager interface ID + function test_supportsInterface_IFeeManager() public view { + assertTrue(noOpFeeManager.supportsInterface(type(IFeeManager).interfaceId)); + } + + // ERC-165 compliance: must return true for IVerifierFeeManager interface ID + function test_supportsInterface_IVerifierFeeManager() public view { + assertTrue(noOpFeeManager.supportsInterface(type(IVerifierFeeManager).interfaceId)); } - // VerifierProxy checks these interface support before accepting a fee manager - function test_supportsInterface() public view { + // Backward compatibility: VerifierProxy checks these function selectors before accepting a fee manager + function test_supportsInterface_BackwardCompatibility() public view { assertTrue(noOpFeeManager.supportsInterface(IVerifierFeeManager.processFee.selector)); assertTrue(noOpFeeManager.supportsInterface(IVerifierFeeManager.processFeeBulk.selector)); + } + + // Must return false for unsupported interfaces + function test_supportsInterface_UnsupportedInterface() public view { assertFalse(noOpFeeManager.supportsInterface(bytes4(0xdeadbeef))); } + // Verify constructor parameters are stored correctly for interface compatibility + function test_constructorParameters() public view { + assertEq(noOpFeeManager.i_linkAddress(), address(link)); + assertEq(noOpFeeManager.i_nativeAddress(), address(native)); + assertEq(address(noOpFeeManager.i_rewardManager()), address(rewardManager)); + } + // Some code queries these to check discount status - must always return 100% function test_discountGettersReturn100Percent() public view { bytes32 feedId = keccak256("ETH-USD"); @@ -61,6 +90,11 @@ contract NoOpFeeManagerTestV051 is Test { assertEq(noOpFeeManager.s_subscriberDiscounts(SUBSCRIBER, feedId, address(link)), PERCENTAGE_SCALAR); } + // Native surcharge getter should return 0 since no fees are charged + function test_nativeSurchargeReturnsZero() public view { + assertEq(noOpFeeManager.s_nativeSurcharge(), 0); + } + // Ensures our view functions match FeeManager's public mapping getter signatures // so code can swap between implementations without breaking changes function test_discountGettersMatchFeeManagerSignature() public view { diff --git a/gethwrappers/llo-feeds/generated/no_op_fee_manager_v0_5_1/no_op_fee_manager_v0_5_1.go b/gethwrappers/llo-feeds/generated/no_op_fee_manager_v0_5_1/no_op_fee_manager_v0_5_1.go index 646b3bc0b7..f72c54ec01 100644 --- a/gethwrappers/llo-feeds/generated/no_op_fee_manager_v0_5_1/no_op_fee_manager_v0_5_1.go +++ b/gethwrappers/llo-feeds/generated/no_op_fee_manager_v0_5_1/no_op_fee_manager_v0_5_1.go @@ -39,15 +39,15 @@ type CommonAsset struct { } var NoOpFeeManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"getFeeAndReward\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"fee\",\"type\":\"tuple\",\"internalType\":\"structCommon.Asset\",\"components\":[{\"name\":\"assetAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"reward\",\"type\":\"tuple\",\"internalType\":\"structCommon.Asset\",\"components\":[{\"name\":\"assetAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"appliedDiscount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"linkAvailableForPayment\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"payLinkDeficit\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processFee\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"subscriber\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"processFeeBulk\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"subscriber\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"s_globalDiscounts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"s_subscriberDiscounts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"setFeeRecipients\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structCommon.AddressAndWeight[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNativeSurcharge\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"typeAndVersion\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"updateSubscriberDiscount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSubscriberGlobalDiscount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"RefundFailed\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b50610a09806100206000396000f3fe6080604052600436106100dd5760003560e01c806387d6d8431161007f578063dba45fe011610059578063dba45fe014610269578063e03dab1a14610277578063e389d9a414610313578063f65df9621461032e57600080fd5b806387d6d84314610209578063ce7817d114610234578063d09dc3391461025557600080fd5b80631d4d84a2116100bb5780631d4d84a21461019b57806350538094146101bd5780636c2f1a17146101db57806376cf3187146101ee57600080fd5b806301ffc9a7146100e2578063181f5a77146101175780631cc7f2d814610163575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610496565b610349565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50604080518082018252601481527f4e6f4f704665654d616e6167657220302e352e300000000000000000000000006020820152905161010e91906104df565b34801561016f57600080fd5b5061018d61017e366004610574565b670de0b6b3a764000092915050565b60405190815260200161010e565b3480156101a757600080fd5b506101bb6101b63660046105a7565b505050565b005b3480156101c957600080fd5b506101bb6101d8366004610623565b50565b6101bb6101e9366004610687565b6103e2565b3480156101fa57600080fd5b506101bb6101b6366004610736565b34801561021557600080fd5b5061018d610224366004610779565b670de0b6b3a76400009392505050565b34801561024057600080fd5b506101bb61024f3660046107ac565b50505050565b34801561026157600080fd5b50600061018d565b6101bb6101e93660046107f9565b34801561028357600080fd5b506102c861029236600461087d565b505060408051808201825260008082526020808301829052835180850190945281845283015292909150670de0b6b3a764000090565b60408051845173ffffffffffffffffffffffffffffffffffffffff9081168252602095860151868301528451169181019190915292909101516060830152608082015260a00161010e565b34801561031f57600080fd5b506101bb6101d8366004610964565b34801561033a57600080fd5b506101bb6101b636600461097d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fdba45fe00000000000000000000000000000000000000000000000000000000014806103dc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f6c2f1a1700000000000000000000000000000000000000000000000000000000145b92915050565b6103eb816103f2565b5050505050565b34156101d85760008173ffffffffffffffffffffffffffffffffffffffff163460405160006040518083038185875af1925050503d8060008114610452576040519150601f19603f3d011682016040523d82523d6000602084013e610457565b606091505b5050905080610492576040517ff0c49d4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000602082840312156104a857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104d857600080fd5b9392505050565b600060208083528351808285015260005b8181101561050c578581018301518582016040015282016104f0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461056f57600080fd5b919050565b6000806040838503121561058757600080fd5b6105908361054b565b915061059e6020840161054b565b90509250929050565b6000806000606084860312156105bc57600080fd5b6105c58461054b565b92506105d36020850161054b565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff8116811461060057600080fd5b809150509250925092565b803567ffffffffffffffff8116811461056f57600080fd5b60006020828403121561063557600080fd5b6104d88261060b565b60008083601f84011261065057600080fd5b50813567ffffffffffffffff81111561066857600080fd5b60208301915083602082850101111561068057600080fd5b9250929050565b60008060008060006060868803121561069f57600080fd5b853567ffffffffffffffff808211156106b757600080fd5b818801915088601f8301126106cb57600080fd5b8135818111156106da57600080fd5b8960208260051b85010111156106ef57600080fd5b60209283019750955090870135908082111561070a57600080fd5b506107178882890161063e565b909450925061072a90506040870161054b565b90509295509295909350565b60008060006060848603121561074b57600080fd5b6107548461054b565b92506107626020850161054b565b91506107706040850161060b565b90509250925092565b60008060006060848603121561078e57600080fd5b6107978461054b565b9250602084013591506107706040850161054b565b600080600080608085870312156107c257600080fd5b6107cb8561054b565b9350602085013592506107e06040860161054b565b91506107ee6060860161060b565b905092959194509250565b60008060008060006060868803121561081157600080fd5b853567ffffffffffffffff8082111561082957600080fd5b61083589838a0161063e565b9097509550602088013591508082111561070a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561089257600080fd5b61089b8461054b565b9250602084013567ffffffffffffffff808211156108b857600080fd5b818601915086601f8301126108cc57600080fd5b8135818111156108de576108de61084e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109245761092461084e565b8160405282815289602084870101111561093d57600080fd5b8260208601602083013760006020848301015280965050505050506107706040850161054b565b60006020828403121561097657600080fd5b5035919050565b60008060006040848603121561099257600080fd5b83359250602084013567ffffffffffffffff808211156109b157600080fd5b818601915086601f8301126109c557600080fd5b8135818111156109d457600080fd5b8760208260061b85010111156109e957600080fd5b602083019450809350505050925092509256fea164736f6c6343000813000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_linkAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_nativeAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rewardManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getFeeAndReward\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"fee\",\"type\":\"tuple\",\"internalType\":\"structCommon.Asset\",\"components\":[{\"name\":\"assetAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"reward\",\"type\":\"tuple\",\"internalType\":\"structCommon.Asset\",\"components\":[{\"name\":\"assetAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"appliedDiscount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"i_linkAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"i_nativeAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"i_rewardManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRewardManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"linkAvailableForPayment\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"payLinkDeficit\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processFee\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"subscriber\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"processFeeBulk\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"subscriber\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"s_globalDiscounts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"s_nativeSurcharge\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"s_subscriberDiscounts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"setFeeRecipients\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structCommon.AddressAndWeight[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNativeSurcharge\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"typeAndVersion\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"updateSubscriberDiscount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSubscriberGlobalDiscount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"RefundFailed\",\"inputs\":[]}]", + Bin: "0x60e060405234801561001057600080fd5b50604051610cd4380380610cd483398101604081905261002f91610068565b6001600160a01b0392831660805290821660a0521660c0526100ab565b80516001600160a01b038116811461006357600080fd5b919050565b60008060006060848603121561007d57600080fd5b6100868461004c565b92506100946020850161004c565b91506100a26040850161004c565b90509250925092565b60805160a05160c051610bfa6100da600039600061022f015260006102a6015260006104190152610bfa6000f3fe6080604052600436106101295760003560e01c806376cf3187116100a5578063dba45fe011610074578063e389d9a411610059578063e389d9a4146103ec578063ea4b861b14610407578063f65df9621461043b57600080fd5b8063dba45fe014610342578063e03dab1a1461035057600080fd5b806376cf3187146102db57806387d6d843146102f6578063ce7817d114610321578063d09dc3391461020957600080fd5b806332f5f746116100fc57806350538094116100e1578063505380941461027657806363878668146102945780636c2f1a17146102c857600080fd5b806332f5f746146102095780633aa5ac071461021d57600080fd5b806301ffc9a71461012e578063181f5a77146101635780631cc7f2d8146101af5780631d4d84a2146101e7575b600080fd5b34801561013a57600080fd5b5061014e610149366004610687565b610456565b60405190151581526020015b60405180910390f35b34801561016f57600080fd5b50604080518082018252601481527f4e6f4f704665654d616e6167657220302e352e310000000000000000000000006020820152905161015a91906106d0565b3480156101bb57600080fd5b506101d96101ca366004610765565b670de0b6b3a764000092915050565b60405190815260200161015a565b3480156101f357600080fd5b50610207610202366004610798565b505050565b005b34801561021557600080fd5b5060006101d9565b34801561022957600080fd5b506102517f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b34801561028257600080fd5b50610207610291366004610814565b50565b3480156102a057600080fd5b506102517f000000000000000000000000000000000000000000000000000000000000000081565b6102076102d6366004610878565b6105d3565b3480156102e757600080fd5b50610207610202366004610927565b34801561030257600080fd5b506101d961031136600461096a565b670de0b6b3a76400009392505050565b34801561032d57600080fd5b5061020761033c36600461099d565b50505050565b6102076102d63660046109ea565b34801561035c57600080fd5b506103a161036b366004610a6e565b505060408051808201825260008082526020808301829052835180850190945281845283015292909150670de0b6b3a764000090565b60408051845173ffffffffffffffffffffffffffffffffffffffff9081168252602095860151868301528451169181019190915292909101516060830152608082015260a00161015a565b3480156103f857600080fd5b50610207610291366004610b55565b34801561041357600080fd5b506102517f000000000000000000000000000000000000000000000000000000000000000081565b34801561044757600080fd5b50610207610202366004610b6e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806104e957507fffffffff0000000000000000000000000000000000000000000000000000000082167f268093e700000000000000000000000000000000000000000000000000000000145b8061053557507fffffffff0000000000000000000000000000000000000000000000000000000082167f41d6bc9500000000000000000000000000000000000000000000000000000000145b8061058157507fffffffff0000000000000000000000000000000000000000000000000000000082167fdba45fe000000000000000000000000000000000000000000000000000000000145b806105cd57507fffffffff0000000000000000000000000000000000000000000000000000000082167f6c2f1a1700000000000000000000000000000000000000000000000000000000145b92915050565b6105dc816105e3565b5050505050565b34156102915760008173ffffffffffffffffffffffffffffffffffffffff163460405160006040518083038185875af1925050503d8060008114610643576040519150601f19603f3d011682016040523d82523d6000602084013e610648565b606091505b5050905080610683576040517ff0c49d4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60006020828403121561069957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106c957600080fd5b9392505050565b600060208083528351808285015260005b818110156106fd578581018301518582016040015282016106e1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076057600080fd5b919050565b6000806040838503121561077857600080fd5b6107818361073c565b915061078f6020840161073c565b90509250929050565b6000806000606084860312156107ad57600080fd5b6107b68461073c565b92506107c46020850161073c565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff811681146107f157600080fd5b809150509250925092565b803567ffffffffffffffff8116811461076057600080fd5b60006020828403121561082657600080fd5b6106c9826107fc565b60008083601f84011261084157600080fd5b50813567ffffffffffffffff81111561085957600080fd5b60208301915083602082850101111561087157600080fd5b9250929050565b60008060008060006060868803121561089057600080fd5b853567ffffffffffffffff808211156108a857600080fd5b818801915088601f8301126108bc57600080fd5b8135818111156108cb57600080fd5b8960208260051b85010111156108e057600080fd5b6020928301975095509087013590808211156108fb57600080fd5b506109088882890161082f565b909450925061091b90506040870161073c565b90509295509295909350565b60008060006060848603121561093c57600080fd5b6109458461073c565b92506109536020850161073c565b9150610961604085016107fc565b90509250925092565b60008060006060848603121561097f57600080fd5b6109888461073c565b9250602084013591506109616040850161073c565b600080600080608085870312156109b357600080fd5b6109bc8561073c565b9350602085013592506109d16040860161073c565b91506109df606086016107fc565b905092959194509250565b600080600080600060608688031215610a0257600080fd5b853567ffffffffffffffff80821115610a1a57600080fd5b610a2689838a0161082f565b909750955060208801359150808211156108fb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610a8357600080fd5b610a8c8461073c565b9250602084013567ffffffffffffffff80821115610aa957600080fd5b818601915086601f830112610abd57600080fd5b813581811115610acf57610acf610a3f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610b1557610b15610a3f565b81604052828152896020848701011115610b2e57600080fd5b8260208601602083013760006020848301015280965050505050506109616040850161073c565b600060208284031215610b6757600080fd5b5035919050565b600080600060408486031215610b8357600080fd5b83359250602084013567ffffffffffffffff80821115610ba257600080fd5b818601915086601f830112610bb657600080fd5b813581811115610bc557600080fd5b8760208260061b8501011115610bda57600080fd5b602083019450809350505050925092509256fea164736f6c6343000813000a", } var NoOpFeeManagerABI = NoOpFeeManagerMetaData.ABI var NoOpFeeManagerBin = NoOpFeeManagerMetaData.Bin -func DeployNoOpFeeManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *NoOpFeeManager, error) { +func DeployNoOpFeeManager(auth *bind.TransactOpts, backend bind.ContractBackend, _linkAddress common.Address, _nativeAddress common.Address, _rewardManagerAddress common.Address) (common.Address, *types.Transaction, *NoOpFeeManager, error) { parsed, err := NoOpFeeManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -56,7 +56,7 @@ func DeployNoOpFeeManager(auth *bind.TransactOpts, backend bind.ContractBackend) return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NoOpFeeManagerBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NoOpFeeManagerBin), backend, _linkAddress, _nativeAddress, _rewardManagerAddress) if err != nil { return common.Address{}, nil, nil, err } @@ -210,6 +210,72 @@ func (_NoOpFeeManager *NoOpFeeManagerCallerSession) GetFeeAndReward(arg0 common. return _NoOpFeeManager.Contract.GetFeeAndReward(&_NoOpFeeManager.CallOpts, arg0, arg1, arg2) } +func (_NoOpFeeManager *NoOpFeeManagerCaller) ILinkAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NoOpFeeManager.contract.Call(opts, &out, "i_linkAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_NoOpFeeManager *NoOpFeeManagerSession) ILinkAddress() (common.Address, error) { + return _NoOpFeeManager.Contract.ILinkAddress(&_NoOpFeeManager.CallOpts) +} + +func (_NoOpFeeManager *NoOpFeeManagerCallerSession) ILinkAddress() (common.Address, error) { + return _NoOpFeeManager.Contract.ILinkAddress(&_NoOpFeeManager.CallOpts) +} + +func (_NoOpFeeManager *NoOpFeeManagerCaller) INativeAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NoOpFeeManager.contract.Call(opts, &out, "i_nativeAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_NoOpFeeManager *NoOpFeeManagerSession) INativeAddress() (common.Address, error) { + return _NoOpFeeManager.Contract.INativeAddress(&_NoOpFeeManager.CallOpts) +} + +func (_NoOpFeeManager *NoOpFeeManagerCallerSession) INativeAddress() (common.Address, error) { + return _NoOpFeeManager.Contract.INativeAddress(&_NoOpFeeManager.CallOpts) +} + +func (_NoOpFeeManager *NoOpFeeManagerCaller) IRewardManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NoOpFeeManager.contract.Call(opts, &out, "i_rewardManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_NoOpFeeManager *NoOpFeeManagerSession) IRewardManager() (common.Address, error) { + return _NoOpFeeManager.Contract.IRewardManager(&_NoOpFeeManager.CallOpts) +} + +func (_NoOpFeeManager *NoOpFeeManagerCallerSession) IRewardManager() (common.Address, error) { + return _NoOpFeeManager.Contract.IRewardManager(&_NoOpFeeManager.CallOpts) +} + func (_NoOpFeeManager *NoOpFeeManagerCaller) LinkAvailableForPayment(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _NoOpFeeManager.contract.Call(opts, &out, "linkAvailableForPayment") @@ -254,6 +320,28 @@ func (_NoOpFeeManager *NoOpFeeManagerCallerSession) SGlobalDiscounts(arg0 common return _NoOpFeeManager.Contract.SGlobalDiscounts(&_NoOpFeeManager.CallOpts, arg0, arg1) } +func (_NoOpFeeManager *NoOpFeeManagerCaller) SNativeSurcharge(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _NoOpFeeManager.contract.Call(opts, &out, "s_nativeSurcharge") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +func (_NoOpFeeManager *NoOpFeeManagerSession) SNativeSurcharge() (*big.Int, error) { + return _NoOpFeeManager.Contract.SNativeSurcharge(&_NoOpFeeManager.CallOpts) +} + +func (_NoOpFeeManager *NoOpFeeManagerCallerSession) SNativeSurcharge() (*big.Int, error) { + return _NoOpFeeManager.Contract.SNativeSurcharge(&_NoOpFeeManager.CallOpts) +} + func (_NoOpFeeManager *NoOpFeeManagerCaller) SSubscriberDiscounts(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte, arg2 common.Address) (*big.Int, error) { var out []interface{} err := _NoOpFeeManager.contract.Call(opts, &out, "s_subscriberDiscounts", arg0, arg1, arg2) @@ -431,10 +519,18 @@ type NoOpFeeManagerInterface interface { error) + ILinkAddress(opts *bind.CallOpts) (common.Address, error) + + INativeAddress(opts *bind.CallOpts) (common.Address, error) + + IRewardManager(opts *bind.CallOpts) (common.Address, error) + LinkAvailableForPayment(opts *bind.CallOpts) (*big.Int, error) SGlobalDiscounts(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) + SNativeSurcharge(opts *bind.CallOpts) (*big.Int, error) + SSubscriberDiscounts(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte, arg2 common.Address) (*big.Int, error) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) diff --git a/gethwrappers/llo-feeds/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/gethwrappers/llo-feeds/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 30c51c7642..844dfca7ee 100644 --- a/gethwrappers/llo-feeds/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/gethwrappers/llo-feeds/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -21,7 +21,7 @@ llo_feeds: ../../../contracts/solc/v0.8.19/FeeManager.abi ../../../contracts/sol llo_feeds_test: ../../../contracts/solc/v0.8.19/ExposedVerifier.abi ../../../contracts/solc/v0.8.19/ExposedVerifier.bin 6932cea8f2738e874d3ec9e1a4231d2421704030c071d9e15dd2f7f08482c246 mock_fee_manager_v0_5_0: ../../contracts/solc/llo-feeds/v0.5.0/MockFeeManager/MockFeeManager.sol/MockFeeManager.abi.json ../../contracts/solc/llo-feeds/v0.5.0/MockFeeManager/MockFeeManager.sol/MockFeeManager.bin d9781de48cf54d2ecc832968ad9653efcfd3779e766b11ded69b518b6d388af2 no_op_fee_manager: ../../contracts/solc/llo-feeds/v0.5.0/NoOpFeeManager/NoOpFeeManager.sol/NoOpFeeManager.abi.json ../../contracts/solc/llo-feeds/v0.5.0/NoOpFeeManager/NoOpFeeManager.sol/NoOpFeeManager.bin c634ccaae759b2980974b775c519aefe642152714622c5665179e17e1c9dc35c -no_op_fee_manager_v0_5_1: ../../contracts/solc/llo-feeds/v0.5.1/NoOpFeeManager/NoOpFeeManager.sol/NoOpFeeManager.abi.json ../../contracts/solc/llo-feeds/v0.5.1/NoOpFeeManager/NoOpFeeManager.sol/NoOpFeeManager.bin c634ccaae759b2980974b775c519aefe642152714622c5665179e17e1c9dc35c +no_op_fee_manager_v0_5_1: ../../contracts/solc/llo-feeds/v0.5.1/NoOpFeeManager/NoOpFeeManager.sol/NoOpFeeManager.abi.json ../../contracts/solc/llo-feeds/v0.5.1/NoOpFeeManager/NoOpFeeManager.sol/NoOpFeeManager.bin 2dcb4ad6ce0f7e29835eeeeadc07a8666666268aef743168a1f9080ad58e75fa reward_manager: ../../contracts/solc/llo-feeds/v0.3.0/RewardManager/RewardManager.sol/RewardManager.abi.json ../../contracts/solc/llo-feeds/v0.3.0/RewardManager/RewardManager.sol/RewardManager.bin a654ff271588c3bad8cf6713a8dded89344458780a8e8fb23b0a40629b946240 reward_manager_v0_5_0: ../../contracts/solc/llo-feeds/v0.5.0/RewardManager/RewardManager.sol/RewardManager.abi.json ../../contracts/solc/llo-feeds/v0.5.0/RewardManager/RewardManager.sol/RewardManager.bin a654ff271588c3bad8cf6713a8dded89344458780a8e8fb23b0a40629b946240 reward_manager_v0_5_1: ../../contracts/solc/llo-feeds/v0.5.1/RewardManager/RewardManager.sol/RewardManager.abi.json ../../contracts/solc/llo-feeds/v0.5.1/RewardManager/RewardManager.sol/RewardManager.bin a654ff271588c3bad8cf6713a8dded89344458780a8e8fb23b0a40629b946240