From cdb5d92d585344f720ef2d48eeaadb93aed54bcd Mon Sep 17 00:00:00 2001 From: Kevin Britz Date: Wed, 21 Aug 2024 22:14:34 -0700 Subject: [PATCH 1/5] core package --- packages/perennial/contracts/Market.sol | 33 +++++++++++++++---- .../perennial/contracts/MarketFactory.sol | 16 ++++++--- .../contracts/interfaces/IMarket.sol | 33 ++++++++++--------- .../contracts/interfaces/IMarketFactory.sol | 18 +++++----- .../interfaces/IOracleProviderFactory.sol | 3 +- .../contracts/libs/CheckpointLib.sol | 20 +++++------ .../perennial/contracts/libs/InvariantLib.sol | 14 +++----- .../contracts/libs/MagicValueLib.sol | 12 ++----- .../perennial/contracts/libs/VersionLib.sol | 23 ++++++------- .../contracts/test/CheckpointTester.sol | 9 +++-- .../perennial/contracts/test/GlobalTester.sol | 5 ++- .../contracts/test/GuaranteeTester.sol | 5 ++- .../perennial/contracts/test/LocalTester.sol | 4 ++- .../contracts/test/MarketParameterTester.sol | 3 +- .../perennial/contracts/test/OrderTester.sol | 5 ++- .../contracts/test/PositionTester.sol | 8 ++++- .../test/ProtocolParameterTester.sol | 2 +- .../contracts/test/RiskParameterTester.sol | 3 +- .../contracts/test/VersionTester.sol | 10 ++++-- .../perennial/contracts/types/Checkpoint.sol | 9 ++--- packages/perennial/contracts/types/Global.sol | 13 +++++--- .../perennial/contracts/types/Guarantee.sol | 4 ++- packages/perennial/contracts/types/Local.sol | 13 ++------ .../contracts/types/MarketParameter.sol | 5 ++- .../contracts/types/OracleVersion.sol | 2 +- packages/perennial/contracts/types/Order.sol | 11 +++---- .../perennial/contracts/types/Position.sol | 12 +++---- .../contracts/types/ProtocolParameter.sol | 2 +- .../contracts/types/RiskParameter.sol | 14 ++++---- .../perennial/contracts/types/Version.sol | 9 ++--- 30 files changed, 178 insertions(+), 142 deletions(-) diff --git a/packages/perennial/contracts/Market.sol b/packages/perennial/contracts/Market.sol index 56a2d3c4e..854a6de47 100644 --- a/packages/perennial/contracts/Market.sol +++ b/packages/perennial/contracts/Market.sol @@ -1,13 +1,32 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.24; -import "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; -import "@equilibria/root/attribute/Instance.sol"; -import "@equilibria/root/attribute/ReentrancyGuard.sol"; -import "./interfaces/IMarket.sol"; -import "./interfaces/IMarketFactory.sol"; -import "./libs/InvariantLib.sol"; -import "./libs/MagicValueLib.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed18, UFixed18Lib } from "@equilibria/root/number/types/UFixed18.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { IVerifier } from "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; +import { Instance } from "@equilibria/root/attribute/Instance.sol"; +import { ReentrancyGuard } from "@equilibria/root/attribute/ReentrancyGuard.sol"; +import { Intent } from "@equilibria/perennial-v2-verifier/contracts/types/Intent.sol"; +import { IMarket } from "./interfaces/IMarket.sol"; +import { IMarketFactory } from "./interfaces/IMarketFactory.sol"; +import { IOracleProvider } from "./interfaces/IOracleProvider.sol"; +import { MarketParameter, MarketParameterStorage } from "./types/MarketParameter.sol"; +import { RiskParameter, RiskParameterStorage } from "./types/RiskParameter.sol"; +import { Global, GlobalStorage } from "./types/Global.sol"; +import { Position, PositionStorageGlobal, PositionStorageLocal } from "./types/Position.sol"; +import { Local, LocalStorage } from "./types/Local.sol"; +import { Version, VersionStorage } from "./types/Version.sol"; +import { Order, OrderLib, OrderStorageGlobal, OrderStorageLocal } from "./types/Order.sol"; +import { Guarantee, GuaranteeLib, GuaranteeStorageGlobal, GuaranteeStorageLocal } from "./types/Guarantee.sol"; +import { Checkpoint, CheckpointStorage } from "./types/Checkpoint.sol"; +import { OracleVersion } from "./types/OracleVersion.sol"; +import { OracleReceipt } from "./types/OracleReceipt.sol"; +import { InvariantLib } from "./libs/InvariantLib.sol"; +import { MagicValueLib } from "./libs/MagicValueLib.sol"; +import { VersionAccumulationResponse, VersionLib } from "./libs/VersionLib.sol"; +import { CheckpointAccumulationResponse, CheckpointLib } from "./libs/CheckpointLib.sol"; /// @title Market /// @notice Manages logic and state for a single market. diff --git a/packages/perennial/contracts/MarketFactory.sol b/packages/perennial/contracts/MarketFactory.sol index bc334eaae..2b0d9229f 100644 --- a/packages/perennial/contracts/MarketFactory.sol +++ b/packages/perennial/contracts/MarketFactory.sol @@ -1,10 +1,18 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.24; -import "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; -import "@equilibria/root/attribute/Factory.sol"; -import "./interfaces/IOracleProvider.sol"; -import "./interfaces/IMarketFactory.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { IVerifier } from "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; +import { Factory, IFactory } from "@equilibria/root/attribute/Factory.sol"; +import { IInstance } from "@equilibria/root/attribute/Instance.sol"; +import { IMarket } from "./interfaces/IMarket.sol"; +import { IOracleProvider } from "./interfaces/IOracleProvider.sol"; +import { IMarketFactory } from "./interfaces/IMarketFactory.sol"; +import { OperatorUpdate } from "@equilibria/perennial-v2-verifier/contracts/types/OperatorUpdate.sol"; +import { SignerUpdate } from "@equilibria/perennial-v2-verifier/contracts/types/SignerUpdate.sol"; +import { AccessUpdate } from "@equilibria/perennial-v2-verifier/contracts/types/AccessUpdate.sol"; +import { AccessUpdateBatch } from "@equilibria/perennial-v2-verifier/contracts/types/AccessUpdateBatch.sol"; +import { ProtocolParameter, ProtocolParameterStorage } from "./types/ProtocolParameter.sol"; /// @title MarketFactory /// @notice Manages creating new markets and global protocol parameters. diff --git a/packages/perennial/contracts/interfaces/IMarket.sol b/packages/perennial/contracts/interfaces/IMarket.sol index 667e8d0cb..6dd6816c9 100644 --- a/packages/perennial/contracts/interfaces/IMarket.sol +++ b/packages/perennial/contracts/interfaces/IMarket.sol @@ -1,21 +1,24 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/attribute/interfaces/IInstance.sol"; -import "@equilibria/root/number/types/UFixed6.sol"; -import "@equilibria/root/token/types/Token18.sol"; -import "@equilibria/perennial-v2-verifier/contracts/types/Intent.sol"; -import "./IOracleProvider.sol"; -import "../types/OracleVersion.sol"; -import "../types/MarketParameter.sol"; -import "../types/RiskParameter.sol"; -import "../types/Version.sol"; -import "../types/Local.sol"; -import "../types/Global.sol"; -import "../types/Position.sol"; -import "../types/Checkpoint.sol"; -import "../types/Guarantee.sol"; -import "../libs/VersionLib.sol"; +import { IInstance } from "@equilibria/root/attribute/interfaces/IInstance.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { Intent } from "@equilibria/perennial-v2-verifier/contracts/types/Intent.sol"; +import { IOracleProvider } from "./IOracleProvider.sol"; +import { OracleVersion } from "../types/OracleVersion.sol"; +import { MarketParameter } from "../types/MarketParameter.sol"; +import { RiskParameter } from "../types/RiskParameter.sol"; +import { Version } from "../types/Version.sol"; +import { Local } from "../types/Local.sol"; +import { Global } from "../types/Global.sol"; +import { Position } from "../types/Position.sol"; +import { Checkpoint } from "../types/Checkpoint.sol"; +import { Order } from "../types/Order.sol"; +import { Guarantee } from "../types/Guarantee.sol"; +import { VersionAccumulationResult } from "../libs/VersionLib.sol"; +import { CheckpointAccumulationResult } from "../libs/CheckpointLib.sol"; interface IMarket is IInstance { struct MarketDefinition { diff --git a/packages/perennial/contracts/interfaces/IMarketFactory.sol b/packages/perennial/contracts/interfaces/IMarketFactory.sol index 429105b15..93b2ed049 100644 --- a/packages/perennial/contracts/interfaces/IMarketFactory.sol +++ b/packages/perennial/contracts/interfaces/IMarketFactory.sol @@ -1,14 +1,16 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/attribute/interfaces/IFactory.sol"; -import "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; -import "@equilibria/perennial-v2-verifier/contracts/types/OperatorUpdate.sol"; -import "@equilibria/perennial-v2-verifier/contracts/types/SignerUpdate.sol"; -import "@equilibria/perennial-v2-verifier/contracts/types/AccessUpdate.sol"; -import "@equilibria/perennial-v2-verifier/contracts/types/AccessUpdateBatch.sol"; -import "../types/ProtocolParameter.sol"; -import "./IMarket.sol"; +import { IFactory } from "@equilibria/root/attribute/interfaces/IFactory.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { IVerifier } from "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; +import { OperatorUpdate } from "@equilibria/perennial-v2-verifier/contracts/types/OperatorUpdate.sol"; +import { SignerUpdate } from "@equilibria/perennial-v2-verifier/contracts/types/SignerUpdate.sol"; +import { AccessUpdate } from "@equilibria/perennial-v2-verifier/contracts/types/AccessUpdate.sol"; +import { AccessUpdateBatch } from "@equilibria/perennial-v2-verifier/contracts/types/AccessUpdateBatch.sol"; +import { ProtocolParameter } from "../types/ProtocolParameter.sol"; +import { IMarket } from "./IMarket.sol"; +import { IOracleProvider } from "./IOracleProvider.sol"; interface IMarketFactory is IFactory { event ParameterUpdated(ProtocolParameter newParameter); diff --git a/packages/perennial/contracts/interfaces/IOracleProviderFactory.sol b/packages/perennial/contracts/interfaces/IOracleProviderFactory.sol index 715a0c7d4..1f97815f5 100644 --- a/packages/perennial/contracts/interfaces/IOracleProviderFactory.sol +++ b/packages/perennial/contracts/interfaces/IOracleProviderFactory.sol @@ -1,8 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/OracleVersion.sol"; -import "./IOracleProvider.sol"; +import { IOracleProvider } from "./IOracleProvider.sol"; interface IOracleProviderFactory { event OracleCreated(IOracleProvider indexed oracle, bytes32 indexed id); diff --git a/packages/perennial/contracts/libs/CheckpointLib.sol b/packages/perennial/contracts/libs/CheckpointLib.sol index aa0b3178a..7b2c1770d 100644 --- a/packages/perennial/contracts/libs/CheckpointLib.sol +++ b/packages/perennial/contracts/libs/CheckpointLib.sol @@ -1,17 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "../interfaces/IMarket.sol"; -import "../types/OracleVersion.sol"; -import "../types/RiskParameter.sol"; -import "../types/Global.sol"; -import "../types/Local.sol"; -import "../types/Order.sol"; -import "../types/Version.sol"; -import "../types/Checkpoint.sol"; -import "../types/Guarantee.sol"; - +import { Accumulator6 } from "@equilibria/root/accumulator/types/Accumulator6.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; +import { Position } from "../types/Position.sol"; +import { Order } from "../types/Order.sol"; +import { Version } from "../types/Version.sol"; +import { Checkpoint } from "../types/Checkpoint.sol"; +import { Guarantee } from "../types/Guarantee.sol"; struct CheckpointAccumulationResponse { /// @dev Total Collateral change due to collateral, price override, and trade fee and offset diff --git a/packages/perennial/contracts/libs/InvariantLib.sol b/packages/perennial/contracts/libs/InvariantLib.sol index 7c1690d81..61cb8d89a 100644 --- a/packages/perennial/contracts/libs/InvariantLib.sol +++ b/packages/perennial/contracts/libs/InvariantLib.sol @@ -1,15 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "../interfaces/IMarket.sol"; -import "../types/OracleVersion.sol"; -import "../types/RiskParameter.sol"; -import "../types/Global.sol"; -import "../types/Local.sol"; -import "../types/Order.sol"; -import "../types/Version.sol"; -import "../types/Checkpoint.sol"; +import { Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; +import { PositionLib } from "../types/Position.sol"; +import { Order } from "../types/Order.sol"; +import { Guarantee } from "../types/Guarantee.sol"; /// @title InvariantLib /// @dev (external-safe): this library is safe to externalize diff --git a/packages/perennial/contracts/libs/MagicValueLib.sol b/packages/perennial/contracts/libs/MagicValueLib.sol index 1ba1a8ea0..1adc10fe8 100644 --- a/packages/perennial/contracts/libs/MagicValueLib.sol +++ b/packages/perennial/contracts/libs/MagicValueLib.sol @@ -1,15 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "../interfaces/IMarket.sol"; -import "../types/OracleVersion.sol"; -import "../types/RiskParameter.sol"; -import "../types/Global.sol"; -import "../types/Local.sol"; -import "../types/Order.sol"; -import "../types/Version.sol"; -import "../types/Checkpoint.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; /// @title MagicValueLib /// @dev (external-safe): this library is safe to externalize diff --git a/packages/perennial/contracts/libs/VersionLib.sol b/packages/perennial/contracts/libs/VersionLib.sol index f02be8f40..b10c26385 100644 --- a/packages/perennial/contracts/libs/VersionLib.sol +++ b/packages/perennial/contracts/libs/VersionLib.sol @@ -1,17 +1,18 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "@equilibria/root/accumulator/types/UAccumulator6.sol"; -import "../interfaces/IMarket.sol"; -import "../types/ProtocolParameter.sol"; -import "../types/MarketParameter.sol"; -import "../types/RiskParameter.sol"; -import "../types/Global.sol"; -import "../types/Position.sol"; -import "../types/Version.sol"; -import "../types/OracleVersion.sol"; -import "../types/OracleReceipt.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; +import { MarketParameter } from "../types/MarketParameter.sol"; +import { RiskParameter } from "../types/RiskParameter.sol"; +import { Global } from "../types/Global.sol"; +import { Position } from "../types/Position.sol"; +import { Order } from "../types/Order.sol"; +import { Guarantee } from "../types/Guarantee.sol"; +import { Version } from "../types/Version.sol"; +import { OracleVersion } from "../types/OracleVersion.sol"; +import { OracleReceipt } from "../types/OracleReceipt.sol"; /// @dev The response of the version accumulation /// Contains only select fee information needed for the downstream market contract diff --git a/packages/perennial/contracts/test/CheckpointTester.sol b/packages/perennial/contracts/test/CheckpointTester.sol index cf1d141d4..7acdf8f24 100644 --- a/packages/perennial/contracts/test/CheckpointTester.sol +++ b/packages/perennial/contracts/test/CheckpointTester.sol @@ -1,9 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../interfaces/IMarket.sol"; -import "../types/Checkpoint.sol"; -import "../libs/CheckpointLib.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; +import { Checkpoint, CheckpointStorage } from "../types/Checkpoint.sol"; +import { Order } from "../types/Order.sol"; +import { Guarantee } from "../types/Guarantee.sol"; +import { Version } from "../types/Version.sol"; +import { CheckpointLib, CheckpointAccumulationResponse } from "../libs/CheckpointLib.sol"; contract CheckpointTester { CheckpointStorage public checkpoint; diff --git a/packages/perennial/contracts/test/GlobalTester.sol b/packages/perennial/contracts/test/GlobalTester.sol index 84d3bd674..d4cbb00f2 100644 --- a/packages/perennial/contracts/test/GlobalTester.sol +++ b/packages/perennial/contracts/test/GlobalTester.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Global.sol"; +import { Global, GlobalStorage } from "../types/Global.sol"; +import { VersionAccumulationResponse } from "../libs/VersionLib.sol"; +import { MarketParameter } from "../types/MarketParameter.sol"; +import { OracleReceipt } from "../types/OracleReceipt.sol"; contract GlobalTester { GlobalStorage public global; diff --git a/packages/perennial/contracts/test/GuaranteeTester.sol b/packages/perennial/contracts/test/GuaranteeTester.sol index 5acdbf50b..f5d1cf544 100644 --- a/packages/perennial/contracts/test/GuaranteeTester.sol +++ b/packages/perennial/contracts/test/GuaranteeTester.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Guarantee.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { Guarantee, GuaranteeLib, GuaranteeStorageGlobal, GuaranteeStorageLocal } from "../types/Guarantee.sol"; +import { Order } from "../types/Order.sol"; abstract contract GuaranteeTester { function read() public virtual view returns (Guarantee memory); diff --git a/packages/perennial/contracts/test/LocalTester.sol b/packages/perennial/contracts/test/LocalTester.sol index 2cf79c726..5e15fdf88 100644 --- a/packages/perennial/contracts/test/LocalTester.sol +++ b/packages/perennial/contracts/test/LocalTester.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Local.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { Local, LocalStorage } from "../types/Local.sol"; +import { CheckpointAccumulationResponse } from "../libs/CheckpointLib.sol"; contract LocalTester { LocalStorage public local; diff --git a/packages/perennial/contracts/test/MarketParameterTester.sol b/packages/perennial/contracts/test/MarketParameterTester.sol index e9e23341d..d74181590 100644 --- a/packages/perennial/contracts/test/MarketParameterTester.sol +++ b/packages/perennial/contracts/test/MarketParameterTester.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/MarketParameter.sol"; +import { MarketParameter, MarketParameterStorage } from "../types/MarketParameter.sol"; +import { ProtocolParameter } from "../types/ProtocolParameter.sol"; contract MarketParameterTester { MarketParameterStorage public marketParameter; diff --git a/packages/perennial/contracts/test/OrderTester.sol b/packages/perennial/contracts/test/OrderTester.sol index 4d6757d14..fd54376bf 100644 --- a/packages/perennial/contracts/test/OrderTester.sol +++ b/packages/perennial/contracts/test/OrderTester.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Order.sol"; +import { Order, OrderStorageGlobal, OrderStorageLocal } from "../types/Order.sol"; +import { OracleVersion } from "../types/OracleVersion.sol"; +import { Position } from "../types/Position.sol"; +import { MarketParameter } from "../types/MarketParameter.sol"; abstract contract OrderTester { function read() public virtual view returns (Order memory); diff --git a/packages/perennial/contracts/test/PositionTester.sol b/packages/perennial/contracts/test/PositionTester.sol index 4bb1196a0..a3ebadbf0 100644 --- a/packages/perennial/contracts/test/PositionTester.sol +++ b/packages/perennial/contracts/test/PositionTester.sol @@ -1,7 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Position.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { Position, PositionStorageGlobal, PositionStorageLocal } from "../types/Position.sol"; +import { Order } from "../types/Order.sol"; +import { RiskParameter } from "../types/RiskParameter.sol"; +import { OracleVersion } from "../types/OracleVersion.sol"; + abstract contract PositionTester { function read() public view virtual returns (Position memory); diff --git a/packages/perennial/contracts/test/ProtocolParameterTester.sol b/packages/perennial/contracts/test/ProtocolParameterTester.sol index 9c7b4a090..8409b70ed 100644 --- a/packages/perennial/contracts/test/ProtocolParameterTester.sol +++ b/packages/perennial/contracts/test/ProtocolParameterTester.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/ProtocolParameter.sol"; +import { ProtocolParameter, ProtocolParameterStorage } from "../types/ProtocolParameter.sol"; contract ProtocolParameterTester { ProtocolParameterStorage public protocolParameter; diff --git a/packages/perennial/contracts/test/RiskParameterTester.sol b/packages/perennial/contracts/test/RiskParameterTester.sol index 4fa243975..1ccbc76d2 100644 --- a/packages/perennial/contracts/test/RiskParameterTester.sol +++ b/packages/perennial/contracts/test/RiskParameterTester.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/RiskParameter.sol"; +import { RiskParameter, RiskParameterStorage } from "../types/RiskParameter.sol"; +import { ProtocolParameter } from "../types/ProtocolParameter.sol"; contract RiskParameterTester { RiskParameterStorage public riskParameter; diff --git a/packages/perennial/contracts/test/VersionTester.sol b/packages/perennial/contracts/test/VersionTester.sol index c0a5c7194..d63cbd9e9 100644 --- a/packages/perennial/contracts/test/VersionTester.sol +++ b/packages/perennial/contracts/test/VersionTester.sol @@ -1,8 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Version.sol"; -import "../libs/VersionLib.sol"; +import { Version, VersionStorage } from "../types/Version.sol"; +import { Global } from "../types/Global.sol"; +import { Order } from "../types/Order.sol"; +import { Guarantee } from "../types/Guarantee.sol"; +import { OracleVersion } from "../types/OracleVersion.sol"; +import { OracleReceipt } from "../types/OracleReceipt.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; +import { VersionLib, VersionAccumulationResponse } from "../libs/VersionLib.sol"; contract VersionTester { VersionStorage public version; diff --git a/packages/perennial/contracts/types/Checkpoint.sol b/packages/perennial/contracts/types/Checkpoint.sol index 161a6f339..eae7c00a3 100644 --- a/packages/perennial/contracts/types/Checkpoint.sol +++ b/packages/perennial/contracts/types/Checkpoint.sol @@ -1,13 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "./OracleVersion.sol"; -import "./RiskParameter.sol"; -import "./Global.sol"; -import "./Local.sol"; -import "./Order.sol"; -import "./Version.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; /// @dev Checkpoint type struct Checkpoint { diff --git a/packages/perennial/contracts/types/Global.sol b/packages/perennial/contracts/types/Global.sol index 31aa9f3fc..8ec2b4c7c 100644 --- a/packages/perennial/contracts/types/Global.sol +++ b/packages/perennial/contracts/types/Global.sol @@ -1,10 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/pid/types/PAccumulator6.sol"; -import "./ProtocolParameter.sol"; -import "./MarketParameter.sol"; -import "../libs/VersionLib.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { PAccumulator6 } from "@equilibria/root/pid/types/PAccumulator6.sol"; +import { MarketParameter } from "./MarketParameter.sol"; +import { RiskParameter } from "./RiskParameter.sol"; +import { Position } from "./Position.sol"; +import { OracleVersion } from "./OracleVersion.sol"; +import { OracleReceipt } from "./OracleReceipt.sol"; +import { VersionAccumulationResponse } from "../libs/VersionLib.sol"; /// @dev Global type struct Global { diff --git a/packages/perennial/contracts/types/Guarantee.sol b/packages/perennial/contracts/types/Guarantee.sol index 793657e9e..413c88fab 100644 --- a/packages/perennial/contracts/types/Guarantee.sol +++ b/packages/perennial/contracts/types/Guarantee.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "./Order.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { Order } from "./Order.sol"; /// @dev Guarantee type struct Guarantee { diff --git a/packages/perennial/contracts/types/Local.sol b/packages/perennial/contracts/types/Local.sol index 97d46cd21..4307d77fc 100644 --- a/packages/perennial/contracts/types/Local.sol +++ b/packages/perennial/contracts/types/Local.sol @@ -1,16 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/Fixed6.sol"; -import "@equilibria/root/accumulator/types/UAccumulator6.sol"; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "./Version.sol"; -import "./Position.sol"; -import "./RiskParameter.sol"; -import "./OracleVersion.sol"; -import "./Order.sol"; -import "./Checkpoint.sol"; -import "../libs/CheckpointLib.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { CheckpointAccumulationResponse } from "../libs/CheckpointLib.sol"; /// @dev Local type struct Local { diff --git a/packages/perennial/contracts/types/MarketParameter.sol b/packages/perennial/contracts/types/MarketParameter.sol index 54bb6ad63..7e53ec2fe 100644 --- a/packages/perennial/contracts/types/MarketParameter.sol +++ b/packages/perennial/contracts/types/MarketParameter.sol @@ -1,9 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/token/types/Token18.sol"; -import "@equilibria/root/number/types/UFixed6.sol"; -import "./ProtocolParameter.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { ProtocolParameter } from "./ProtocolParameter.sol"; /// @dev MarketParameter type struct MarketParameter { diff --git a/packages/perennial/contracts/types/OracleVersion.sol b/packages/perennial/contracts/types/OracleVersion.sol index 688aed898..c5880b11b 100644 --- a/packages/perennial/contracts/types/OracleVersion.sol +++ b/packages/perennial/contracts/types/OracleVersion.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/Fixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; /// @dev A singular oracle version with its corresponding data struct OracleVersion { diff --git a/packages/perennial/contracts/types/Order.sol b/packages/perennial/contracts/types/Order.sol index 4a341b3ab..e397e756e 100644 --- a/packages/perennial/contracts/types/Order.sol +++ b/packages/perennial/contracts/types/Order.sol @@ -1,12 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "./OracleVersion.sol"; -import "./RiskParameter.sol"; -import "./Global.sol"; -import "./Local.sol"; -import "./Position.sol"; -import "./MarketParameter.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { OracleVersion } from "./OracleVersion.sol"; +import { Position } from "./Position.sol"; +import { MarketParameter } from "./MarketParameter.sol"; /// @dev Order type struct Order { diff --git a/packages/perennial/contracts/types/Position.sol b/packages/perennial/contracts/types/Position.sol index 6ee936141..a3f06f76f 100644 --- a/packages/perennial/contracts/types/Position.sol +++ b/packages/perennial/contracts/types/Position.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "./OracleVersion.sol"; -import "./RiskParameter.sol"; -import "./Global.sol"; -import "./Local.sol"; -import "./Order.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { OracleVersion } from "./OracleVersion.sol"; +import { RiskParameter } from "./RiskParameter.sol"; +import { Order } from "./Order.sol"; -/// @dev Order type +/// @dev Position type struct Position { /// @dev The timestamp of the position uint256 timestamp; diff --git a/packages/perennial/contracts/types/ProtocolParameter.sol b/packages/perennial/contracts/types/ProtocolParameter.sol index c4c4177e0..759dfbe67 100644 --- a/packages/perennial/contracts/types/ProtocolParameter.sol +++ b/packages/perennial/contracts/types/ProtocolParameter.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; /// @dev ProtocolParameter type struct ProtocolParameter { diff --git a/packages/perennial/contracts/types/RiskParameter.sol b/packages/perennial/contracts/types/RiskParameter.sol index 0b161b2cb..011609cc5 100644 --- a/packages/perennial/contracts/types/RiskParameter.sol +++ b/packages/perennial/contracts/types/RiskParameter.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; -import "@equilibria/root/utilization/types/UJumpRateUtilizationCurve6.sol"; -import "@equilibria/root/pid/types/PController6.sol"; -import "@equilibria/root/adiabatic/types/LinearAdiabatic6.sol"; -import "@equilibria/root/adiabatic/types/NoopAdiabatic6.sol"; -import "../interfaces/IOracleProvider.sol"; -import "./ProtocolParameter.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { UJumpRateUtilizationCurve6 } from "@equilibria/root/utilization/types/UJumpRateUtilizationCurve6.sol"; +import { PController6 } from "@equilibria/root/pid/types/PController6.sol"; +import { LinearAdiabatic6 } from "@equilibria/root/adiabatic/types/LinearAdiabatic6.sol"; +import { NoopAdiabatic6 } from "@equilibria/root/adiabatic/types/NoopAdiabatic6.sol"; +import { ProtocolParameter } from "./ProtocolParameter.sol"; /// @dev RiskParameter type struct RiskParameter { diff --git a/packages/perennial/contracts/types/Version.sol b/packages/perennial/contracts/types/Version.sol index 68290a95f..ce3bff937 100644 --- a/packages/perennial/contracts/types/Version.sol +++ b/packages/perennial/contracts/types/Version.sol @@ -1,13 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/accumulator/types/Accumulator6.sol"; -import "./ProtocolParameter.sol"; -import "./MarketParameter.sol"; -import "./RiskParameter.sol"; -import "./Global.sol"; -import "./Position.sol"; -import "./Order.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; +import { Accumulator6 } from "@equilibria/root/accumulator/types/Accumulator6.sol"; /// @dev Version type struct Version { From 11b52641c023104777a5d0101027e1019ead608d Mon Sep 17 00:00:00 2001 From: Kevin Britz Date: Wed, 21 Aug 2024 22:28:01 -0700 Subject: [PATCH 2/5] extension imports --- .../contracts/Coordinator.sol | 4 +++- .../contracts/MultiInvoker.sol | 22 ++++++++++++++----- .../contracts/MultiInvoker_Arbitrum.sol | 4 ++-- .../contracts/MultiInvoker_Optimism.sol | 4 ++-- .../contracts/interfaces/ICoordinator.sol | 4 ++-- .../contracts/interfaces/IMultiInvoker.sol | 18 ++++----------- .../contracts/types/InterfaceFee.sol | 3 ++- .../contracts/types/TriggerOrder.sol | 9 ++++---- 8 files changed, 36 insertions(+), 32 deletions(-) diff --git a/packages/perennial-extensions/contracts/Coordinator.sol b/packages/perennial-extensions/contracts/Coordinator.sol index 92d646fa3..b3909d2f4 100644 --- a/packages/perennial-extensions/contracts/Coordinator.sol +++ b/packages/perennial-extensions/contracts/Coordinator.sol @@ -1,8 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { RiskParameter } from "@equilibria/perennial-v2/contracts/types/RiskParameter.sol"; import { Ownable } from "@equilibria/root/attribute/Ownable.sol"; -import { ICoordinator, IMarket, RiskParameter, Token18 } from "./interfaces/ICoordinator.sol"; +import { ICoordinator } from "./interfaces/ICoordinator.sol"; /// @title Coordinator /// @notice Manages claiming fees and updating risk parameters for markets diff --git a/packages/perennial-extensions/contracts/MultiInvoker.sol b/packages/perennial-extensions/contracts/MultiInvoker.sol index 4c3e63bd7..6a9145b94 100644 --- a/packages/perennial-extensions/contracts/MultiInvoker.sol +++ b/packages/perennial-extensions/contracts/MultiInvoker.sol @@ -1,18 +1,28 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; +import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { AggregatorV3Interface } from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; import { IEmptySetReserve } from "@equilibria/emptyset-batcher/interfaces/IEmptySetReserve.sol"; -import { IFactory } from "@equilibria/root/attribute/interfaces/IFactory.sol"; import { IBatcher } from "@equilibria/emptyset-batcher/interfaces/IBatcher.sol"; import { IInstance } from "@equilibria/root/attribute/interfaces/IInstance.sol"; +import { IFactory } from "@equilibria/root/attribute/interfaces/IFactory.sol"; +import { Token6 } from "@equilibria/root/token/types/Token6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed18, UFixed18Lib } from "@equilibria/root/number/types/UFixed18.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { Fixed18, Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { Kept } from "@equilibria/root/attribute/Kept/Kept.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { Order } from "@equilibria/perennial-v2/contracts/types/Order.sol"; +import { Position } from "@equilibria/perennial-v2/contracts/types/Position.sol"; import { IPythFactory } from "@equilibria/perennial-v2-oracle/contracts/interfaces/IPythFactory.sol"; import { IVault } from "@equilibria/perennial-v2-vault/contracts/interfaces/IVault.sol"; -import "./interfaces/IMultiInvoker.sol"; -import "./types/TriggerOrder.sol"; -import "./types/InterfaceFee.sol"; -import "@equilibria/root/attribute/Kept/Kept.sol"; -import "@openzeppelin/contracts/utils/Address.sol"; +import { Intent } from "@equilibria/perennial-v2-verifier/contracts/types/Intent.sol"; +import { IMultiInvoker } from "./interfaces/IMultiInvoker.sol"; +import { TriggerOrder, TriggerOrderStorage } from "./types/TriggerOrder.sol"; +import { InterfaceFee } from "./types/InterfaceFee.sol"; /// @title MultiInvoker /// @notice Extension to handle batched calls to the Perennial protocol diff --git a/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol b/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol index fb71fb4cb..449fbe17e 100644 --- a/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol +++ b/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@equilibria/root/attribute/Kept/Kept_Arbitrum.sol"; -import "./MultiInvoker.sol"; +// import "@equilibria/root/attribute/Kept/Kept_Arbitrum.sol"; +import { MultiInvoker } from "./MultiInvoker.sol"; /// @title MultiInvoker_Arbitrum /// @notice Arbitrum Kept MultiInvoker implementation. diff --git a/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol b/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol index b70647689..6e5bf4b72 100644 --- a/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol +++ b/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@equilibria/root/attribute/Kept/Kept_Optimism.sol"; -import "./MultiInvoker.sol"; +// import "@equilibria/root/attribute/Kept/Kept_Optimism.sol"; +import { MultiInvoker } from "./MultiInvoker.sol"; /// @title MultiInvoker_Optimism /// @notice Optimism Kept MultiInvoker implementation. diff --git a/packages/perennial-extensions/contracts/interfaces/ICoordinator.sol b/packages/perennial-extensions/contracts/interfaces/ICoordinator.sol index a7d329ec2..de224c1d6 100644 --- a/packages/perennial-extensions/contracts/interfaces/ICoordinator.sol +++ b/packages/perennial-extensions/contracts/interfaces/ICoordinator.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import { Token18 } from "@equilibria/root/token/types/Token18.sol"; -import { IMarket, RiskParameter } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { RiskParameter } from "@equilibria/perennial-v2/contracts/types/RiskParameter.sol"; interface ICoordinator { function setComptroller(address comptroller) external; diff --git a/packages/perennial-extensions/contracts/interfaces/IMultiInvoker.sol b/packages/perennial-extensions/contracts/interfaces/IMultiInvoker.sol index cc76470ec..442f1983a 100644 --- a/packages/perennial-extensions/contracts/interfaces/IMultiInvoker.sol +++ b/packages/perennial-extensions/contracts/interfaces/IMultiInvoker.sol @@ -1,21 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import { - IFactory, - IMarket, - Position, - Local, - UFixed18Lib, - UFixed18, - OracleVersion, - RiskParameter -} from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; + +import { IFactory } from "@equilibria/root/attribute/interfaces/IFactory.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; import { IBatcher } from "@equilibria/emptyset-batcher/interfaces/IBatcher.sol"; import { IEmptySetReserve } from "@equilibria/emptyset-batcher/interfaces/IEmptySetReserve.sol"; -import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; -import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; -import { Token6 } from "@equilibria/root/token/types/Token6.sol"; -import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; import { TriggerOrder } from "../types/TriggerOrder.sol"; import { InterfaceFee } from "../types/InterfaceFee.sol"; diff --git a/packages/perennial-extensions/contracts/types/InterfaceFee.sol b/packages/perennial-extensions/contracts/types/InterfaceFee.sol index e8389ad65..43b96fdfd 100644 --- a/packages/perennial-extensions/contracts/types/InterfaceFee.sol +++ b/packages/perennial-extensions/contracts/types/InterfaceFee.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; + +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; /// @dev Interface fee type struct InterfaceFee { diff --git a/packages/perennial-extensions/contracts/types/TriggerOrder.sol b/packages/perennial-extensions/contracts/types/TriggerOrder.sol index 4e5e39f55..fa22b0b52 100644 --- a/packages/perennial-extensions/contracts/types/TriggerOrder.sol +++ b/packages/perennial-extensions/contracts/types/TriggerOrder.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; -import "@equilibria/perennial-v2/contracts/types/Position.sol"; -import "./InterfaceFee.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { Position } from "@equilibria/perennial-v2/contracts/types/Position.sol"; +import { InterfaceFee } from "./InterfaceFee.sol"; struct TriggerOrder { uint8 side; From 020b6916205fb6333b06d50a031efba1194baf5c Mon Sep 17 00:00:00 2001 From: Kevin Britz Date: Wed, 21 Aug 2024 23:51:07 -0700 Subject: [PATCH 3/5] oracle imports --- packages/perennial-oracle/contracts/Oracle.sol | 14 +++++++++----- .../contracts/OracleFactory.sol | 11 +++++++---- .../contracts/chainlink/ChainlinkFactory.sol | 4 ++-- .../contracts/interfaces/IChainlinkFactory.sol | 2 +- .../contracts/interfaces/IKeeperFactory.sol | 14 ++++++++------ .../contracts/interfaces/IKeeperOracle.sol | 9 +++++---- .../contracts/interfaces/IMetaQuantsFactory.sol | 4 ++-- .../contracts/interfaces/IOracle.sol | 9 +++++---- .../contracts/interfaces/IOracleFactory.sol | 10 +++++----- .../contracts/interfaces/IPayoffProvider.sol | 2 +- .../contracts/interfaces/IPythFactory.sol | 2 +- .../contracts/keeper/KeeperFactory.sol | 17 +++++++++++++---- .../contracts/keeper/KeeperOracle.sol | 16 ++++++++++++---- .../keeper/types/KeeperOracleParameter.sol | 3 +-- .../contracts/keeper/types/PriceResponse.sol | 3 ++- .../contracts/metaquants/MetaQuantsFactory.sol | 9 ++++++--- .../contracts/payoff/Inverse.sol | 4 ++-- .../contracts/payoff/PowerHalf.sol | 6 ++++-- .../contracts/payoff/PowerTwo.sol | 3 ++- .../contracts/pyth/PythFactory.sol | 12 ++++++++---- .../contracts/test/DedupTester.sol | 2 +- .../test/KeeperOracleParameterTester.sol | 2 +- .../contracts/test/MockFeeManager.sol | 4 ++-- .../contracts/test/MockVerifierProxy.sol | 2 +- .../contracts/test/OracleParameterTester.sol | 2 +- .../contracts/test/PriceResponseTester.sol | 4 +++- .../contracts/types/OracleParameter.sol | 3 +-- 27 files changed, 106 insertions(+), 67 deletions(-) diff --git a/packages/perennial-oracle/contracts/Oracle.sol b/packages/perennial-oracle/contracts/Oracle.sol index 15f19e8f7..600050c8f 100644 --- a/packages/perennial-oracle/contracts/Oracle.sol +++ b/packages/perennial-oracle/contracts/Oracle.sol @@ -1,11 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@equilibria/root/attribute/Instance.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; -import "./interfaces/IOracle.sol"; -import "./interfaces/IOracleFactory.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed18Lib } from "@equilibria/root/number/types/UFixed18.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { Instance } from "@equilibria/root/attribute/Instance.sol"; +import { IOracleProvider} from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { OracleReceipt } from "@equilibria/perennial-v2/contracts/types/OracleReceipt.sol"; +import { IOracle } from "./interfaces/IOracle.sol"; /// @title Oracle /// @notice The top-level oracle contract that implements an oracle provider interface. diff --git a/packages/perennial-oracle/contracts/OracleFactory.sol b/packages/perennial-oracle/contracts/OracleFactory.sol index 00677cdf2..aca050047 100644 --- a/packages/perennial-oracle/contracts/OracleFactory.sol +++ b/packages/perennial-oracle/contracts/OracleFactory.sol @@ -1,11 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@equilibria/root/token/types/Token18.sol"; -import "@equilibria/root/attribute/Factory.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; -import "./interfaces/IOracleFactory.sol"; +import { UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { Factory } from "@equilibria/root/attribute/Factory.sol"; +import { IOracleProvider } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { IOracleProviderFactory } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; +import { IOracleFactory } from "./interfaces/IOracleFactory.sol"; import { OracleParameter, OracleParameterStorage } from "./types/OracleParameter.sol"; +import { IOracle } from "./interfaces/IOracle.sol"; /// @title OracleFactory /// @notice Factory for creating and managing oracles diff --git a/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol b/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol index c14dc8174..d14955139 100644 --- a/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol +++ b/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "../interfaces/IChainlinkFactory.sol"; -import "../keeper/KeeperFactory.sol"; +import { IChainlinkFactory } from "../interfaces/IChainlinkFactory.sol"; +import { KeeperFactory } from "../keeper/KeeperFactory.sol"; /// @title ChainlinkFactory /// @notice Factory contract for creating and managing Chainlink oracles diff --git a/packages/perennial-oracle/contracts/interfaces/IChainlinkFactory.sol b/packages/perennial-oracle/contracts/interfaces/IChainlinkFactory.sol index 957ca819b..b7b1e5cb1 100644 --- a/packages/perennial-oracle/contracts/interfaces/IChainlinkFactory.sol +++ b/packages/perennial-oracle/contracts/interfaces/IChainlinkFactory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "./IKeeperFactory.sol"; +import { IKeeperFactory } from "./IKeeperFactory.sol"; interface IChainlinkFactory is IKeeperFactory { error ChainlinkFactoryInputLengthMismatchError(); diff --git a/packages/perennial-oracle/contracts/interfaces/IKeeperFactory.sol b/packages/perennial-oracle/contracts/interfaces/IKeeperFactory.sol index d45505c69..b7feed5dc 100644 --- a/packages/perennial-oracle/contracts/interfaces/IKeeperFactory.sol +++ b/packages/perennial-oracle/contracts/interfaces/IKeeperFactory.sol @@ -1,13 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/token/types/Token18.sol"; -import "@equilibria/root/attribute/interfaces/IFactory.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed18 } from "@equilibria/root/number/types/Fixed18.sol"; +import { IFactory } from "@equilibria/root/attribute/interfaces/IFactory.sol"; +import { IOracleProvider } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { IOracleProviderFactory } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; import { IGasOracle } from "@equilibria/root/gas/GasOracle.sol"; -import "./IKeeperOracle.sol"; -import "./IOracleFactory.sol"; -import "./IPayoffProvider.sol"; +import { IKeeperOracle } from "./IKeeperOracle.sol"; +import { IOracleFactory } from "./IOracleFactory.sol"; +import { IPayoffProvider } from "./IPayoffProvider.sol"; import { KeeperOracleParameter } from "../keeper/types/KeeperOracleParameter.sol"; interface IKeeperFactory is IOracleProviderFactory, IFactory { diff --git a/packages/perennial-oracle/contracts/interfaces/IKeeperOracle.sol b/packages/perennial-oracle/contracts/interfaces/IKeeperOracle.sol index b6b3e22db..fc80b4b44 100644 --- a/packages/perennial-oracle/contracts/interfaces/IKeeperOracle.sol +++ b/packages/perennial-oracle/contracts/interfaces/IKeeperOracle.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/attribute/interfaces/IInstance.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; -import "../Oracle.sol"; +import { IInstance } from "@equilibria/root/attribute/interfaces/IInstance.sol"; +import { IOracleProvider } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { IOracle } from "../Oracle.sol"; import { PriceResponse } from "../keeper/types/PriceResponse.sol"; interface IKeeperOracle is IOracleProvider, IInstance { diff --git a/packages/perennial-oracle/contracts/interfaces/IMetaQuantsFactory.sol b/packages/perennial-oracle/contracts/interfaces/IMetaQuantsFactory.sol index 85c53540d..d55a3ec79 100644 --- a/packages/perennial-oracle/contracts/interfaces/IMetaQuantsFactory.sol +++ b/packages/perennial-oracle/contracts/interfaces/IMetaQuantsFactory.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; -import "./IKeeperFactory.sol"; +import { PythStructs } from "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; +import { IKeeperFactory } from "./IKeeperFactory.sol"; interface IMetaQuantsFactory is IKeeperFactory { struct UpdateAndSignature { diff --git a/packages/perennial-oracle/contracts/interfaces/IOracle.sol b/packages/perennial-oracle/contracts/interfaces/IOracle.sol index c1692739c..b168cf24b 100644 --- a/packages/perennial-oracle/contracts/interfaces/IOracle.sol +++ b/packages/perennial-oracle/contracts/interfaces/IOracle.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; -import "@equilibria/root/token/types/Token18.sol"; -import "@equilibria/root/attribute/interfaces/IInstance.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { IInstance } from "@equilibria/root/attribute/interfaces/IInstance.sol"; +import { IOracleProvider } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; interface IOracle is IOracleProvider, IInstance { // sig: 0x8852e53b diff --git a/packages/perennial-oracle/contracts/interfaces/IOracleFactory.sol b/packages/perennial-oracle/contracts/interfaces/IOracleFactory.sol index b703f501e..10fcb081a 100644 --- a/packages/perennial-oracle/contracts/interfaces/IOracleFactory.sol +++ b/packages/perennial-oracle/contracts/interfaces/IOracleFactory.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/token/types/Token18.sol"; -import "@equilibria/root/attribute/interfaces/IFactory.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; -import "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; -import "./IOracle.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { IFactory } from "@equilibria/root/attribute/interfaces/IFactory.sol"; +import { IOracleProvider } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { IOracleProviderFactory } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProviderFactory.sol"; +import { IOracle } from "./IOracle.sol"; import { OracleParameter } from "../types/OracleParameter.sol"; interface IOracleFactory is IOracleProviderFactory, IFactory { diff --git a/packages/perennial-oracle/contracts/interfaces/IPayoffProvider.sol b/packages/perennial-oracle/contracts/interfaces/IPayoffProvider.sol index 4d6b975de..b7c3d4714 100644 --- a/packages/perennial-oracle/contracts/interfaces/IPayoffProvider.sol +++ b/packages/perennial-oracle/contracts/interfaces/IPayoffProvider.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/Fixed18.sol"; +import { Fixed18 } from "@equilibria/root/number/types/Fixed18.sol"; interface IPayoffProvider { function payoff(Fixed18 price) external pure returns (Fixed18 payoff); diff --git a/packages/perennial-oracle/contracts/interfaces/IPythFactory.sol b/packages/perennial-oracle/contracts/interfaces/IPythFactory.sol index 50fc8c952..d3543924a 100644 --- a/packages/perennial-oracle/contracts/interfaces/IPythFactory.sol +++ b/packages/perennial-oracle/contracts/interfaces/IPythFactory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "./IKeeperFactory.sol"; +import { IKeeperFactory } from "./IKeeperFactory.sol"; interface IPythFactory is IKeeperFactory { // sig: 0x22445848 diff --git a/packages/perennial-oracle/contracts/keeper/KeeperFactory.sol b/packages/perennial-oracle/contracts/keeper/KeeperFactory.sol index c8cb19b2b..457fab98a 100644 --- a/packages/perennial-oracle/contracts/keeper/KeeperFactory.sol +++ b/packages/perennial-oracle/contracts/keeper/KeeperFactory.sol @@ -1,12 +1,21 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@openzeppelin/contracts/utils/math/SafeCast.sol"; -import "@equilibria/root/attribute/Factory.sol"; +import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; +import { SignedMath } from "@openzeppelin/contracts/utils/math/SignedMath.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { Fixed18, Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { Factory } from "@equilibria/root/attribute/Factory.sol"; import { IGasOracle } from "@equilibria/root/gas/GasOracle.sol"; -import "../interfaces/IKeeperFactory.sol"; -import "../interfaces/IOracleFactory.sol"; +import { IOracleProvider } from "@equilibria/perennial-v2/contracts/interfaces/IOracleProvider.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { IKeeperOracle } from "../interfaces/IKeeperOracle.sol"; +import { IKeeperFactory } from "../interfaces/IKeeperFactory.sol"; +import { IOracleFactory } from "../interfaces/IOracleFactory.sol"; +import { IPayoffProvider } from "../interfaces/IPayoffProvider.sol"; import { KeeperOracleParameter, KeeperOracleParameterStorage } from "./types/KeeperOracleParameter.sol"; +import { OracleParameter } from "../types/OracleParameter.sol"; import { DedupLib } from "./libs/DedupLib.sol"; /// @title KeeperFactory diff --git a/packages/perennial-oracle/contracts/keeper/KeeperOracle.sol b/packages/perennial-oracle/contracts/keeper/KeeperOracle.sol index a6b6b6269..5a2e3c831 100644 --- a/packages/perennial-oracle/contracts/keeper/KeeperOracle.sol +++ b/packages/perennial-oracle/contracts/keeper/KeeperOracle.sol @@ -1,12 +1,20 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@openzeppelin/contracts/utils/math/SafeCast.sol"; -import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; -import "@equilibria/root/attribute/Instance.sol"; +// import "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import { EnumerableSet } from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; +import { UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed18Lib } from "@equilibria/root/number/types/UFixed18.sol"; +import { Instance } from "@equilibria/root/attribute/Instance.sol"; import { IGasOracle } from "@equilibria/root/gas/GasOracle.sol"; -import "../interfaces/IKeeperFactory.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { OracleReceipt } from "@equilibria/perennial-v2/contracts/types/OracleReceipt.sol"; +import { IKeeperFactory } from "../interfaces/IKeeperFactory.sol"; +import { IKeeperOracle } from "../interfaces/IKeeperOracle.sol"; import { PriceResponse, PriceResponseStorage, PriceResponseLib } from "./types/PriceResponse.sol"; +import { KeeperOracleParameter } from "./types/KeeperOracleParameter.sol"; +import { IOracle } from "../interfaces/IOracle.sol"; /// @title KeeperOracle /// @notice Generic implementation of the IOracle interface for keeper-based oracles. diff --git a/packages/perennial-oracle/contracts/keeper/types/KeeperOracleParameter.sol b/packages/perennial-oracle/contracts/keeper/types/KeeperOracleParameter.sol index 03bb66581..272c4c8f3 100644 --- a/packages/perennial-oracle/contracts/keeper/types/KeeperOracleParameter.sol +++ b/packages/perennial-oracle/contracts/keeper/types/KeeperOracleParameter.sol @@ -1,8 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; -import "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; struct KeeperOracleParameter { /// @dev The latest granularity setting in seconds diff --git a/packages/perennial-oracle/contracts/keeper/types/PriceResponse.sol b/packages/perennial-oracle/contracts/keeper/types/PriceResponse.sol index 877017033..027eac890 100644 --- a/packages/perennial-oracle/contracts/keeper/types/PriceResponse.sol +++ b/packages/perennial-oracle/contracts/keeper/types/PriceResponse.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; import { OracleReceipt } from "@equilibria/perennial-v2/contracts/types/OracleReceipt.sol"; diff --git a/packages/perennial-oracle/contracts/metaquants/MetaQuantsFactory.sol b/packages/perennial-oracle/contracts/metaquants/MetaQuantsFactory.sol index b6fffc3e9..ceebdfb81 100644 --- a/packages/perennial-oracle/contracts/metaquants/MetaQuantsFactory.sol +++ b/packages/perennial-oracle/contracts/metaquants/MetaQuantsFactory.sol @@ -1,9 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import "../interfaces/IMetaQuantsFactory.sol"; -import "../keeper/KeeperFactory.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import { SignedMath } from "@openzeppelin/contracts/utils/math/SignedMath.sol"; +import { Fixed18, Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { IGasOracle } from "@equilibria/root/gas/GasOracle.sol"; +import { IMetaQuantsFactory } from "../interfaces/IMetaQuantsFactory.sol"; +import { KeeperFactory } from "../keeper/KeeperFactory.sol"; contract MetaQuantsFactory is IMetaQuantsFactory, KeeperFactory { int32 private constant PARSE_DECIMALS = 18; diff --git a/packages/perennial-oracle/contracts/payoff/Inverse.sol b/packages/perennial-oracle/contracts/payoff/Inverse.sol index 6d424be13..3670ce3e8 100644 --- a/packages/perennial-oracle/contracts/payoff/Inverse.sol +++ b/packages/perennial-oracle/contracts/payoff/Inverse.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@openzeppelin/contracts/utils/math/Math.sol"; -import "../interfaces/IPayoffProvider.sol"; +import { Fixed18, Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { IPayoffProvider } from "../interfaces/IPayoffProvider.sol"; contract Inverse is IPayoffProvider { function payoff(Fixed18 price) external pure override returns (Fixed18) { diff --git a/packages/perennial-oracle/contracts/payoff/PowerHalf.sol b/packages/perennial-oracle/contracts/payoff/PowerHalf.sol index ffea82d61..31f59c4c8 100644 --- a/packages/perennial-oracle/contracts/payoff/PowerHalf.sol +++ b/packages/perennial-oracle/contracts/payoff/PowerHalf.sol @@ -1,8 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@openzeppelin/contracts/utils/math/Math.sol"; -import "../interfaces/IPayoffProvider.sol"; +import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; +import { UFixed18 } from "@equilibria/root/number/types/UFixed18.sol"; +import { Fixed18, Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { IPayoffProvider } from "../interfaces/IPayoffProvider.sol"; contract PowerHalf is IPayoffProvider { uint256 private constant BASE = 1e18; diff --git a/packages/perennial-oracle/contracts/payoff/PowerTwo.sol b/packages/perennial-oracle/contracts/payoff/PowerTwo.sol index f8e2517c0..0fd40fbe7 100644 --- a/packages/perennial-oracle/contracts/payoff/PowerTwo.sol +++ b/packages/perennial-oracle/contracts/payoff/PowerTwo.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "../interfaces/IPayoffProvider.sol"; +import { Fixed18 } from "@equilibria/root/number/types/Fixed18.sol"; +import { IPayoffProvider } from "../interfaces/IPayoffProvider.sol"; contract PowerTwo is IPayoffProvider { function payoff(Fixed18 price) external pure override returns (Fixed18) { diff --git a/packages/perennial-oracle/contracts/pyth/PythFactory.sol b/packages/perennial-oracle/contracts/pyth/PythFactory.sol index 7f6b36971..9eaf51ae7 100644 --- a/packages/perennial-oracle/contracts/pyth/PythFactory.sol +++ b/packages/perennial-oracle/contracts/pyth/PythFactory.sol @@ -1,10 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@openzeppelin/contracts/utils/math/SafeCast.sol"; -import "@pythnetwork/pyth-sdk-solidity/AbstractPyth.sol"; -import "../interfaces/IPythFactory.sol"; -import "../keeper/KeeperFactory.sol"; +import { SignedMath } from "@openzeppelin/contracts/utils/math/SignedMath.sol"; +import { IGasOracle } from "@equilibria/root/gas/GasOracle.sol"; +import { Fixed18, Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { AbstractPyth, PythStructs } from "@pythnetwork/pyth-sdk-solidity/AbstractPyth.sol"; +import { IPythFactory, IPythStaticFee } from "../interfaces/IPythFactory.sol"; +import { IKeeperOracle } from "../interfaces/IKeeperOracle.sol"; +import { IKeeperFactory } from "../interfaces/IKeeperFactory.sol"; +import { KeeperFactory } from "../keeper/KeeperFactory.sol"; /// @title PythFactory /// @notice Factory contract for creating and managing Pyth oracles diff --git a/packages/perennial-oracle/contracts/test/DedupTester.sol b/packages/perennial-oracle/contracts/test/DedupTester.sol index a98a35297..749e86f2d 100644 --- a/packages/perennial-oracle/contracts/test/DedupTester.sol +++ b/packages/perennial-oracle/contracts/test/DedupTester.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../keeper/libs/DedupLib.sol"; +import { DedupLib } from "../keeper/libs/DedupLib.sol"; contract DedupTester { function dedup(bytes32[] memory ids) external pure returns (bytes32[] memory dedupedIds, uint256[] memory indices) { diff --git a/packages/perennial-oracle/contracts/test/KeeperOracleParameterTester.sol b/packages/perennial-oracle/contracts/test/KeeperOracleParameterTester.sol index 0f8ba1633..110ca130d 100644 --- a/packages/perennial-oracle/contracts/test/KeeperOracleParameterTester.sol +++ b/packages/perennial-oracle/contracts/test/KeeperOracleParameterTester.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../keeper/types/KeeperOracleParameter.sol"; +import { KeeperOracleParameter, KeeperOracleParameterStorage } from "../keeper/types/KeeperOracleParameter.sol"; contract KeeperOracleParameterTester { KeeperOracleParameterStorage public kreeperOracleParameter; diff --git a/packages/perennial-oracle/contracts/test/MockFeeManager.sol b/packages/perennial-oracle/contracts/test/MockFeeManager.sol index d65aa1963..357e8ed9f 100644 --- a/packages/perennial-oracle/contracts/test/MockFeeManager.sol +++ b/packages/perennial-oracle/contracts/test/MockFeeManager.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../interfaces/IChainlinkFactory.sol"; +import { IFeeManager, Asset } from "../interfaces/IChainlinkFactory.sol"; -contract MockFeeManager is IFeeManager{ +contract MockFeeManager is IFeeManager { address public immutable nativeAddress; constructor(address nativeAddress_) { diff --git a/packages/perennial-oracle/contracts/test/MockVerifierProxy.sol b/packages/perennial-oracle/contracts/test/MockVerifierProxy.sol index dfdc85c3a..eb03b95c7 100644 --- a/packages/perennial-oracle/contracts/test/MockVerifierProxy.sol +++ b/packages/perennial-oracle/contracts/test/MockVerifierProxy.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "./MockFeeManager.sol"; +import { MockFeeManager } from "./MockFeeManager.sol"; contract MockVerifierProxy { MockFeeManager public immutable mockFeeManager; diff --git a/packages/perennial-oracle/contracts/test/OracleParameterTester.sol b/packages/perennial-oracle/contracts/test/OracleParameterTester.sol index b5c2fbd73..93ff06472 100644 --- a/packages/perennial-oracle/contracts/test/OracleParameterTester.sol +++ b/packages/perennial-oracle/contracts/test/OracleParameterTester.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/OracleParameter.sol"; +import { OracleParameter, OracleParameterStorage } from "../types/OracleParameter.sol"; contract OracleParameterTester { OracleParameterStorage public oracleParameter; diff --git a/packages/perennial-oracle/contracts/test/PriceResponseTester.sol b/packages/perennial-oracle/contracts/test/PriceResponseTester.sol index 1344f5d69..34aa0c7fb 100644 --- a/packages/perennial-oracle/contracts/test/PriceResponseTester.sol +++ b/packages/perennial-oracle/contracts/test/PriceResponseTester.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../keeper/types/PriceResponse.sol"; +import { PriceResponse, PriceResponseLib, PriceResponseStorage } from "../keeper/types/PriceResponse.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { OracleReceipt } from "@equilibria/perennial-v2/contracts/types/OracleReceipt.sol"; contract PriceResponseTester { PriceResponseStorage public priceResponse; diff --git a/packages/perennial-oracle/contracts/types/OracleParameter.sol b/packages/perennial-oracle/contracts/types/OracleParameter.sol index 05f9796ce..ea16b3476 100644 --- a/packages/perennial-oracle/contracts/types/OracleParameter.sol +++ b/packages/perennial-oracle/contracts/types/OracleParameter.sol @@ -1,8 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; -import "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; struct OracleParameter { /// @dev The cap for the granularity setting in seconds From b466008eecda02c95c36edcb86541cb9c3a356da Mon Sep 17 00:00:00 2001 From: Kevin Britz Date: Thu, 22 Aug 2024 00:17:24 -0700 Subject: [PATCH 4/5] finish imports --- .../contracts/MultiInvoker_Arbitrum.sol | 8 +++++- .../contracts/MultiInvoker_Optimism.sol | 8 +++++- .../contracts/chainlink/ChainlinkFactory.sol | 6 ++++- packages/perennial-vault/contracts/Vault.sol | 26 ++++++++++++------- .../contracts/VaultFactory.sol | 13 ++++++---- .../contracts/interfaces/IVault.sol | 3 ++- .../contracts/libs/StrategyLib.sol | 17 +++++------- .../contracts/test/AccountTester.sol | 4 ++- .../contracts/test/CheckpointTester.sol | 5 +++- .../contracts/test/RegistrationTester.sol | 2 +- .../contracts/test/VaultParameterTest.sol | 2 +- .../contracts/types/Account.sol | 4 +-- .../contracts/types/Checkpoint.sol | 2 +- .../contracts/types/Registration.sol | 2 +- .../contracts/types/VaultParameter.sol | 2 +- 15 files changed, 67 insertions(+), 37 deletions(-) diff --git a/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol b/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol index 449fbe17e..10d38fa46 100644 --- a/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol +++ b/packages/perennial-extensions/contracts/MultiInvoker_Arbitrum.sol @@ -1,7 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -// import "@equilibria/root/attribute/Kept/Kept_Arbitrum.sol"; +import { UFixed18 } from "@equilibria/root/number/types/UFixed18.sol"; +import { Token6 } from "@equilibria/root/token/types/Token6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { IFactory } from "@equilibria/root/attribute/Factory.sol"; +import { Kept, Kept_Arbitrum } from "@equilibria/root/attribute/Kept/Kept_Arbitrum.sol"; +import { IEmptySetReserve } from "@equilibria/emptyset-batcher/interfaces/IEmptySetReserve.sol"; +import { IBatcher } from "@equilibria/emptyset-batcher/interfaces/IBatcher.sol"; import { MultiInvoker } from "./MultiInvoker.sol"; /// @title MultiInvoker_Arbitrum diff --git a/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol b/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol index 6e5bf4b72..19fe45d00 100644 --- a/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol +++ b/packages/perennial-extensions/contracts/MultiInvoker_Optimism.sol @@ -1,7 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -// import "@equilibria/root/attribute/Kept/Kept_Optimism.sol"; +import { UFixed18 } from "@equilibria/root/number/types/UFixed18.sol"; +import { Token6 } from "@equilibria/root/token/types/Token6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { IFactory } from "@equilibria/root/attribute/Factory.sol"; +import { Kept, Kept_Optimism } from "@equilibria/root/attribute/Kept/Kept_Optimism.sol"; +import { IEmptySetReserve } from "@equilibria/emptyset-batcher/interfaces/IEmptySetReserve.sol"; +import { IBatcher } from "@equilibria/emptyset-batcher/interfaces/IBatcher.sol"; import { MultiInvoker } from "./MultiInvoker.sol"; /// @title MultiInvoker_Optimism diff --git a/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol b/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol index d14955139..255d66c7e 100644 --- a/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol +++ b/packages/perennial-oracle/contracts/chainlink/ChainlinkFactory.sol @@ -1,7 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import { IChainlinkFactory } from "../interfaces/IChainlinkFactory.sol"; +import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; +import { UFixed18 } from "@equilibria/root/number/types/UFixed18.sol"; +import { Fixed18Lib } from "@equilibria/root/number/types/Fixed18.sol"; +import { IGasOracle } from "@equilibria/root/gas/GasOracle.sol"; +import { IChainlinkFactory, IVerifierProxy, IFeeManager } from "../interfaces/IChainlinkFactory.sol"; import { KeeperFactory } from "../keeper/KeeperFactory.sol"; /// @title ChainlinkFactory diff --git a/packages/perennial-vault/contracts/Vault.sol b/packages/perennial-vault/contracts/Vault.sol index f2cb5e954..5bcc77f5b 100644 --- a/packages/perennial-vault/contracts/Vault.sol +++ b/packages/perennial-vault/contracts/Vault.sol @@ -1,15 +1,23 @@ //SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@equilibria/root/attribute/Instance.sol"; -import "@openzeppelin/contracts/utils/math/Math.sol"; -import "./interfaces/IVaultFactory.sol"; -import "./types/Account.sol"; -import "./types/Checkpoint.sol"; -import "./types/Registration.sol"; -import "./types/VaultParameter.sol"; -import "./interfaces/IVault.sol"; -import "./libs/StrategyLib.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed18Lib } from "@equilibria/root/number/types/UFixed18.sol"; +import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { Instance } from "@equilibria/root/attribute/Instance.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { Checkpoint as PerennialCheckpoint } from "@equilibria/perennial-v2/contracts/types/Checkpoint.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { Local } from "@equilibria/perennial-v2/contracts/types/Local.sol"; +import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; +import { IVault } from "./interfaces/IVault.sol"; +import { IVaultFactory } from "./interfaces/IVaultFactory.sol"; +import { Account, AccountStorage } from "./types/Account.sol"; +import { Checkpoint, CheckpointStorage } from "./types/Checkpoint.sol"; +import { Registration, RegistrationStorage } from "./types/Registration.sol"; +import { VaultParameter, VaultParameterStorage } from "./types/VaultParameter.sol"; +import { StrategyLib } from "./libs/StrategyLib.sol"; /// @title Vault /// @notice Deploys underlying capital by weight in maker positions across registered markets diff --git a/packages/perennial-vault/contracts/VaultFactory.sol b/packages/perennial-vault/contracts/VaultFactory.sol index dc9df3c65..b34e55433 100644 --- a/packages/perennial-vault/contracts/VaultFactory.sol +++ b/packages/perennial-vault/contracts/VaultFactory.sol @@ -1,11 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import "@equilibria/root/attribute/Ownable.sol"; -import "@equilibria/root/attribute/Factory.sol"; -import "@equilibria/root/attribute/Pausable.sol"; -import "./interfaces/IVaultFactory.sol"; -import { VaultParameter } from "./types/VaultParameter.sol"; +import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed18Lib } from "@equilibria/root/number/types/UFixed18.sol"; +import { Token18 } from "@equilibria/root/token/types/Token18.sol"; +import { Factory } from "@equilibria/root/attribute/Factory.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { IMarketFactory } from "@equilibria/perennial-v2/contracts/interfaces/IMarketFactory.sol"; +import { IVault } from "./interfaces/IVault.sol"; +import { IVaultFactory } from "./interfaces/IVaultFactory.sol"; /// @title VaultFactory /// @notice Manages creating new markets and global protocol parameters. diff --git a/packages/perennial-vault/contracts/interfaces/IVault.sol b/packages/perennial-vault/contracts/interfaces/IVault.sol index 8de6eb560..5a71395ec 100644 --- a/packages/perennial-vault/contracts/interfaces/IVault.sol +++ b/packages/perennial-vault/contracts/interfaces/IVault.sol @@ -1,7 +1,8 @@ //SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import { IMarket, Checkpoint as PerennialCheckpoint } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { Checkpoint as PerennialCheckpoint } from "@equilibria/perennial-v2/contracts/types/Checkpoint.sol"; import { IInstance } from "@equilibria/root/attribute/interfaces/IInstance.sol"; import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; diff --git a/packages/perennial-vault/contracts/libs/StrategyLib.sol b/packages/perennial-vault/contracts/libs/StrategyLib.sol index c756e6125..20b9704ee 100644 --- a/packages/perennial-vault/contracts/libs/StrategyLib.sol +++ b/packages/perennial-vault/contracts/libs/StrategyLib.sol @@ -3,16 +3,13 @@ pragma solidity ^0.8.13; import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; -import { - MarketParameter, - RiskParameter, - Local, - Global, - Position, - PositionLib, - Order, - OracleVersion -} from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { MarketParameter } from "@equilibria/perennial-v2/contracts/types/MarketParameter.sol"; +import { RiskParameter } from "@equilibria/perennial-v2/contracts/types/RiskParameter.sol"; +import { Local } from "@equilibria/perennial-v2/contracts/types/Local.sol"; +import { Global } from "@equilibria/perennial-v2/contracts/types/Global.sol"; +import { Position, PositionLib } from "@equilibria/perennial-v2/contracts/types/Position.sol"; +import { Order } from "@equilibria/perennial-v2/contracts/types/Order.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; import { Registration } from "../types/Registration.sol"; /// @dev The context of an underlying market diff --git a/packages/perennial-vault/contracts/test/AccountTester.sol b/packages/perennial-vault/contracts/test/AccountTester.sol index 59f970b27..dc7ee7d1f 100644 --- a/packages/perennial-vault/contracts/test/AccountTester.sol +++ b/packages/perennial-vault/contracts/test/AccountTester.sol @@ -1,7 +1,9 @@ // // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Account.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Account, AccountStorage } from "../types/Account.sol"; +import { Checkpoint } from "../types/Checkpoint.sol"; contract AccountTester { AccountStorage public account; diff --git a/packages/perennial-vault/contracts/test/CheckpointTester.sol b/packages/perennial-vault/contracts/test/CheckpointTester.sol index 9328af5aa..029f86c06 100644 --- a/packages/perennial-vault/contracts/test/CheckpointTester.sol +++ b/packages/perennial-vault/contracts/test/CheckpointTester.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Checkpoint.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; +import { Checkpoint as PerennialCheckpoint } from "@equilibria/perennial-v2/contracts/types/Checkpoint.sol"; +import { Checkpoint, CheckpointStorage } from "../types/Checkpoint.sol"; +import { Account } from "../types/Account.sol"; contract CheckpointTester { CheckpointStorage public checkpoint; diff --git a/packages/perennial-vault/contracts/test/RegistrationTester.sol b/packages/perennial-vault/contracts/test/RegistrationTester.sol index 256cfbf0d..c9c9d7eb1 100644 --- a/packages/perennial-vault/contracts/test/RegistrationTester.sol +++ b/packages/perennial-vault/contracts/test/RegistrationTester.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/Registration.sol"; +import { Registration, RegistrationStorage } from "../types/Registration.sol"; contract RegistrationTester { RegistrationStorage public registration; diff --git a/packages/perennial-vault/contracts/test/VaultParameterTest.sol b/packages/perennial-vault/contracts/test/VaultParameterTest.sol index f06942c28..6bd7e3472 100644 --- a/packages/perennial-vault/contracts/test/VaultParameterTest.sol +++ b/packages/perennial-vault/contracts/test/VaultParameterTest.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "../types/VaultParameter.sol"; +import { VaultParameter, VaultParameterStorage } from "../types/VaultParameter.sol"; contract VaultParameterTester { VaultParameterStorage public vaultParameter; diff --git a/packages/perennial-vault/contracts/types/Account.sol b/packages/perennial-vault/contracts/types/Account.sol index 63085df50..5274086e9 100644 --- a/packages/perennial-vault/contracts/types/Account.sol +++ b/packages/perennial-vault/contracts/types/Account.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; -import "./Checkpoint.sol"; +import { UFixed6 } from"@equilibria/root/number/types/UFixed6.sol"; +import { Checkpoint } from "./Checkpoint.sol"; /// @dev Account type struct Account { diff --git a/packages/perennial-vault/contracts/types/Checkpoint.sol b/packages/perennial-vault/contracts/types/Checkpoint.sol index c788fc27a..390d4d221 100644 --- a/packages/perennial-vault/contracts/types/Checkpoint.sol +++ b/packages/perennial-vault/contracts/types/Checkpoint.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.13; import { UFixed6, UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; import { Fixed6, Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; -import { Checkpoint as PerennialCheckpoint } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { Checkpoint as PerennialCheckpoint } from "@equilibria/perennial-v2/contracts/types/Checkpoint.sol"; import { Account } from "./Account.sol"; /// @dev Checkpoint type diff --git a/packages/perennial-vault/contracts/types/Registration.sol b/packages/perennial-vault/contracts/types/Registration.sol index 8dce8eb7c..2e9751b4f 100644 --- a/packages/perennial-vault/contracts/types/Registration.sol +++ b/packages/perennial-vault/contracts/types/Registration.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.13; import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; -import "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; /// @dev Registration type struct Registration { diff --git a/packages/perennial-vault/contracts/types/VaultParameter.sol b/packages/perennial-vault/contracts/types/VaultParameter.sol index 2c639e746..4acaa363f 100644 --- a/packages/perennial-vault/contracts/types/VaultParameter.sol +++ b/packages/perennial-vault/contracts/types/VaultParameter.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import "@equilibria/root/number/types/UFixed6.sol"; +import { UFixed6 } from "@equilibria/root/number/types/UFixed6.sol"; /// @dev VaultParameter type struct VaultParameter { From 55c8152e175b8058a09cd3cfc845e295ea7641cf Mon Sep 17 00:00:00 2001 From: Kevin Britz Date: Tue, 15 Oct 2024 21:43:53 -0700 Subject: [PATCH 5/5] more cleanup --- .../contracts/keeper/KeeperOracle_Migration.sol | 4 +++- packages/perennial/contracts/test/MockToken.sol | 13 ++++++++----- packages/perennial/contracts/test/OrderTester.sol | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/perennial-oracle/contracts/keeper/KeeperOracle_Migration.sol b/packages/perennial-oracle/contracts/keeper/KeeperOracle_Migration.sol index 7326c6844..d48bbf037 100644 --- a/packages/perennial-oracle/contracts/keeper/KeeperOracle_Migration.sol +++ b/packages/perennial-oracle/contracts/keeper/KeeperOracle_Migration.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.24; -import {IMarket, OracleVersion, OracleReceipt } from "../interfaces/IKeeperFactory.sol"; +import { IMarket } from "@equilibria/perennial-v2/contracts/interfaces/IMarket.sol"; +import { OracleVersion } from "@equilibria/perennial-v2/contracts/types/OracleVersion.sol"; +import { OracleReceipt } from "@equilibria/perennial-v2/contracts/types/OracleReceipt.sol"; import { PriceResponse } from "./types/PriceResponse.sol"; import { KeeperOracle } from "./KeeperOracle.sol"; diff --git a/packages/perennial/contracts/test/MockToken.sol b/packages/perennial/contracts/test/MockToken.sol index 2c8262f02..b2461ac22 100644 --- a/packages/perennial/contracts/test/MockToken.sol +++ b/packages/perennial/contracts/test/MockToken.sol @@ -1,14 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; -import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import {Intent} from "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; - -import "../interfaces/IMarket.sol"; +import { UFixed6Lib } from "@equilibria/root/number/types/UFixed6.sol"; +import { Fixed6Lib } from "@equilibria/root/number/types/Fixed6.sol"; +import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { Intent } from "@equilibria/perennial-v2-verifier/contracts/interfaces/IVerifier.sol"; +import { IMarket } from "../interfaces/IMarket.sol"; contract MockToken is ERC20 { - enum Function{SETTLE, UPDATE, UPDATE_MAKER, UPDATE_INTENT} + enum Function{ SETTLE, UPDATE, UPDATE_MAKER, UPDATE_INTENT } Function private functionToCall; @@ -26,6 +27,8 @@ contract MockToken is ERC20 { } else if (functionToCall == Function.SETTLE){ IMarket(msg.sender).settle(address(0)); } + + return true; } function setFunctionToCall(Function _functionToCall) external { diff --git a/packages/perennial/contracts/test/OrderTester.sol b/packages/perennial/contracts/test/OrderTester.sol index f0e481157..30239522b 100644 --- a/packages/perennial/contracts/test/OrderTester.sol +++ b/packages/perennial/contracts/test/OrderTester.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; +import { Fixed6 } from "@equilibria/root/number/types/Fixed6.sol"; import { Order, OrderStorageGlobal, OrderStorageLocal } from "../types/Order.sol"; import { OracleVersion } from "../types/OracleVersion.sol"; import { Position } from "../types/Position.sol";