Skip to content

algokit_utils.applications.app_manager

UPDATABLE_TEMPLATE_NAMEThe name of the TEAL template variable for deploy-time immutability control.
DELETABLE_TEMPLATE_NAMEThe name of the TEAL template variable for deploy-time permanence control.
AppManagerA manager class for interacting with Algorand applications.

UPDATABLE_TEMPLATE_NAME = ‘TMPL_UPDATABLE’

Section titled “UPDATABLE_TEMPLATE_NAME = ‘TMPL_UPDATABLE’”

The name of the TEAL template variable for deploy-time immutability control.

DELETABLE_TEMPLATE_NAME = ‘TMPL_DELETABLE’

Section titled “DELETABLE_TEMPLATE_NAME = ‘TMPL_DELETABLE’”

The name of the TEAL template variable for deploy-time permanence control.

class AppManager(algod_client: AlgodClient)

Section titled “class AppManager(algod_client: AlgodClient)”

A manager class for interacting with Algorand applications.

Provides functionality for compiling TEAL code, managing application state, and interacting with application boxes.

  • Parameters: algod_client – The Algorand client instance to use for interacting with the network
  • Example:
    app_manager = AppManager(algod_client)

Compile TEAL source code.

  • Parameters: teal_code – The TEAL source code to compile
  • Returns: The compiled TEAL code and associated metadata

compile_teal_template(teal_template_code: str, template_params: TealTemplateParams | None = None, deployment_metadata: Mapping[str, bool | None] | None = None) → CompiledTeal

Section titled “compile_teal_template(teal_template_code: str, template_params: TealTemplateParams | None = None, deployment_metadata: Mapping[str, bool | None] | None = None) → CompiledTeal”

Compile a TEAL template with parameters.

  • Parameters:
    • teal_template_code – The TEAL template code to compile
    • template_params – Parameters to substitute in the template
    • deployment_metadata – Deployment control parameters
  • Returns: The compiled TEAL code and associated metadata
  • Example:
    app_manager = AppManager(algod_client)
    teal_template_code =
    # This is a TEAL template
    # It can contain template variables like {TMPL_UPDATABLE} and {TMPL_DELETABLE}
    compiled_teal = app_manager.compile_teal_template(teal_template_code)

Get cached compilation result for TEAL code if available.

  • Parameters: teal_code – The TEAL source code
  • Returns: The cached compilation result if available, None otherwise
  • Example:
    app_manager = AppManager(algod_client)
    teal_code = "RETURN 1"
    compiled_teal = app_manager.compile_teal(teal_code)
    compilation_result = app_manager.get_compilation_result(teal_code)

Get information about an application by ID.

  • Parameters: app_id – The application ID
  • Returns: Information about the application
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 1234567890
    app_info = app_manager.get_by_id(app_id)

Get the global state of an application.

  • Parameters: app_id – The application ID
  • Returns: The application’s global state
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    global_state = app_manager.get_global_state(app_id)

Get the local state for an account in an application.

  • Parameters:
    • app_id – The application ID
    • address – The account address
  • Returns: The account’s local state for the application
  • Raises: ValueError – If local state is not found
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    address = "SENDER_ADDRESS"
    local_state = app_manager.get_local_state(app_id, address)

Get names of all boxes for an application.

If the box name can’t be decoded from UTF-8, the string representation of the bytes is returned.

  • Parameters: app_id – The application ID
  • Returns: List of box names
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    box_names = app_manager.get_box_names(app_id)

get_box_value(app_id: int, box_name: BoxIdentifier) → bytes

Section titled “get_box_value(app_id: int, box_name: BoxIdentifier) → bytes”

Get the value stored in a box.

  • Parameters:
    • app_id – The application ID
    • box_name – The box identifier
  • Returns: The box value as bytes
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    box_name = "BOX_NAME"
    box_value = app_manager.get_box_value(app_id, box_name)

get_box_values(app_id: int, box_names: list[BoxIdentifier]) → list[bytes]

Section titled “get_box_values(app_id: int, box_names: list[BoxIdentifier]) → list[bytes]”

Get values for multiple boxes.

  • Parameters:
    • app_id – The application ID
    • box_names – List of box identifiers
  • Returns: List of box values as bytes
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    box_names = ["BOX_NAME_1", "BOX_NAME_2"]
    box_values = app_manager.get_box_values(app_id, box_names)

get_box_value_from_abi_type(app_id: int, box_name: BoxIdentifier, abi_type: ABIType) → ABIValue

Section titled “get_box_value_from_abi_type(app_id: int, box_name: BoxIdentifier, abi_type: ABIType) → ABIValue”

Get and decode a box value using an ABI type.

  • Parameters:
    • app_id – The application ID
    • box_name – The box identifier
    • abi_type – The ABI type to decode with
  • Returns: The decoded box value
  • Raises: ValueError – If decoding fails
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    box_name = "BOX_NAME"
    abi_type = ABIType.UINT
    box_value = app_manager.get_box_value_from_abi_type(app_id, box_name, abi_type)

get_box_values_from_abi_type(app_id: int, box_names: list[BoxIdentifier], abi_type: ABIType) → list[ABIValue]

Section titled “get_box_values_from_abi_type(app_id: int, box_names: list[BoxIdentifier], abi_type: ABIType) → list[ABIValue]”

Get and decode multiple box values using an ABI type.

  • Parameters:
    • app_id – The application ID
    • box_names – List of box identifiers
    • abi_type – The ABI type to decode with
  • Returns: List of decoded box values
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    box_names = ["BOX_NAME_1", "BOX_NAME_2"]
    abi_type = ABIType.UINT
    box_values = app_manager.get_box_values_from_abi_type(app_id, box_names, abi_type)

static get_box_reference(box_id: BoxIdentifier | BoxReference) → tuple[int, bytes]

Section titled “static get_box_reference(box_id: BoxIdentifier | BoxReference) → tuple[int, bytes]”

Get standardized box reference from various identifier types.

  • Parameters: box_id – The box identifier
  • Returns: Tuple of (app_id, box_name_bytes)
  • Raises: ValueError – If box identifier type is invalid
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    box_name = "BOX_NAME"
    box_reference = app_manager.get_box_reference(box_name)

static get_abi_return(confirmation: PendingTransactionResponse, method: Method | None = None) → ABIReturn | None

Section titled “static get_abi_return(confirmation: PendingTransactionResponse, method: Method | None = None) → ABIReturn | None”

Get the ABI return value from a transaction confirmation.

  • Parameters:
    • confirmation – The transaction confirmation
    • method – The ABI method
  • Returns: The parsed ABI return value, or None if not available
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    method = "METHOD_NAME"
    confirmation = algod_client.pending_transaction_information(tx_id)
    abi_return = app_manager.get_abi_return(confirmation, method)

static decode_app_state(state: Sequence[TealKeyValue] | None) → dict[str, AppState]

Section titled “static decode_app_state(state: Sequence[TealKeyValue] | None) → dict[str, AppState]”

Decode application state from raw format.

  • Parameters: state – The raw application state
  • Returns: Decoded application state
  • Raises: ValueError – If unknown state data type is encountered
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    state = app_manager.get_global_state(app_id)
    decoded_state = app_manager.decode_app_state(state)

static replace_template_variables(program: str, template_values: TealTemplateParams) → str

Section titled “static replace_template_variables(program: str, template_values: TealTemplateParams) → str”

Replace template variables in TEAL code.

  • Parameters:
    • program – The TEAL program code
    • template_values – Template variable values to substitute
  • Returns: TEAL code with substituted values
  • Raises: ValueError – If template value type is unexpected
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    program = "RETURN 1"
    template_values = {"TMPL_UPDATABLE": True, "TMPL_DELETABLE": True}
    updated_program = app_manager.replace_template_variables(program, template_values)

static replace_teal_template_deploy_time_control_params(teal_template_code: str, params: Mapping[str, bool | None]) → str

Section titled “static replace_teal_template_deploy_time_control_params(teal_template_code: str, params: Mapping[str, bool | None]) → str”

Replace deploy-time control parameters in TEAL template.

  • Parameters:
    • teal_template_code – The TEAL template code
    • params – The deploy-time control parameters
  • Returns: TEAL code with substituted control parameters
  • Raises: ValueError – If template variables not found in code
  • Example:
    app_manager = AppManager(algod_client)
    app_id = 123
    teal_template_code = "RETURN 1"
    params = {"TMPL_UPDATABLE": True, "TMPL_DELETABLE": True}
    updated_teal_code = app_manager.replace_teal_template_deploy_time_control_params(
    teal_template_code, params
    )

static strip_teal_comments(teal_code: str) → str

Section titled “static strip_teal_comments(teal_code: str) → str”

Strip comments from TEAL code.

  • Parameters: teal_code – The TEAL code to strip comments from
  • Returns: The TEAL code with comments stripped
  • Example:
    app_manager = AppManager(algod_client)
    teal_code = "RETURN 1"
    stripped_teal_code = app_manager.strip_teal_comments(teal_code)