export const priceAndFeeCalculatorAbi = [ { type: 'constructor', inputs: [ { name: 'numeraire', internalType: 'contract IERC20', type: 'address' }, { name: 'oracleRegistry', internalType: 'contract IOracleRegistry', type: 'address' }, { name: 'owner_', internalType: 'address', type: 'address' }, { name: 'authority_', internalType: 'contract Authority', type: 'address' }, ], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'NUMERAIRE', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'ORACLE_REGISTRY', outputs: [{ name: '', internalType: 'contract IOracleRegistry', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'acceptOwnership', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'authority', outputs: [{ name: '', internalType: 'contract Authority', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'feeTokenBalance', internalType: 'uint256', type: 'uint256' }], name: 'claimFees', outputs: [ { name: '', internalType: 'uint256', type: 'uint256' }, { name: '', internalType: 'uint256', type: 'uint256' }, { name: '', internalType: 'address', type: 'address' }, ], stateMutability: 'nonpayable', }, { type: 'function', inputs: [{ name: 'feeTokenBalance', internalType: 'uint256', type: 'uint256' }], name: 'claimProtocolFees', outputs: [ { name: '', internalType: 'uint256', type: 'uint256' }, { name: '', internalType: 'address', type: 'address' }, ], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'token', internalType: 'contract IERC20', type: 'address' }, { name: 'tokenAmount', internalType: 'uint256', type: 'uint256' }, ], name: 'convertTokenToUnits', outputs: [{ name: 'unitsAmount', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'token', internalType: 'contract IERC20', type: 'address' }, { name: 'tokenAmount', internalType: 'uint256', type: 'uint256' }, { name: 'rounding', internalType: 'enum Math.Rounding', type: 'uint8' }, ], name: 'convertTokenToUnitsIfActive', outputs: [{ name: 'unitsAmount', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'unitsAmount', internalType: 'uint256', type: 'uint256' }, ], name: 'convertUnitsToNumeraire', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'token', internalType: 'contract IERC20', type: 'address' }, { name: 'unitsAmount', internalType: 'uint256', type: 'uint256' }, ], name: 'convertUnitsToToken', outputs: [{ name: 'tokenAmount', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'token', internalType: 'contract IERC20', type: 'address' }, { name: 'unitsAmount', internalType: 'uint256', type: 'uint256' }, { name: 'rounding', internalType: 'enum Math.Rounding', type: 'uint8' }, ], name: 'convertUnitsToTokenIfActive', outputs: [{ name: 'tokenAmount', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'vault', internalType: 'address', type: 'address' }], name: 'getVaultState', outputs: [ { name: '', internalType: 'struct VaultPriceState', type: 'tuple', components: [ { name: 'paused', internalType: 'bool', type: 'bool' }, { name: 'maxPriceAge', internalType: 'uint8', type: 'uint8' }, { name: 'minUpdateIntervalMinutes', internalType: 'uint16', type: 'uint16' }, { name: 'maxPriceToleranceRatio', internalType: 'uint16', type: 'uint16' }, { name: 'minPriceToleranceRatio', internalType: 'uint16', type: 'uint16' }, { name: 'maxUpdateDelayDays', internalType: 'uint8', type: 'uint8' }, { name: 'timestamp', internalType: 'uint32', type: 'uint32' }, { name: 'accrualLag', internalType: 'uint24', type: 'uint24' }, { name: 'unitPrice', internalType: 'uint128', type: 'uint128' }, { name: 'highestPrice', internalType: 'uint128', type: 'uint128' }, { name: 'lastTotalSupply', internalType: 'uint128', type: 'uint128' }, ], }, { name: '', internalType: 'struct VaultAccruals', type: 'tuple', components: [ { name: 'fees', internalType: 'struct Fee', type: 'tuple', components: [ { name: 'tvl', internalType: 'uint16', type: 'uint16' }, { name: 'performance', internalType: 'uint16', type: 'uint16' }, ], }, { name: 'accruedFees', internalType: 'uint112', type: 'uint112' }, { name: 'accruedProtocolFees', internalType: 'uint112', type: 'uint112' }, ], }, ], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'vault', internalType: 'address', type: 'address' }], name: 'getVaultsPriceAge', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'vault', internalType: 'address', type: 'address' }], name: 'isVaultPaused', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'vault', internalType: 'address', type: 'address' }], name: 'pauseVault', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'pendingOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'feeTokenBalance', internalType: 'uint256', type: 'uint256' }, ], name: 'previewFees', outputs: [ { name: '', internalType: 'uint256', type: 'uint256' }, { name: '', internalType: 'uint256', type: 'uint256' }, ], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'protocolFeeRecipient', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'protocolFees', outputs: [ { name: 'tvl', internalType: 'uint16', type: 'uint16' }, { name: 'performance', internalType: 'uint16', type: 'uint16' }, ], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'registerVault', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [{ name: 'vault', internalType: 'address', type: 'address' }], name: 'resetHighestPrice', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [{ name: 'newAuthority', internalType: 'contract Authority', type: 'address' }], name: 'setAuthority', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'price', internalType: 'uint128', type: 'uint128' }, { name: 'timestamp', internalType: 'uint32', type: 'uint32' }, ], name: 'setInitialPrice', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [{ name: 'feeRecipient', internalType: 'address', type: 'address' }], name: 'setProtocolFeeRecipient', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'tvl', internalType: 'uint16', type: 'uint16' }, { name: 'performance', internalType: 'uint16', type: 'uint16' }, ], name: 'setProtocolFees', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'minPriceToleranceRatio', internalType: 'uint16', type: 'uint16' }, { name: 'maxPriceToleranceRatio', internalType: 'uint16', type: 'uint16' }, { name: 'minUpdateIntervalMinutes', internalType: 'uint16', type: 'uint16' }, { name: 'maxPriceAge', internalType: 'uint8', type: 'uint8' }, { name: 'maxUpdateDelayDays', internalType: 'uint8', type: 'uint8' }, ], name: 'setThresholds', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'price', internalType: 'uint128', type: 'uint128' }, { name: 'timestamp', internalType: 'uint32', type: 'uint32' }, ], name: 'setUnitPrice', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'accountant', internalType: 'address', type: 'address' }, ], name: 'setVaultAccountant', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'tvl', internalType: 'uint16', type: 'uint16' }, { name: 'performance', internalType: 'uint16', type: 'uint16' }, ], name: 'setVaultFees', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'vault', internalType: 'address', type: 'address' }, { name: 'price', internalType: 'uint128', type: 'uint128' }, { name: 'timestamp', internalType: 'uint32', type: 'uint32' }, ], name: 'unpauseVault', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [{ name: 'vault', internalType: 'address', type: 'address' }], name: 'vaultAccountant', outputs: [{ name: 'accountant', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'event', anonymous: false, inputs: [ { name: 'user', internalType: 'address', type: 'address', indexed: true }, { name: 'newAuthority', internalType: 'contract Authority', type: 'address', indexed: true }, ], name: 'AuthorityUpdated', }, { type: 'event', anonymous: false, inputs: [ { name: 'vault', internalType: 'address', type: 'address', indexed: true }, { name: 'newHighestPrice', internalType: 'uint128', type: 'uint128', indexed: false }, ], name: 'HighestPriceReset', }, { type: 'event', anonymous: false, inputs: [ { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true }, { name: 'newOwner', internalType: 'address', type: 'address', indexed: true }, ], name: 'OwnershipTransferStarted', }, { type: 'event', anonymous: false, inputs: [ { name: 'user', internalType: 'address', type: 'address', indexed: true }, { name: 'newOwner', internalType: 'address', type: 'address', indexed: true }, ], name: 'OwnershipTransferred', }, { type: 'event', anonymous: false, inputs: [{ name: 'feeRecipient', internalType: 'address', type: 'address', indexed: true }], name: 'ProtocolFeeRecipientSet', }, { type: 'event', anonymous: false, inputs: [ { name: 'tvlFee', internalType: 'uint16', type: 'uint16', indexed: false }, { name: 'performanceFee', internalType: 'uint16', type: 'uint16', indexed: false }, ], name: 'ProtocolFeesSet', }, { type: 'event', anonymous: false, inputs: [ { name: 'vault', internalType: 'address', type: 'address', indexed: true }, { name: 'minPriceToleranceRatio', internalType: 'uint16', type: 'uint16', indexed: false }, { name: 'maxPriceToleranceRatio', internalType: 'uint16', type: 'uint16', indexed: false }, { name: 'minUpdateIntervalMinutes', internalType: 'uint16', type: 'uint16', indexed: false }, { name: 'maxPriceAge', internalType: 'uint8', type: 'uint8', indexed: false }, ], name: 'ThresholdsSet', }, { type: 'event', anonymous: false, inputs: [ { name: 'vault', internalType: 'address', type: 'address', indexed: true }, { name: 'price', internalType: 'uint128', type: 'uint128', indexed: false }, { name: 'timestamp', internalType: 'uint32', type: 'uint32', indexed: false }, ], name: 'UnitPriceUpdated', }, { type: 'event', anonymous: false, inputs: [ { name: 'vault', internalType: 'address', type: 'address', indexed: false }, { name: 'accountant', internalType: 'address', type: 'address', indexed: false }, ], name: 'VaultAccountantSet', }, { type: 'event', anonymous: false, inputs: [ { name: 'vault', internalType: 'address', type: 'address', indexed: true }, { name: 'tvlFee', internalType: 'uint16', type: 'uint16', indexed: false }, { name: 'performanceFee', internalType: 'uint16', type: 'uint16', indexed: false }, ], name: 'VaultFeesSet', }, { type: 'event', anonymous: false, inputs: [ { name: 'vault', internalType: 'address', type: 'address', indexed: true }, { name: 'paused', internalType: 'bool', type: 'bool', indexed: false }, ], name: 'VaultPausedChanged', }, { type: 'event', anonymous: false, inputs: [{ name: 'vault', internalType: 'address', type: 'address', indexed: true }], name: 'VaultRegistered', }, { type: 'error', inputs: [], name: 'Aera__CallerIsNotAuthorized' }, { type: 'error', inputs: [], name: 'Aera__CallerIsNotVaultAccountant' }, { type: 'error', inputs: [], name: 'Aera__CallerIsNotVaultOwner' }, { type: 'error', inputs: [], name: 'Aera__CurrentPriceAboveHighestPrice' }, { type: 'error', inputs: [], name: 'Aera__InvalidMaxPriceAge' }, { type: 'error', inputs: [], name: 'Aera__InvalidMaxPriceToleranceRatio' }, { type: 'error', inputs: [], name: 'Aera__InvalidMaxUpdateDelayDays' }, { type: 'error', inputs: [], name: 'Aera__InvalidMinPriceToleranceRatio' }, { type: 'error', inputs: [], name: 'Aera__InvalidPrice' }, { type: 'error', inputs: [], name: 'Aera__PerformanceFeeTooHigh' }, { type: 'error', inputs: [], name: 'Aera__StalePrice' }, { type: 'error', inputs: [], name: 'Aera__ThresholdNotSet' }, { type: 'error', inputs: [], name: 'Aera__TimestampCantBeInFuture' }, { type: 'error', inputs: [], name: 'Aera__TimestampMismatch' }, { type: 'error', inputs: [], name: 'Aera__TimestampMustBeAfterLastUpdate' }, { type: 'error', inputs: [], name: 'Aera__TvlFeeTooHigh' }, { type: 'error', inputs: [], name: 'Aera__Unauthorized' }, { type: 'error', inputs: [], name: 'Aera__UnitPriceMismatch' }, { type: 'error', inputs: [], name: 'Aera__VaultAlreadyInitialized' }, { type: 'error', inputs: [], name: 'Aera__VaultAlreadyRegistered' }, { type: 'error', inputs: [], name: 'Aera__VaultNotInitialized' }, { type: 'error', inputs: [], name: 'Aera__VaultNotPaused' }, { type: 'error', inputs: [], name: 'Aera__VaultNotRegistered' }, { type: 'error', inputs: [], name: 'Aera__VaultPaused' }, { type: 'error', inputs: [], name: 'Aera__ZeroAddressAuthority' }, { type: 'error', inputs: [], name: 'Aera__ZeroAddressNumeraire' }, { type: 'error', inputs: [], name: 'Aera__ZeroAddressOracleRegistry' }, { type: 'error', inputs: [], name: 'Aera__ZeroAddressProtocolFeeRecipient' }, { type: 'error', inputs: [ { name: 'bits', internalType: 'uint8', type: 'uint8' }, { name: 'value', internalType: 'uint256', type: 'uint256' }, ], name: 'SafeCastOverflowedUintDowncast', }, ] as const;