Skip to content

Guiding Principles

Familiarity

Where the base language (TypeScript/EcmaScript) doesn’t support a given feature natively (eg. unsigned fixed size integers), prior art should be used to inspire an API that is familiar to a user of the base language and transpilation can be used to ensure this code executes correctly.

Leveraging TypeScript type system

TypeScript’s type system should be used where ever possible to ensure code is type safe before compilation to create a fast feedback loop and nudge users into the pit of success.

TEALScript compatibility

TEALScript is an existing TypeScript-like language to TEAL compiler however the source code is not executable TypeScript, and it does not prioritise semantic compatibility. Wherever possible, Algorand TypeScript should endeavour to be compatible with existing TEALScript contracts and where not possible migratable with minimal changes.

Algorand Python

Algorand Python is the Python equivalent of Algorand TypeScript. Whilst there is a primary goal to produce an API which makes sense in the TypeScript ecosystem, a secondary goal is to minimise the disparity between the two APIs such that users who choose to, or are required to develop on both platforms are not facing a completely unfamiliar API.

Architecture decisions

As part of developing Algorand TypeScript we are documenting key architecture decisions using Architecture Decision Records (ADRs). The following are the key decisions that have been made thus far: