call
This section is a work in progress.
Examples:
- bitcoin
- composite_queries
- cross_canister_calls
- cycles
- ethereum_json_rpc
- func_types
- generators
- ledger_canister
- management_canister
- outgoing_http_requests
- rejections
- timers
- whoami
from kybra import (
Async,
CallResult,
match,
nat64,
Principal,
Service,
service_update,
update,
Variant,
)
class TokenCanister(Service):
@service_update
def transfer(self, to: Principal, amount: nat64) -> nat64:
...
token_canister = TokenCanister(Principal.from_str("r7inp-6aaaa-aaaaa-aaabq-cai"))
class PayoutResult(Variant, total=False):
Ok: nat64
Err: str
@update
def payout(to: Principal, amount: nat64) -> Async[PayoutResult]:
result: CallResult[nat64] = yield token_canister.transfer(to, amount)
return match(result, {"Ok": lambda ok: {"Ok": ok}, "Err": lambda err: {"Err": err}})