You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/src/apps/tezos/layout.py

154 lines
3.7 KiB

from typing import TYPE_CHECKING
from trezor.enums import ButtonRequestType
from trezor.ui.layouts import confirm_address, confirm_metadata, confirm_properties
if TYPE_CHECKING:
from trezor.wire import Context
BR_SIGN_TX = ButtonRequestType.SignTx # global_import_cache
async def require_confirm_tx(ctx: Context, to: str, value: int) -> None:
from trezor.ui.layouts import confirm_output
await confirm_output(
ctx,
to,
format_tezos_amount(value),
br_code=BR_SIGN_TX,
)
async def require_confirm_fee(ctx: Context, value: int, fee: int) -> None:
from trezor.ui.layouts import confirm_total
await confirm_total(
ctx,
format_tezos_amount(value),
format_tezos_amount(fee),
total_label="Amount:",
)
async def require_confirm_origination(ctx: Context, address: str) -> None:
await confirm_address(
ctx,
"Confirm origination",
address,
"Address:",
"confirm_origination",
BR_SIGN_TX,
)
async def require_confirm_origination_fee(ctx: Context, balance: int, fee: int) -> None:
await confirm_properties(
ctx,
"confirm_origination_final",
"Confirm origination",
(
("Balance:", format_tezos_amount(balance)),
("Fee:", format_tezos_amount(fee)),
),
hold=True,
)
async def require_confirm_delegation_baker(ctx: Context, baker: str) -> None:
await confirm_address(
ctx,
"Confirm delegation",
baker,
"Baker address:",
"confirm_delegation",
BR_SIGN_TX,
)
async def require_confirm_set_delegate(ctx: Context, fee: int) -> None:
await confirm_metadata(
ctx,
"confirm_delegation_final",
"Confirm delegation",
"Fee:\n{}",
format_tezos_amount(fee),
BR_SIGN_TX,
hold=True,
)
async def require_confirm_register_delegate(
ctx: Context, address: str, fee: int
) -> None:
await confirm_properties(
ctx,
"confirm_register_delegate",
"Register delegate",
(
("Fee:", format_tezos_amount(fee)),
("Address:", address),
),
hold=True,
br_code=BR_SIGN_TX,
)
def format_tezos_amount(value: int) -> str:
from trezor.strings import format_amount
from .helpers import TEZOS_AMOUNT_DECIMALS
formatted_value = format_amount(value, TEZOS_AMOUNT_DECIMALS)
return formatted_value + " XTZ"
async def require_confirm_ballot(ctx: Context, proposal: str, ballot: str) -> None:
await confirm_properties(
ctx,
"confirm_ballot",
"Submit ballot",
(
("Ballot:", ballot),
("Proposal:", proposal),
),
hold=True,
br_code=BR_SIGN_TX,
)
async def require_confirm_proposals(ctx: Context, proposals: list[str]) -> None:
await confirm_properties(
ctx,
"confirm_proposals",
"Submit proposals" if len(proposals) > 1 else "Submit proposal",
[("Proposal " + str(i), proposal) for i, proposal in enumerate(proposals, 1)],
hold=True,
br_code=BR_SIGN_TX,
)
async def require_confirm_delegation_manager_withdraw(
ctx: Context, address: str
) -> None:
await confirm_address(
ctx,
"Remove delegation",
address,
"Delegator:",
"confirm_undelegation",
BR_SIGN_TX,
)
async def require_confirm_manager_remove_delegate(ctx: Context, fee: int) -> None:
await confirm_metadata(
ctx,
"confirm_undelegation_final",
"Remove delegation",
"Fee:\n{}",
format_tezos_amount(fee),
BR_SIGN_TX,
hold=True,
)