"""Smart-contract endpoints.""" from .client import CONTENT_TYPE_JSON, Client from .models import ( ListResponse, SmartContract, SmartContractCreateRequest, SmartContractUpdateRequest, SuccessResponse, ) class ContractClient: def __init__(self, client: Client): self._client = client def create(self, req: SmartContractCreateRequest) -> SmartContract: return self._client.post( "/api/v1/contract", CONTENT_TYPE_JSON, req, SmartContract ) def get(self, contract_id: str) -> SmartContract: return self._client.get(f"/api/v1/contract/{contract_id}", SmartContract) def list(self) -> ListResponse: return self._client.get("/api/v1/contract", ListResponse) def update( self, contract_id: str, req: SmartContractUpdateRequest ) -> SuccessResponse: return self._client.put( f"/api/v1/contract/{contract_id}", CONTENT_TYPE_JSON, req, SuccessResponse ) def upload(self, contract_id: str, filepath: str) -> SuccessResponse: """Upload smart-contract code from a local file (raw octet-stream body).""" with open(filepath, "rb") as f: file_content = f.read() return self._client.put( f"/api/v1/contract/{contract_id}/upload", "application/octet-stream", file_content, SuccessResponse, ) def delete(self, contract_id: str) -> SuccessResponse: return self._client.delete( f"/api/v1/contract/{contract_id}", SuccessResponse )