Source code for empyrealSDK.types.application
from functools import singledispatchmethod
from typing import Optional
from uuid import UUID
from eth_typing import ChecksumAddress
from pydantic import BaseModel, Field
from ..utils.client import _force_get_global_client, _set_global_client
from .wallet import Wallet
from .user import User
[docs]
class Application(BaseModel):
"""
This represents an Application, which allows a builder to use the SDK.
"""
id: UUID = Field()
name: str
type: str
tier: str
api_key: str = Field(alias="apiKey")
swap_fee: int = Field(alias="swapFee")
fee_collection_amount: int = Field(alias="feeCollectionAmount")
request_count: int = Field(alias="requestCount")
# types
owner: Optional[User] = Field()
app_wallet: Optional[Wallet] = Field(alias="appWallet")
[docs]
@classmethod
async def load(self, api_key: Optional[str] = None):
"""
Loads an instance of the current empyrealSDK user's application.
If an `api_key` is provided, this will create a new global client.
Otherwise, the currently set application from the global context
is loaded.
Token :class:`empyrealSDK.types.Token`
"""
from empyrealSDK import EmpyrealSDK
if api_key:
new_client = EmpyrealSDK(api_key)
_set_global_client(new_client)
return new_client
client: EmpyrealSDK = _force_get_global_client()
return await client.app.info()
[docs]
async def update_swap_fee(self, swap_fee: float):
"""
Update your applications swap fee.
Swap Fee must be set less than 2%.
"""
client = _force_get_global_client()
if swap_fee > 0.02:
raise ValueError("Swap Fee must be less than 2%")
response = await client.app.update(
swap_fee=int(swap_fee * 1_000_000),
)
obj = response.json()
for key in obj["updates"]:
setattr(self, key, obj["updates"][key])
return self
[docs]
@singledispatchmethod
async def update_app_wallet(self, wallet: Wallet):
"""
Update your applications swap fee.
Swap Fee must be set less than 2%.
"""
client = _force_get_global_client()
return await client.app.update(
app_wallet_id=wallet.id,
)
@update_app_wallet.register(str)
async def _(self, wallet_address: ChecksumAddress):
"""
Update your fee recipient wallet.
"""
client = _force_get_global_client()
wallet = await Wallet.load(wallet_address)
return await client.app.update(
app_wallet_id=wallet.id,
)
[docs]
async def refresh_api_key(self):
"""
Update your applications swap fee.
Swap Fee must be set less than 2%.
"""
client = _force_get_global_client()
new_api_key = await client.app.update_api_key()
self.api_key = new_api_key
return self