@@ -18,17 +18,24 @@ def __init__(self, address: AddressType | None = None):
1818 self .address = address
1919
2020 elif len ((factory_type := PackageType .FACTORY ()).deployments ) == 0 :
21- raise RuntimeError ("No CaravanFactory deployment on this chain" )
21+ # NOTE: This is the deterministic deployment address via CreateX
22+ self .address = "0x04579FFC45fE10A7901B88EaEc8F4850b847D37c"
23+
24+ if not len (self .provider .get_code (self .address )) > 0 :
25+ raise RuntimeError ("No CaravanFactory deployment on this chain" )
2226
2327 else :
2428 # NOTE: Override cached value of `contract`
2529 self .contract = factory_type .deployments [0 ]
2630 self .address = self .contract .address
2731
2832 # NOTE: also lets us override for testing
29- self ._cached_releases : dict [Version , "ContractInstance" ] = dict ()
30-
31- # TODO: classmethod `.inject`?
33+ self ._cached_releases : dict [Version , "ContractInstance" ] = {
34+ # NOTE: This is the deterministic deployment address for v1 via CreateX
35+ Version ("1" ): PackageType .SINGLETON ("1" ).at (
36+ "0xf7AC37e8A31Da4D2Fbe7687118c142dd46e63517"
37+ ),
38+ }
3239
3340 @cached_property
3441 def contract (self ) -> "ContractInstance" :
@@ -39,13 +46,13 @@ def contract(self) -> "ContractInstance":
3946 )
4047
4148 def get_release (self , version : Version ) -> "ContractInstance | None" :
42- if release := self ._cached_releases .get (version ):
49+ if ( release := self ._cached_releases .get (version )) and len ( release . code ) > 0 :
4350 return release
4451
4552 elif not (singleton_type := PackageType .SINGLETON (version )).deployments :
4653 return None
4754
48- elif not ( release := singleton_type .deployments [- 1 ]).code :
55+ elif not len (( release := singleton_type .deployments [- 1 ]).code ) > 0 :
4956 return None
5057
5158 self ._cached_releases [version ] = release
@@ -65,7 +72,8 @@ def new(
6572 if isinstance (version , str ):
6673 version = Version (version .lstrip ("v" ))
6774
68- release = self .get_release (version )
75+ if not (release := self .get_release (version )):
76+ raise RuntimeError ("No Caravan Singleton deployment on this chain" )
6977
7078 args = [release , signers , threshold ]
7179 if tag is not None :
0 commit comments