Develops Algorand smart contracts in TypeScript using Algorand TypeScript (PuyaTs). Covers contract syntax, AVM types, storage patterns, transactions, ABI methods, testing, deployment, and AlgoKit Utils. Use when: (1) writing or modifying .algo.ts smart contracts, (2) using uint64, bytes, GlobalState, BoxMap, LocalState, itxn, gtxn in contracts, (3) testing contracts with algorandFixture/Vitest, (4) deploying or calling contracts with typed clients, (5) migrating from TEALScript or Algorand TypeScript beta, (6) troubleshooting Puya compiler errors or AVM transaction errors, (7) using AlgorandClient, AppFactory, or generated app clients in TypeScript.
Write, test, deploy, and troubleshoot Algorand TypeScript smart contracts.
algokit init -n my-project -t typescript --answer preset_name production --defaults
cd my-project
algokit project run build # Compile .algo.ts → ARC-56 + typed client
algokit project run test # Run Vitest tests
algokit localnet start # Start local network
algokit project deploy localnet # Deploy
.algo.tsnumber: Use uint64 and Uint64() for all numeric values in contractsclone() storage reads/writes: clone(this.box(k).value) — see syntax-types.md decision tablefee: Uint64(0) on all inner transactions: Prevents app account drain; caller covers via fee poolingalgorandFixture for E2E integration testsalgorand-core skill for the foundational mental modelRead the specific reference file for your task. Each file is self-contained.
uint64, bytes, bigint), number rules, clone(), value semantics, union type workarounds, array rulesGlobalState, LocalState, BoxMap, Box, MBR funding patterns, @contract decorator for dynamic keys, choosing storage typespublic/private), @abimethod/@readonly decorators, transaction-type parameters, lifecycle methods, emit() events, assertMatch with comparison operatorsgtxn typed access, ABI method transaction parameters, itxn inner transactions, itxnCompose/itxn.submitGroup, fee pooling, asset creationTestExecutionContextnewGroup() chaining, .simulate(), struct-as-tuple returns, box references, populateAppCallResources, coverAppCallInnerTransactionFees, amount helpers, .addr.toString() gotchaSearch these repositories for real-world code examples:
algorandfoundation/devportal-code-examples — Primary examples in projects/typescript-examples/contracts/ (HelloWorld, BoxStorage, LocalStorage, StructInBox, etc.)algorandfoundation/puya-ts — Compiler examples in examples/ (hello_world_arc4, voting, amm)algorandfoundation/algokit-typescript-template — AlgoKit project templatealgorandfoundation/algokit-utils-ts — AlgoKit Utils TypeScript SDKalgorand-core skill first for AVM mental modelalgorand-project-setup skillalgorand-frontend skill