diff --git a/py_order_utils/abi/LimitOrderProtocol.json b/py_order_utils/abi/LimitOrderProtocol.json index b203e5b..c825ac7 100644 --- a/py_order_utils/abi/LimitOrderProtocol.json +++ b/py_order_utils/abi/LimitOrderProtocol.json @@ -21,22 +21,83 @@ { "anonymous": false, "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "orderHash", + "type": "bytes32" + }, { "indexed": true, "internalType": "address", - "name": "maker", + "name": "canceller", "type": "address" - }, + } + ], + "name": "OrderCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "indexed": false, + "indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { + "indexed": true, + "internalType": "address", + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "taker", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "makerAsset", + "type": "address" + }, { "indexed": false, "internalType": "uint256", - "name": "remaining", + "name": "makerAssetID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "takerAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "takerAssetID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "makerAmountFilled", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "takerAmountFilled", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "remainingAmount", "type": "uint256" } ], @@ -82,21 +143,27 @@ "type": "event" }, { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ + "anonymous": false, + "inputs": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "indexed": false, + "internalType": "address", + "name": "oldFactory", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newFactory", + "type": "address" } ], - "stateMutability": "view", - "type": "function" + "name": "SafeFactoryChanged", + "type": "event" }, { "inputs": [], - "name": "LIMIT_ORDER_RFQ_TYPEHASH", + "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", @@ -170,131 +237,114 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "arbitraryStaticCall", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { "components": [ { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "address", - "name": "makerAsset", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAsset", - "type": "address" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "getMakerAmount", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "getTakerAmount", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "predicate", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "permit", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "interaction", - "type": "bytes" - }, - { - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "sigType", - "type": "uint256" + "components": [ + { + "internalType": "uint256", + "name": "salt", + "type": "uint256" + }, + { + "internalType": "address", + "name": "makerAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "takerAsset", + "type": "address" + }, + { + "internalType": "bytes", + "name": "makerAssetData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "takerAssetData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "getMakerAmount", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "getTakerAmount", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "predicate", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "permit", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "interaction", + "type": "bytes" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sigType", + "type": "uint256" + } + ], + "internalType": "struct Orders.LimitOrder[]", + "name": "orders", + "type": "tuple[]" + }, + { + "internalType": "bytes[]", + "name": "signatures", + "type": "bytes[]" + }, + { + "internalType": "uint256[]", + "name": "makingAmounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "takingAmounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "thresholdAmounts", + "type": "uint256[]" } ], - "internalType": "struct OrderTypes.LimitOrder[]", - "name": "orders", - "type": "tuple[]" - }, - { - "internalType": "bytes[]", - "name": "signatures", - "type": "bytes[]" - }, - { - "internalType": "uint256[]", - "name": "makingAmounts", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "takingAmounts", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "thresholdAmounts", - "type": "uint256[]" + "internalType": "struct Orders.LimitOrderFillData", + "name": "fillData", + "type": "tuple" } ], "name": "batchFillOrders", "outputs": [ { - "internalType": "uint256[]", + "internalType": "uint256", "name": "", - "type": "uint256[]" + "type": "uint256" }, { - "internalType": "uint256[]", + "internalType": "uint256", "name": "", - "type": "uint256[]" + "type": "uint256" } ], "stateMutability": "nonpayable", @@ -365,7 +415,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" } @@ -440,7 +490,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" } @@ -456,40 +506,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "contract AggregatorV3Interface", - "name": "oracle1", - "type": "address" - }, - { - "internalType": "contract AggregatorV3Interface", - "name": "oracle2", - "type": "address" - }, - { - "internalType": "uint256", - "name": "spread", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "doublePrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -584,7 +600,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" }, @@ -690,7 +706,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" }, @@ -801,7 +817,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" }, @@ -1126,7 +1142,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" } @@ -1192,7 +1208,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.MarketOrder", + "internalType": "struct Orders.MarketOrder", "name": "order", "type": "tuple" } @@ -1414,6 +1430,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "safeFactory", + "outputs": [ + { + "internalType": "contract ISafeFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1430,17 +1459,12 @@ { "inputs": [ { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "bytes[]", - "name": "data", - "type": "bytes[]" + "internalType": "address", + "name": "factoryAddress", + "type": "address" } ], - "name": "simulateCalls", + "name": "setSafeFactory", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1448,30 +1472,19 @@ { "inputs": [ { - "internalType": "contract AggregatorV3Interface", - "name": "oracle", - "type": "address" - }, - { - "internalType": "uint256", - "name": "inverseAndSpread", - "type": "uint256" + "internalType": "address[]", + "name": "targets", + "type": "address[]" }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "singlePrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" } ], - "stateMutability": "view", + "name": "simulateCalls", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -1571,7 +1584,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.LimitOrder", + "internalType": "struct Orders.LimitOrder", "name": "order", "type": "tuple" }, @@ -1636,7 +1649,7 @@ "type": "uint256" } ], - "internalType": "struct OrderTypes.MarketOrder", + "internalType": "struct Orders.MarketOrder", "name": "order", "type": "tuple" }, diff --git a/py_order_utils/builders/limit_order_builder.py b/py_order_utils/builders/limit_order_builder.py index a6066f6..d0feeb8 100644 --- a/py_order_utils/builders/limit_order_builder.py +++ b/py_order_utils/builders/limit_order_builder.py @@ -1,4 +1,3 @@ -from web3 import Web3 from ..signer import Signer from .base_builder import BaseBuilder from .exception import ValidationException @@ -17,8 +16,7 @@ def __init__(self, exchange_address: str, chain_id: int, signer: Signer): self.erc20_facade = Erc20Facade() self.erc1155_facade = Erc1155Facade() self.lop_facade = LimitOrderProtocolFacade() - # TODO: add logger - + def build_limit_order(self, data: LimitOrderData)-> LimitOrder: """ Builds a limit order diff --git a/py_order_utils/config.py b/py_order_utils/config.py index 8ff0780..36cdc1a 100644 --- a/py_order_utils/config.py +++ b/py_order_utils/config.py @@ -19,13 +19,6 @@ def get_conditional(self): CONFIG = { - 42: ContractConfig( - exchange="0xE7819d9745e64c14541732ca07CC3898670b7650", - executor="0x382E8f6a8404eB11aaFd9A5a0B11aa5A24e0830B", - collateral="0xe22da380ee6B445bb8273C81944ADEB6E8450422", - conditional = "" - ), - 137: ContractConfig( exchange="", executor="", #TODO: update these @@ -34,8 +27,8 @@ def get_conditional(self): ), 80001: ContractConfig( - exchange="0xA6227994182d87680a8d66F41ad7E3a56130858E", - executor="0x859876dD2683Df7AdBd8B8623Ce7F57Ea01f85Ad", + exchange="0x3AA27F87CA17822f305A9788e7b9f5ea43A531FF", + executor="0x1199443D6806dE23a9C976193F07A381542F81df", collateral="0x2E8DCfE708D44ae2e406a1c02DFE2Fa13012f961", conditional = "0x7D8610E9567d2a6C9FBf66a5A13E9Ba8bb120d43" ) diff --git a/py_order_utils/model/__init__.py b/py_order_utils/model/__init__.py index 104cbc5..70b3129 100644 --- a/py_order_utils/model/__init__.py +++ b/py_order_utils/model/__init__.py @@ -1,2 +1,2 @@ from py_order_utils.model.model import LimitOrder, LimitOrderData, MarketOrderData, MarketOrder -from py_order_utils.model.signatures import EOA, CONTRACT, POLY_PROXY +from py_order_utils.model.signatures import EOA, CONTRACT, POLY_PROXY, POLY_GNOSIS_SAFE diff --git a/py_order_utils/model/signatures.py b/py_order_utils/model/signatures.py index 3702504..3a09289 100644 --- a/py_order_utils/model/signatures.py +++ b/py_order_utils/model/signatures.py @@ -1,3 +1,4 @@ EOA = 0 CONTRACT = 1 -POLY_PROXY = 2 \ No newline at end of file +POLY_PROXY = 2 +POLY_GNOSIS_SAFE= 3 \ No newline at end of file diff --git a/setup.py b/setup.py index f548e50..9f2a055 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="py_order_utils", - version="0.0.12", + version="0.0.13", author="Jonathan Amenechi", author_email="jonathanamenechi@gmail.com", description="Python utilities used to generate and sign limit and market orders on Polymarket's CLOB", diff --git a/tests/test_config.py b/tests/test_config.py index 8ad3b3c..2c56f0a 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -4,7 +4,7 @@ class TestConfig(TestCase): def test_get_config(self): - valid_config = get_contract_config(42) + valid_config = get_contract_config(80001) self.assertIsNotNone(valid_config) self.assertIsNotNone(valid_config.get_exchange()) self.assertIsNotNone(valid_config.get_executor())