Metadata-Version: 2.5
Name: arc56-generated-gabri_13cf91a0
Version: 1.2.2026072010
Summary: Generated ARC-56 Algorand smart-contract clients for gabrielkuettel/security-best-practice-guide.
Project-URL: Homepage, https://github.com/scholtz/Arc56Registry
Project-URL: Repository, https://github.com/scholtz/Arc56Registry
Author: gabrielkuettel
Keywords: algorand,arc56,avm,gabrielkuettel,generated-client,security-best-practice-guide,smart-contract
Requires-Python: >=3.10
Requires-Dist: algokit-utils<5.0.0,>=4.2.3
Requires-Dist: py-algorand-sdk<3.0.0,>=2.11.1
Description-Content-Type: text/markdown

# arc56-generated-gabri_13cf91a0

Auto-generated typed Algorand smart-contract clients for **[gabrielkuettel/security-best-practice-guide](https://github.com/gabrielkuettel/security-best-practice-guide)**,
built from the [ARC-56](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0056.md)
specs listed below.

Generated by the [Arc56Registry](https://github.com/scholtz/Arc56Registry) pipeline,
using the [algorandfoundation/algokit-client-generator-py](https://github.com/algorandfoundation/algokit-client-generator-py)
ARC-56 client generator. Do not edit these files by hand — they are regenerated
automatically whenever the source ARC-56 spec changes.

## Install

```bash
pip install arc56-generated-gabri_13cf91a0
```

## Basic usage

Each contract in this package is a separate module (a hash of its source URL is
appended to its filename to keep multiple contracts in the same repository from
colliding), containing a typed `<Name>Client` for interacting with an already-deployed
instance of that contract, plus a `<Name>Factory` for deploying new instances.

```python
from algokit_utils import AlgorandClient
from arc56_generated_gabri_13cf91a0 import SafePaymentManager_daf27721

algorand = AlgorandClient.mainnet()
client = SafePaymentManager_daf27721.SafePaymentManagerClient(
    algorand=algorand,
    app_id=123456789,
)

# call a contract method, e.g.:
# result = client.send.some_method(args=(...))
```

### `full` vs `minimal` generator mode

Contracts in this package are generated with the client generator's `full` mode by
default, which emits both the typed `Client` and a deploy/create `Factory` class plus
deployment metadata (source code, bytecode, template variables). For the rare contract
whose `full`-mode output fails to generate or fails to byte-compile, this package falls
back to `minimal` mode (`Client` only, no `Factory`) for that contract instead of
failing outright. The contracts table below flags any contract generated this way;
every other contract includes a working `Factory`.

## Contracts included in this package

| Module | Client class | Source ARC-56 spec |
| --- | --- | --- |
| `SafePaymentManager_daf27721` | `SafePaymentManagerClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/1-smart-contracts-vs-logic-signatures/SafePaymentManager.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/1-smart-contracts-vs-logic-signatures/SafePaymentManager.arc56.json) |
| `RoleBasedContract_cc589612` | `RoleBasedContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/RoleBasedContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/RoleBasedContract.arc56.json) |
| `SafeDefaultContract_c454b008` | `SafeDefaultContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/SafeDefaultContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/SafeDefaultContract.arc56.json) |
| `SafeDeleteContract_80a384d5` | `SafeDeleteContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/SafeDeleteContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/SafeDeleteContract.arc56.json) |
| `SecureContract_f3ef24b5` | `SecureContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/SecureContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/SecureContract.arc56.json) |
| `VulnerableContract_ff887aa7` | `VulnerableContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/VulnerableContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/2-access-control/VulnerableContract.arc56.json) |
| `SecureDepositContract_87ca4faf` | `SecureDepositContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/4-transaction-input-validation/SecureDepositContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/4-transaction-input-validation/SecureDepositContract.arc56.json) |
| `VulnerableAssetContract_52c92be9` | `VulnerableAssetContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/4-transaction-input-validation/VulnerableAssetContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/4-transaction-input-validation/VulnerableAssetContract.arc56.json) |
| `CloseFieldContract_7a49ae00` | `CloseFieldContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/6-rekeying-draining/CloseFieldContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/6-rekeying-draining/CloseFieldContract.arc56.json) |
| `SecureGroupContract_4bbdffc9` | `SecureGroupContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/7-group-transaction-security/SecureGroupContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/7-group-transaction-security/SecureGroupContract.arc56.json) |
| `VulnerableGroupContract_dfbf5a02` | `VulnerableGroupContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/7-group-transaction-security/VulnerableGroupContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/7-group-transaction-security/VulnerableGroupContract.arc56.json) |
| `ArithmeticContract_36e4f711` | `ArithmeticContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/arithmetic_safety/ArithmeticContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/arithmetic_safety/ArithmeticContract.arc56.json) |
| `FeeExplicitZero_c6db62a9` | `FeeExplicitZeroClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/fee_verification_test/FeeExplicitZero.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/fee_verification_test/FeeExplicitZero.arc56.json) |
| `FeeOmitted_b175c918` | `FeeOmittedClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/fee_verification_test/FeeOmitted.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/fee_verification_test/FeeOmitted.arc56.json) |
| `HelloWorld_61b4ddd3` | `HelloWorldClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/hello_world/HelloWorld.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/hello_world/HelloWorld.arc56.json) |
| `PausableContract_33fa44f4` | `PausableContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/pausable_contract/PausableContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/pausable_contract/PausableContract.arc56.json) |
| `RekeyingDemoContract_7eacb18c` | `RekeyingDemoContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/rekeying_draining/RekeyingDemoContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/rekeying_draining/RekeyingDemoContract.arc56.json) |
| `PullPatternContract_15e6eb77` | `PullPatternContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/state_management/PullPatternContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/state_management/PullPatternContract.arc56.json) |
| `SafeClearContract_ff2feabb` | `SafeClearContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/state_management/SafeClearContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/state_management/SafeClearContract.arc56.json) |
| `UpgradeableContract_9e208312` | `UpgradeableContractClient` | [https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/upgradeable_contract/UpgradeableContract.arc56.json](https://raw.githubusercontent.com/gabrielkuettel/security-best-practice-guide/HEAD/smart-contract-examples/projects/smart-contract-examples/smart_contracts/artifacts/upgradeable_contract/UpgradeableContract.arc56.json) |

## Versioning

This package uses `1.<increment>.<yyyyMMddHH>`-style versioning: a new version is
published whenever any of the contracts above change, or whenever the client generator
itself is updated. See [Arc56Registry](https://github.com/scholtz/Arc56Registry) for
the full generation pipeline and source ARC-56 registry.
